···11<script setup lang="ts">
22import { ref } from 'vue'
33-import type { AccountsPayload } from '~~/server/api/me/accounts.get'
44-import type { DashboardPayload, DashboardRepo } from '~~/server/api/me/dashboard.get'
33+import type { AccountsPayload } from '#server/api/me/accounts.get'
44+import type { DashboardPayload, DashboardRepo } from '#server/api/me/dashboard.get'
5566const installUrl = 'https://github.com/apps/synchub-to/installations/new'
77
+5-5
server/api/atproto/callback.get.ts
···11import { and, eq, ne } from 'drizzle-orm'
22-import { userIdentity } from '~~/server/db/schema'
33-import { enqueue } from '~~/server/utils/queue'
44-import { resolveHandle } from '~~/server/utils/resolve-handle'
55-import { addAccount } from '~~/server/utils/server-session'
66-import { generateAndPublishKey, revokeKeyForInstallationDid } from '~~/server/utils/tangled-pubkey'
22+import { userIdentity } from '#server/db/schema'
33+import { enqueue } from '#server/utils/queue'
44+import { resolveHandle } from '#server/utils/resolve-handle'
55+import { addAccount } from '#server/utils/server-session'
66+import { generateAndPublishKey, revokeKeyForInstallationDid } from '#server/utils/tangled-pubkey'
7788export default defineEventHandler(async event => {
99 const url = getRequestURL(event)
+3-3
server/api/github/webhook.post.ts
···88} from '@octokit/webhooks-types'
99import { verify } from '@octokit/webhooks-methods'
1010import { sql } from 'drizzle-orm'
1111-import { installation, webhookEvent } from '~~/server/db/schema'
1212-import { enqueue } from '~~/server/utils/queue'
1313-import { revokeKeysForInstallation } from '~~/server/utils/tangled-pubkey'
1111+import { installation, webhookEvent } from '#server/db/schema'
1212+import { enqueue } from '#server/utils/queue'
1313+import { revokeKeysForInstallation } from '#server/utils/tangled-pubkey'
14141515const RECOGNISED_EVENTS = new Set([
1616 'push',
+2-2
server/api/jobs/run.post.ts
···11import crypto from 'node:crypto'
22-import { dispatch } from '~~/server/utils/job-handlers'
33-import { claim, complete, fail } from '~~/server/utils/queue'
22+import { dispatch } from '#server/utils/job-handlers'
33+import { claim, complete, fail } from '#server/utils/queue'
4455const LEASE_MS = 5 * 60_000 // 5 min — generous for a sync job
66const DEFAULT_BUDGET_MS = 25_000 // leave headroom under Vercel's 10s default; pro tiers can override
+3-3
server/api/me/accounts.get.ts
···11import { inArray } from 'drizzle-orm'
22-import { installation, userIdentity } from '~~/server/db/schema'
33-import { useDb } from '~~/server/utils/db'
44-import { getDeviceSession, requireSession } from '~~/server/utils/server-session'
22+import { installation, userIdentity } from '#server/db/schema'
33+import { useDb } from '#server/utils/db'
44+import { getDeviceSession, requireSession } from '#server/utils/server-session'
5566export interface AccountSummary {
77 did: string
+3-3
server/api/me/dashboard.get.ts
···11import { sql } from 'drizzle-orm'
22-import { installation, repoMapping, sshKey, userIdentity } from '~~/server/db/schema'
33-import { useDb } from '~~/server/utils/db'
44-import { requireSession } from '~~/server/utils/server-session'
22+import { installation, repoMapping, sshKey, userIdentity } from '#server/db/schema'
33+import { useDb } from '#server/utils/db'
44+import { requireSession } from '#server/utils/server-session'
5566export interface DashboardRepo {
77 id: number
···11-import { enqueue } from '~~/server/utils/queue'
22-import { requireSession } from '~~/server/utils/server-session'
11+import { enqueue } from '#server/utils/queue'
22+import { requireSession } from '#server/utils/server-session'
3344/**
55 * Enqueue an SSH key rotation for the current `(did, installationId)`.
···11-import { requireSession } from '~~/server/utils/server-session'
11+import { requireSession } from '#server/utils/server-session'
2233/**
44 * Lightweight session probe for the Nuxt `authenticated` middleware. Returns
+3-3
server/api/repos/[id]/disable.post.ts
···11import { and, eq } from 'drizzle-orm'
22-import { repoMapping } from '~~/server/db/schema'
33-import { useDb } from '~~/server/utils/db'
44-import { requireSession } from '~~/server/utils/server-session'
22+import { repoMapping } from '#server/db/schema'
33+import { useDb } from '#server/utils/db'
44+import { requireSession } from '#server/utils/server-session'
5566/**
77 * Pause sync for one mapping. The worker checks `disabledAt` on every push
+3-3
server/api/repos/[id]/enable.post.ts
···11import { and, eq } from 'drizzle-orm'
22-import { repoMapping } from '~~/server/db/schema'
33-import { useDb } from '~~/server/utils/db'
44-import { requireSession } from '~~/server/utils/server-session'
22+import { repoMapping } from '#server/db/schema'
33+import { useDb } from '#server/utils/db'
44+import { requireSession } from '#server/utils/server-session'
5566/** Clear `disabledAt`, resuming sync for this mapping. */
77export default defineEventHandler(async event => {
+4-4
server/api/repos/[id]/resync.post.ts
···11import { and, eq } from 'drizzle-orm'
22-import { repoMapping } from '~~/server/db/schema'
33-import { useDb } from '~~/server/utils/db'
44-import { enqueue } from '~~/server/utils/queue'
55-import { requireSession } from '~~/server/utils/server-session'
22+import { repoMapping } from '#server/db/schema'
33+import { useDb } from '#server/utils/db'
44+import { enqueue } from '#server/utils/queue'
55+import { requireSession } from '#server/utils/server-session'
6677/**
88 * Enqueue a forced `tangled.create-repo` job for one mapping. The handler