agent-log-viewer 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -21
- package/bin/cli.mjs +212 -12
- package/bin/server-runtime.mjs +51 -0
- package/bin/server-runtime.test.ts +190 -0
- package/dist/mcp-server.mjs +2515 -416
- package/dist/runtime-host.mjs +41670 -0
- package/dist/standalone/.next/BUILD_ID +1 -1
- package/dist/standalone/.next/app-path-routes-manifest.json +28 -25
- package/dist/standalone/.next/build-manifest.json +2 -2
- package/dist/standalone/.next/prerender-manifest.json +3 -3
- package/dist/standalone/.next/routes-manifest.json +18 -0
- package/dist/standalone/.next/server/account-migration-controller-worker.js +1 -1
- package/dist/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
- package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/api/access/route.js +1 -1
- package/dist/standalone/.next/server/app/api/access/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js +3 -3
- package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js +3 -3
- package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js +3 -3
- package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/route.js +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js +3 -3
- package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js +1 -1
- package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js +1 -1
- package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/codex/route.js +1 -1
- package/dist/standalone/.next/server/app/api/accounts/codex/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js +3 -3
- package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/route.js +1 -1
- package/dist/standalone/.next/server/app/api/accounts/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/agent/route.js +1 -1
- package/dist/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/agent/snapshot/route.js +1 -1
- package/dist/standalone/.next/server/app/api/agent/snapshot/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/answer/route.js +2 -1
- package/dist/standalone/.next/server/app/api/answer/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/artifact/route.js +1 -1
- package/dist/standalone/.next/server/app/api/artifact/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/attach-command/route.js +1 -1
- package/dist/standalone/.next/server/app/api/attach-command/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/attention/[id]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/attention/[id]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/attention/route.js +1 -1
- package/dist/standalone/.next/server/app/api/attention/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/board/route.js +1 -1
- package/dist/standalone/.next/server/app/api/board/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/bridge/route.js +2 -2
- package/dist/standalone/.next/server/app/api/bridge/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js +1 -1
- package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/conversations/route.js +1 -1
- package/dist/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/files/route.js +2 -2
- package/dist/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/flows/[id]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/flows/[id]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/flows/route.js +1 -1
- package/dist/standalone/.next/server/app/api/flows/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/image/route.js +1 -1
- package/dist/standalone/.next/server/app/api/image/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/inbox/route.js +2 -2
- package/dist/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js +1 -1
- package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/limits/history/route.js +3 -3
- package/dist/standalone/.next/server/app/api/limits/history/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/limits/route.js +3 -3
- package/dist/standalone/.next/server/app/api/limits/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/log/preflight/route.js +1 -1
- package/dist/standalone/.next/server/app/api/log/preflight/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/log/project-delete/route.js +1 -1
- package/dist/standalone/.next/server/app/api/log/project-delete/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/log/provenance/route.js +67 -1
- package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/log/route.js +1 -1
- package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/log/suggestions/route.js +3 -0
- package/dist/standalone/.next/server/app/api/log/suggestions/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/log/suggestions/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/logs/route.js +1 -1
- package/dist/standalone/.next/server/app/api/logs/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/logs/stream/route.js +2 -2
- package/dist/standalone/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/monitor/lock/route.js +1 -3
- package/dist/standalone/.next/server/app/api/monitor/lock/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/monitor/runs/route.js +1 -3
- package/dist/standalone/.next/server/app/api/monitor/runs/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js +1 -1
- package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js +1 -1
- package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js +2 -2
- package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/route.js +2 -2
- package/dist/standalone/.next/server/app/api/pipelines/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/tick/route.js +2 -2
- package/dist/standalone/.next/server/app/api/pipelines/tick/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
- package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/projects/create/route.js +2 -2
- package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/projects/crown/route.js +1 -1
- package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/projects/directories/route.js +1 -0
- package/dist/standalone/.next/server/app/api/projects/directories/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/projects/directories/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/push/route.js +2 -2
- package/dist/standalone/.next/server/app/api/push/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/resources/route.js +1 -1
- package/dist/standalone/.next/server/app/api/resources/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/roles/route.js +2 -2
- package/dist/standalone/.next/server/app/api/roles/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/answer/route.js +2 -1
- package/dist/standalone/.next/server/app/api/runtime/answer/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js +1 -1
- package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/deployments/route.js +1 -1
- package/dist/standalone/.next/server/app/api/runtime/deployments/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/hosts/route.js +1 -0
- package/dist/standalone/.next/server/app/api/runtime/hosts/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/runtime/hosts/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js +2 -1
- package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js +2 -1
- package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/operations/route.js +1 -1
- package/dist/standalone/.next/server/app/api/runtime/operations/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/realtime/route.js +2 -1
- package/dist/standalone/.next/server/app/api/runtime/realtime/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/send/route.js +2 -1
- package/dist/standalone/.next/server/app/api/runtime/send/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js +1 -1
- package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/spawn/route.js +2 -1
- package/dist/standalone/.next/server/app/api/runtime/spawn/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/steer/route.js +2 -1
- package/dist/standalone/.next/server/app/api/runtime/steer/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/stream/route.js +2 -2
- package/dist/standalone/.next/server/app/api/runtime/stream/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/search/transcripts/route.js +2 -2
- package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/session/route.js +1 -1
- package/dist/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/session/supersedence/route.js +1 -1
- package/dist/standalone/.next/server/app/api/session/supersedence/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/session/title/route.js +1 -1
- package/dist/standalone/.next/server/app/api/session/title/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/spawn/policy/route.js +4 -4
- package/dist/standalone/.next/server/app/api/spawn/policy/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/spawn/route.js +2 -2
- package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/staging/route.js +2 -2
- package/dist/standalone/.next/server/app/api/staging/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/task-attachments/route.js +2 -2
- package/dist/standalone/.next/server/app/api/task-attachments/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js +1 -1
- package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js +2 -1
- package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js +2 -1
- package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tasks/curator/route.js +1 -1
- package/dist/standalone/.next/server/app/api/tasks/curator/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tasks/route.js +2 -2
- package/dist/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/telegram/reports/route.js +1 -1
- package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/telegram/route.js +1 -1
- package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
- package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tmux/route.js +2 -1
- package/dist/standalone/.next/server/app/api/tmux/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tmux/targets/route.js +1 -1
- package/dist/standalone/.next/server/app/api/tmux/targets/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/transcribe/backend/route.js +2 -2
- package/dist/standalone/.next/server/app/api/transcribe/backend/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/transcribe/route.js +2 -2
- package/dist/standalone/.next/server/app/api/transcribe/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/transcribe/token/route.js +2 -2
- package/dist/standalone/.next/server/app/api/transcribe/token/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tts/backend/route.js +1 -1
- package/dist/standalone/.next/server/app/api/tts/backend/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tts/route.js +1 -1
- package/dist/standalone/.next/server/app/api/tts/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/view/presence/route.js +1 -1
- package/dist/standalone/.next/server/app/api/view/presence/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/workflows/[id]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/workflows/route.js +1 -1
- package/dist/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/favicon.ico/route.js +1 -1
- package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/index.html +1 -1
- package/dist/standalone/.next/server/app/index.rsc +3 -3
- package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/dist/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/page.js +21 -14
- package/dist/standalone/.next/server/app/page.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/standalone/.next/server/app-paths-manifest.json +28 -25
- package/dist/standalone/.next/server/chunks/107.js +1 -0
- package/dist/standalone/.next/server/chunks/{1858.js → 1100.js} +2 -2
- package/dist/standalone/.next/server/chunks/1872.js +42 -0
- package/dist/standalone/.next/server/chunks/1952.js +3 -0
- package/dist/standalone/.next/server/chunks/2243.js +1 -0
- package/dist/standalone/.next/server/chunks/2260.js +104 -0
- package/dist/standalone/.next/server/chunks/2318.js +2 -2
- package/dist/standalone/.next/server/chunks/2324.js +1 -1
- package/dist/standalone/.next/server/chunks/2549.js +81 -0
- package/dist/standalone/.next/server/chunks/2682.js +85 -0
- package/dist/standalone/.next/server/chunks/3086.js +1 -1
- package/dist/standalone/.next/server/chunks/3214.js +1 -1
- package/dist/standalone/.next/server/chunks/3302.js +2 -0
- package/dist/standalone/.next/server/chunks/3336.js +1 -1
- package/dist/standalone/.next/server/chunks/3386.js +2 -0
- package/dist/standalone/.next/server/chunks/3558.js +1 -1
- package/dist/standalone/.next/server/chunks/3587.js +1 -1
- package/dist/standalone/.next/server/chunks/3740.js +20 -20
- package/dist/standalone/.next/server/chunks/3830.js +1 -0
- package/dist/standalone/.next/server/chunks/4012.js +3 -3
- package/dist/standalone/.next/server/chunks/4191.js +1 -1
- package/dist/standalone/.next/server/chunks/4310.js +1 -0
- package/dist/standalone/.next/server/chunks/4509.js +1 -1
- package/dist/standalone/.next/server/chunks/4565.js +1 -0
- package/dist/standalone/.next/server/chunks/4651.js +2 -0
- package/dist/standalone/.next/server/chunks/4756.js +13 -0
- package/dist/standalone/.next/server/chunks/4972.js +2 -2
- package/dist/standalone/.next/server/chunks/5103.js +10 -0
- package/dist/standalone/.next/server/chunks/5408.js +1 -0
- package/dist/standalone/.next/server/chunks/5545.js +1 -0
- package/dist/standalone/.next/server/chunks/5689.js +2 -2
- package/dist/standalone/.next/server/chunks/6333.js +3 -3
- package/dist/standalone/.next/server/chunks/6487.js +10 -0
- package/dist/standalone/.next/server/chunks/6796.js +1 -1
- package/dist/standalone/.next/server/chunks/6820.js +99 -0
- package/dist/standalone/.next/server/chunks/6826.js +1 -1
- package/dist/standalone/.next/server/chunks/6839.js +81 -0
- package/dist/standalone/.next/server/chunks/6850.js +1 -1
- package/dist/standalone/.next/server/chunks/6909.js +1 -1
- package/dist/standalone/.next/server/chunks/6942.js +27 -0
- package/dist/standalone/.next/server/chunks/7139.js +82 -0
- package/dist/standalone/.next/server/chunks/7471.js +13 -13
- package/dist/standalone/.next/server/chunks/7644.js +2 -2
- package/dist/standalone/.next/server/chunks/7722.js +1 -1
- package/dist/standalone/.next/server/chunks/773.js +47 -0
- package/dist/standalone/.next/server/chunks/7733.js +3 -3
- package/dist/standalone/.next/server/chunks/8263.js +81 -0
- package/dist/standalone/.next/server/chunks/8326.js +1 -0
- package/dist/standalone/.next/server/chunks/8444.js +1 -1
- package/dist/standalone/.next/server/chunks/8617.js +1 -1
- package/dist/standalone/.next/server/chunks/8797.js +1 -1
- package/dist/standalone/.next/server/chunks/8817.js +2 -2
- package/dist/standalone/.next/server/chunks/8996.js +1 -1
- package/dist/standalone/.next/server/chunks/9307.js +1 -0
- package/dist/standalone/.next/server/chunks/9364.js +61 -61
- package/dist/standalone/.next/server/chunks/9381.js +42 -0
- package/dist/standalone/.next/server/chunks/9403.js +1 -0
- package/dist/standalone/.next/server/chunks/9411.js +2 -2
- package/dist/standalone/.next/server/chunks/9434.js +3 -3
- package/dist/standalone/.next/server/chunks/9488.js +1 -0
- package/dist/standalone/.next/server/chunks/9750.js +1 -0
- package/dist/standalone/.next/server/chunks/9777.js +1 -0
- package/dist/standalone/.next/server/chunks/9937.js +1 -1
- package/dist/standalone/.next/server/chunks/9940.js +1 -1
- package/dist/standalone/.next/server/chunks/9998.js +1 -1
- package/dist/standalone/.next/server/files-response-worker.js +3 -3
- package/dist/standalone/.next/server/functions-config-manifest.json +3 -0
- package/dist/standalone/.next/server/instrumentation.js +1 -1
- package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/standalone/.next/server/pages/404.html +1 -1
- package/dist/standalone/.next/server/pages/500.html +1 -1
- package/dist/standalone/.next/server/resource-collector-worker.js +1 -1
- package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/standalone/.next/server/wakatime-sync-worker.js +2 -2
- package/dist/standalone/.next/static/94yAMfjyhUPRgarycP9y4/_buildManifest.js +1 -0
- package/dist/standalone/.next/static/chunks/app/_global-error/page-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/access/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/agent/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/answer/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/artifact/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/attach-command/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/attention/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/board/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/bridge/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/conversations/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/files/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/flows/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/image/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/inbox/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/limits/history/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/limits/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/logs/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/proc/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/projects/create/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/push/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/resources/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/roles/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/session/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/session/title/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/spawn/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/staging/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/telegram/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/timeline/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tmux/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tts/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/view/presence/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/workflows/route-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/app/page-1a141ae4aa9d31a9.js +85 -0
- package/dist/standalone/.next/static/chunks/{framework-d1de002210ddaaef.js → framework-04bc8c1a646a0097.js} +1 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ae02882983617748.js +1 -0
- package/dist/standalone/.next/static/css/dc96fb2edbd8742e.css +1 -0
- package/dist/standalone/node_modules/{nanoid → next/node_modules/postcss/node_modules/nanoid}/non-secure/index.cjs +2 -2
- package/dist/standalone/node_modules/{nanoid → next/node_modules/postcss/node_modules/nanoid}/package.json +1 -1
- package/dist/standalone/node_modules/react/cjs/react.development.js +1 -1
- package/dist/standalone/node_modules/react/cjs/react.production.js +1 -1
- package/dist/standalone/node_modules/react/package.json +3 -3
- package/dist/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
- package/dist/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
- package/dist/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +3 -3
- package/dist/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +3 -3
- package/dist/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +3 -3
- package/dist/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
- package/dist/standalone/node_modules/react-dom/package.json +4 -4
- package/dist/standalone/package.json +9 -8
- package/dist/standalone/src/lib/inboxFiles.ts +203 -0
- package/package.json +9 -8
- package/dist/standalone/.next/server/chunks/156.js +0 -2
- package/dist/standalone/.next/server/chunks/1920.js +0 -27
- package/dist/standalone/.next/server/chunks/2338.js +0 -9
- package/dist/standalone/.next/server/chunks/2904.js +0 -42
- package/dist/standalone/.next/server/chunks/2977.js +0 -1
- package/dist/standalone/.next/server/chunks/3139.js +0 -10
- package/dist/standalone/.next/server/chunks/3598.js +0 -81
- package/dist/standalone/.next/server/chunks/4968.js +0 -1
- package/dist/standalone/.next/server/chunks/6977.js +0 -1
- package/dist/standalone/.next/server/chunks/7295.js +0 -10
- package/dist/standalone/.next/server/chunks/7868.js +0 -1
- package/dist/standalone/.next/server/chunks/8026.js +0 -1
- package/dist/standalone/.next/server/chunks/8600.js +0 -12
- package/dist/standalone/.next/server/chunks/9246.js +0 -47
- package/dist/standalone/.next/server/chunks/9733.js +0 -42
- package/dist/standalone/.next/static/chunks/app/_global-error/page-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/access/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/agent/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/answer/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/artifact/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/attach-command/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/attention/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/board/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/bridge/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/conversations/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/files/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/flows/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/image/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/inbox/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/limits/history/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/limits/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/logs/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/proc/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/projects/create/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/push/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/resources/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/roles/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/session/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/session/title/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/spawn/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/staging/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/telegram/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/timeline/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tmux/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tts/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/view/presence/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/workflows/route-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/app/page-ac9463b910bf83fe.js +0 -77
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c132c5ba005ff29e.js +0 -1
- package/dist/standalone/.next/static/css/498f12ddef7ecb0e.css +0 -1
- package/dist/standalone/.next/static/kt9OPe8iwfpNcdOX9ygvb/_buildManifest.js +0 -1
- /package/dist/standalone/.next/static/{kt9OPe8iwfpNcdOX9ygvb → 94yAMfjyhUPRgarycP9y4}/_ssgManifest.js +0 -0
- /package/dist/standalone/node_modules/{nanoid → next/node_modules/postcss/node_modules/nanoid}/non-secure/package.json +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";exports.id=9381,exports.ids=[7733,9381],exports.modules={7733:(a,b,c)=>{c.r(b),c.d(b,{CODEX_VIEWER_SPAWN_FEATURES:()=>v,NATIVE_MULTI_AGENT_HOOK_MATCHER:()=>p,NATIVE_MULTI_AGENT_TOOLS:()=>o,NATIVE_SUBAGENT_DENY_MESSAGE:()=>t,VIEWER_SPAWN_CAPABILITY_ENV:()=>r,VIEWER_SPAWN_CAPABILITY_HEADER:()=>k,VIEWER_SPAWN_ENDPOINT:()=>q,VIEWER_SPAWN_PROMPT_FENCE:()=>u,applyClaudeSpawnPolicy:()=>H,claudeSpawnPolicyPaths:()=>x,fenceViewerSpawnPrompt:()=>I,prepareManagedClaudeSpawnHome:()=>G,resolveClaudeMcpServers:()=>E,viewerMcpRegistered:()=>F,viewerMcpServerEntry:()=>w});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(77598),i=c.n(h),j=c(23953);let k="x-llv-spawn-capability",l="LLV_MANAGED_NATIVE_SUBAGENT_DENY=1 ",m=".llv",n=["enableAllProjectMcpServers","enabledMcpjsonServers","disabledMcpjsonServers"],o=Object.freeze(["Task","Agent","Workflow","TeamCreate","TeamDelete","SendMessage"]),p=o.join("|"),q="http://127.0.0.1:8898/api/spawn",r="LLV_SPAWN_CAPABILITY",s=`Send header ${k}: $${r}.`,t=`Sub-agents are disabled on this surface. Spawn через POST ${q} with {engine, model, cwd, prompt, src: <your transcript path>, role, reviews?} and ${s} The worker then appears on the board with correct lineage.`,u=`Viewer spawn policy: avoid native sub-agent, collaboration, and background-agent features. Spawn every helper through POST ${q} with {engine, model, cwd, prompt, src: <your transcript path>, role, reviews?}. ${s} The worker appears on the board with correct lineage.`,v={plugins:!1,apps:!1,multi_agent:!1};function w(a=process.cwd()){let b=[g().resolve(a,"bin","mcp-server.mjs"),g().resolve(a,"..","..","bin","mcp-server.mjs")].find(a=>e().existsSync(a));if(!b)throw Error(`Viewer MCP launcher could not be resolved from package cwd: ${a}`);return{command:"bun",args:[b]}}function x(a,b){if(!/^[A-Za-z0-9_-]{1,128}$/.test(b))throw Error("Claude spawn policy profile id is invalid");let c=g().join(a,m,"hooks","deny-native-subagents.sh");return{settingsPath:g().join(a,m,"spawn-settings",`${b}.json`),mcpConfigPath:g().join(a,m,"spawn-mcp",`${b}.json`),hookPath:c,command:`${l}${z(c)}`}}function y(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function z(a){return"'"+a.replace(/'/g,"'\\''")+"'"}function A(a,b,c){e().mkdirSync(g().dirname(a),{recursive:!0,mode:448});let d=g().join(g().dirname(a),`.${g().basename(a)}.${process.pid}.${i().randomUUID()}.tmp`);try{e().writeFileSync(d,b,{mode:c}),e().chmodSync(d,c),e().renameSync(d,a)}finally{e().rmSync(d,{force:!0})}}function B(a){let b;if(!e().existsSync(a))return{};try{b=JSON.parse(e().readFileSync(a,"utf8"))}catch{throw Error(`Claude settings are invalid JSON: ${a}`)}let c=y(b);if(!c)throw Error(`Claude settings must contain a JSON object: ${a}`);return c}function C(a){return Array.isArray(a)?a.filter(a=>"string"==typeof a):[]}function D(a){if(!a)return{};let b=g().resolve(a),c=b;for(let a=b;;a=g().dirname(a)){if(e().existsSync(g().join(a,".git"))){c=a;break}if(g().dirname(a)===a)break}let d=g().join(c,".mcp.json");return e().existsSync(d)?y(B(d).mcpServers)??{}:{}}function E(a,b,c=g().join(a,".claude.json")){let d=e().existsSync(c)?B(c):{},f=y(d.mcpServers)??{},h=y(d.projects),i=b&&h?y(h[b]):null,j=D(b),k=y(i?.mcpServers)??{};return{...f,...j,...k}}function F(a,b,c){return null!==y(E(a,b,c).viewer)}function G(a,b){let c=g().join(a,".claude.json");try{let a=e().lstatSync(c);if(a.isSymbolicLink()||!a.isFile())throw Error(`Claude state path is unsafe: ${c}`)}catch(a){if("ENOENT"!==a.code)throw a}let d={};if(e().existsSync(c)){let a;try{a=JSON.parse(e().readFileSync(c,"utf8"))}catch{throw Error(`Claude state is invalid JSON: ${c}`)}let b=y(a);if(!b)throw Error(`Claude state must contain a JSON object: ${c}`);d=b}let f=void 0===d.projects?{}:y(d.projects);if(!f)throw Error(`Claude state projects must contain a JSON object: ${c}`);let h=void 0===f[b]?{}:y(f[b]);if(!h)throw Error(`Claude project state must contain a JSON object: ${b}`);A(c,JSON.stringify({...d,hasCompletedOnboarding:!0,bypassPermissionsModeAccepted:!0,projects:{...f,[b]:{...h,hasTrustDialogAccepted:!0,hasCompletedProjectOnboarding:!0}}},null,2)+"\n",384)}function H(a,b={}){var c,d;let f,h=g().join(a,"settings.json"),k=x(a,b.profileId??i().randomUUID()),m=e().existsSync(h),o=m?B(h):b.baseSettingsPath?B(b.baseSettingsPath):{},q=m?{}:o;if(!b.allowSubagents&&!0===o.disableAllHooks)throw Error("Claude settings disableAllHooks prevents the Viewer spawn policy from enforcing native sub-agent denial");if(!b.allowSubagents&&!0===o.allowManagedHooksOnly)throw Error("Claude settings allowManagedHooksOnly prevents the Viewer spawn policy from enforcing native sub-agent denial");let r=void 0===o.hooks?{}:y(o.hooks);if(!r)throw Error("Claude settings hooks must contain a JSON object");let s=function(a){if(void 0===a)return[];if(!Array.isArray(a))throw Error("Claude settings hooks.PreToolUse must be an array");return a.flatMap(a=>{let b=y(a);if(!b||!Array.isArray(b.hooks))return[a];let c=b.hooks.filter(a=>{var b;return!("string"==typeof(b=y(a)?.command)&&b.startsWith(l))});return c.length?[{...b,hooks:c}]:[]})}(r.PreToolUse);if(!b.allowSubagents){let a=`#!/bin/sh
|
|
2
|
+
printf '%s\\n' ${z(t)} >&2
|
|
3
|
+
exit 2
|
|
4
|
+
`;A(k.hookPath,a,448),s.push({matcher:p,hooks:[{type:"command",command:k.command}]})}let u=b.allowSubagents?q:{...q,disableAllHooks:!1,allowManagedHooksOnly:!1},v=(c=b.cwd,d=b.mcpServers,f=E(a,c,b.mcpStatePath),Object.fromEntries((0,j.c1)(d).flatMap(a=>{let b=y(f[a])??("viewer"===a?{type:"stdio",...w()}:null);return b?[[a,b]]:[]}))),F=new Set(Object.keys(v)),G=Object.keys(D(b.cwd)).filter(a=>!F.has(a)),I=Object.fromEntries(Object.entries(u).filter(([a])=>"mcpServers"!==a)),J=Object.fromEntries(n.flatMap(a=>void 0===o[a]?[]:[[a,o[a]]]));void 0!==o.enabledMcpjsonServers&&(J.enabledMcpjsonServers=C(o.enabledMcpjsonServers).filter(a=>F.has(a)));let K=[...new Set([...C(o.disabledMcpjsonServers),...G])];return K.length>0&&(J.disabledMcpjsonServers=K),A(k.settingsPath,JSON.stringify({...I,...J,hooks:{...r,PreToolUse:s}},null,2)+"\n",384),A(k.mcpConfigPath,JSON.stringify({mcpServers:v},null,2)+"\n",384),k}function I(a,b){return"codex"!==a?b:[b.trim(),u].filter(Boolean).join("\n\n")}},29381:(a,b,c)=>{c.d(b,{ph:()=>Y,Ou:()=>aa,fr:()=>E,agentRegistry:()=>a6,oP:()=>aM,l5:()=>aX,MA:()=>aN});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(57975),k=c(27146),l=c(52e3),m=c(57718),n=c(63685),o=c(58577),p=c(82093),q=c(74085),r=c(23953),s=c(65972),t=c(60546),u=c(88623),v=c(93151);let w=new Set(["entries","receipts","conversations","lineageEdges"]),x=["entries","receipts","lineageEdges","memberships","conversations","conversationAliases","migrationIntents","heldDeliveries","deliveryOperationOwners","pendingSuccessorCleanups","pendingSupersedence"],y=["importedResumePanes","legacyResumePanes","identityMigrations","conversationRevision","engineRouting","autoBalance","quotaObservations"];function z(a,b,c){if(null===a||"object"!=typeof a)return a;let d=c.get(a);if(d)return d;let e=new Proxy(a,{get:(a,d,e)=>z(Reflect.get(a,d,e),b,c),set:(a,c,d)=>(b(),Reflect.set(a,c,d)),deleteProperty:(a,c)=>(b(),Reflect.deleteProperty(a,c)),defineProperty:(a,c,d)=>(b(),Reflect.defineProperty(a,c,d))});return c.set(a,e),e}class A{markDecided(a){return this.decidedFiles.add(a),a}decideAssembled(a){return(0,r.$q)(a,this.mcpGrantPolicy),this.markDecided(a)}assertDecided(a){if(!this.decidedFiles.has(a))throw Error("agent registry rows cannot be persisted before the MCP grant decision has run (#739)")}constructor(a,b){this.filename=a,this.rowCache=new Map,this.revisionCache=null,this.readOnlyCache=null,this.decidedFiles=new WeakSet,g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});const c=process.getBuiltinModule?.("bun:sqlite");if(!c)throw Error("SQLite registry modes require the Bun runtime");const{Database:d}=c;this.db=new d(a,{create:!0,strict:!0}),this.normalize=b.normalize,this.onWriterWait=b.onWriterWait,this.onSnapshotLoad=b.onSnapshotLoad,this.onRowPayloadRead=b.onRowPayloadRead,this.onRowPayloadParse=b.onRowPayloadParse,this.onRevisionQuery=b.onRevisionQuery,this.mcpGrantPolicy=b.mcpGrantPolicy,this.db.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA synchronous = FULL; PRAGMA foreign_keys = ON; PRAGMA auto_vacuum = INCREMENTAL;"),this.db.exec(`
|
|
5
|
+
CREATE TABLE IF NOT EXISTS registry_meta (
|
|
6
|
+
key TEXT PRIMARY KEY,
|
|
7
|
+
value TEXT NOT NULL
|
|
8
|
+
);
|
|
9
|
+
CREATE TABLE IF NOT EXISTS registry_rows (
|
|
10
|
+
collection TEXT NOT NULL,
|
|
11
|
+
row_key TEXT NOT NULL,
|
|
12
|
+
value_json TEXT NOT NULL,
|
|
13
|
+
row_order INTEGER NOT NULL,
|
|
14
|
+
PRIMARY KEY(collection, row_key)
|
|
15
|
+
);
|
|
16
|
+
`),this.db.query("PRAGMA table_info(registry_rows)").all().some(a=>"row_order"===a.name)||this.db.exec(`
|
|
17
|
+
BEGIN IMMEDIATE;
|
|
18
|
+
ALTER TABLE registry_rows ADD COLUMN row_order INTEGER NOT NULL DEFAULT 0;
|
|
19
|
+
WITH ordered AS (
|
|
20
|
+
SELECT rowid, ROW_NUMBER() OVER (PARTITION BY collection ORDER BY rowid) - 1 AS position
|
|
21
|
+
FROM registry_rows
|
|
22
|
+
)
|
|
23
|
+
UPDATE registry_rows
|
|
24
|
+
SET row_order = (SELECT position FROM ordered WHERE ordered.rowid = registry_rows.rowid);
|
|
25
|
+
INSERT INTO registry_meta(key, value) VALUES ('schema_version', '2')
|
|
26
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value;
|
|
27
|
+
COMMIT;
|
|
28
|
+
`),this.db.exec(`
|
|
29
|
+
CREATE INDEX IF NOT EXISTS registry_rows_collection_order
|
|
30
|
+
ON registry_rows(collection, row_order);
|
|
31
|
+
`),this.secureFiles(),this.importFirstBoot(b.initialSnapshot)}snapshot(){return this.loadSnapshot(!1)}loadSnapshot(a){this.onSnapshotLoad?.(),this.db.exec("BEGIN");try{let b=this.loadInTransaction(a);return this.db.exec("COMMIT"),b}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}revision(){for(let a=0;a<2;a+=1){let a=this.storageSignature();if(this.revisionCache?.signature===a)return this.revisionCache.revision;this.onRevisionQuery?.();let b=Number(this.meta("revision")??0),c=this.storageSignature();if(a===c)return this.revisionCache={signature:c,revision:b},b}this.onRevisionQuery?.();let a=Number(this.meta("revision")??0);return this.rememberRevision(a),a}readOnlySnapshot(){let a=this.revision();return this.readOnlyCache?.revision===a||(this.readOnlyCache=this.loadSnapshot(!0)),this.readOnlyCache}snapshotSpawns(a){this.db.exec("BEGIN");try{let b=(a,b)=>{let c=this.db.query("SELECT value_json FROM registry_rows WHERE collection = ? AND row_key = ?").get(a,b);return this.onRowPayloadRead?.(a,+!!c),c?this.parseRow(a,b,c.value_json,!0):void 0},c=(a,b,c)=>{let d={version:2,entries:{},receipts:{}};return d[a]={[b]:c},this.normalize(d)[a][b]},d={};for(let e of new Set(a)){let a=b("receipts",e);if(void 0===a)continue;let f=c("receipts",e,a);if(!f)continue;let g=new Set,h=f.conversationId,i=!1;for(;!g.has(h)&&g.size<64;){g.add(h);let a=b("conversationAliases",h);if("string"!=typeof a||!a.startsWith("conversation_"))break;h=a,i=64===g.size}let j=i?void 0:b("conversations",h),k=void 0===j?void 0:c("conversations",h,j);d[e]={launchId:f.launchId,state:f.state,error:f.error,engine:f.engine,cwd:f.cwd,createdAt:f.createdAt,materializedPath:k?.generations.at(-1)?.path??f.artifactPath}}return this.db.exec("COMMIT"),d}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}snapshotTitleConversations(a){this.db.exec("BEGIN");try{let b=(a,b)=>{let c=this.db.query("SELECT value_json FROM registry_rows WHERE collection = ? AND row_key = ?").get(a,b);return this.onRowPayloadRead?.(a,+!!c),c?this.parseRow(a,b,c.value_json,!0):void 0},c=(a,b)=>this.normalize({version:2,entries:{},receipts:{},conversations:{[a]:b}}).conversations[a],d=new Map;for(let e of[...new Set(a)].slice(0,2e3)){if(!e.startsWith("conversation_"))continue;let a=new Set,f=e,g=!1;for(;f;){if(a.has(f)){f=null;break}if(a.size>=64){g=!0;break}a.add(f);let c=b("conversationAliases",f);if("string"!=typeof c||!c.startsWith("conversation_"))break;f=c}if(!f||g)continue;let h=d.get(f),i=h?void 0:b("conversations",f),j=h?.conversation??(void 0===i?void 0:c(f,i));if(!j)continue;let k=h??{aliases:new Set,conversation:j};for(let b of a)b!==f&&k.aliases.add(b);d.set(f,k)}let e=[...d.values()].map(({aliases:a,conversation:b})=>({conversationId:b.id,aliases:[...a],ownedPaths:[...new Set([...[...b.generations].reverse().map(a=>a.path),...[...b.continuityPaths].reverse()])].slice(0,128)}));return this.db.exec("COMMIT"),e}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}mutate(a,b=!0){for(;;){let c,d,e,f;this.db.exec("BEGIN");try{c=this.loadLazyInTransaction(),e=a(c.file),d=c.changes(),this.db.exec("COMMIT")}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}let g=performance.now();this.db.exec("BEGIN IMMEDIATE");let h=d.rows.size>0||d.meta.size>0||d.order.size>0;try{if(this.onWriterWait?.(performance.now()-g),Number(this.meta("revision")??0)!==c.revision){this.db.exec("ROLLBACK");continue}f=h?c.revision+1:c.revision,h&&this.persistChanges(c.file,d,f),this.db.exec("COMMIT")}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}if(h&&(this.secureFiles(),this.updateCachesAfterCommit(c.file,d,f),this.rememberRevision(f)),b){let a=this.snapshot();return{result:e,file:a.file,revision:a.revision}}return{result:e,file:null,revision:f}}}replace(a,b){let c=this.decideAssembled(a);this.db.exec("BEGIN IMMEDIATE");try{let d=this.loadInTransaction();if(void 0!==b&&d.revision!==b)return this.db.exec("ROLLBACK"),{...d,replaced:!1};let e=d.revision+1;return this.persistDiff(d.file,c,e),this.db.exec("COMMIT"),this.secureFiles(),this.rowCache.clear(),this.readOnlyCache=null,this.rememberRevision(e),{file:a,revision:e,replaced:!0}}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}importFirstBoot(a){this.db.exec("BEGIN IMMEDIATE");try{let b=this.meta("migration_complete");"1"!==b&&(this.persistAll(this.decideAssembled(a),1),this.setMeta("schema_version","2"),this.setMeta("migration_complete","1")),this.db.exec("COMMIT"),this.secureFiles()}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}loadInTransaction(a=!1){let b=this.loadLazyInTransaction(!1,a);for(let a of x)b.file[a];for(let a of y)b.file[a];return b}loadLazyInTransaction(a=!0,b=a){let c=this.markDecided(this.normalize({version:2,entries:{},receipts:{}})),d=!1,e=!1,f=()=>{if(!d&&!e){e=!0;try{(0,r.$q)(c,this.mcpGrantPolicy),d=!0}finally{e=!1}}},g=(a,b)=>(w.has(a)&&(0,r.oN)(b)&&f(),b),h=new Map,i=new Map,k=new Map,l=new Set;for(let d of x){let e=!1,j=c[d],m=()=>{},n=()=>{if(e)return;let f=new Set,l=new Map;if(a&&"deliveryOperationOwners"!==d){let a={},c=new Set,e=null,h=null,i=!1,k=null,n=new Map,o=this.db.query("SELECT value_json FROM registry_rows WHERE collection = ? AND row_key = ?"),p=this.db.query("SELECT row_key, value_json FROM registry_rows WHERE collection = ? ORDER BY row_order"),q=()=>{if(k)return k;for(let a of(k=p.all(d),this.onRowPayloadRead?.(d,k.length),h=new Set(e=k.map(a=>a.row_key)),k))l.set(a.row_key,a.value_json);return k};m=()=>{q()};let r=a=>{if(l.has(a))return l.get(a);let b=o.get(d,a)?.value_json??null;return this.onRowPayloadRead?.(d,+(null!==b)),l.set(a,b),b},s=e=>{if(!Object.hasOwn(a,e)){if(c.has(e))return;let f=r(e);if(null===f)return;let g={version:2,entries:{},receipts:{}};g[d]={[e]:structuredClone(this.parseRow(d,e,f,b))};let h=this.normalize(g)[d];if(!Object.hasOwn(h,e))return;a[e]=h[e]}return g(d,a[e])},t=()=>{if(i)return;let e=q(),f={};for(let g of e)Object.hasOwn(a,g.row_key)||c.has(g.row_key)||(f[g.row_key]=structuredClone(this.parseRow(d,g.row_key,g.value_json,b)));let g={version:2,entries:{},receipts:{}};for(let[b,c]of(g[d]=f,Object.entries(this.normalize(g)[d])))a[b]=c;i=!0},u=()=>(t(),[...e.filter(a=>!c.has(a)),...Object.keys(a).filter(a=>!h.has(a))]);j=new Proxy(a,{get:(a,b,c)=>{if("string"!=typeof b)return Reflect.get(a,b,c);let d=s(b);if(void 0===d)return;let e=n.get(b);return e||(e=new WeakMap,n.set(b,e)),z(d,()=>f.add(b),e)},set:(a,b,d)=>("string"==typeof b&&(r(b),f.add(b),c.delete(b),n.delete(b)),Reflect.set(a,b,d)),deleteProperty:(a,b)=>("string"==typeof b&&(r(b),f.add(b),c.add(b),n.delete(b)),Reflect.deleteProperty(a,b)),defineProperty:(a,b,d)=>("string"==typeof b&&(r(b),f.add(b),c.delete(b),n.delete(b)),Reflect.defineProperty(a,b,d)),has:(b,c)=>"string"==typeof c?void 0!==s(c):Reflect.has(a,c),ownKeys:()=>u(),getOwnPropertyDescriptor:(a,b)=>{if("string"!=typeof b)return;let c=s(b);if(void 0!==c)return{configurable:!0,enumerable:!0,writable:!0,value:c}}})}else{let e={},g=this.db.query("SELECT collection, row_key, value_json, row_order FROM registry_rows WHERE collection = ? ORDER BY row_order").all(d);for(let c of(this.onRowPayloadRead?.(d,g.length),g)){let f=this.parseRow(d,c.row_key,c.value_json,b);e[c.row_key]=a?structuredClone(f):f,l.set(c.row_key,c.value_json)}let h={version:2,entries:{},receipts:{}};if(h[d]=e,"deliveryOperationOwners"===d&&(h.heldDeliveries=c.heldDeliveries),j=this.normalize(h)[d],a){let a=new Map;j=new Proxy(j,{get:(b,c,d)=>{let e=Reflect.get(b,c,d);if("string"!=typeof c||!Object.hasOwn(b,c))return e;let g=a.get(c);return g||(g=new WeakMap,a.set(c,g)),z(e,()=>f.add(c),g)},set:(a,b,c)=>("string"==typeof b&&f.add(b),Reflect.set(a,b,c)),deleteProperty:(a,b)=>("string"==typeof b&&f.add(b),Reflect.deleteProperty(a,b)),defineProperty:(a,b,c)=>("string"==typeof b&&f.add(b),Reflect.defineProperty(a,b,c))})}m=()=>{}}e=!0,h.set(d,j),i.set(d,l),k.set(d,f)};Object.defineProperty(c,d,{configurable:!0,enumerable:!0,get:()=>(n(),!a&&w.has(d)&&f(),j),set:a=>{n(),m(),j=a,h.set(d,j),l.add(d)}})}let m=new Map,n=new Map;for(let a of y){let b=!1,d=c[a],e=()=>{if(b)return;let c=this.meta(a);null!==c&&(d=JSON.parse(c)),b=!0,m.set(a,d),n.set(a,structuredClone(d))};Object.defineProperty(c,a,{configurable:!0,enumerable:!0,get:()=>(e(),d),set:b=>{e(),d=b,m.set(a,d)}})}return{file:c,revision:Number(this.meta("revision")??0),changes:()=>{let a={rows:new Map,meta:new Set,order:new Set};for(let[b,c]of h){let d=i.get(b),e=c,f=new Set([...l.has(b)?new Set([...d.keys(),...Object.keys(e)]):k.get(b)].filter(a=>{if(!Object.hasOwn(e,a))return d.has(a);let b=d.get(a);return void 0===b||JSON.stringify(e[a])!==b}));f.size>0&&a.rows.set(b,f),l.has(b)&&(a.rows.set(b,new Set([...Object.keys(d),...Object.keys(e)])),a.order.add(b))}for(let[b,c]of m)(0,j.isDeepStrictEqual)(n.get(b),c)||a.meta.add(b);return a}}}parseRow(a,b,c,d){if(!d)return this.onRowPayloadParse?.(a,1),JSON.parse(c);let e=this.rowCache.get(a);e||(e=new Map,this.rowCache.set(a,e));let f=e.get(b);if(f?.valueJson===c)return f.parsed;let g=JSON.parse(c);return this.onRowPayloadParse?.(a,1),e.set(b,{valueJson:c,parsed:g}),g}updateCachesAfterCommit(a,b,c){let d=this.readOnlyCache?.revision===c-1?this.readOnlyCache:null,e=d?{...d.file}:null;for(let[c,f]of b.rows){let g=a[c],h=this.rowCache.get(c);h||(h=new Map,this.rowCache.set(c,h));let i=e?{...d.file[c]}:null;for(let a of f){if(!Object.hasOwn(g,a)){h.delete(a),i&&delete i[a];continue}let b=JSON.stringify(g[a]),c=JSON.parse(b);h.set(a,{valueJson:b,parsed:c}),i&&(i[a]=c)}if(e&&i)if(b.order.has(c)){let a={};for(let b of Object.keys(g))Object.hasOwn(i,b)&&(a[b]=i[b]);e[c]=a}else e[c]=i}if(e){for(let c of b.meta)e[c]=structuredClone(a[c]);this.readOnlyCache={file:e,revision:c}}else this.readOnlyCache=null}persistAll(a,b){for(let b of(this.assertDecided(a),this.db.exec("DELETE FROM registry_rows"),x))for(let[c,[d,e]]of Object.entries(a[b]).entries())this.upsertRow(b,d,e,c);for(let b of y)this.setMeta(b,JSON.stringify(a[b]));this.setMeta("revision",String(b))}persistDiff(a,b,c){for(let c of(this.assertDecided(b),x)){let d=a[c],e=b[c];for(let a of new Set([...Object.keys(d),...Object.keys(e)])){if(!(a in e)){this.db.query("DELETE FROM registry_rows WHERE collection = ? AND row_key = ?").run(c,a);continue}a in d&&(0,j.isDeepStrictEqual)(d[a],e[a])||this.upsertRow(c,a,e[a])}this.persistRowOrder(c,Object.keys(e))}for(let c of y)(0,j.isDeepStrictEqual)(a[c],b[c])||this.setMeta(c,JSON.stringify(b[c]));this.setMeta("revision",String(c))}persistChanges(a,b,c){for(let[c,d]of(this.assertDecided(a),b.rows)){let b=a[c];for(let a of d)a in b?this.upsertRow(c,a,b[a]):this.db.query("DELETE FROM registry_rows WHERE collection = ? AND row_key = ?").run(c,a)}for(let c of b.order)this.persistRowOrder(c,Object.keys(a[c]));for(let c of b.meta)this.setMeta(c,JSON.stringify(a[c]));this.setMeta("revision",String(c))}upsertRow(a,b,c,d){void 0!==d?this.db.query(`
|
|
32
|
+
INSERT INTO registry_rows(collection, row_key, value_json, row_order) VALUES (?, ?, ?, ?)
|
|
33
|
+
ON CONFLICT(collection, row_key) DO UPDATE SET value_json = excluded.value_json, row_order = excluded.row_order
|
|
34
|
+
`).run(a,b,JSON.stringify(c),d):this.db.query(`
|
|
35
|
+
INSERT INTO registry_rows(collection, row_key, value_json, row_order)
|
|
36
|
+
SELECT ?, ?, ?, COALESCE(MAX(row_order) + 1, 0) FROM registry_rows WHERE collection = ?
|
|
37
|
+
ON CONFLICT(collection, row_key) DO UPDATE SET value_json = excluded.value_json
|
|
38
|
+
`).run(a,b,JSON.stringify(c),a)}persistRowOrder(a,b){for(let[c,d]of b.entries())this.db.query("UPDATE registry_rows SET row_order = ? WHERE collection = ? AND row_key = ?").run(c,a,d)}meta(a){return this.db.query("SELECT key, value FROM registry_meta WHERE key = ?").get(a)?.value??null}setMeta(a,b){this.db.query(`
|
|
39
|
+
INSERT INTO registry_meta(key, value) VALUES (?, ?)
|
|
40
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value
|
|
41
|
+
`).run(a,b)}secureFiles(){for(let a of[this.filename,`${this.filename}-wal`,`${this.filename}-shm`])g().existsSync(a)&&g().chmodSync(a,384)}storageSignature(){return[this.filename,`${this.filename}-wal`].map(a=>{try{let b=g().statSync(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(a){if("ENOENT"===a.code)return"missing";throw a}}).join("|")}rememberRevision(a){this.revisionCache={signature:this.storageSignature(),revision:a}}}var B=c(88858),C=c(47473);let D="structured-host:";class E extends Error{constructor(a,b){super(`Agent spawn limit reached: caller ${a} already has ${b} live children (cap: ${b}). Wait for a child to finish before spawning another helper.`),this.parentConversationId=a,this.cap=b,this.name="SpawnChildLimitError"}}class F extends Error{constructor(a,b){super(b),this.successorConversationId=a,this.name="SupersedenceConflictError"}}function G(a){return(a.scope??"engine")==="engine"}function H(a,b,c){if(I(a,b,c?.pendingDeliveryConversationIds)||(c?c.uncertainDeliveryConversationIds.has(b.id):Object.values(a.heldDeliveries).some(a=>a.conversationId===b.id&&"delivery-uncertain"===a.state)))return"busy";if(b.migration&&!["committed","rolled-back"].includes(b.migration.phase))return"idle";let d=b.generations.at(-1)?.path;return void 0!==d&&(c?c.activeHostPaths.has(d):Object.values(a.entries).some(a=>a.artifactPath===d&&["starting","live","idle","handoff"].includes(a.status)))||(c?c.pendingDeliveryConversationIds.has(b.id):Object.values(a.heldDeliveries).some(a=>a.conversationId===b.id&&"delivered"!==a.state))?"idle":"deferred"}function I(a,b,c){let d=b.generations.at(-1)?.path,e=c?c.has(b.id):Object.values(a.heldDeliveries).some(a=>a.conversationId===b.id&&"delivered"!==a.state),f="unknown"===b.turn.state&&"empty"===b.turn.source&&!!d&&!g().existsSync(d)&&!e;return"busy"===b.turn.state||"unknown"===b.turn.state&&!f}function J(a){let b=new Set,c=new Set;for(let d of Object.values(a.heldDeliveries))"delivery-uncertain"===d.state&&b.add(d.conversationId),"delivered"!==d.state&&c.add(d.conversationId);return{uncertainDeliveryConversationIds:b,pendingDeliveryConversationIds:c,activeHostPaths:new Set(Object.values(a.entries).filter(a=>["starting","live","idle","handoff"].includes(a.status)).map(a=>a.artifactPath).filter(a=>!!a))}}function K(a){return null===a||"committed"===a.phase||"rolled-back"===a.phase||("waiting-turn"===a.phase||"requested"===a.phase)&&null===a.providerReceipt}function L(a){return"resume-successor"===a.purpose&&"failed"!==a.state&&("completed"!==a.state||null===a.resumeSourcePath||a.artifactPath===a.resumeSourcePath)}let M={now:()=>Date.now(),wait:async a=>{await new Promise(b=>setTimeout(b,a))}};function N(a,b,c){let d=J(a);return JSON.stringify(Object.values(a.conversations).filter(a=>a.engine===b&&c.has(a.generations.at(-1)?.path??"")).map(b=>[b.id,H(a,b,d)]).sort(([a],[b])=>a.localeCompare(b)))}function O(a,b,c){let d=a.entries[b],e=new Set([d?.artifactPath,c.artifactPath].filter(a=>!!a)),f=new Set(["starting","live","idle","handoff"]),g=(d,e)=>{for(let[g,h]of Object.entries(a.entries)){let a=e&&g===b?c:h;if(a.artifactPath===d&&f.has(a.status))return!0}return e&&!(b in a.entries)&&c.artifactPath===d&&f.has(c.status)};return new Set([...e].filter(a=>g(a,!1)!==g(a,!0)))}function P(a,b,c,d){N(a,b,d)!==c&&(a.conversationRevision[b]+=1,a.engineRouting[b].revision+=1)}function Q(a,b,c,d,f){let g=a.migration?.boardProject??null,h=a.migration&&"committed"!==a.migration.phase?a.migration.pendingContinuityPaths:[];return{intentId:c.id,phase:d,targetId:c.targetId,revision:c.revision,error:null,errorCode:null,operationId:e().randomUUID(),sourceGenerationId:b.id,successorLaunchProfile:null,providerReceipt:null,pendingContinuityPaths:h,boardProject:g,boardOperationId:a.migration?.boardOperationId??null,boardPlacementProject:a.migration?.boardPlacementProject??g??a.projectOwnership?.project??b.launchProfile.project,updatedAt:f}}function R(a,b,c){let d=b.migration?.phase==="committed"?null:b.migration?.providerReceipt;d&&(a.pendingSuccessorCleanups[d.operationId]??={conversationId:b.id,receipt:d,createdAt:c,lastError:null})}function S(a,b,c){for(let d of Object.values(a.heldDeliveries))d.conversationId===b.id&&"delivered"!==d.state&&"failed"!==d.state&&T(a,d,c)}function T(a,b,c){let d="delivery-uncertain"===b.state?`${c}; a prior delivery attempt may have been delivered because its journal outcome is unknown`:c;b.state="failed",b.text="",b.generationId=null,b.assignedAt=null,b.deliveredAt=null,b.error=d.slice(0,240),as(a,b),aq(a,b)}function U(a,b,c,d){let e=a.heldDeliveries[b];if(!e||!["held","assigned","delivery-uncertain"].includes(e.state))return null;let f=a.conversations[aG(a,e.conversationId)],g=f?.migration;return g&&"rolled-back"===g.phase&&g.intentId===c&&(0,p.bj)(e,g.updatedAt)?(T(a,e,d),ab(e)):null}function V(a){return`reconfigure:${a.operationId}:${a.revision}`}function W(a,b,c){let d=b.migration;if(!d||["committed","rolled-back","failed-recoverable"].includes(d.phase))return;let e=a.migrationIntents[d.intentId],f=V(c);if(e?.scope!=="conversation"||!e.requestIds.includes(f))return;let g=ac(),h=new Set([b.generations.at(-1)?.path].filter(a=>!!a)),i=N(a,b.engine,h);"stopped"!==e.state&&(e.state="stopped",e.stoppedAt=g,e.updatedAt=g),R(a,b,g),aB(b),S(a,b,p.JJ),b.migration={...d,phase:"rolled-back",pendingContinuityPaths:[],error:null,errorCode:null,updatedAt:g},b.updatedAt=g,P(a,b.engine,i,h)}class X extends Error{constructor(a,b){super("migration preview is stale"),this.expected=a,this.actual=b,this.name="MigrationRevisionError"}}class Y extends Error{constructor(a="client message id is already reserved for another request"){super(a),this.name="DeliveryReservationConflictError"}}let Z="1970-01-01T00:00:00.000Z";function $(a=ac()){return{enabled:!0,revision:0,cooldownUntil:null,departed:{},lastOutcome:null,lastTrigger:null,lastCheckAt:null,sustain:null,restartedAt:a}}let _={version:2,entries:{},receipts:{},lineageEdges:{},memberships:{},identityMigrations:{},importedResumePanes:!1,legacyResumePanes:{serverPid:null,panes:{}},conversations:{},conversationAliases:{},conversationRevision:{claude:0,codex:0},migrationIntents:{},engineRouting:{claude:{activeAccountId:null,revision:0},codex:{activeAccountId:null,revision:0}},autoBalance:{claude:$(),codex:$()},quotaObservations:{claude:{},codex:{}},heldDeliveries:{},deliveryOperationOwners:{},pendingSuccessorCleanups:{},pendingSupersedence:{}};class aa extends Error{}function ab(a){return JSON.parse(JSON.stringify(a))}function ac(){return new Date().toISOString()}let ad=new Set(["starting","pane-bound","host-verified","prompt-delivered","path-pending"]),ae=new Set(["starting","live","idle","handoff"]);function af(a){return l.B.pidAlive(a.pid)&&(null===a.startIdentity||l.B.processIdentity(a.pid)===a.startIdentity)}function ag(a){return i().basename(a).match(/([0-9a-f-]{36})(?:\.jsonl)?$/i)?.[1]??e().randomUUID()}function ah(a){if(!a||"object"!=typeof a||"codex-app-server"!==a.kind&&"claude-broker"!==a.kind)return null;let b=a.eventCursor;if(void 0!==b&&(!Number.isSafeInteger(b)||b<0))throw Error("structured host event cursor is invalid");let c=a.process&&"object"==typeof a.process&&"number"==typeof a.process.pid?{pid:a.process.pid,startIdentity:"string"==typeof a.process.startIdentity?a.process.startIdentity:null}:null;return{kind:a.kind,endpoint:"string"==typeof a.endpoint?a.endpoint:"",process:c,eventCursor:void 0===b?0:b,protocolVersion:"string"==typeof a.protocolVersion?a.protocolVersion:null,writerClaimEpoch:Number.isSafeInteger(a.writerClaimEpoch)&&(a.writerClaimEpoch??-1)>=0?a.writerClaimEpoch:0,activeTurnRef:"string"==typeof a.activeTurnRef?a.activeTurnRef:null,pendingAttention:Array.isArray(a.pendingAttention)?a.pendingAttention.filter(a=>"string"==typeof a):[],activeFlags:Array.isArray(a.activeFlags)?a.activeFlags.filter(a=>"string"==typeof a):[]}}function ai(a){let b=$(Z);return a&&"object"==typeof a?{...b,...a,departed:a.departed&&"object"==typeof a.departed?a.departed:{},lastOutcome:a.lastOutcome&&"object"==typeof a.lastOutcome?a.lastOutcome:null,sustain:a.sustain&&"object"==typeof a.sustain?a.sustain:null}:b}function aj(a,b,c,d){c.launchProfile=(0,o.Ui)({...c.launchProfile,...d});let e=a.entries[(0,u.pp)({engine:b.engine,sessionId:c.id})];e&&(e.launchProfile=(0,o.Ui)({...e.launchProfile??c.launchProfile,...d}),e.updatedAt=ac()),b.updatedAt=ac()}function ak(a,b){let c={operationId:a?.operationId||b,kind:a?.kind==="steer"?"steer":"send",policy:a?.policy==="queue"||a?.policy==="steer-if-active"?a.policy:"interrupt-active"};(a?.turnId===null||"string"==typeof a?.turnId)&&(c.turnId=a.turnId);let d=(0,B.n)(a?.origin);return d&&(c.origin=d),c}function al(a,b,c){let d=void 0===c.turnId?["absent"]:["present",c.turnId];return e().createHash("sha256").update(JSON.stringify(["held-delivery-request-v1",a,b,c.kind,c.policy,d])).digest("hex")}let am="held delivery image references are corrupt; send the message again to re-admit its images";function an(a){let b=a.state??"held",c="string"==typeof a.text?a.text:"",d=ak(a.command,a.id),e=c?al(a.conversationId,c,d):null,f=a.payloadKind??"text",g=(0,C.kW)(a.runtimeImages??[],16),h="delivered"!==b&&(null===g||"runtime-images"===f&&(!Array.isArray(a.runtimeImages)||0===g.length));h&&(b="failed");let i=g??[],j="string"==typeof a.contentDigest?a.contentDigest:null;if(!j&&!h&&"delivered"!==b&&("text"===f||"runtime-images"===f))try{j=(0,C.rM)(c,i).contentDigest}catch{}return{...a,runtimeConversationId:"string"==typeof a.runtimeConversationId&&a.runtimeConversationId.startsWith("conversation_")?a.runtimeConversationId:a.conversationId,text:"delivered"===b?"":c,clientMessageId:a.clientMessageId??null,payloadKind:f,runtimeImages:i,contentDigest:j,artifactPaths:Array.isArray(a.artifactPaths)?a.artifactPaths.filter(a=>"string"==typeof a):[],command:d,requestDigest:"string"==typeof a.requestDigest?a.requestDigest:e,state:b,generationId:h?null:a.generationId??null,attempts:Number.isInteger(a.attempts)?a.attempts:0,assignedAt:h?null:a.assignedAt??null,deliveredAt:a.deliveredAt??null,error:h?am:a.error??null}}function ao(a){return a?.state==="delivered"||a?.state==="failed"?a.state:null}function ap(a){return"failed"===a.state&&a.error?.startsWith(p.BD)===!0}function aq(a,b){let c=a.deliveryOperationOwners[b.command.operationId];c?.deliveryId===b.id&&(c.terminalState=ao(b))}function ar(a,b){let c=b.clientMessageId;if(!c||!c.startsWith("spawn_"))return null;let d=c.slice(6);if(b.command.operationId!==`spawn_message_${d}`)return null;let e=a.receipts[d];return e&&"launch"===e.purpose&&aG(a,e.conversationId)===aG(a,b.conversationId)?e:null}function as(a,b){if("failed"!==b.state)return;let c=ar(a,b);!c||["completed","failed","conflicted"].includes(c.state)||(c.state="failed",c.error=b.error??"initial prompt delivery failed",c.admissionOwner=null)}function at(a){let b=[];for(let c of Object.values(a.heldDeliveries)){let d=ar(a,c);if(!d)continue;if("failed"===c.state&&!["completed","failed","conflicted"].includes(d.state)){let e=d.state;as(a,c),d.state!==e&&b.push(c.id);continue}let e="failed"===d.state||"conflicted"===d.state,f=0===c.attempts&&("held"===c.state||"assigned"===c.state);e&&f&&(T(a,c,"spawn failed before its initial message was delivered"),b.push(c.id))}return b}function au(a,b,c,d,e,f){let g=aG(a,b),h=d?Object.values(a.heldDeliveries).find(b=>aG(a,b.conversationId)===g&&b.clientMessageId===d):void 0,i=ak(f,h?.id??"pending-delivery"),j=al(g,c,i),k=function(a,b,c,d){let e=new Set([b]);for(let c of Object.keys(a.conversationAliases))aG(a,c)===b&&e.add(c);return new Set([...e].map(a=>al(a,c,d)))}(a,g,c,i),l=!!(h?.requestDigest&&!k.has(h.requestDigest)||h?.contentDigest&&e&&e!==h.contentDigest),m=null;if(l){if("failed"!==h.state||h.error===am)throw new Y;m=h,h=void 0}let n=null;if(!h&&f.operationId){let b=Object.values(a.heldDeliveries).find(a=>a.command.operationId===i.operationId),c=a.deliveryOperationOwners[i.operationId]??(b?.requestDigest?{conversationId:b.conversationId,runtimeConversationId:b.runtimeConversationId,clientMessageId:b.clientMessageId,deliveryId:b.id,command:b.command,requestDigest:b.requestDigest,contentDigest:b.contentDigest,createdAt:b.createdAt,terminalState:ao(b)}:null),f=c&&aG(a,c.conversationId)===g&&c.clientMessageId===d&&k.has(c.requestDigest)&&(!c.contentDigest||!e||c.contentDigest===e);if(c&&!f)throw new Y("operation id is already reserved for another client message");f&&c.terminalState&&(n=ab(c))}return{canonicalId:g,existing:h,requestDigest:j,terminalOperationRetry:n,supersededFailed:m}}function av(a,b,c,d,e,f){if(a.existing?.state==="delivered"||a.existing?.error===am)return ab(a.existing);let g=a.terminalOperationRetry;return g?.terminalState?{id:g.deliveryId,conversationId:a.canonicalId,runtimeConversationId:g.runtimeConversationId,text:b,createdAt:g.createdAt,clientMessageId:c,payloadKind:d,runtimeImages:e.map(a=>({...a})),contentDigest:f,artifactPaths:[],command:g.command,requestDigest:g.requestDigest,state:g.terminalState,generationId:null,attempts:0,assignedAt:null,deliveredAt:"delivered"===g.terminalState?g.createdAt:null,error:"failed"===g.terminalState?"delivery failed":null}:null}function aw(a,b,c){for(let b of Object.values(a.heldDeliveries))b.command.operationId!==b.id&&b.requestDigest&&(a.deliveryOperationOwners[b.command.operationId]??={conversationId:b.conversationId,runtimeConversationId:b.runtimeConversationId,clientMessageId:b.clientMessageId,deliveryId:b.id,command:b.command,requestDigest:b.requestDigest,contentDigest:b.contentDigest,createdAt:b.createdAt,terminalState:null},aq(a,b));let d=new Map,e=new Map;for(let c of Object.values(a.heldDeliveries)){let f=aG(a,c.conversationId);if(!b||f===aG(a,b)){if("delivered"===c.state){c.text="";let a=d.get(f)??[];a.push(c),d.set(f,a)}else if("failed"===c.state&&!c.error?.startsWith(p.BD)){let a=e.get(f)??[];a.push(c),e.set(f,a)}}}let f=0;for(let b of[d,e])for(let[d,e]of b){let g=[];for(let b of e)!function(a,b){if(void 0===b)return!1;let c=Date.parse(a.deliveredAt??a.createdAt);return Number.isFinite(c)&&b-c>6048e5}(b,c)?g.push(b):(delete a.heldDeliveries[b.id],f+=1);b.set(d,g)}for(let b of d.values())for(let c of(b.sort((a,b)=>(b.deliveredAt??b.createdAt).localeCompare(a.deliveredAt??a.createdAt)||b.id.localeCompare(a.id)),b.slice(100)))delete a.heldDeliveries[c.id],f+=1;for(let[b,c]of e){let d=Math.max(0,Math.min(50,99-Object.values(a.heldDeliveries).filter(c=>aG(a,c.conversationId)===b&&["held","assigned","delivery-uncertain"].includes(c.state)).length));for(let b of(c.sort((a,b)=>b.createdAt.localeCompare(a.createdAt)||b.id.localeCompare(a.id)),c.slice(d)))delete a.heldDeliveries[b.id],f+=1}let g=new Map;for(let[c,d]of Object.entries(a.deliveryOperationOwners)){if(null===d.terminalState)continue;let e=aG(a,d.conversationId);if(b&&e!==aG(a,b))continue;let f=g.get(e)??[];f.push([c,d]),g.set(e,f)}for(let b of g.values())for(let[c]of(b.sort(([a,b],[c,d])=>d.createdAt.localeCompare(b.createdAt)||c.localeCompare(a)),b.slice(200)))delete a.deliveryOperationOwners[c];return f}function ax(a,b){return a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b)}function ay(a,b){a.generations.some(a=>a.path===b)||(a.continuityPaths.includes(b)||a.continuityPaths.push(b),a.migration&&"committed"!==a.migration.phase&&!a.migration.pendingContinuityPaths.includes(b)&&a.migration.pendingContinuityPaths.push(b))}function az(a,b){!a.generations.some(a=>a.path===b)&&(a.continuityPaths.includes(b)||a.continuityPaths.push(b),a.providerForkPaths.includes(b)||a.providerForkPaths.push(b))}function aA(a,b,c){let d=Object.values(a.conversations).find(a=>a.id!==b.id&&a.engine===b.engine&&ax(a,c));if(d&&!aP(a,d,b,c))throw Error("migration continuity path has another durable owner")}function aB(a){let b=a.migration?.pendingContinuityPaths??[];0!==b.length&&(a.abandonedContinuityPaths=[...new Set([...a.abandonedContinuityPaths,...b])])}function aC(a,b){let c=a.generations[0];return null===a.migration&&1===a.generations.length&&c?.path===b&&0===a.continuityPaths.length}function aD(a,b){let c=100*(b.generations.length>1||null!==b.migration);for(let d of Object.values(a.receipts))d.conversationId===b.id&&(c+=20),d.parentConversationId===b.id&&(c+=5);for(let d of(a.lineageEdges[b.id]&&(c+=10),Object.values(a.lineageEdges)))d.parentConversationId===b.id&&(c+=5);for(let d of(a.memberships[b.id]?.length&&(c+=10),Object.values(a.heldDeliveries)))d.conversationId===b.id&&(c+=5);for(let d of Object.values(a.deliveryOperationOwners))d.conversationId===b.id&&(c+=5);return c}function aE(a,b){return[...b].sort((b,c)=>aD(a,c)-aD(a,b)||b.createdAt.localeCompare(c.createdAt)||b.id.localeCompare(c.id))[0]??null}function aF(a,b,c,d){let e=b.generations.find(a=>a.path===c)??b.generations.at(-1),f=a.lineageEdges[b.id],g=f?.source==="viewer-spawn"?f.parentConversationId:e?.launchProfile.parentConversationId;if(!e||!g||g===b.id)return;let h=aG(a,g),i=a.conversations[h];if(!i)return;let j=i.generations.at(-1);a.lineageEdges[b.id]={childConversationId:b.id,parentConversationId:h,childSessionKey:(0,u.sz)(b.engine,c),parentSessionKey:j?(0,u.sz)(i.engine,j.path):null,childArtifactPath:c,parentArtifactPath:j?.path??null,kind:f?.kind??"spawn",role:f?.role??null,reviewsConversationId:f?.reviewsConversationId??null,source:f?.source??"engine-native",evidence:f?.evidence??{launchId:null,clientAttemptId:null},createdAt:f?.createdAt??d}}function aG(a,b){let c=new Set,d=b;for(;!c.has(d);){c.add(d);let b=a.conversationAliases[d];if(!b)break;d=b}return d}function aH(a,b){let c=new Set,d=aG(a,b);for(;c.size<64&&!c.has(d);){c.add(d);let b=a.conversations[d]?.supersededBy?.conversationId;if(!b)break;d=aG(a,b)}return d}function aI(a,b){let c=b.generations.at(-1);if(!c)return!1;let d=a.entries[(0,u.pp)({engine:b.engine,sessionId:c.id})];return!!(d&&d.artifactPath===c.path&&("starting"===d.status||"live"===d.status))}function aJ(a,b,c,d){let e=aG(a,c),f=aH(a,b);if(!a.conversations[aG(a,b)])throw Error("supersedence predecessor is unknown");if(!a.conversations[e])throw Error("supersedence successor is unknown");if(f===e)return a.conversations[f]??null;let g=a.conversations[f];if(!g)throw Error("supersedence predecessor is unknown");if(aH(a,e)===f)throw Error("supersedence chain would form a cycle");if(aI(a,g))throw new F(f,"supersedence chain already ends at a live conversation");return g.supersededBy={conversationId:e,at:ac(),reason:d},g.updatedAt=g.supersededBy.at,a.conversationRevision[g.engine]+=1,g}function aK(a,b,c,d){try{aJ(a,b,c,d),delete a.pendingSupersedence[aG(a,c)]}catch(f){if(!(f instanceof F))return;let e=aG(a,c);a.pendingSupersedence[e]??={predecessorConversationId:aG(a,b),successorConversationId:e,reason:d,stagedAt:ac()}}}function aL(a,b,c,d){if("flow"!==c.kind&&"pipeline"!==c.kind&&"orchestrator"!==c.kind||!c.containerId.trim()||!c.role.trim()||!c.slot.trim())throw Error("durable membership is invalid");let e=aG(a,b),f=c.parentConversationId?aG(a,c.parentConversationId):null,g={conversationId:e,kind:c.kind,containerId:c.containerId,role:c.role,slot:c.slot,stageId:c.stageId??null,stageOrder:Number.isInteger(c.stageOrder)?c.stageOrder:null,round:Number.isInteger(c.round)?c.round:null,parentConversationId:f,runtime:c.runtime?{...c.runtime}:null,createdAt:d},h=a.memberships[e]??[],i=h.find(a=>a.kind===g.kind&&a.containerId===g.containerId&&a.slot===g.slot);if(i){if(JSON.stringify((({createdAt:a,...b})=>b)(i))!==JSON.stringify((({createdAt:a,...b})=>b)(g)))throw Error("durable membership is immutable");return i}return h.push(g),a.memberships[e]=h,g}function aM(a){return aO(a,ab)}function aN(a){return aO(a,a=>a)}function aO(a,b){let c=new Map;for(let b of Object.values(a.conversations)){for(let a of b.generations)c.has(a.path)||c.set(a.path,b);for(let a of b.continuityPaths)c.has(a)||c.set(a,b)}return{conversationForPath(a){let d=c.get(a);return d?b(d):null},canonicalConversationId:b=>aG(a,b),conversation(c){let d=a.conversations[aG(a,c)];return d?b(d):null}}}function aP(a,b,c,d){if(!aC(b,d))return!1;for(let d of(b.migrationOptOut&&(!c.migrationOptOut||b.migrationOptOut.updatedAt>c.migrationOptOut.updatedAt)&&(c.migrationOptOut={...b.migrationOptOut}),c.agentRole??=b.agentRole,c.delegationDepth??=b.delegationDepth,Object.values(a.receipts)))d.conversationId===b.id&&(d.conversationId=c.id),d.parentConversationId===b.id&&(d.parentConversationId=c.id),d.launchProfile.parentConversationId===b.id&&(d.launchProfile={...d.launchProfile,parentConversationId:c.id});let e={};for(let d of Object.values(a.lineageEdges)){let a={...d,childConversationId:d.childConversationId===b.id?c.id:d.childConversationId,parentConversationId:d.parentConversationId===b.id?c.id:d.parentConversationId,reviewsConversationId:d.reviewsConversationId===b.id?c.id:d.reviewsConversationId};a.childConversationId!==a.parentConversationId&&(e[a.childConversationId]&&d.childConversationId!==c.id||(e[a.childConversationId]=a))}a.lineageEdges=e;let f={};for(let[d,e]of Object.entries(a.memberships)){let a=d===b.id?c.id:d,g=e.map(d=>({...d,conversationId:a,parentConversationId:d.parentConversationId===b.id?c.id:d.parentConversationId})),h=f[a]??[];for(let a of g)h.some(b=>b.kind===a.kind&&b.containerId===a.containerId&&b.slot===a.slot)||h.push(a);f[a]=h}for(let d of(a.memberships=f,Object.values(a.heldDeliveries)))d.conversationId===b.id&&(d.conversationId=c.id);for(let d of Object.values(a.deliveryOperationOwners))d.conversationId===b.id&&(d.conversationId=c.id);for(let d of Object.values(a.entries))d.launchProfile?.parentConversationId===b.id&&(d.launchProfile={...d.launchProfile,parentConversationId:c.id});for(let d of Object.values(a.conversations))for(let a of d.generations)a.launchProfile.parentConversationId===b.id&&(a.launchProfile={...a.launchProfile,parentConversationId:c.id});for(let[d,e]of Object.entries(a.conversationAliases))e===b.id&&(a.conversationAliases[d]=c.id);return a.conversationAliases[b.id]=c.id,delete a.conversations[b.id],a.conversationRevision[c.engine]+=1,a.engineRouting[c.engine].revision+=1,!0}function aQ(a,b){if(!a)return!0;let c=Date.parse(a),d=Date.parse(b);return Number.isFinite(c)&&Number.isFinite(d)?d>=c:b>=a}function aR(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return null;let c=a.spec,d="string"==typeof a.retryAt?Date.parse(a.retryAt):NaN,e=(0,C.kW)(a.imageRefs??[],16);if(1!==a.version||!Number.isFinite(d)||"string"!=typeof a.accountId||!a.accountId||"en"!==a.locale&&"uk"!==a.locale||!c||"claude"!==c.engine&&"codex"!==c.engine||"string"!=typeof c.command||"string"!=typeof c.cwd||"string"!=typeof c.windowName||!c.launchProfile||"string"!=typeof a.prompt||!e)return null;try{(0,C.h1)(a.prompt)}catch{return null}return{version:1,retryAt:new Date(d).toISOString(),accountId:a.accountId,locale:a.locale,spec:{command:c.command,cwd:c.cwd,windowName:c.windowName,engine:c.engine,..."string"==typeof c.transcript?{transcript:c.transcript}:{},...!0===c.printMode?{printMode:!0}:{},launchProfile:(0,o.Ui)(c.launchProfile,b)},prompt:a.prompt,imageRefs:e,parentArtifactPath:"string"==typeof a.parentArtifactPath?a.parentArtifactPath:null,pipelineSourceConversationId:"string"==typeof a.pipelineSourceConversationId&&a.pipelineSourceConversationId.startsWith("conversation_")?a.pipelineSourceConversationId:null}}function aS(a){return!a||"object"!=typeof a||Array.isArray(a)?null:"string"==typeof a.project&&a.project&&Number.isInteger(a.seatEpoch)&&!((a.seatEpoch??0)<1)&&"string"==typeof a.conversationId&&a.conversationId.startsWith("conversation_")&&(null===a.predecessorConversationId||"string"==typeof a.predecessorConversationId)&&"string"==typeof a.designatedAt&&(null===a.activatedAt||"string"==typeof a.activatedAt)?{project:a.project,seatEpoch:a.seatEpoch,conversationId:a.conversationId,predecessorConversationId:a.predecessorConversationId??null,designatedAt:a.designatedAt,activatedAt:a.activatedAt??null,path:"string"==typeof a.path?a.path:null}:null}function aT(a,b){let c="completed"===a.state||"failed"===a.state||"pane-bound"===a.state||"host-verified"===a.state||"prompt-delivered"===a.state||"path-pending"===a.state||"conflicted"===a.state?a.state:"starting",d=a.pane&&"object"==typeof a.pane&&"string"==typeof a.pane.paneId&&"string"==typeof a.pane.target?{...a.pane,display:"string"==typeof a.pane.display?a.pane.display:a.pane.target,target:a.pane.paneId}:null;return{...a,clientAttemptId:"string"==typeof a.clientAttemptId?a.clientAttemptId:null,requestDigest:"string"==typeof a.requestDigest?a.requestDigest:null,...!0===a.identityWaveTitleBackfill?{identityWaveTitleBackfill:!0}:{},pendingOrchestratorSeatIdentity:aS(a.pendingOrchestratorSeatIdentity),transport:"tmux"===a.transport||"structured"===a.transport?a.transport:null,admissionOwner:a.admissionOwner&&Number.isInteger(a.admissionOwner.pid)&&a.admissionOwner.pid>0?{pid:a.admissionOwner.pid,startIdentity:"string"==typeof a.admissionOwner.startIdentity?a.admissionOwner.startIdentity:null}:null,spawnCapabilityDigest:"string"==typeof a.spawnCapabilityDigest&&/^[0-9a-f]{64}$/.test(a.spawnCapabilityDigest)?a.spawnCapabilityDigest:null,conversationId:"string"==typeof a.conversationId&&a.conversationId.startsWith("conversation_")?a.conversationId:`conversation_${e().randomUUID()}`,purpose:"migration-successor"===a.purpose||"resume-successor"===a.purpose?a.purpose:"launch",supersedes:a.supersedes&&"string"==typeof a.supersedes.conversationId&&a.supersedes.conversationId.startsWith("conversation_")?{conversationId:a.supersedes.conversationId,reason:"stage-retry"===a.supersedes.reason||"manual"===a.supersedes.reason?a.supersedes.reason:"recovery-spawn"}:null,resumeSourcePath:"string"==typeof a.resumeSourcePath?a.resumeSourcePath:null,pathCorrelation:a.pathCorrelation&&"string"==typeof a.pathCorrelation.cwd&&"string"==typeof a.pathCorrelation.startedAt?a.pathCorrelation:null,accountId:"string"==typeof a.accountId?a.accountId:null,accountPin:!0===a.accountPin,parentConversationId:"string"==typeof a.parentConversationId&&a.parentConversationId.startsWith("conversation_")?a.parentConversationId:null,parentSource:"explicit"===a.parentSource||"inferred-caller"===a.parentSource?a.parentSource:null,state:c,artifactLifecycle:"materialized"===a.artifactLifecycle?"materialized":"pending",key:a.key&&"object"==typeof a.key&&("claude"===a.key.engine||"codex"===a.key.engine)&&"string"==typeof a.key.sessionId?a.key:null,pane:d,verifiedHost:a.verifiedHost&&"object"==typeof a.verifiedHost&&"tmux"===a.verifiedHost.kind?a.verifiedHost:null,target:d?.paneId??("string"==typeof a.target&&/^%\d+$/.test(a.target)?a.target:null),completionMode:"route-completed"===a.completionMode||"observed-completed"===a.completionMode||"route-recovered"===a.completionMode?a.completionMode:null,agentRole:aV(a.agentRole),delegationDepth:aW(a.delegationDepth),rejection:function(a){if(!a||"object"!=typeof a||"reviewer_origin_spawn"!==a.code&&"nesting_depth_exceeded"!==a.code)return null;let b=a.origin;return b&&("agent"===b.kind||"container"===b.kind)?{code:a.code,origin:{kind:b.kind,conversationId:"string"==typeof b.conversationId&&b.conversationId.startsWith("conversation_")?b.conversationId:null,role:aV(b.role),depth:Number.isInteger(b.depth)&&b.depth>=0?b.depth:0},requestedRole:aV(a.requestedRole),childDepth:Number.isInteger(a.childDepth)&&a.childDepth>=0?a.childDepth:0,maxDepth:Number.isInteger(a.maxDepth)&&a.maxDepth>=1?a.maxDepth:1,guidance:"string"==typeof a.guidance?a.guidance:"",rejectedAt:"string"==typeof a.rejectedAt?a.rejectedAt:ac()}:null}(a.rejection),launchProfile:(0,o.Ui)({...a.launchProfile??{},cwd:a.launchProfile?.cwd??a.cwd},b),explicitProject:(0,o.QK)(a.explicitProject),launchDisplay:aU(a.launchDisplay),queuedPinnedSpawn:aR(a.queuedPinnedSpawn,b),...a.retryClaim&&"string"==typeof a.retryClaim.claimId&&"string"==typeof a.retryClaim.claimedAt?{retryClaim:{claimId:a.retryClaim.claimId,claimedAt:a.retryClaim.claimedAt}}:{}}}function aU(a){if(!a||"object"!=typeof a||"string"!=typeof a.prompt)return null;let b=Number.isInteger(a.images)&&a.images>=0?a.images:0,c="string"==typeof a.echo?a.echo:a.prompt;return a.prompt.trim()||c.trim()||0!==b?{prompt:a.prompt,images:b,echo:c}:null}function aV(a){return"string"==typeof a&&a.trim()?a.trim():null}function aW(a){return Number.isInteger(a)&&a>=0?a:null}function aX(a,b){var c;if(1===a.version&&a.entries&&a.receipts&&"object"==typeof a.entries&&"object"==typeof a.receipts){let c;return(0,r.g8)((c=a.legacyResumePanes,{...ab(_),autoBalance:{claude:$(Z),codex:$(Z)},entries:a.entries??{},receipts:Object.fromEntries(Object.entries(a.receipts??{}).map(([a,c])=>[a,aT(c,b)])),conversationAliases:{},importedResumePanes:!0===a.importedResumePanes,legacyResumePanes:c&&"object"==typeof c&&"panes"in c?{serverPid:"number"==typeof c.serverPid?c.serverPid:null,panes:c.panes??{}}:{serverPid:null,panes:{}}}),b)}if(2!==a.version||!a.entries||!a.receipts||"object"!=typeof a.entries||"object"!=typeof a.receipts)throw new aa("agent registry schema is unsupported");let d=a.legacyResumePanes,e=a.heldDeliveries&&"object"==typeof a.heldDeliveries?Object.fromEntries(Object.entries(a.heldDeliveries).map(([a,b])=>[a,an(b)])):{};return(0,r.g8)(function(a){for(let b of Object.values(a.receipts)){if("structured"!==b.transport||"completed"!==b.state||"pending"!==b.artifactLifecycle||!b.artifactPath)continue;let c=a.conversations[aG(a,b.conversationId)],d=c?.generations.find(a=>a.path===b.artifactPath),e="observed-completed"===b.completionMode||"route-recovered"===b.completionMode,f="launch"===b.purpose&&c?.generations.length===1&&0===c.continuityPaths.length&&null===c.migration&&null!==c.turn.observedAt&&void 0!==d;c?.engine===b.engine&&d&&(e||f)&&(b.artifactLifecycle="materialized")}return a}({version:2,entries:Object.fromEntries(Object.entries(a.entries).map(([a,c])=>[a,{...c,...c.launchProfile?{launchProfile:(0,o.Ui)(c.launchProfile,b)}:{},host:c.host&&"object"==typeof c.host&&"tmux"===c.host.kind?c.host:null,structuredHost:ah(c.structuredHost)}])),receipts:Object.fromEntries(Object.entries(a.receipts).map(([a,c])=>[a,aT(c,b)])),lineageEdges:a.lineageEdges&&"object"==typeof a.lineageEdges?Object.fromEntries(Object.entries(a.lineageEdges).map(([a,b])=>{let c,d;return[a,(c="string"==typeof b.reviewsConversationId&&b.reviewsConversationId.startsWith("conversation_")?b.reviewsConversationId:null,d="string"==typeof b.role&&b.role.trim()?b.role.trim():null,{...b,kind:"review"===b.kind||c||"reviewer"===d?"review":"spawn",role:d,reviewsConversationId:c})]})):{},memberships:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let[c,d]of Object.entries(a)){if(!c.startsWith("conversation_")||!Array.isArray(d))continue;let a=d.flatMap(a=>{if(!a||"object"!=typeof a||Array.isArray(a)||"flow"!==a.kind&&"pipeline"!==a.kind&&"orchestrator"!==a.kind||"string"!=typeof a.containerId||!a.containerId||"string"!=typeof a.role||!a.role||"string"!=typeof a.slot||!a.slot)return[];let b=a.runtime&&"object"==typeof a.runtime&&("claude"===a.runtime.engine||"codex"===a.runtime.engine)?{engine:a.runtime.engine,model:"string"==typeof a.runtime.model?a.runtime.model:null,effort:"string"==typeof a.runtime.effort?a.runtime.effort:null}:null;return[{conversationId:c,kind:a.kind,containerId:a.containerId,role:a.role,slot:a.slot,stageId:"string"==typeof a.stageId?a.stageId:null,stageOrder:Number.isInteger(a.stageOrder)?a.stageOrder:null,round:Number.isInteger(a.round)?a.round:null,parentConversationId:"string"==typeof a.parentConversationId&&a.parentConversationId.startsWith("conversation_")?a.parentConversationId:null,runtime:b,createdAt:"string"==typeof a.createdAt?a.createdAt:ac()}]});a.length&&(b[c]=a)}return b}(a.memberships),identityMigrations:!(c=a.identityMigrations)||"object"!=typeof c||Array.isArray(c)?{}:Object.fromEntries(Object.entries(c).flatMap(([a,b])=>{if(!b||"object"!=typeof b||Array.isArray(b))return[];let c=b.quarantinedRekeys??0;return"string"!=typeof b.completedAt||!Number.isSafeInteger(b.retitled)||b.retitled<0||!Number.isSafeInteger(b.rekeyed)||b.rekeyed<0||!Number.isSafeInteger(c)||c<0||!Number.isSafeInteger(b.edgesStamped)||b.edgesStamped<0?[]:[[a,{completedAt:b.completedAt,retitled:b.retitled,rekeyed:b.rekeyed,quarantinedRekeys:c,edgesStamped:b.edgesStamped}]]})),importedResumePanes:!0===a.importedResumePanes,legacyResumePanes:d&&"object"==typeof d&&"panes"in d?{serverPid:"number"==typeof d.serverPid?d.serverPid:null,panes:d.panes??{}}:{serverPid:null,panes:{}},conversations:a.conversations&&"object"==typeof a.conversations?Object.fromEntries(Object.entries(a.conversations).map(([a,c])=>{var d;let e,f,g,h,i,j,k,l,m,n,p,q,r,s;return[a,(f=(e=Array.isArray(c.generations)?c.generations.map(a=>({...a,launchProfile:(0,o.Ui)(a.launchProfile??{},b),historyHash:"string"==typeof a.historyHash?a.historyHash:null,host:a.host&&"object"==typeof a.host?a.host:null})):[]).at(-1),g=c.migration?.continuityPaths,h=(d=c.migration?.providerReceipt)&&"object"==typeof d?{...d,continuityPaths:Array.isArray(d.continuityPaths)?d.continuityPaths.filter(a=>"string"==typeof a):[]}:null,i=c.migration?.successorLaunchProfile&&"object"==typeof c.migration.successorLaunchProfile&&!Array.isArray(c.migration.successorLaunchProfile)?(0,o.Ui)(c.migration.successorLaunchProfile,b):null,j=Array.isArray(c.migration?.pendingContinuityPaths)?c.migration.pendingContinuityPaths.filter(a=>"string"==typeof a):c.migration?.phase!=="committed"&&h?[...new Set([...h.continuityPaths,h.path])]:[],k=c.migration&&"object"==typeof c.migration?{...c.migration,errorCode:c.migration.errorCode??null,operationId:c.migration.operationId??`${c.migration.intentId}:${c.id}:${c.migration.revision}`,sourceGenerationId:c.migration.sourceGenerationId??f?.id??"",successorLaunchProfile:i,providerReceipt:h,pendingContinuityPaths:j,boardProject:"string"==typeof c.migration.boardProject?c.migration.boardProject:null,boardOperationId:"string"==typeof c.migration.boardOperationId?c.migration.boardOperationId:null,boardPlacementProject:"string"==typeof c.migration.boardPlacementProject?c.migration.boardPlacementProject:null}:null,l=[...new Set([...Array.isArray(c.continuityPaths)?c.continuityPaths.filter(a=>"string"==typeof a):[],...Array.isArray(g)?g.filter(a=>"string"==typeof a):[],...k?.providerReceipt?.continuityPaths??[]])],m=Array.isArray(c.abandonedContinuityPaths)?[...new Set(c.abandonedContinuityPaths.filter(a=>"string"==typeof a))]:[],n=Array.isArray(c.providerForkPaths)?[...new Set(c.providerForkPaths.filter(a=>"string"==typeof a))].filter(a=>l.includes(a)):[],q=(p=c.migrationOptOut)&&"string"==typeof p.targetId&&"string"==typeof p.updatedAt?{targetId:p.targetId,updatedAt:p.updatedAt}:null,s=(r=c.supersededBy)&&"string"==typeof r.conversationId&&r.conversationId.startsWith("conversation_")&&"string"==typeof r.at?{conversationId:r.conversationId,at:r.at,reason:"stage-retry"===r.reason||"manual"===r.reason?r.reason:"recovery-spawn"}:null,{...c,generations:e,continuityPaths:l,abandonedContinuityPaths:m,providerForkPaths:n,projectOwnership:(0,o.MO)(c.projectOwnership),pinnedAccountId:"string"==typeof c.pinnedAccountId?c.pinnedAccountId:null,reconfigure:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a=>!a||"object"!=typeof a||Array.isArray(a)||null!==a.model&&"string"!=typeof a.model||null!==a.effort&&"string"!=typeof a.effort||null!==a.fast&&"boolean"!=typeof a.fast?null:{model:a.model??null,effort:a.effort??null,fast:a.fast??null},c=b(a.profile),d=b(a.previousProfile);return c&&d&&"string"==typeof a.operationId&&a.operationId&&Number.isSafeInteger(a.revision)&&!(a.revision<0)&&("applying"===a.status||"applied"===a.status||"failed"===a.status)?{operationId:a.operationId,revision:a.revision,status:a.status,profile:c,previousProfile:d,accountId:"string"==typeof a.accountId?a.accountId:null,error:"string"==typeof a.error?a.error:null}:null}(c.reconfigure),migration:k,migrationOptOut:q,supersededBy:s,agentRole:aV(c.agentRole),delegationDepth:aW(c.delegationDepth),turn:c.turn&&"object"==typeof c.turn?{state:c.turn.state,source:c.turn.source,terminalAt:c.turn.terminalAt??null,observedAt:c.turn.observedAt??null}:{state:"unknown",source:"empty",terminalAt:null,observedAt:null}})]})):{},conversationAliases:a.conversationAliases&&"object"==typeof a.conversationAliases?Object.fromEntries(Object.entries(a.conversationAliases).filter(([a,b])=>a.startsWith("conversation_")&&"string"==typeof b&&b.startsWith("conversation_"))):{},conversationRevision:a.conversationRevision&&"object"==typeof a.conversationRevision?{..._.conversationRevision,...a.conversationRevision}:ab(_.conversationRevision),migrationIntents:a.migrationIntents&&"object"==typeof a.migrationIntents?a.migrationIntents:{},engineRouting:a.engineRouting&&"object"==typeof a.engineRouting?{..._.engineRouting,...a.engineRouting}:ab(_.engineRouting),autoBalance:a.autoBalance&&"object"==typeof a.autoBalance?{claude:ai(a.autoBalance.claude),codex:ai(a.autoBalance.codex)}:{claude:$(Z),codex:$(Z)},quotaObservations:a.quotaObservations&&"object"==typeof a.quotaObservations?{..._.quotaObservations,...a.quotaObservations}:ab(_.quotaObservations),heldDeliveries:e,deliveryOperationOwners:function(a,b){let c={};if(a&&"object"==typeof a&&!Array.isArray(a))for(let[d,e]of Object.entries(a)){if(!d||!e||"object"!=typeof e||Array.isArray(e)||"string"!=typeof e.conversationId||!e.conversationId.startsWith("conversation_")||null!==e.clientMessageId&&"string"!=typeof e.clientMessageId||"string"!=typeof e.deliveryId||!e.deliveryId||"string"!=typeof e.requestDigest||!e.requestDigest)continue;let a=e.settledDelivery&&"object"==typeof e.settledDelivery?an(e.settledDelivery):null,f=a?.id===e.deliveryId&&a.command.operationId===d&&a.requestDigest===e.requestDigest&&null!==ao(a)?a:null,g=b[e.deliveryId],h=g?.command.operationId===d&&g.requestDigest===e.requestDigest?g:null,i=h?ao(h):"delivered"===e.terminalState||"failed"===e.terminalState?e.terminalState:ao(f);c[d]={conversationId:e.conversationId,runtimeConversationId:"string"==typeof e.runtimeConversationId&&e.runtimeConversationId.startsWith("conversation_")?e.runtimeConversationId:b[e.deliveryId]?.runtimeConversationId??e.conversationId,clientMessageId:e.clientMessageId,deliveryId:e.deliveryId,command:{...ak(e.command,d),operationId:d},requestDigest:e.requestDigest,contentDigest:"string"==typeof e.contentDigest?e.contentDigest:h?.contentDigest??f?.contentDigest??null,createdAt:"string"==typeof e.createdAt?e.createdAt:h?.createdAt??f?.createdAt??Z,terminalState:i}}for(let a of Object.values(b))a.command.operationId!==a.id&&a.requestDigest&&(c[a.command.operationId]??={conversationId:a.conversationId,runtimeConversationId:a.runtimeConversationId,clientMessageId:a.clientMessageId,deliveryId:a.id,command:a.command,requestDigest:a.requestDigest,contentDigest:a.contentDigest,createdAt:a.createdAt,terminalState:ao(a)});return c}(a.deliveryOperationOwners,e),pendingSuccessorCleanups:a.pendingSuccessorCleanups&&"object"==typeof a.pendingSuccessorCleanups?a.pendingSuccessorCleanups:{},pendingSupersedence:function(a){if(!a||"object"!=typeof a)return{};let b={};for(let[c,d]of Object.entries(a))d&&"string"==typeof d.predecessorConversationId&&d.predecessorConversationId.startsWith("conversation_")&&"string"==typeof d.successorConversationId&&d.successorConversationId.startsWith("conversation_")&&"string"==typeof d.stagedAt&&(b[c]={predecessorConversationId:d.predecessorConversationId,successorConversationId:d.successorConversationId,reason:"stage-retry"===d.reason||"manual"===d.reason?d.reason:"recovery-spawn",stagedAt:d.stagedAt});return b}(a.pendingSupersedence)}),b)}function aY(a,b){try{let c=g().readFileSync(a,"utf8");return{file:(0,r.$q)(aX(JSON.parse(c),b),b),payload:c}}catch(a){if("ENOENT"===a.code)return{file:ab(_),payload:null};if(a instanceof aa)throw a;throw new aa(`agent registry cannot be read: ${a instanceof Error?a.message:String(a)}`)}}function aZ(a,b){return aY(a,b).file}function a$(a){try{let b=g().statSync(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(a){if("ENOENT"===a.code)return"missing";throw new aa(`agent registry cannot be stated: ${a instanceof Error?a.message:String(a)}`)}}function a_(a){let b={...a};for(let a of Object.keys(b))null===b[a]&&delete b[a];return""===b.cwd&&delete b.cwd,"worker"===b.role&&delete b.role,!1===b.allowSubagents&&delete b.allowSubagents,b.mcpServers?.length===1&&"viewer"===b.mcpServers[0]&&delete b.mcpServers,b.plugins?.length===0&&delete b.plugins,b}function a0(a,b){return JSON.stringify({...a,...void 0===b?{}:{_sqliteRevision:b},entries:Object.fromEntries(Object.entries(a.entries).map(([a,b])=>[a,{...b,...b.launchProfile?{launchProfile:a_(b.launchProfile)}:{}}])),receipts:Object.fromEntries(Object.entries(a.receipts).map(([a,b])=>[a,{...b,launchProfile:a_(b.launchProfile)}])),conversations:Object.fromEntries(Object.entries(a.conversations).map(([a,b])=>[a,{...b,generations:b.generations.map(a=>({...a,launchProfile:a_(a.launchProfile)}))}]))})+"\n"}function a1(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${e().randomUUID()}.tmp`,d=null;try{d=g().openSync(c,"w",384),g().writeFileSync(d,b,"utf8"),g().fsyncSync(d),g().closeSync(d),d=null,g().renameSync(c,a);let e=g().openSync(i().dirname(a),"r");try{g().fsyncSync(e)}finally{g().closeSync(e)}}finally{null!==d&&g().closeSync(d);try{g().unlinkSync(c)}catch{}}}class a2 extends Error{constructor(...a){super(...a),this.name="RegistryParityError"}}function a3(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"))._sqliteRevision;return Number.isInteger(b)&&Number(b)>=0?Number(b):null}catch(a){if("ENOENT"===a.code)return null;throw a}}class a4{constructor(a=(0,k.BQ)("agent-registry.json"),b=a=>l.B.pidAlive(a.pid)&&(null===a.startIdentity||l.B.processIdentity(a.pid)===a.startIdentity),c=M,d={}){this.filename=a,this.ownerAlive=b,this.lockTiming=c,this.readOnlyCache=null,this.mirrorCheckpointPending=!1,this.mirrorCheckpointFailures=0,this.lastMirrorAt=null,this.lastMirroredRevision=null,this.mirrorDirty=!1,this.writerWaits=[],this.transactionDurations=[],this.transactionCount=0,this.transactionRateBuckets=new Map;const e=void 0!==d.sqliteMode?{mode:d.sqliteMode,sqliteFilename:null,source:"explicit"}:!0===d.resolveBackendIdentity?(0,v.Ej)(a):{mode:(0,v.KL)(),sqliteFilename:null,source:"unmanaged"};this.sqliteMode=e.mode;const f=d.sqliteFilename??e.sqliteFilename??(0,v.EB)(a);if(this.mcpGrantPolicy=d.mcpGrantPolicy,this.mirrorCheckpointMs=Math.max(0,d.mirrorCheckpointMs??5e3),this.now=d.now??Date.now,this.scheduleMirrorCheckpoint=d.scheduleMirrorCheckpoint??((a,b)=>setTimeout(a,b)),this.afterMirrorWrite=d.afterMirrorWrite,this.beforeDualWriteMutationReplace=d.beforeDualWriteMutationReplace,this.sqliteStore="off"===this.sqliteMode?null:new A(f,{initialSnapshot:aZ(a,d.mcpGrantPolicy),normalize:a=>aX(a,d.mcpGrantPolicy),mcpGrantPolicy:d.mcpGrantPolicy,onWriterWait:a=>{this.recordMetric(this.writerWaits,a),d.onSqliteWriterWait?.(a)},onSnapshotLoad:d.onSqliteSnapshotLoad,onRowPayloadRead:d.onSqliteRowPayloadRead,onRowPayloadParse:d.onSqliteRowPayloadParse,onRevisionQuery:d.onSqliteRevisionQuery}),"off"===this.sqliteMode&&(this.cleanupStaleTempFiles(),this.compactAtStartup()),"dual-write"===this.sqliteMode&&(this.cleanupStaleTempFiles(),this.synchronizeDualWriteStartup(d.beforeDualWriteStartupReplace)),"read"===this.sqliteMode||"sqlite"===this.sqliteMode){const a=this.sqliteStore.snapshot(),b=a3(this.filename);if("read"===this.sqliteMode&&(null===b||b===a.revision)&&this.assertSqliteParity(a),null!==b&&b>a.revision)throw new a2("agent registry JSON mirror revision is ahead of SQLite");this.mirrorSqliteSnapshot(a)}"environment"===e.source&&(0,v.Dc)(a,this.sqliteMode,f)}assertSqliteParity(a=this.sqliteStore.snapshot()){let b=aZ(this.filename,this.mcpGrantPolicy);if(!(0,j.isDeepStrictEqual)(a.file,b)){let c=[...new Set([...Object.keys(a.file),...Object.keys(b)])].filter(c=>!(0,j.isDeepStrictEqual)(a.file[c],b[c]));throw new a2(`agent registry JSON and SQLite snapshots differ: ${c.join(", ")}`)}}mirrorSqliteSnapshot(a){var b;b=this.filename,a1(b,a0(a.file,a.revision)),this.afterMirrorWrite?.();let c=this.sqliteStore.revision();this.lastMirrorAt=this.now(),this.lastMirroredRevision=a.revision,this.mirrorDirty=c>a.revision,this.mirrorDirty&&this.scheduleRollbackMirror()}recordMetric(a,b){a.push(b),a.length>512&&a.splice(0,a.length-512)}percentile(a){if(0===a.length)return null;let b=[...a].sort((a,b)=>a-b);return b[Math.min(b.length-1,Math.ceil(.95*b.length)-1)]}storageDiagnostics(){let a=this.sqliteStore?.revision()??null;null!==a&&null!==this.lastMirroredRevision&&a>this.lastMirroredRevision&&(this.mirrorDirty=!0);let b=Math.floor(this.now()/1e3);for(let a of this.transactionRateBuckets.keys())a<=b-60&&this.transactionRateBuckets.delete(a);let c=[...this.transactionRateBuckets.values()].reduce((a,b)=>a+b,0);return{backendMode:this.sqliteMode,revision:a,transactionCount:this.transactionCount,writerRatePerSecond:c/60,writerWaitP95Ms:this.percentile(this.writerWaits),transactionP95Ms:this.percentile(this.transactionDurations),mirrorCheckpointAtMs:this.lastMirrorAt,mirrorAgeMs:null===this.lastMirrorAt?null:Math.max(0,this.now()-this.lastMirrorAt),mirrorDirty:this.mirrorDirty}}checkpointRollbackMirror(){if(!this.sqliteStore||"dual-write"===this.sqliteMode)return;let a=this.sqliteStore.revision();(this.mirrorDirty||null===this.lastMirroredRevision||!(a<=this.lastMirroredRevision))&&(this.mirrorSqliteSnapshot(this.sqliteStore.snapshot()),this.mirrorCheckpointFailures=0)}checkpointRollbackMirrorForDemotion(a=2){if(this.sqliteStore&&"dual-write"!==this.sqliteMode){for(let b=0;b<a;b+=1)if(this.checkpointRollbackMirror(),!this.storageDiagnostics().mirrorDirty)return;throw Error(`agent registry rollback mirror did not converge after ${a} attempts`)}}scheduleRollbackMirror(a=this.mirrorCheckpointMs){this.mirrorCheckpointPending||(this.mirrorCheckpointPending=!0,this.scheduleMirrorCheckpoint(()=>{this.mirrorCheckpointPending=!1;try{this.checkpointRollbackMirror()}catch(b){console.error("agent registry rollback checkpoint failed",b),this.mirrorCheckpointFailures+=1;let a=Math.min(1e3*2**(this.mirrorCheckpointFailures-1),3e4);this.scheduleRollbackMirror(a)}},a).unref?.())}scheduleRollbackMirrorForCadence(){let a=null===this.lastMirrorAt?this.mirrorCheckpointMs:Math.max(0,this.now()-this.lastMirrorAt);this.scheduleRollbackMirror(Math.max(0,this.mirrorCheckpointMs-a))}cleanupStaleTempFiles(){let a,b=i().dirname(this.filename),c=`${i().basename(this.filename)}.`;try{a=g().readdirSync(b)}catch(a){if("ENOENT"===a.code)return;throw a}for(let d of a){if(!d.startsWith(c)||!d.endsWith(".tmp"))continue;let a=d.slice(c.length,-4).split("."),e=Number(a[0]);if(2===a.length&&Number.isInteger(e)&&!(e<=0)&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(a[1]??"")&&!this.ownerAlive({pid:e,startIdentity:null}))try{g().unlinkSync(i().join(b,d))}catch(a){if("ENOENT"!==a.code)throw a}}}compactAtStartup(){if(!g().existsSync(this.filename))return;let a=`${this.filename}.write-lock`,b=this.acquireLock(a,{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)});try{this.compactAtStartupLocked()}finally{this.releaseLock(b)}}compactAtStartupLocked(){let a,b;try{a=g().readFileSync(this.filename,"utf8")}catch(a){if("ENOENT"===a.code)return;throw a}try{b=aZ(this.filename,this.mcpGrantPolicy)}catch(a){if(a instanceof aa)return void console.error("agent registry startup compaction skipped:",a);throw a}aw(b,void 0,this.now()),a0(b)!==a&&a1(this.filename,a0(b,void 0))}synchronizeDualWriteStartup(a){let b=`${this.filename}.write-lock`,c=this.acquireLock(b,{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)});try{var d,e;let b=this.sqliteStore.snapshot();g().existsSync(this.filename)||(d=this.filename,e=b.file,a1(d,a0(e,void 0)));let c=a3(this.filename);if(null!==c&&c!==b.revision)throw new a2(`agent registry backend revisions differ: JSON ${c}, SQLite ${b.revision}`);this.assertSqliteParity(b),this.compactAtStartupLocked();let f=aZ(this.filename,this.mcpGrantPolicy);a?.();let h=this.sqliteStore.replace(f,b.revision);if(!h.replaced)throw this.mirrorSqliteSnapshot(h),new a2(`agent registry SQLite revision changed during dual-write startup: expected ${b.revision}, current ${h.revision}`);this.assertSqliteParity()}finally{this.releaseLock(c)}}sameLock(a,b){try{let c=g().statSync(a);return c.dev===b.dev&&c.ino===b.ino}catch(a){if("ENOENT"===a.code)return!1;throw a}}lockOwnerFile(a){return g().statSync(a).isDirectory()?i().join(a,"owner.json"):a}lockToken(a){try{let b=JSON.parse(g().readFileSync(this.lockOwnerFile(a),"utf8"));return"string"==typeof b.token?b.token:null}catch{return null}}finishRetirement(a,b){try{g().renameSync(a,b)}catch(c){let b=c.code;if("ENOENT"===b)return;if("EEXIST"===b||"ENOTEMPTY"===b)return void g().rmSync(a,{recursive:!0,force:!0});throw c}}restoreRecovery(a,b){for(;;)try{g().renameSync(b,a);return}catch(b){let a=b.code;if("ENOENT"===a)return;if("EEXIST"!==a&&"ENOTEMPTY"!==a)throw b;Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,5)}}resolveInterruptedRelease(a){let b,c=`${a}.releasing`;if(!g().existsSync(c))return;let d=null;try{b=g().statSync(c),d=JSON.parse(g().readFileSync(this.lockOwnerFile(c),"utf8"))}catch(a){a.code;return}Number.isInteger(d.pid)&&d.pid>0&&this.ownerAlive(d)||(!Number.isInteger(d.pid)||d.pid<=0)&&this.lockTiming.now()-b.mtimeMs<1e3||g().rmSync(c,{recursive:!0,force:!0})}retireObservedLock(a,b,c,d){let e=`${a}.recovering`;if(!b.isDirectory){try{g().linkSync(a,e)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a)return;throw b}return this.sameLock(e,b)&&this.lockToken(e)===c&&this.sameLock(a,b)&&this.lockToken(a)===c?(g().rmSync(a,{force:!0}),void this.finishRetirement(e,`${a}.retired-${d}`)):void g().rmSync(e,{force:!0})}try{g().renameSync(a,e)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a||"ENOTEMPTY"===a)return;throw b}this.sameLock(e,b)&&this.lockToken(e)===c?this.finishRetirement(e,`${a}.retired-${d}`):this.restoreRecovery(a,e)}resolveInterruptedRecovery(a){let b,c=`${a}.recovering`;if(!g().existsSync(c))return;if(g().existsSync(a)){let b,c=null;try{b=g().statSync(a)}catch(a){if("ENOENT"===a.code)return;throw a}try{c=JSON.parse(g().readFileSync(this.lockOwnerFile(a),"utf8"))}catch{return}if(c&&Number.isInteger(c.pid)&&c.pid>0&&this.ownerAlive(c))return;let d="string"==typeof c?.token?c.token:null,e=d&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(d)?d:`abandoned-${b.dev}-${b.ino}-${b.ctimeMs}`;this.sameLock(a,{dev:b.dev,ino:b.ino})&&this.lockToken(a)===d&&this.finishRetirement(a,`${a}.retired-${e}`)}let d=null;try{b=g().statSync(c),d=JSON.parse(g().readFileSync(this.lockOwnerFile(c),"utf8"))}catch(b){if("ENOENT"===b.code)return;this.finishRetirement(c,`${a}.retired-interrupted-invalid`);return}if(Number.isInteger(d.pid)&&d.pid>0&&this.ownerAlive(d)){if(g().existsSync(a))return;this.restoreRecovery(a,c);return}let e="string"==typeof d.token?d.token:null,f=e&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?e:`interrupted-${b.dev}-${b.ino}-${b.ctimeMs}`;this.finishRetirement(c,`${a}.retired-${f}`)}recoverContendedLock(a){let b;try{b=g().statSync(a)}catch(a){if("ENOENT"===a.code)return;throw a}let c=null;try{c=JSON.parse(g().readFileSync(this.lockOwnerFile(a),"utf8"))}catch{}if(c&&Number.isInteger(c.pid)&&c.pid>0){if(!this.ownerAlive(c)){let d="string"==typeof c.token&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(c.token)?c.token:`legacy-${b.dev}-${b.ino}-${b.ctimeMs}`;this.retireObservedLock(a,{dev:b.dev,ino:b.ino,isDirectory:b.isDirectory()},"string"==typeof c.token?c.token:null,d)}return}}tryAcquireLock(a,b){if(this.resolveInterruptedRelease(a),g().existsSync(`${a}.releasing`)||(this.resolveInterruptedRecovery(a),g().existsSync(`${a}.recovering`)))return null;let c=e().randomUUID(),d=`${a}.owner.pending-${c}`,f=null,h=null,j=!1;try{g().mkdirSync(d,448),f=g().openSync(i().join(d,"owner.json"),"wx",384),g().writeFileSync(f,JSON.stringify({...b,token:c}),"utf8"),g().fsyncSync(f),g().closeSync(f),f=null;let e=g().openSync(d,"r");try{g().fsyncSync(e);let a=g().fstatSync(e);h={dev:a.dev,ino:a.ino}}finally{g().closeSync(e)}try{g().symlinkSync(i().basename(d),a,"dir")}catch(c){let b=c.code;if("EEXIST"!==b)throw c;return g().rmSync(d,{recursive:!0,force:!0}),this.recoverContendedLock(a),null}j=!0;let k={lock:a,token:c,identity:h,storage:d};if(!this.sameLock(a,k.identity)||this.lockToken(a)!==c)return null;if(g().existsSync(`${a}.recovering`)||g().existsSync(`${a}.releasing`))return this.releaseLock(k),null;return k}catch(b){throw null!==f&&g().closeSync(f),h&&(j?this.releaseLock({lock:a,token:c,identity:h,storage:d}):this.retireObservedLock(a,{...h,isDirectory:!0},null,`failed-${c}`)),j||g().rmSync(d,{recursive:!0,force:!0}),b}}retireClaim(a,b){let c,d=`${b.lock}.releasing`;if(this.resolveInterruptedRelease(b.lock),g().existsSync(d))return!1;try{c=g().statSync(a).isDirectory()}catch(a){if("ENOENT"===a.code)return!1;throw a}if(c){try{g().renameSync(a,d)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a||"ENOTEMPTY"===a)return!1;throw b}return this.sameLock(d,b.identity)&&this.lockToken(d)===b.token?(g().rmSync(d,{recursive:!0,force:!0}),g().rmSync(b.storage,{recursive:!0,force:!0}),!0):(this.restoreRecovery(a,d),!1)}try{g().linkSync(a,d)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a)return!1;throw b}return this.sameLock(d,b.identity)&&this.lockToken(d)===b.token?(this.sameLock(a,b.identity)&&this.lockToken(a)===b.token&&g().rmSync(a,{force:!0}),g().rmSync(d,{force:!0}),g().rmSync(b.storage,{recursive:!0,force:!0}),!0):(g().rmSync(d,{force:!0}),!1)}releaseLock(a){for(let b of[a.lock,`${a.lock}.recovering`,a.lock])if(this.sameLock(b,a.identity)&&this.lockToken(b)===a.token&&this.retireClaim(b,a))return}lockBackoff(a,b){return Math.min(Math.min(5*2**Math.floor(a/20),50),b)}acquireLock(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});for(let c=0;;c+=1){let d=this.tryAcquireLock(a,b);if(d)return d;Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,this.lockBackoff(c,50))}}async acquireLockAsync(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});for(let c=0;;c+=1){let d=this.tryAcquireLock(a,b);if(d)return d;await this.lockTiming.wait(this.lockBackoff(c,50))}}mutate(a){let b=performance.now(),c=this.mutateStorage(a);this.transactionCount+=1,this.recordMetric(this.transactionDurations,performance.now()-b);let d=Math.floor(this.now()/1e3);for(let a of(this.transactionRateBuckets.set(d,(this.transactionRateBuckets.get(d)??0)+1),this.transactionRateBuckets.keys()))a<=d-60&&this.transactionRateBuckets.delete(a);return c}mutateStorage(a){let b=b=>{let c=a(b);for(let[a,c]of Object.entries(b.pendingSupersedence)){let d=aG(b,c.predecessorConversationId),e=aG(b,c.successorConversationId);if(!b.conversations[d]||!b.conversations[e]){delete b.pendingSupersedence[a];continue}try{aJ(b,d,e,c.reason),delete b.pendingSupersedence[a]}catch(c){if(c instanceof F)continue;delete b.pendingSupersedence[a]}}return c};if("read"===this.sqliteMode||"sqlite"===this.sqliteMode){let a=this.sqliteStore.mutate(b,!1);return"read"===this.sqliteMode&&(this.mirrorDirty=null===this.lastMirroredRevision||a.revision>this.lastMirroredRevision,this.mirrorDirty&&this.scheduleRollbackMirrorForCadence()),"sqlite"===this.sqliteMode&&(this.mirrorDirty=null===this.lastMirroredRevision||a.revision>this.lastMirroredRevision),a.result}let c=`${this.filename}.write-lock`,d=this.acquireLock(c,{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)});try{let a="dual-write"===this.sqliteMode?this.sqliteStore.snapshot():null;if(a){let b=a3(this.filename);if(null!==b&&b!==a.revision)throw new a2(`agent registry backend revisions differ: JSON ${b}, SQLite ${a.revision}`);this.assertSqliteParity(a)}let c=aY(this.filename,this.mcpGrantPolicy),d=c.file,h=b(d),i=a0(d),j=c.payload!==i;if(j&&a1(this.filename,i),a&&!j&&this.assertSqliteParity(),a&&j){let b;try{this.beforeDualWriteMutationReplace?.(),b=this.sqliteStore.replace(d,a.revision)}catch(d){let b=this.sqliteStore.snapshot();if(b.revision===a.revision)if(null===c.payload){var e,f,g;e=this.filename,f=c.file,g=a.revision,a1(e,a0(f,g))}else a1(this.filename,c.payload);else this.mirrorSqliteSnapshot(b);throw d}if(!b.replaced)throw this.mirrorSqliteSnapshot(b),new a2(`agent registry SQLite revision changed during dual-write mutation: expected ${a.revision}, current ${b.revision}`);this.assertSqliteParity()}return h}finally{this.releaseLock(d)}}snapshot(){return"read"===this.sqliteMode||"sqlite"===this.sqliteMode?this.sqliteStore.snapshot().file:aZ(this.filename,this.mcpGrantPolicy)}readOnlySnapshot(){if("read"===this.sqliteMode||"sqlite"===this.sqliteMode)return this.sqliteStore.readOnlySnapshot().file;for(let a=0;a<2;a+=1){let a=a$(this.filename);if(this.readOnlyCache?.signature===a)return this.readOnlyCache.snapshot;let b=aZ(this.filename,this.mcpGrantPolicy),c=a$(this.filename);if(a===c)return this.readOnlyCache={signature:c,snapshot:b},b}return aZ(this.filename,this.mcpGrantPolicy)}snapshotSpawns(a){return this.sqliteStore?this.sqliteStore.snapshotSpawns(a):function(a,b){let c={};for(let d of new Set(b)){let b=a.receipts[d];if(!b)continue;let e=new Set,f=b.conversationId;for(let b=0;b<64&&f&&!e.has(f);b+=1){e.add(f);let c=a.conversationAliases[f];if(!c)break;f=b+1===64?null:c}c[d]={launchId:b.launchId,state:b.state,error:b.error,engine:b.engine,cwd:b.cwd,createdAt:b.createdAt,materializedPath:(f?a.conversations[f]:void 0)?.generations.at(-1)?.path??b.artifactPath}}return c}(this.readOnlySnapshot(),a)}snapshotTitleConversations(a){return this.sqliteStore?.snapshotTitleConversations(a)??[]}spawnReceiptForClientAttempt(a){let b=Object.values(this.readOnlySnapshot().receipts).find(b=>b.clientAttemptId===a);return b?ab(b):null}conversationIdForSpawnCapabilityDigest(a){if(!/^[0-9a-f]{64}$/.test(a))return null;let b=this.readOnlySnapshot(),c=Object.values(b.receipts).find(b=>b.spawnCapabilityDigest===a);return c?aG(b,c.conversationId):null}rotateSpawnCapabilityForReceipt(a){let b=e().randomBytes(32).toString("base64url"),c=e().createHash("sha256").update(b).digest("hex");return this.mutate(d=>{let e=d.receipts[a];if(!e)throw Error("spawn receipt is missing");let f=aG(d,e.conversationId);for(let a of Object.values(d.receipts))aG(d,a.conversationId)===f&&(a.spawnCapabilityDigest=null);return e.spawnCapabilityDigest=c,b})}rotateSpawnCapabilityForPath(a){let b=e().randomBytes(32).toString("base64url"),c=e().createHash("sha256").update(b).digest("hex");return this.mutate(d=>{let e=Object.values(d.conversations).find(b=>ax(b,a));if(!e)return null;let f=Object.values(d.receipts).filter(a=>aG(d,a.conversationId)===e.id).sort((a,b)=>b.createdAt.localeCompare(a.createdAt)),g=f[0];if(!g)return null;for(let a of f)a.spawnCapabilityDigest=null;return g.spawnCapabilityDigest=c,b})}beginSpawnRequest(a){let b=this.mutate(b=>this.beginSpawnRequestInFile(b,a));if("rejected"===b.kind||"replay"===b.kind&&b.receipt.rejection)throw new t.Jc(b.receipt,b.receipt.rejection);return b}beginSpawnRequestInFile(a,b){{let c=b.conversationId?aG(a,b.conversationId):null,d=b.parentConversationId?aG(a,b.parentConversationId):null,f=b.reviewsConversationId?aG(a,b.reviewsConversationId):null,h="string"==typeof b.role&&b.role.trim()?b.role.trim():null;if("reviewer"===h&&!f&&b.origin?.kind!=="container")throw Error("reviewer spawn requires reviewsConversationId");if(f&&"reviewer"!==h)throw Error("reviewsConversationId requires reviewer role");let i=null==b.explicitProject?null:(0,o.QK)(b.explicitProject);if(null!=b.explicitProject&&!i)throw Error("explicit project is not a valid project key");let j=b.supersedes?aG(a,b.supersedes):null;if(j){if(!a.conversations[j])throw Error("supersedence predecessor is unknown");if(c===j)throw Error("a conversation cannot supersede itself")}let n=c?a.conversations[c]:null,p=b.launchProfile?.title,q=(0,o.Ui)({cwd:b.cwd,...b.launchProfile??{},title:(0,m.St)(p),...i?{project:i}:{},parentConversationId:d}),s=n?.generations.at(-1)?.launchProfile,v="resume-successor"===b.purpose&&s?{cwd:q.cwd||s.cwd,model:q.model??s.model,effort:q.effort??s.effort,fast:q.fast??s.fast,permissionMode:q.permissionMode??s.permissionMode,readOnly:q.readOnly??s.readOnly,allowSubagents:s.allowSubagents||q.allowSubagents,mcpServers:s.mcpServers,plugins:s.plugins??[],title:(0,m.St)(s.title)??(0,m.St)(q.title),project:q.project??s.project,parentConversationId:q.parentConversationId??s.parentConversationId,role:"root"===s.role||"root"===q.role?"root":"worker",goal:q.goal??s.goal,plan:q.plan??s.plan}:q;if((0,t.n4)(n?.agentRole)&&(v.allowSubagents=!1),(n?.agentRole||d)&&(v.plugins=[]),n&&n.engine!==b.engine)throw Error("spawn conversation ownership is invalid");if("resume-successor"===b.purpose&&n&&!K(n.migration))throw Error("conversation migration prevents resume succession");if(b.clientAttemptId){let c=Object.values(a.receipts).find(a=>a.clientAttemptId===b.clientAttemptId);if(c){let d=(0,m.St)(c.launchProfile.title),e=(0,m.St)(v.title),f=!d||!e||d===e,g=c.requestDigest===(b.requestDigest??null)&&c.engine===b.engine&&c.cwd===b.cwd&&c.transport===(b.transport??null)&&c.accountPin===(!0===b.accountPin)&&c.explicitProject===i&&(c.supersedes?.conversationId??null)===j&&c.launchProfile.permissionMode===v.permissionMode&&f;if(g&&!d&&e){c.launchProfile.title=e;let b=aG(a,c.conversationId),d=a.conversations[b];if(d){let c=new Set(d.generations.map(a=>a.path));for(let a of d.generations)(0,m.St)(a.launchProfile.title)||(a.launchProfile.title=e);for(let b of Object.values(a.entries))c.has(b.artifactPath)&&b.launchProfile&&!(0,m.St)(b.launchProfile.title)&&(b.launchProfile.title=e);for(let c of Object.values(a.receipts))aG(a,c.conversationId)!==b||(0,m.St)(c.launchProfile.title)||(c.launchProfile.title=e);d.updatedAt=ac(),a.conversationRevision[d.engine]+=1}}return{kind:g?"replay":"conflict",receipt:ab(c)}}}if(!(0,m.St)(v.title))throw Error(m.QE);let w=b.purpose??"launch",x="launch"!==w||b.origin?.kind==="successor",y=!x&&b.origin?(0,t.mo)(a,b.origin):null,z=x?n?.delegationDepth??null:y?y.depth+1:0,A=x?n?.agentRole??null:h,B="launch"===w&&b.origin&&"successor"!==b.origin.kind?{kind:b.origin.kind}:void 0;v.mcpServers=(0,r.VW)({origin:B,parentConversationId:d??v.parentConversationId,agentRole:A,delegationDepth:z,requested:v.mcpServers},this.mcpGrantPolicy);let C=null;if(y){let a=function(){let a;try{a=g().readFileSync((0,k.BQ)("spawn-nesting.json"),"utf8")}catch{return{maxAgentNestingDepth:2}}try{var b;let c=JSON.parse(a);if(1===c.schemaVersion&&(b=c.maxAgentNestingDepth,Number.isInteger(b)&&b>=1&&b<=4))return{maxAgentNestingDepth:c.maxAgentNestingDepth}}catch{}return{maxAgentNestingDepth:2}}().maxAgentNestingDepth;(0,t.n4)(y.role)?C={code:"reviewer_origin_spawn",origin:y,requestedRole:h,childDepth:z??0,maxDepth:a,guidance:(0,t.rF)(y.role),rejectedAt:ac()}:null!==z&&z>a&&(C={code:"nesting_depth_exceeded",origin:y,requestedRole:h,childDepth:z,maxDepth:a,guidance:(0,t.MT)(z,a),rejectedAt:ac()})}if(!C&&void 0!==b.liveChildrenCap){if(!Number.isInteger(b.liveChildrenCap)||b.liveChildrenCap<1)throw Error("liveChildrenCap must be a positive integer");if(!d)throw Error("liveChildrenCap requires parentConversationId");if(function(a,b){let c=aG(a,b),d=new Set;for(let b of Object.values(a.lineageEdges)){if("viewer-spawn"!==b.source||aG(a,b.parentConversationId)!==c)continue;let e=aG(a,b.childConversationId),f=b.evidence.launchId?a.receipts[b.evidence.launchId]:null,g=function(a,b,c,d){let e=[d?.key,c.childSessionKey],f=a.conversations[b],g=f?.generations.at(-1);return e.push(g?(0,u.sz)(f.engine,g.path):null),[...new Set(e.filter(a=>!!a).map(u.pp))].flatMap(b=>a.entries[b]?[a.entries[b]]:[])}(a,e,b,f),h=[f?.verifiedHost?.agent,f?.pane?.panePid,...g.flatMap(a=>[a.host?.agent,a.structuredHost?.process])].filter(a=>!!a);if(h.some(af)){d.add(e);continue}if(!(h.length>0)){if(f&&ad.has(f.state)){if("starting"===f.state&&Date.now()-Date.parse(f.createdAt)>12e4)continue;d.add(e);continue}g.some(a=>ae.has(a.status))&&d.add(e)}}return d.size}(a,d)>=b.liveChildrenCap)throw new E(d,b.liveChildrenCap)}if(c&&b.spawnCapabilityDigest)for(let b of Object.values(a.receipts))aG(a,b.conversationId)===c&&(b.spawnCapabilityDigest=null);let D=ac(),F={launchId:e().randomUUID(),clientAttemptId:b.clientAttemptId??null,requestDigest:b.requestDigest??null,pendingOrchestratorSeatIdentity:null,transport:b.transport??null,admissionOwner:"structured"===b.transport||!0===b.ownStartingActuation?{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)}:null,spawnCapabilityDigest:"string"==typeof b.spawnCapabilityDigest&&/^[0-9a-f]{64}$/.test(b.spawnCapabilityDigest)?b.spawnCapabilityDigest:null,conversationId:c??`conversation_${e().randomUUID()}`,purpose:b.purpose??"launch",supersedes:j?{conversationId:j,reason:b.supersedesReason??"recovery-spawn"}:null,resumeSourcePath:"resume-successor"===b.purpose?n?.generations.at(-1)?.path??null:null,pathCorrelation:"codex"===b.engine&&(b.purpose??"launch")==="launch"?{cwd:b.cwd,startedAt:D}:null,engine:b.engine,cwd:b.cwd,accountId:b.accountId??null,accountPin:!0===b.accountPin,parentConversationId:d,parentSource:d&&("explicit"===b.parentSource||"inferred-caller"===b.parentSource)?b.parentSource:null,createdAt:D,state:C?"failed":"starting",artifactPath:C?null:b.expectedArtifactPath??null,artifactLifecycle:"pending",key:null,pane:null,verifiedHost:null,target:null,completionMode:null,error:C?C.guidance:null,agentRole:A,delegationDepth:z,rejection:C,launchProfile:v,explicitProject:i,launchDisplay:aU(b.launchDisplay),queuedPinnedSpawn:null};if(a.receipts[F.launchId]=F,C)return{kind:"rejected",receipt:ab(F)};if(F.parentConversationId&&F.parentConversationId!==F.conversationId){let c="resume-successor"===b.purpose?a.lineageEdges[F.conversationId]:null;if(c&&c.childConversationId===F.conversationId){let b=aG(a,c.parentConversationId);b!==F.conversationId&&(a.lineageEdges[F.conversationId]={...c,childConversationId:F.conversationId,parentConversationId:b,reviewsConversationId:c.reviewsConversationId?aG(a,c.reviewsConversationId):null})}else a.lineageEdges[F.conversationId]={childConversationId:F.conversationId,parentConversationId:F.parentConversationId,childSessionKey:null,parentSessionKey:b.parentSessionKey??null,childArtifactPath:null,parentArtifactPath:b.parentArtifactPath??null,kind:f||"reviewer"===h?"review":"spawn",role:h,reviewsConversationId:f,source:"viewer-spawn",evidence:{launchId:F.launchId,clientAttemptId:F.clientAttemptId,parentSource:F.parentSource},createdAt:F.createdAt}}for(let c of b.memberships??[])aL(a,F.conversationId,c,F.createdAt);return{kind:"created",receipt:ab(F)}}}claimSpawnActuation(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");let e="starting"===d.state&&!d.key&&!d.pane,f="tmux"===b&&("pane-bound"===d.state||"host-verified"===d.state)&&!d.key&&!!d.pane;return d.transport!==b||!e&&!f||d.admissionOwner&&this.ownerAlive(d.admissionOwner)?{claimed:!1,receipt:ab(d)}:(d.admissionOwner={pid:process.pid,startIdentity:l.B.processIdentity(process.pid)},{claimed:!0,receipt:ab(d)})})}queuePinnedSpawn(a,b,c){return this.mutate(d=>{let e=d.receipts[a];if(!e)throw Error("unknown spawn receipt");let f=aR(b,this.mcpGrantPolicy);if(!f||"structured"!==e.transport&&"tmux"!==e.transport||"starting"!==e.state||e.key||e.pane||!e.accountPin||!e.accountId||f.accountId!==e.accountId||f.spec.engine!==e.engine||f.spec.cwd!==e.cwd)throw Error("queued pinned spawn payload conflicts with its durable receipt");return e.queuedPinnedSpawn=f,e.launchProfile=(0,o.Ui)({...e.launchProfile,title:c},this.mcpGrantPolicy),ab(e)})}claimStartingStructuredSpawn(a){return this.claimSpawnActuation(a,"structured")}claimTmuxSpawnActuation(a){return this.claimSpawnActuation(a,"tmux")}releaseSpawnActuation(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");let e="starting"===d.state&&!d.key&&!d.pane,f="tmux"===d.transport&&("pane-bound"===d.state||"host-verified"===d.state)&&!d.key&&!!d.pane;return("structured"===d.transport||"tmux"===d.transport)&&(e||f)&&d.admissionOwner&&d.admissionOwner.pid===b.pid&&d.admissionOwner.startIdentity===b.startIdentity?(d.admissionOwner=null,{released:!0,receipt:ab(d)}):{released:!1,receipt:ab(d)}})}releaseStartingStructuredSpawn(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return"structured"!==d.transport||"starting"!==d.state||d.key||d.pane||!d.admissionOwner||d.admissionOwner.pid!==b.pid||d.admissionOwner.startIdentity!==b.startIdentity?{released:!1,receipt:ab(d)}:(d.admissionOwner=null,{released:!0,receipt:ab(d)})})}releaseStructuredSpawnAdmissionOwner(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return"structured"===d.transport&&d.admissionOwner&&d.admissionOwner.pid===b.pid&&d.admissionOwner.startIdentity===b.startIdentity?(d.admissionOwner=null,{released:!0,receipt:ab(d)}):{released:!1,receipt:ab(d)}})}claimFailedSpawnForRetry(a,b){if(!b.trim())throw Error("spawn retry claim id is required");return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return d.retryClaim?.claimId===b?{kind:"claimed",receipt:ab(d)}:d.retryClaim?{kind:"conflict",receipt:ab(d)}:"failed"!==d.state?{kind:"settled",receipt:ab(d)}:(d.retryClaim={claimId:b,claimedAt:ac()},{kind:"claimed",receipt:ab(d)})})}rememberMembership(a,b){return this.mutate(c=>ab(aL(c,a,b,ac())))}runIdentityWaveMigration(a){return a.dryRun?(0,q.Oy)(ab(this.readOnlySnapshot()),{...a,dryRun:!0}):(0,n.oV)(()=>this.mutate(b=>(0,q.Oy)(b,a)))}stampOrchestratorSeatIdentity(a){return this.mutate(b=>{let c=(0,q.DD)(b,a,a.activatedAt??a.designatedAt);if(c.changed&&c.engine&&(b.conversationRevision[c.engine]+=1),c.engine)return c.changed;let d=Object.values(b.receipts).find(b=>b.conversationId===a.conversationId);if(!d)return!1;let e=aS(a);return!(!e||(0,j.isDeepStrictEqual)(d.pendingOrchestratorSeatIdentity,e))&&(d.pendingOrchestratorSeatIdentity=e,!0)})}beginSpawn(a,b,c={}){let d=this.beginSpawnRequest({engine:a,cwd:b,launchProfile:c});if("created"!==d.kind)throw Error("could not create spawn receipt");return d.receipt}bindSpawnPane(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return d.pane&&(d.pane.paneId!==b.paneId||d.pane.server.startIdentity!==b.server.startIdentity||d.pane.panePid.startIdentity!==b.panePid.startIdentity)?(d.state="conflicted",d.error="spawn_pane_conflict"):"failed"===d.state||"conflicted"===d.state||(d.pane={...b,display:b.display??b.target,target:b.paneId},d.target=b.paneId,"starting"===d.state&&(d.state="pane-bound")),ab(d)})}markSpawnHostVerified(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return d.pane&&d.pane.paneId===b.paneId&&d.pane.server.pid===b.server.pid&&d.pane.server.startIdentity===b.server.startIdentity&&d.pane.panePid.pid===b.panePid.pid&&d.pane.panePid.startIdentity===b.panePid.startIdentity?"failed"===d.state||"conflicted"===d.state||(d.verifiedHost=b,d.target=b.paneId,("starting"===d.state||"pane-bound"===d.state)&&(d.state="host-verified")):(d.state="conflicted",d.error="spawn_host_identity_conflict"),ab(d)})}markSpawnPromptDelivered(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");return c.verifiedHost&&("host-verified"===c.state||"pane-bound"===c.state||"starting"===c.state)&&(c.state="prompt-delivered","tmux"===c.transport&&c.queuedPinnedSpawn&&(c.launchProfile=(0,o.Ui)(c.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),c.queuedPinnedSpawn=null,c.admissionOwner=null)),ab(c)})}markSpawnPathPending(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");return c.verifiedHost&&("prompt-delivered"===c.state||"host-verified"===c.state)&&(c.state="path-pending"),ab(c)})}preserveSpawnArtifactOwnership(a,b){this.mutate(c=>{let d=c.receipts[a];d&&"completed"!==d.state&&"failed"!==d.state&&(d.state="path-pending",d.error=b,d.verifiedHost=null,d.target=null)})}confirmSpawnPaneAliveInFile(a,b,c,d){var e;let f=a.receipts[b];if(!f||"conflicted"!==f.state||!f.pane)return f??null;if(f.engine!==d.engine||f.cwd!==d.cwd||"agent never reached a launch-ready prompt"!==(e=f.error)&&e?.startsWith("agent never reached a launch-ready prompt:")!==!0&&"launch prompt was not accepted by the agent"!==e&&e?.startsWith("launch prompt was not accepted by the agent:")!==!0)return f;let g=f.pane,h=g.server.pid===c.server.pid&&(null===g.server.startIdentity||g.server.startIdentity===c.server.startIdentity),i=g.paneId===c.paneId&&g.panePid.pid===c.panePid.pid&&(null===g.panePid.startIdentity||g.panePid.startIdentity===c.panePid.startIdentity);return h&&i&&(f.state="host-verified",f.error=null,f.verifiedHost=c,f.target=c.paneId),f}confirmSpawnPaneAlive(a,b,c){let d=this.readOnlySnapshot().receipts[a];return d&&"conflicted"===d.state?this.mutate(d=>{let e=this.confirmSpawnPaneAliveInFile(d,a,b,c);return e?ab(e):null}):d?ab(d):null}settleSpawnInFile(a,b,c,d,f=!0){let g=a.receipts[b];if(!g)throw Error("unknown spawn receipt");let h=g.key?a.entries[(0,u.pp)(g.key)]:null,i=a=>("completed"!==g.state&&(g.state="conflicted",g.error=a),{kind:"conflict",receipt:ab(g),code:a});if("observed-completed"===d&&c.host?.kind==="tmux"&&this.confirmSpawnPaneAliveInFile(a,b,c.host,{engine:c.key.engine,cwd:c.cwd}),"failed"===g.state||"conflicted"===g.state)return{kind:"conflict",receipt:ab(g),code:"spawn_artifact_conflict"===g.error||"spawn_pane_conflict"===g.error||"spawn_identity_conflict"===g.error?g.error:"spawn_identity_conflict"};if(g.engine!==c.key.engine||g.cwd!==c.cwd)return i("spawn_identity_conflict");if(g.pane&&c.host?.kind==="tmux"&&(g.pane.paneId!==c.host.paneId||g.pane.server.pid!==c.host.server.pid||null!==g.pane.server.startIdentity&&c.host.server.startIdentity!==g.pane.server.startIdentity||g.pane.panePid.pid>0&&g.pane.panePid.pid!==c.host.panePid.pid||null!==g.pane.panePid.startIdentity&&c.host.panePid.startIdentity!==g.pane.panePid.startIdentity))return i("spawn_pane_conflict");let j=a.conversations[g.conversationId],k=j?.generations.find(a=>a.id===c.key.sessionId),l=j?(0,u.sz)(j.engine,c.artifactPath)?.sessionId??ag(c.artifactPath):null,n="completed"===g.state&&"resume-successor"===g.purpose&&null!==g.resumeSourcePath&&g.artifactPath===g.resumeSourcePath&&null!==g.artifactPath&&null!==g.key&&void 0!==j&&ax(j,g.artifactPath)&&ax(j,c.artifactPath)&&(0,u.pp)(g.key)===(0,u.pp)(c.key)&&k?.id===c.key.sessionId&&l===c.key.sessionId;if(g.artifactPath&&g.artifactPath!==c.artifactPath&&!n)return i("spawn_artifact_conflict");if(g.key&&(0,u.pp)(g.key)!==(0,u.pp)(c.key))return i("spawn_identity_conflict");let r=a.entries[(0,u.pp)(c.key)],s=!!r&&!!j&&(j.generations.some(a=>a.path===r.artifactPath)||j.continuityPaths.includes(r.artifactPath)),t="resume-successor"===g.purpose&&s&&k?.id===c.key.sessionId&&l===c.key.sessionId;if(r&&r.artifactPath!==c.artifactPath&&(!h||(0,u.pp)(h.key)!==(0,u.pp)(c.key))&&!t)return i("spawn_artifact_conflict");g.queuedPinnedSpawn&&(g.launchProfile=(0,o.Ui)(g.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),g.queuedPinnedSpawn=null);let v=ac(),w=j??{id:g.conversationId,engine:g.engine,generations:[],continuityPaths:[],abandonedContinuityPaths:[],providerForkPaths:[],projectOwnership:null,pinnedAccountId:g.accountPin?g.accountId:null,migration:null,migrationOptOut:null,supersededBy:null,agentRole:null,delegationDepth:null,turn:{state:"unknown",source:"empty",terminalAt:null,observedAt:null},createdAt:v,updatedAt:v};if(w.agentRole??=g.agentRole,w.delegationDepth??=g.delegationDepth,"launch"===g.purpose&&g.accountPin&&g.accountId&&(w.pinnedAccountId=g.accountId),w.engine!==g.engine||"resume-successor"===g.purpose&&!K(w.migration))return i("spawn_identity_conflict");if("migration-successor"===g.purpose){let b=Object.values(a.conversations).find(a=>a.id!==w.id&&a.engine===w.engine&&ax(a,c.artifactPath));if(b&&!aP(a,b,w,c.artifactPath))return i("spawn_artifact_conflict");ay(w,c.artifactPath)}if("launch"===g.purpose){let b=Object.values(a.conversations).find(a=>a.id!==w.id&&a.engine===w.engine&&ax(a,c.artifactPath));if(b&&!aP(a,b,w,c.artifactPath))return i("spawn_artifact_conflict")}if("resume-successor"===g.purpose&&!ax(w,c.artifactPath)){let b=Object.values(a.conversations).find(a=>a.id!==w.id&&a.engine===w.engine&&ax(a,c.artifactPath));if(b&&!aP(a,b,w,c.artifactPath))return i("spawn_artifact_conflict");let d=(0,u.sz)(w.engine,c.artifactPath)?.sessionId??ag(c.artifactPath),e=w.generations.find(a=>a.id===d);if(e)w.continuityPaths.includes(e.path)||w.continuityPaths.push(e.path),e.path=c.artifactPath,e.accountId=g.accountId??e.accountId,e.launchProfile={...e.launchProfile,...g.launchProfile};else{let a=w.generations.at(-1);a&&null===a.archivedAt&&(a.archivedAt=v),w.generations.push({id:d,path:c.artifactPath,accountId:g.accountId,launchProfile:g.launchProfile,historyHash:null,host:null,createdAt:v,archivedAt:null})}if(a.conversationRevision[w.engine]+=1,a.engineRouting[w.engine].revision+=1,w.migration&&("waiting-turn"===w.migration.phase||"requested"===w.migration.phase)){let a=w.generations.at(-1);a&&(w.migration={...w.migration,sourceGenerationId:a.id,updatedAt:v})}}g.explicitProject&&!w.projectOwnership&&(w.projectOwnership={project:g.explicitProject,source:"operator",setAt:v,operationId:g.launchId}),"migration-successor"===g.purpose||w.generations.some(a=>a.path===c.artifactPath)||(w.generations.push({id:ag(c.artifactPath),path:c.artifactPath,accountId:g.accountId,launchProfile:g.launchProfile,historyHash:null,host:null,createdAt:v,archivedAt:null}),a.conversationRevision[w.engine]+=1,a.engineRouting[w.engine].revision+=1);let x=w.generations.find(a=>a.path===c.artifactPath),y=(0,m.St)(g.launchProfile.title,120);x&&y&&!(0,m.St)(x.launchProfile.title,120)&&(x.launchProfile.title=y,a.conversationRevision[w.engine]+=1,a.engineRouting[w.engine].revision+=1);let z=Object.values(a.migrationIntents).find(b=>b.engine===w.engine&&G(b)&&(0,p.xc)(a,b,Date.parse(v))),A=w.generations.at(-1);z&&!w.pinnedAccountId&&A&&A.accountId!==z.targetId&&!w.migration&&(w.migration={intentId:z.id,phase:I(a,w)?"waiting-turn":"requested",targetId:z.targetId,revision:z.revision,error:null,errorCode:null,operationId:e().randomUUID(),sourceGenerationId:A.id,successorLaunchProfile:null,providerReceipt:null,pendingContinuityPaths:[],boardProject:null,boardOperationId:null,boardPlacementProject:w.projectOwnership?.project??A.launchProfile.project,updatedAt:v}),w.updatedAt=v,a.conversations[w.id]=w;let B={...c,accountId:g.accountId,launchProfile:g.launchProfile,updatedAt:v};if(a.entries[(0,u.pp)(c.key)]=B,g.key=c.key,g.artifactPath=c.artifactPath,g.pendingOrchestratorSeatIdentity){let b=g.pendingOrchestratorSeatIdentity,c=(0,q.DD)(a,b,b.activatedAt??b.designatedAt);g.pendingOrchestratorSeatIdentity=null,c.changed&&c.engine&&(a.conversationRevision[c.engine]+=1)}let C=a.lineageEdges[g.conversationId];return C&&(C.childSessionKey=c.key,C.childArtifactPath=c.artifactPath),c.host?.kind==="tmux"&&(g.verifiedHost=c.host),null===g.target&&c.host?.kind==="tmux"&&(g.target=c.host.paneId),g.state=f?"completed":"path-pending",g.error=null,f&&(g.completionMode="observed-completed"===g.completionMode&&"route-completed"===d?"route-recovered":g.completionMode??d,g.supersedes&&aK(a,g.supersedes.conversationId,g.conversationId,g.supersedes.reason)),{kind:"settled",receipt:ab(g),entry:ab(B),conversation:ab(w)}}stageStructuredSpawn(a,b){return this.mutate(c=>{let d=new Set([b.artifactPath]),e=N(c,b.key.engine,d),f=this.settleSpawnInFile(c,a,{...b,structuredHostOperationId:a},"route-completed",!1);return P(c,b.key.engine,e,d),f})}finalizeStructuredSpawn(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");if("failed"===c.state||"conflicted"===c.state)return{kind:"conflict",receipt:ab(c),code:"spawn_identity_conflict"};if(!c.key||!c.artifactPath)throw Error("structured spawn identity is incomplete");let d=b.entries[(0,u.pp)(c.key)],e=b.conversations[c.conversationId];if(d&&"string"==typeof d.structuredHostOperationId&&d.structuredHostOperationId!==a)return c.state="conflicted",c.error="spawn_identity_conflict",{kind:"conflict",receipt:ab(c),code:"spawn_identity_conflict"};if(!d||!e||d.artifactPath!==c.artifactPath||!d.structuredHost?.process||!d.claimOwner||"unhosted"===d.status||"dead"===d.status)throw Error("structured spawn durable host setup is incomplete");return d.pendingAction=null,d.updatedAt=ac(),c.state="completed",c.error=null,c.completionMode="route-completed",c.supersedes&&aK(b,c.supersedes.conversationId,c.conversationId,c.supersedes.reason),{kind:"settled",receipt:ab(c),entry:ab(d),conversation:ab(e)}})}recoverDeliveredStructuredSpawn(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");if("failed"===c.state||"conflicted"===c.state)return{kind:"conflict",receipt:ab(c),code:"spawn_identity_conflict"};if("path-pending"!==c.state||!c.key||!c.artifactPath)throw Error("structured spawn recovery identity is incomplete");let d=b.entries[(0,u.pp)(c.key)],e=b.conversations[c.conversationId];if(!d||!e||d.artifactPath!==c.artifactPath)throw Error("structured spawn recovery identity is unavailable");if(d.host||d.structuredHost?.process||d.claimOwner||"dead"!==d.status&&"unhosted"!==d.status)throw Error("structured spawn host loss is unconfirmed");let f={...d,host:null,structuredHost:null,status:"dead",claimOwner:null,pendingAction:null},g=O(b,(0,u.pp)(c.key),f),h=N(b,c.key.engine,g);return Object.assign(d,f,{updatedAt:ac()}),c.state="completed",c.error=null,c.completionMode=c.completionMode??"route-recovered",c.supersedes&&aK(b,c.supersedes.conversationId,c.conversationId,c.supersedes.reason),P(b,c.key.engine,h,g),{kind:"settled",receipt:ab(c),entry:ab(d),conversation:ab(e)}})}recoverStructuredSpawnFromEvidence(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");if("conflicted"===d.state||d.retryClaim)return{kind:"conflict",receipt:ab(d),code:"spawn_identity_conflict"};let e=d.key?c.entries[(0,u.pp)(d.key)]:null,f=null;if(e){let{updatedAt:a,...b}=e;f=b}let g=b&&f&&(f.structuredHost?.process||f.claimOwner)?{...b,host:f.host,structuredHost:f.structuredHost,claimEpoch:f.claimEpoch,claimOwner:f.claimOwner,pendingAction:f.pendingAction}:b??f;return!g||d.key&&(0,u.pp)(d.key)!==(0,u.pp)(g.key)||d.artifactPath&&d.artifactPath!==g.artifactPath?{kind:"conflict",receipt:ab(d),code:"spawn_identity_conflict"}:("failed"===d.state&&(d.state=d.key?"path-pending":"starting",d.error=null),this.settleSpawnInFile(c,a,g,"route-recovered"))})}settleSpawn(a,b,c="route-completed"){return this.mutate(d=>{let e=new Set([b.artifactPath]),f=N(d,b.key.engine,e),g=this.settleSpawnInFile(d,a,b,c);return P(d,b.key.engine,f,e),g})}completeSpawn(a,b){let c=this.settleSpawn(a,b);if("conflict"===c.kind)throw Error(c.code);return c.entry}failSpawn(a,b){this.mutate(c=>{let d=c.receipts[a];if(d&&"completed"!==d.state&&"failed"!==d.state&&"conflicted"!==d.state){if("host-verified"===d.state||"prompt-delivered"===d.state){d.error=b;return}d.state=d.pane?"conflicted":"failed",d.error=b,"conflicted"===d.state&&(d.verifiedHost=null),("failed"===d.state||"conflicted"===d.state)&&d.queuedPinnedSpawn&&(d.launchProfile=(0,o.Ui)(d.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),d.queuedPinnedSpawn=null),at(c)}})}terminalizeFailedSpawnDeliveries(){let a=this.readOnlySnapshot();return Object.values(a.heldDeliveries).some(b=>{let c=ar(a,b);return!!c&&("failed"===b.state?!["completed","failed","conflicted"].includes(c.state):("failed"===c.state||"conflicted"===c.state)&&0===b.attempts&&("held"===b.state||"assigned"===b.state))})?this.mutate(a=>at(a)):[]}failStructuredSpawn(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)return{claimed:!1,receipt:null,cleanup:null};if("completed"===d.state||"failed"===d.state||"conflicted"===d.state)return{claimed:!1,receipt:ab(d),cleanup:null};if(d.state="failed",d.error=b,d.queuedPinnedSpawn&&(d.launchProfile=(0,o.Ui)(d.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),d.queuedPinnedSpawn=null),at(c),!d.key||!d.artifactPath)return{claimed:!0,receipt:ab(d),cleanup:null};let e=c.entries[(0,u.pp)(d.key)];if(!e||e.artifactPath!==d.artifactPath||"string"==typeof e.structuredHostOperationId&&e.structuredHostOperationId!==a)return{claimed:!0,receipt:ab(d),cleanup:null};let f=e.structuredHostOperationId===a,g=null==e.structuredHostOperationId&&"spawn"===e.pendingAction;if(!f&&!g)return{claimed:!0,receipt:ab(d),cleanup:null};let h={key:ab(d.key),process:ab(e.structuredHost?.process??null),releaseRegisteredHost:f},i="resume-successor"===d.purpose&&d.resumeSourcePath===d.artifactPath&&(e.structuredHost?.eventCursor??0)>0&&e.structuredHost?{...e.structuredHost,endpoint:"stdio:released",process:null,activeTurnRef:null,pendingAttention:[],activeFlags:[]}:null,j=O(c,(0,u.pp)(d.key),{...e,host:null,structuredHost:i,status:"dead",claimOwner:null,pendingAction:null}),k=N(c,d.key.engine,j);return e.host=null,e.structuredHost=i,e.status="dead",e.claimOwner=null,e.pendingAction=null,e.updatedAt=ac(),P(c,d.key.engine,k,j),{claimed:!0,receipt:ab(d),cleanup:h}})}invalidateSpawnHost(a,b){this.mutate(c=>{let d=c.receipts[a];d&&"failed"!==d.state&&"conflicted"!==d.state&&(d.state="conflicted",d.error=b,d.verifiedHost=null)})}upsert(a){return this.mutate(b=>{let c=(0,u.pp)(a.key),d=b.entries[c],e=void 0===a.structuredHost&&d?.structuredHost!==void 0?{...a,structuredHost:d.structuredHost}:a,f=O(b,c,e),g=N(b,a.key.engine,f),h={...e,updatedAt:ac()};return b.entries[c]=h,P(b,a.key.engine,g,f),ab(h)})}setStructuredHost(a,b,c){return this.mutate(d=>{let e=(0,u.pp)(a),f=d.entries[e];if(!f)throw Error("agent registry entry is missing");let g=O(d,e,{...f,structuredHost:b?ah(b):null,status:c??f.status}),h=N(d,a.engine,g);return f.structuredHost=b?ah(b):null,c&&(f.status=c),f.updatedAt=ac(),P(d,a.engine,h,g),ab(f)})}terminateStructuredHost(a,b){return this.mutate(c=>{let d=(0,u.pp)(a),e=c.entries[d];if(!e)return!1;let f=e.structuredHost?.process??null;if(b&&f&&(f.pid!==b.pid||f.startIdentity!==b.startIdentity))return!1;let g={...e,host:null,structuredHost:null,status:"dead",claimOwner:null,pendingAction:null},h=O(c,d,g),i=N(c,a.engine,h);return Object.assign(e,g,{updatedAt:ac()}),P(c,a.engine,i,h),!0})}terminateInactiveStructuredHost(a,b,c){return this.mutate(d=>{let e=d.conversations[a],f=(0,u.pp)(b),g=d.entries[f],h=g?.structuredHost?.process??null,i=null!==h&&!this.ownerAlive(h);if(!e||e.engine!==b.engine||!e.generations.some(a=>a.id===b.sessionId)||!g||c&&(!h||h.pid!==c.process.pid||h.startIdentity!==c.process.startIdentity||g.claimEpoch!==c.claimEpoch||g.structuredHost?.writerClaimEpoch!==c.claimEpoch)||g.host||null!==h&&!i||g.claimOwner&&!i||!i&&"dead"!==g.status&&"unhosted"!==g.status)return!1;let j={...g,host:null,structuredHost:null,status:"dead",claimOwner:null,pendingAction:null},k=O(d,f,j),l=N(d,b.engine,k);return Object.assign(g,j,{updatedAt:ac()}),P(d,b.engine,l,k),e.generations.at(-1)?.id===b.sessionId?"current":"predecessor"})}setStructuredHostClaimed(a,b,c,d,e,f=!1){return this.mutate(g=>{let h=(0,u.pp)(a),i=g.entries[h];if(!i?.structuredHost||i.claimOwner!==d||i.claimEpoch!==e||i.structuredHost.writerClaimEpoch!==e)return null;let k=ah(b);if(!f&&i.status===c&&(0,j.isDeepStrictEqual)(ah(i.structuredHost),k))return ab(i);let l={...i,structuredHost:k,status:c},m=O(g,h,l),n=N(g,a.engine,m);return i.structuredHost=l.structuredHost,i.status=c,f&&(i.claimOwner=null),i.updatedAt=ac(),P(g,a.engine,n,m),ab(i)})}ownsStructuredHostClaim(a,b,c){let d=this.readOnlySnapshot().entries[(0,u.pp)(a)];return d?.claimOwner===b&&d.claimEpoch===c&&d.structuredHost?.writerClaimEpoch===c}claimStructuredHost(a,b,c={}){return this.mutate(d=>{let e=d.entries[(0,u.pp)(a)];if(!e?.structuredHost||"unhosted"===e.status&&!0!==c.allowUnhosted)return null;(0,r.k8)(d,a,this.mcpGrantPolicy);let f="unhosted"===e.status||"dead"===e.status,g=e.structuredHost.process;if(!f&&g&&this.ownerAlive(g))return null;let h=`${D}${JSON.stringify(b)}`;if(e.claimOwner){let a=function(a){if(!a.startsWith(D))return null;try{let b=JSON.parse(a.slice(D.length));return Number.isInteger(b.pid)&&b.pid>0?{pid:b.pid,startIdentity:"string"==typeof b.startIdentity?b.startIdentity:null}:null}catch{return null}}(e.claimOwner),d=!0===c.reclaimUnverifiedOwner&&null===e.structuredHost.process&&a?.startIdentity===null&&null!==b.startIdentity;if(!a||this.ownerAlive(a)&&!d)return null}return e.claimOwner=h,e.claimEpoch+=1,e.structuredHost.writerClaimEpoch=e.claimEpoch,e.updatedAt=ac(),ab(e)})}markUnhosted(a){this.mutate(b=>{let c=b.entries[(0,u.pp)(a)];if(!c)return;let d=c.structuredHost?.process?c.status:"unhosted",e={...c,host:null,status:d},f=O(b,(0,u.pp)(a),e),g=N(b,a.engine,f);c.host=null,c.status=d,c.updatedAt=ac(),P(b,a.engine,g,f)})}claim(a,b){return this.mutate(c=>{let d=c.entries[(0,u.pp)(a)];if(!d)throw Error("agent registry entry is missing");if(d.claimOwner&&d.claimOwner!==b)throw Error("agent session is claimed by another operation");return d.claimOwner=b,d.claimEpoch+=1,d.updatedAt=ac(),ab(d)})}releaseClaim(a,b){this.mutate(c=>{let d=c.entries[(0,u.pp)(a)];d?.claimOwner===b&&(d.claimOwner=null,d.updatedAt=ac())})}releaseStructuredHostClaim(a,b,c){return this.mutate(d=>{let e=d.entries[(0,u.pp)(a)];return!!e?.structuredHost&&e.claimOwner===b&&e.claimEpoch===c&&e.structuredHost.writerClaimEpoch===c&&(e.claimOwner=null,e.updatedAt=ac(),!0)})}async withOperationLock(a,b,c){let d=`${this.filename}.locks/${encodeURIComponent((0,u.pp)(a))}`,e=await this.acquireLockAsync(d,b);try{return await c()}finally{this.releaseLock(e)}}importResumePanes(a,b){this.mutate(c=>{c.importedResumePanes&&c.legacyResumePanes.serverPid===a||(c.legacyResumePanes={serverPid:a,panes:Object.fromEntries(b)},c.importedResumePanes=!0)})}resumePanes(a){let b=this.readOnlySnapshot().legacyResumePanes;return b.serverPid===a?new Map(Object.entries(b.panes).map(([a,b])=>[a,ab(b)])):new Map}rememberResumePane(a,b,c){this.mutate(d=>{d.legacyResumePanes.serverPid!==a&&(d.legacyResumePanes={serverPid:a,panes:{}}),d.legacyResumePanes.panes[b]=c,d.importedResumePanes=!0})}reconcileSpawnReceipts(a){let b=new Set([...a].map(u.pp));this.mutate(a=>{for(let c of Object.values(a.entries))b.has((0,u.pp)(c.key))&&(c.pendingAction=null);for(let c of Object.values(a.receipts)){if("starting"!==c.state||!c.artifactPath)continue;let d=Object.values(a.entries).find(a=>a.artifactPath===c.artifactPath)?.key;d&&b.has((0,u.pp)(d))&&(c.state="completed")}})}completeObservedSpawn(a,b){return this.settleSpawn(a,b,"observed-completed")}ensureConversation(a,b,c){return this.mutate(d=>{let f=Object.values(d.conversations).find(c=>c.engine===a&&ax(c,b));if(f)return ab(f);let g=ac(),h={id:`conversation_${e().randomUUID()}`,engine:a,generations:[{id:ag(b),path:b,accountId:c,launchProfile:(0,o.Ui)(),historyHash:null,host:null,createdAt:g,archivedAt:null}],continuityPaths:[],abandonedContinuityPaths:[],providerForkPaths:[],projectOwnership:null,pinnedAccountId:null,migration:null,migrationOptOut:null,supersededBy:null,agentRole:null,delegationDepth:null,turn:{state:"unknown",source:"empty",terminalAt:null,observedAt:null},createdAt:g,updatedAt:g};return d.conversations[h.id]=h,d.conversationRevision[a]+=1,d.engineRouting[a].revision+=1,ab(h)})}reconcileConversations(a){return this.mutate(b=>{let c=new Set,d=new Map,f=function(a,b){let c=Object.values(a.receipts).flatMap(a=>{if("codex"!==a.engine||"path-pending"!==a.state||null!==a.artifactPath||!a.pathCorrelation)return[];let b=Date.parse(a.pathCorrelation.startedAt);return Number.isFinite(b)?[{launchId:a.launchId,cwd:a.pathCorrelation.cwd,accountId:a.accountId,expectedStart:b}]:[]});if(0===c.length)return new Map;let d=[];for(let c of b){if("codex"!==c.engine||!c.startedAt)continue;let b=Date.parse(c.startedAt);if(!Number.isFinite(b))continue;let e=(0,u.sz)(c.engine,c.path)?.sessionId??null;Object.values(a.conversations).filter(a=>a.engine===c.engine&&(ax(a,c.path)||null!==e&&a.generations.some(a=>a.id===e))).some(a=>!aC(a,c.path))||d.push({path:c.path,cwd:c.launchProfile.cwd,accountId:c.accountId,observedStart:b})}let e=new Map,f=a=>JSON.stringify([a.cwd,a.accountId]),g=new Set([...c.map(f),...d.map(f)]),h=(a,b,c,d)=>{let e=a[b][c];if(!e||d.count>e.count||d.count===e.count&&d.distance<e.distance){a[b][c]={...d,assignments:d.assignments.map(a=>[...a])};return}if(d.count!==e.count||d.distance!==e.distance)return;let f=new Set(e.assignments.map(a=>JSON.stringify(a)));for(let a of d.assignments){let b=JSON.stringify(a);if(!f.has(b)&&(e.assignments.push(a),f.add(b),2===e.assignments.length))break}};for(let a of g){let b=c.filter(b=>f(b)===a).sort((a,b)=>a.expectedStart-b.expectedStart||a.launchId.localeCompare(b.launchId)),g=d.filter(b=>f(b)===a).sort((a,b)=>a.observedStart-b.observedStart||a.path.localeCompare(b.path)),i=(a,b)=>a.observedStart>=b.expectedStart-1e3&&a.observedStart<=b.expectedStart+3e4;if(b.length>1&&g.length>1){let a=g.some(a=>b.filter(b=>i(a,b)).length>1),c=b.some(a=>g.filter(b=>i(b,a)).length>1);if(a||c)continue}let j=Array.from({length:g.length+1},()=>Array(b.length+1));j[0][0]={count:0,distance:0,assignments:[[]]};for(let a=0;a<=g.length;a+=1)for(let c=0;c<=b.length;c+=1){let d=j[a][c];if(!d||(a<g.length&&h(j,a+1,c,d),c<b.length&&h(j,a,c+1,d),a>=g.length||c>=b.length))continue;let e=g[a],f=b[c];i(e,f)&&h(j,a+1,c+1,{count:d.count+1,distance:d.distance+Math.abs(e.observedStart-f.expectedStart),assignments:d.assignments.map(a=>[...a,[e.path,f.launchId]])})}let k=j.at(-1)?.at(-1)?.assignments;if(k?.length===1)for(let[a,b]of k[0])e.set(a,b)}return e}(b,a),g=new Map,h=new Map,i=a=>{for(let b of a.generations){let c=g.get(b.path)??[];c.includes(a)||c.push(a),g.set(b.path,c);let d=h.get(`${a.engine}:${b.id}`)??[];d.includes(a)||d.push(a),h.set(`${a.engine}:${b.id}`,d)}for(let b of a.continuityPaths){let c=g.get(b)??[];c.includes(a)||c.push(a),g.set(b,c)}};for(let a of Object.values(b.conversations))i(a);(function(a,b,c,d){let e=b.filter(a=>"codex"===a.engine&&"string"==typeof a.forkSourceThreadId&&a.forkSourceThreadId.length>0&&(a.forkIntent??"provider-history")==="provider-history");if(0===e.length)return!1;let f=Object.values(a.conversations).filter(a=>"codex"===a.engine),g=new Map,h=new Map;for(let a of f)for(let b of a.generations)h.set(b.id,a),g.set(b.id,a);for(let a of f)for(let b of a.continuityPaths){let c=(0,u.sz)("codex",b)?.sessionId;c&&!g.has(c)&&g.set(c,a)}let i=!1,j=e;for(let b=0;b<e.length&&j.length>0;b+=1){let b=[],e=!1;for(let f of j){let j=(0,u.sz)("codex",f.path)?.sessionId??null,k=g.get(f.forkSourceThreadId);if(!k||a.conversations[k.id]!==k){b.push(f);continue}let l=j?h.get(j):void 0;if(l&&l.id!==k.id&&!aC(l,f.path))continue;let m=(c.get(f.path)??[]).filter(b=>a.conversations[b.id]===b&&"codex"===b.engine&&ax(b,f.path));if(m.some(a=>a.id===k.id)){k.providerForkPaths.includes(f.path)||k.generations.some(a=>a.path===f.path)||(az(k,f.path),i=!0),j&&g.set(j,k);continue}let n=m.find(a=>aC(a,f.path));(!(m.length>0)||n)&&(!n||aP(a,n,k,f.path))&&(az(k,f.path),aQ(k.updatedAt,f.observedAt)&&(k.updatedAt=f.observedAt),d(k),j&&g.set(j,k),i=!0,e=!0)}if(!e)break;j=b}return i})(b,a,g,i)&&c.add("codex");let j=new Map,k=()=>{for(let a of(j.clear(),Object.values(b.receipts))){if("resume-successor"!==a.purpose)continue;let c=aG(b,a.conversationId),d=j.get(c)??[];d.push(a),j.set(c,d)}};k();let l=new Map;for(let a of Object.values(b.receipts)){let b=a.artifactPath?`${a.engine}:${a.artifactPath}`:null;b&&"migration-successor"===a.purpose&&"failed"!==a.state&&"conflicted"!==a.state&&!l.has(b)&&l.set(b,a)}let n=new Map;for(let a of Object.values(b.receipts)){if("structured"!==a.transport||"pending"!==a.artifactLifecycle||!a.artifactPath)continue;let b=`${a.engine}:${a.artifactPath}`,c=n.get(b)??[];c.push(a),n.set(b,c)}for(let p of a){for(let a of n.get(`${p.engine}:${p.path}`)??[])a.artifactLifecycle="materialized";let a=(0,u.sz)(p.engine,p.path)?.sessionId??null,q=f.get(p.path);if(a&&q){let d=b.receipts[q],e=d?this.settleSpawnInFile(b,q,{key:{engine:p.engine,sessionId:a},artifactPath:p.path,cwd:d.cwd,accountId:d.accountId,status:"unhosted",host:null,claimEpoch:0,claimOwner:null,pendingAction:null},"observed-completed"):null;if(e?.kind==="settled"){c.add(p.engine),k();let a=b.conversations[aG(b,d.conversationId)];a&&i(a)}}let r=(g.get(p.path)??[]).filter(a=>b.conversations[a.id]===a&&a.engine===p.engine&&ax(a,p.path)),s=aE(b,r);if(s){let a=!1;for(let c of r)c.id!==s.id&&aC(c,p.path)&&(a=aP(b,c,s,p.path)||a);a&&k()}let t=a?`${p.engine}:${a}`:null,v=t?d.get(t):void 0;t&&void 0===v&&d.set(t,p.path);let w=a?aE(b,(h.get(`${p.engine}:${a}`)??[]).filter(c=>b.conversations[c.id]===c&&c.generations.some(b=>b.id===a))):null,x=null!==w&&!K(w.migration)&&(j.get(w.id)??[]).some(L),y=s??w??null,z=!1;if(!x&&s&&w&&s.id!==w.id&&aP(b,s,w,p.path)&&(s=w,y=w,z=!0,k()),!x&&(!s||z)&&w&&a){let b=w.generations.find(b=>b.id===a);b&&b.path!==p.path&&(void 0===v||v===p.path?(w.continuityPaths.includes(b.path)||w.continuityPaths.push(b.path),b.path=p.path):w.continuityPaths.includes(p.path)||w.continuityPaths.push(p.path),w.updatedAt=p.observedAt,i(w),c.add(p.engine))}if(!y){let a=l.get(`${p.engine}:${p.path}`),d=a?b.conversations[a.conversationId]:null;d&&(ay(y=d,p.path),i(y),y.updatedAt=p.observedAt,c.add(p.engine))}if(!y){let a=p.observedAt;y={id:`conversation_${e().randomUUID()}`,engine:p.engine,generations:[{id:ag(p.path),path:p.path,accountId:p.accountId,launchProfile:(0,o.Ui)({...p.launchProfile,title:(0,m.St)(p.launchProfile.title)}),historyHash:null,host:null,createdAt:a,archivedAt:null}],continuityPaths:[],abandonedContinuityPaths:[],providerForkPaths:[],projectOwnership:null,pinnedAccountId:null,migration:null,migrationOptOut:null,supersededBy:null,agentRole:null,delegationDepth:null,turn:{...p.turn,observedAt:p.observedAt},createdAt:a,updatedAt:a},b.conversations[y.id]=y,i(y),aF(b,y,p.path,p.observedAt),c.add(p.engine);continue}let A=y.generations.find(a=>a.path===p.path);if(!A)continue;let B=A.accountId,C=A.launchProfile.role,D=y.turn.state,E=b.lineageEdges[y.id],F=p.launchProfile.parentConversationId;A.accountId=p.accountId??A.accountId,A.launchProfile={...A.launchProfile,...p.launchProfile,cwd:A.launchProfile.cwd||p.launchProfile.cwd,model:A.launchProfile.model??p.launchProfile.model,effort:A.launchProfile.effort??p.launchProfile.effort,fast:A.launchProfile.fast??p.launchProfile.fast,permissionMode:A.launchProfile.permissionMode??p.launchProfile.permissionMode,readOnly:A.launchProfile.readOnly??p.launchProfile.readOnly,mcpServers:A.launchProfile.mcpServers,title:(0,m.St)(A.launchProfile.title)??(0,m.St)(p.launchProfile.title),project:p.launchProfile.project??A.launchProfile.project,parentConversationId:E?.source==="viewer-spawn"?E.parentConversationId:F??A.launchProfile.parentConversationId,role:"root"===A.launchProfile.role||"root"===p.launchProfile.role?"root":"worker",goal:p.launchProfile.goal??A.launchProfile.goal,plan:p.launchProfile.plan??A.launchProfile.plan},aF(b,y,p.path,p.observedAt),(void 0===p.expectedTurnObservedAt||p.expectedTurnObservedAt===y.turn.observedAt)&&aQ(y.turn.observedAt,p.observedAt)&&(y.turn={...p.turn,observedAt:p.observedAt}),aQ(y.updatedAt,p.observedAt)&&(y.updatedAt=p.observedAt),(B!==A.accountId||C!==A.launchProfile.role||D!==y.turn.state)&&c.add(p.engine)}let p=(a,c)=>aE(b,(g.get(a)??[]).filter(d=>b.conversations[d.id]===d&&d.engine===c&&ax(d,a))),q=(a,c)=>{let d=new Set,e=c;for(;e&&!d.has(e);){if(e===a)return!0;d.add(e);let c=b.lineageEdges[e]?.parentConversationId;e=c?aG(b,c):void 0}return!1};for(let d of a){if(!d.parentArtifactPath)continue;let a=p(d.path,d.engine);if(!a||b.lineageEdges[a.id]?.source==="viewer-spawn")continue;let e=p(d.parentArtifactPath,d.engine);if(!e)continue;let f=aG(b,e.id);if(f===a.id||q(a.id,f))continue;let g=a.generations.find(a=>a.path===d.path)??a.generations.at(-1);if(!g)continue;g.launchProfile.parentConversationId!==f&&(g.launchProfile={...g.launchProfile,parentConversationId:f});let h=b.lineageEdges[a.id]?.parentConversationId??null;aF(b,a,d.path,d.observedAt),(b.lineageEdges[a.id]?.parentConversationId??null)!==h&&c.add(d.engine)}for(let a of c)b.conversationRevision[a]+=1,b.engineRouting[a].revision+=1;return ab(b)})}conversationForPath(a){let b=Object.values(this.readOnlySnapshot().conversations).find(b=>ax(b,a));return b?ab(b):null}canonicalConversationId(a){return aG(this.readOnlySnapshot(),a)}recordSupersedence(a,b,c="manual"){return this.mutate(d=>{let e=aG(d,a),f=aG(d,b);if(e===f)throw Error("a conversation cannot supersede itself");let g=aJ(d,e,f,c);if(!g)throw Error("supersedence could not be recorded");return ab(g)})}supersedenceChainTail(a){return aH(this.readOnlySnapshot(),a)}supersedenceConflict(a){let b=this.readOnlySnapshot(),c=aH(b,a),d=b.conversations[c];return d&&aI(b,d)?c:null}clearSupersedence(a){return this.mutate(b=>{let c=b.conversations[aG(b,a)];if(!c)return null;for(let[a,d]of(c.supersededBy&&(c.supersededBy=null,c.updatedAt=ac(),b.conversationRevision[c.engine]+=1),Object.entries(b.pendingSupersedence)))aH(b,d.predecessorConversationId)===c.id&&delete b.pendingSupersedence[a];return ab(c)})}conversation(a){let b=this.readOnlySnapshot(),c=b.conversations[aG(b,a)];return c?ab(c):null}launchProfileForPath(a){let b=this.readOnlySnapshot();for(let c of Object.values(b.conversations)){let b=c.generations.find(b=>b.path===a);if(b)return ab(b.launchProfile);if(c.continuityPaths.includes(a)){let a=c.generations.at(-1);if(a)return ab(a.launchProfile)}}let c=Object.values(b.receipts).find(b=>b.artifactPath===a);return c?ab(c.launchProfile):null}transcriptAccountId(a,b){let c=this.readOnlySnapshot();for(let d of Object.values(c.conversations)){if(d.engine!==a)continue;let c=d.generations.find(a=>a.path===b);if(c?.accountId)return c.accountId;if(d.continuityPaths.includes(b)){let a=d.generations.at(-1);if(a?.accountId)return a.accountId}}let d=Object.values(c.receipts).find(c=>c.artifactPath===b&&c.engine===a);return d?.accountId??null}updateConversationLaunchProfile(a,b){return this.mutate(c=>{let d=c.conversations[aG(c,a)],e=d?.generations.at(-1);if(!d||!e)throw Error("viewer conversation is unknown");return aj(c,d,e,b),ab(d)})}claimConversationReconfigure(a,b){if(!b.operationId||!Number.isSafeInteger(b.revision)||b.revision<0)throw Error("conversation reconfigure ownership is invalid");return this.mutate(c=>{let d=c.conversations[aG(c,a)],e=d?.generations.at(-1);if(!d||!e)throw Error("viewer conversation is unknown");let f=d.reconfigure??null;if(f&&(f.revision>b.revision||f.revision===b.revision&&f.operationId!==b.operationId))return{kind:"stale",state:ab(f),conversation:ab(d)};if(f?.operationId===b.operationId&&f.revision===b.revision){if(JSON.stringify(f.profile)!==JSON.stringify(b.profile)||f.accountId!==(b.accountId??null))throw Error("conversation reconfigure replay conflicts with durable ownership");return{kind:"replayed",state:ab(f),conversation:ab(d)}}let g=void 0!==b.accountId&&b.accountId===e.accountId&&d.migration?.targetId!==b.accountId,h=void 0!==b.accountId&&d.migration?.targetId===b.accountId;f?.status==="applying"&&null!==f.accountId&&(h&&!g?function(a,b,c,d){let e=b.migration;if(!e||["committed","rolled-back","failed-recoverable"].includes(e.phase))return;let f=a.migrationIntents[e.intentId];f?.scope==="conversation"&&f.requestIds.includes(V(c))&&(f.requestIds=[...f.requestIds.filter(a=>!a.startsWith("reconfigure:")),V(d)],f.updatedAt=ac(),b.updatedAt=f.updatedAt)}(c,d,f,b):W(c,d,f));let i=f?.status==="applying"?f.previousProfile:b.previousProfile??{model:e.launchProfile.model,effort:e.launchProfile.effort,fast:e.launchProfile.fast},j={operationId:b.operationId,revision:b.revision,status:"applying",profile:ab(b.profile),previousProfile:ab(i),accountId:b.accountId??null,error:null};return aj(c,d,e,j.profile),d.reconfigure=j,{kind:"claimed",state:ab(j),conversation:ab(d)}})}settleConversationReconfigure(a,b,c,d,e=null){return this.mutate(f=>{let g=f.conversations[aG(f,a)],h=g?.generations.at(-1);if(!g||!h)throw Error("viewer conversation is unknown");let i=g.reconfigure??null;return i&&i.operationId===b&&i.revision===c?i.status===d?{kind:"replayed",state:ab(i),conversation:ab(g)}:"applying"!==i.status?{kind:"stale",state:ab(i),conversation:ab(g)}:("failed"===d&&(W(f,g,i),aj(f,g,h,i.previousProfile)),i.status=d,i.error="failed"===d?e:null,g.updatedAt=ac(),{kind:"settled",state:ab(i),conversation:ab(g)}):{kind:"stale",state:i?ab(i):null,conversation:ab(g)}})}canonicalPath(a){let b=this.conversationForPath(a);return b?.generations.at(-1)?.path??a}setEngineRouting(a,b){return(0,n.oV)(()=>this.mutate(c=>{let d=c.engineRouting[a];return d.activeAccountId=b,d.revision+=1,d.revision}))}engineRouting(a){return ab(this.readOnlySnapshot().engineRouting[a])}migrationScope(a,b){return function(a,b,c){let d={total:0,idle:0,busy:0,deferred:0,alreadyTarget:0},e=J(a);for(let f of Object.values(a.conversations)){if(f.engine!==b||f.pinnedAccountId)continue;let g=f.generations.at(-1);if(g&&null!==g.accountId){if(g.accountId===c){d.alreadyTarget+=1;continue}d.total+=1,d[H(a,f,e)]+=1}}return d}(this.readOnlySnapshot(),a,b)}retireAccount(a,b,c,d={}){(0,n.oV)(()=>this.mutate(e=>{if((0,s.Vm)(e,a,b,d).length>0)throw Error("account has current conversations");let f=ac(),g=e.engineRouting[a];g.activeAccountId===b&&(g.activeAccountId=c,g.revision+=1);let h=new Set;for(let c of Object.values(e.migrationIntents))c.engine===a&&c.targetId===b&&(h.add(c.id),"stopped"!==c.state&&(c.state="stopped",c.revision+=1,c.updatedAt=f,c.stoppedAt=f));if(0!==h.size)for(let a of Object.values(e.conversations))a.migration&&h.has(a.migration.intentId)&&(aB(a),R(e,a,f),S(e,a,p.JJ),a.migration=null,a.updatedAt=f,e.conversationRevision[a.engine]+=1)}))}commitMigrationIntent(a){return(0,n.oV)(()=>this.mutate(b=>{let c=Object.values(b.migrationIntents).find(b=>b.engine===a.engine&&b.requestIds.includes(a.requestId));if(c)return ab(c);let d=b.engineRouting[a.engine];if(d.revision!==a.expectedRevision)throw new X(a.expectedRevision,d.revision);let f=Object.values(b.migrationIntents).find(b=>b.engine===a.engine&&"draining"===b.state&&G(b));if(f?.origin==="manual"&&"auto"===a.origin)return ab(f);let g=ac();f?(f.requestIds.push(a.requestId),f.targetId=a.targetId,f.origin=a.origin,f.revision+=1,f.evidence=a.evidence??null,f.updatedAt=g):(f={id:e().randomUUID(),engine:a.engine,targetId:a.targetId,origin:a.origin,revision:1,state:"draining",createdAt:g,updatedAt:g,requestIds:[a.requestId],evidence:a.evidence??null,stoppedAt:null},b.migrationIntents[f.id]=f),d.activeAccountId=a.targetId,d.revision+=1;let h=0;for(let c of Object.values(b.conversations)){if(c.engine!==a.engine||c.pinnedAccountId||("manual"===a.origin&&c.migrationOptOut?.targetId===a.targetId&&(c.migrationOptOut=null),"auto"===a.origin&&c.migrationOptOut?.targetId===a.targetId))continue;let d=c.generations.at(-1);if(!d||null===d.accountId||d.accountId===a.targetId){d&&c.migration&&"committed"!==c.migration.phase&&(aB(c),R(b,c,g),S(b,c,p.JJ),c.migration=null,c.updatedAt=g);continue}let e=H(b,c);((a.scope??"all")!=="active"||"deferred"!==e)&&(h+=1,R(b,c,g),c.migration=Q(c,d,f,"busy"===e?"waiting-turn":"requested",g),c.updatedAt=g)}return 0===h&&(f.state="complete"),ab(f)}))}requestConversationMigrationToActiveAccount(a){return this.mutate(b=>{let c=aG(b,a),d=b.conversations[c];if(!d)throw Error("viewer conversation is unknown");if(d.pinnedAccountId)return ab(d);let f=b.engineRouting[d.engine].activeAccountId,g=d.generations.at(-1);if(!f||!g||null===g.accountId||g.accountId===f||d.migrationOptOut?.targetId===f||d.migration?.targetId===f&&!["committed","rolled-back"].includes(d.migration.phase))return ab(d);let h=ac(),i=Object.values(b.migrationIntents).filter(a=>a.engine===d.engine&&a.targetId===f&&"stopped"!==a.state&&G(a)).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))[0];i?("draining"!==i.state&&(i.revision+=1),i.state="draining",i.updatedAt=h):(i={id:e().randomUUID(),engine:d.engine,targetId:f,origin:"manual",revision:1,state:"draining",createdAt:h,updatedAt:h,requestIds:[`lazy:${b.engineRouting[d.engine].revision}:${c}`],evidence:null,stoppedAt:null},b.migrationIntents[i.id]=i);let j="busy"===H(b,d)?"waiting-turn":"requested";return R(b,d,h),d.migration=Q(d,g,i,j,h),d.updatedAt=h,b.conversationRevision[d.engine]+=1,b.engineRouting[d.engine].revision+=1,ab(d)})}requestConversationReseat(a,b,c){return this.mutate(d=>{let f=aG(d,a),g=d.conversations[f];if(!g)throw Error("viewer conversation is unknown");if(c&&(g.reconfigure?.operationId!==c.operationId||g.reconfigure.revision!==c.revision||"applying"!==g.reconfigure.status))throw Error("conversation reconfigure is superseded");let h=g.generations.at(-1);if(!h||null===h.accountId||h.accountId===b)return ab(g);if(g.migration&&!["committed","rolled-back","failed-recoverable"].includes(g.migration.phase)){if(!c)return ab(g);if(g.migration.targetId===b){let a=d.migrationIntents[g.migration.intentId];if(a?.scope==="conversation"){let b=V(c);a.requestIds=[...a.requestIds.filter(a=>!a.startsWith("reconfigure:")),b],a.updatedAt=ac(),g.updatedAt=a.updatedAt}return ab(g)}let a=ac(),e=d.migrationIntents[g.migration.intentId];e?.scope==="conversation"&&"stopped"!==e.state&&(e.state="stopped",e.stoppedAt=a,e.updatedAt=a),aB(g),R(d,g,a),g.migration={...g.migration,pendingContinuityPaths:[]}}let i=ac();g.migrationOptOut?.targetId===b&&(g.migrationOptOut=null);let j=c?V(c):`reseat:${f}:${h.id}`,k=Object.values(d.migrationIntents).filter(a=>"conversation"===a.scope&&a.engine===g.engine&&a.targetId===b&&"stopped"!==a.state&&(c?a.requestIds.includes(j):a.requestIds.some(a=>a.startsWith(`reseat:${f}:`)))).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))[0];k?(k.requestIds.includes(j)||k.requestIds.push(j),"draining"!==k.state&&(k.revision+=1),k.state="draining",k.updatedAt=i):(k={id:e().randomUUID(),engine:g.engine,targetId:b,origin:"manual",scope:"conversation",revision:1,state:"draining",createdAt:i,updatedAt:i,requestIds:[j],evidence:null,stoppedAt:null},d.migrationIntents[k.id]=k);let l="busy"===H(d,g)?"waiting-turn":"requested";return R(d,g,i),g.migration=Q(g,h,k,l,i),g.updatedAt=i,d.conversationRevision[g.engine]+=1,d.engineRouting[g.engine].revision+=1,ab(g)})}upsertMigrationIntent(a,b,c,d,f=null){return this.mutate(g=>{let h=Object.values(g.migrationIntents).find(b=>b.engine===a&&"draining"===b.state&&G(b));if(h)return"manual"===h.origin&&"auto"===c||(h.requestIds.includes(d)||h.requestIds.push(d),(h.targetId!==b||h.origin!==c)&&(h.targetId=b,h.origin=c,h.revision+=1,h.evidence=f),h.updatedAt=ac()),ab(h);let i=ac(),j={id:e().randomUUID(),engine:a,targetId:b,origin:c,revision:1,state:"draining",createdAt:i,updatedAt:i,requestIds:[d],evidence:f,stoppedAt:null};return g.migrationIntents[j.id]=j,ab(j)})}setConversationMigration(a,b){return this.mutate(c=>{let d=aG(c,a),e=c.conversations[d];if(!e)throw Error("viewer conversation is unknown");let f=e.generations.at(-1);return e.migration=b?{...b,errorCode:b.errorCode??null,operationId:b.operationId??`${b.intentId}:${d}:${b.revision}`,sourceGenerationId:b.sourceGenerationId??f?.id??"",successorLaunchProfile:b.successorLaunchProfile??null,providerReceipt:b.providerReceipt??null,pendingContinuityPaths:b.pendingContinuityPaths??[],boardProject:b.boardProject??null,boardOperationId:b.boardOperationId??null,boardPlacementProject:b.boardPlacementProject??b.boardProject??null}:null,e.updatedAt=ac(),ab(e)})}transitionConversationMigration(a,b,c,d){return this.mutate(e=>{let f=e.conversations[aG(e,a)],g=f?.migration;if(!f||!g)throw Error("conversation has no migration");if(g.revision!==b||!c.includes(g.phase))throw Error("migration transition is stale");return f.migration={...g,...d,updatedAt:ac()},f.updatedAt=ac(),ab(f)})}persistMigrationProviderReceipt(a,b,c,d){return this.mutate(e=>{let f=e.conversations[aG(e,a)],g=f?.migration;if(!f||!g)throw Error("conversation has no migration");if(g.revision!==b||g.operationId!==c)throw Error("migration provider receipt is stale");if("successor-starting"===g.phase){for(let a of[...new Set([...d.continuityPaths,d.path])])ay(f,a);return f.migration={...g,phase:"verifying",providerReceipt:d,updatedAt:ac()},f.updatedAt=ac(),ab(f)}let h=null!==g.providerReceipt&&(0,o.WB)(g.providerReceipt,d);if(("verifying"===g.phase||"committed"===g.phase)&&h)return ab(f);throw Error("migration provider receipt conflicts with durable state")})}recordConversationContinuityPath(a,b){return this.mutate(c=>{let d=aG(c,a),e=c.conversations[d];if(!e)throw Error("viewer conversation is unknown");return aA(c,e,b),ay(e,b),e.updatedAt=ac(),ab(e)})}recordMigrationContinuityPath(a,b,c){return this.mutate(d=>{let e=aG(d,a),f=d.conversations[e];if(!f)throw Error("viewer conversation is unknown");aA(d,f,b);let g=f.migration;if(g?.phase==="successor-starting"&&g.operationId===c.operationId&&g.revision===c.revision)ay(f,b);else!f.generations.some(a=>a.path===b)&&(f.continuityPaths.includes(b)||f.continuityPaths.push(b),f.abandonedContinuityPaths.includes(b)||f.abandonedContinuityPaths.push(b));return f.updatedAt=ac(),ab(f)})}markMigrationBoardProjects(a){0!==a.length&&this.mutate(b=>{let c=ac();for(let d of a){let a=b.conversations[aG(b,d.id)],e=a?.migration;a&&e&&"committed"===e.phase&&e.operationId===d.operationId&&(e.boardProject=d.project,e.boardOperationId=d.operationId,e.boardPlacementProject=d.project,e.updatedAt=c,a.updatedAt=c)}})}markMigrationBoardPlacementProjects(a){0!==a.length&&this.mutate(b=>{let c=ac();for(let d of a){let a=b.conversations[aG(b,d.id)],e=a?.migration;a&&e&&"committed"===e.phase&&e.operationId===d.operationId&&(e.boardPlacementProject=d.project,e.updatedAt=c,a.updatedAt=c)}})}retryConversationMigration(a,b){return this.mutate(c=>{let d=c.conversations[aG(c,a)],f=d?.migration;if(!d||!f)throw Error("conversation has no migration");if(void 0!==b&&f.revision!==b)throw Error("migration revision is stale");let g=c.migrationIntents[f.intentId];if(!g||"stopped"===g.state)throw Error("migration intent is inactive");"complete"===g.state&&"failed-recoverable"===f.phase&&(g.state="draining",g.updatedAt=ac());let h=d.generations.at(-1);if(!h)throw Error("conversation has no source generation");return d.migration={...f,phase:I(c,d)?"waiting-turn":"requested",targetId:g.targetId,revision:g.revision,operationId:"codex-fork-outcome-unknown"===f.errorCode||f.revision===g.revision?f.operationId:e().randomUUID(),sourceGenerationId:h.id,successorLaunchProfile:f.revision===g.revision?f.successorLaunchProfile??null:null,providerReceipt:null,pendingContinuityPaths:"committed"===f.phase?[]:f.pendingContinuityPaths,boardProject:f.boardProject,boardOperationId:f.boardOperationId,boardPlacementProject:f.boardPlacementProject,error:null,errorCode:null,updatedAt:ac()},d.updatedAt=ac(),ab(d)})}commitSuccessor(a,b,c,d,e){return this.mutate(f=>{let g=f.conversations[aG(f,a)],h=g?.migration,i=e.operationId===d&&e.nativeId===b.id&&e.path===b.path&&(void 0===b.historyHash||e.historyHash===b.historyHash)&&(void 0===b.host||(0,j.isDeepStrictEqual)(e.host,b.host)),k=h?.providerReceipt!==null&&h?.providerReceipt!==void 0&&(0,o.WB)(h.providerReceipt,e);if(!g||!h||h.revision!==c||h.operationId!==d||h.targetId!==b.accountId||!k||!i)throw Error("migration succession ownership is stale");if("committed"===h.phase){let a=g.generations.at(-1);if(a?.id===b.id&&a.path===b.path)return ab(g);throw Error("migration succession is already committed")}if("verifying"!==h.phase)throw Error("migration succession is not ready to commit");let l=g.generations.at(-1);if(!l)throw Error("viewer conversation has no native generation");let m=ac();l.archivedAt=m;let n={...b,launchProfile:(0,o.Ui)(b.launchProfile??l.launchProfile),historyHash:b.historyHash??null,host:b.host??null,createdAt:m,archivedAt:null};g.generations.push(n),g.continuityPaths=g.continuityPaths.filter(a=>a!==n.path);let q=new Set(h.pendingContinuityPaths);return g.abandonedContinuityPaths=g.abandonedContinuityPaths.filter(a=>!q.has(a)),g.migration={...h,phase:"committed",updatedAt:ac()},g.updatedAt=ac(),S(f,g,p.uK),f.conversationRevision[g.engine]+=1,f.engineRouting[g.engine].revision+=1,ab(g)})}setMigrationIntentState(a,b,c,d=p.JJ){return this.mutate(e=>{let f=e.migrationIntents[a];if(!f)throw Error("migration intent is unknown");if(void 0!==c&&f.revision!==c)throw Error("migration intent revision is stale");let g=new Set(Object.values(e.conversations).filter(a=>a.engine===f.engine).map(a=>a.generations.at(-1)?.path).filter(a=>!!a)),h=N(e,f.engine,g);if(f.state=b,f.stoppedAt="stopped"===b?ac():f.stoppedAt,f.updatedAt=ac(),"stopped"===b)for(let b of Object.values(e.conversations)){if(b.engine!==f.engine)continue;let c=b.generations.at(-1);if(e.engineRouting[b.engine].activeAccountId===f.targetId&&c?.accountId!==f.targetId&&(b.migrationOptOut={targetId:f.targetId,updatedAt:f.updatedAt},b.updatedAt=f.updatedAt),b.migration?.intentId===a&&"committed"!==b.migration.phase){if(R(e,b,f.updatedAt),"rolled-back"===b.migration.phase){for(let c of Object.values(e.heldDeliveries))aG(e,c.conversationId)===b.id&&U(e,c.id,a,d);continue}b.migration={...b.migration,phase:"rolled-back",error:null,errorCode:null,updatedAt:f.updatedAt},S(e,b,d.slice(0,240))}}return P(e,f.engine,h,g),ab(f)})}autoBalancePolicy(a){return ab(this.readOnlySnapshot().autoBalance[a])}quotaObservations(a){return ab(Object.values(this.readOnlySnapshot().quotaObservations[a]))}recordQuotaEvaluation(a){return this.mutate(b=>{for(let c of a.observations)c.engine===a.engine&&(b.quotaObservations[a.engine][c.accountId]=c);let c=b.autoBalance[a.engine];c.lastCheckAt=a.now;let d=!1;if(a.signature)if(c.sustain&&c.sustain.signature===a.signature&&c.sustain.bootId===a.bootId){let b=Date.parse(c.sustain.firstAt);c.sustain.lastAt=a.now,(d=Number.isFinite(b)&&Date.parse(a.now)-b>=a.minimumGapMs)&&(c.sustain=null,c.lastTrigger=a.evidence??null)}else c.sustain={signature:a.signature,firstAt:a.now,lastAt:a.now,bootId:a.bootId};else c.sustain=null;return c.revision+=1,{sustained:d,routeRevision:b.engineRouting[a.engine].revision,policy:ab(c)}})}setAutoBalancePolicy(a,b,c){return this.mutate(d=>{let e=d.autoBalance[a];if(void 0!==c&&e.revision!==c)throw Error("automatic balance policy revision is stale");return e.enabled=b,b||(e.sustain=null),e.revision+=1,ab(e)})}recordAutoBalanceOutcome(a,b,c,d){return this.mutate(e=>{let f=e.autoBalance[a];return f.cooldownUntil=d,f.lastOutcome={at:ac(),kind:"complete"===b?"switched":"failed-partial"===b?"failed":"skipped",fromId:c?.sourceId??null,fromPercent:c?.sourcePercent??null,toId:c?.targetId??null,toPercent:c?.targetPercent??null,window:c?.sourceWindow??null,detail:"failed-partial"===b?"one or more sessions need operator recovery":null},f.lastTrigger=c,c&&(f.departed[c.sourceId]=ac()),f.revision+=1,ab(f)})}holdDelivery(a,b,c=null,d="text",f=[],g=null,h={}){if("text"===d&&!b)throw Error("held delivery must contain at most 32000 characters");if("runtime-images"===d&&0===f.length)throw Error("runtime-images delivery requires image references");return(0,C.h1)(b),this.mutate(i=>{let j=au(i,a,b,c,g,h),{canonicalId:k,existing:l,requestDigest:m}=j;if(j.supersededFailed){let a=i.heldDeliveries[j.supersededFailed.id];a&&(a.clientMessageId=null)}let n=i.conversations[k],o=new Set([n?.generations.at(-1)?.path].filter(a=>!!a)),p=n?N(i,n.engine,o):"",q=n?.migration&&["waiting-turn","requested","preparing","successor-starting","verifying"].includes(n.migration.phase),r=n?.generations.at(-1),s=a=>("delivered"===a.state||"delivery-uncertain"===a.state?aq(i,a):(a.deliveredAt=null,a.error=null,q?(a.state="held",a.generationId=null,a.assignedAt=null):r?(a.state="assigned",a.generationId=r.id,a.assignedAt=ac()):(a.state="failed",a.generationId=null,a.assignedAt=null,a.error="delivery target is unavailable and remains recoverable"),aq(i,a),n&&P(i,n.engine,p,o)),ab(a));if(l)return l.error===am?ab(l):s(l);let t=av(j,b,c,d,f,g);if(t)return t;let u=e().randomUUID(),v={id:u,conversationId:k,runtimeConversationId:k,text:b,createdAt:ac(),clientMessageId:c,payloadKind:d,runtimeImages:f.map(a=>({...a})),contentDigest:g,artifactPaths:[],command:ak(h,u),requestDigest:m,state:"held",generationId:null,attempts:0,assignedAt:null,deliveredAt:null,error:null};if(aw(i,k,this.now()),Object.values(i.heldDeliveries).filter(a=>a.conversationId===k&&["held","assigned","delivery-uncertain"].includes(a.state)).length>=100)throw Error("held delivery limit reached for conversation");return i.heldDeliveries[v.id]=v,h.operationId&&(i.deliveryOperationOwners[v.command.operationId]??={conversationId:k,runtimeConversationId:v.runtimeConversationId,clientMessageId:c,deliveryId:v.id,command:v.command,requestDigest:v.requestDigest,contentDigest:v.contentDigest,createdAt:v.createdAt,terminalState:null}),s(v)})}preflightDeliveryReservation(a,b,c,d,e,f,g={}){return av(au(this.readOnlySnapshot(),a,b,c,f,g),b,c,d,e,f)}pendingDeliveries(a){let b=this.readOnlySnapshot(),c=aG(b,a);return ab(Object.values(b.heldDeliveries).filter(a=>a.conversationId===c&&"delivered"!==a.state).sort((a,b)=>a.createdAt.localeCompare(b.createdAt)||a.id.localeCompare(b.id)))}terminalizeHeldDelivery(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d)throw Error("held delivery is unknown");return"delivered"!==d.state&&T(c,d,b),ab(d)})}terminalizeRolledBackMigrationDelivery(a,b,c){return this.mutate(d=>U(d,a,b,c))}compactDeliveryReservations(){return this.mutate(a=>aw(a,void 0,this.now()))}queueSuccessorCleanup(a,b){this.mutate(c=>{let d=c.pendingSuccessorCleanups[b.operationId];c.pendingSuccessorCleanups[b.operationId]=d??{conversationId:aG(c,a),receipt:b,createdAt:ac(),lastError:null}})}recordSuccessorCleanupFailure(a,b){this.mutate(c=>{let d=c.pendingSuccessorCleanups[a];d&&(d.lastError=b.slice(0,240))})}completeSuccessorCleanup(a){this.mutate(b=>{delete b.pendingSuccessorCleanups[a]})}beginDeliveryAttempt(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d||"assigned"!==d.state||d.generationId!==b)return null;let e=c.conversations[aG(c,d.conversationId)],f=new Set([e?.generations.at(-1)?.path].filter(a=>!!a)),g=e?N(c,e.engine,f):"";return e?.migration&&["waiting-turn","requested","preparing","successor-starting","verifying"].includes(e.migration.phase)||e?.generations.at(-1)?.id!==b?null:(d.state="delivery-uncertain",d.attempts+=1,d.error="delivery started; recovery requires an explicit outcome",aq(c,d),e&&P(c,e.engine,g,f),ab(d))})}recordDeliveryArtifacts(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d)throw Error("held delivery is unknown");if("delivery-uncertain"!==d.state)throw Error("delivery attempt has not started");return d.artifactPaths=[...new Set(b)],ab(d)})}restoreSnapshot(a,b){(0,n.oV)(()=>this.mutate(c=>{Object.assign(c,function a(b,c,d){if(JSON.stringify(c)===JSON.stringify(d))return b;if(JSON.stringify(b)===JSON.stringify(c))return void 0===d?void 0:ab(d);if(b&&c&&d&&"object"==typeof b&&"object"==typeof c&&"object"==typeof d&&!Array.isArray(b)&&!Array.isArray(c)&&!Array.isArray(d)){let e={...b};for(let f of new Set([...Object.keys(c),...Object.keys(d)])){let g=a(b[f],c[f],d[f]);void 0===g?delete e[f]:e[f]=g}return e}return b}(c,a,b))}))}recordDeliveryOutcome(a,b,c=null){return this.mutate(d=>{let e=d.heldDeliveries[a];if(!e)throw Error("held delivery is unknown");if("delivered"===e.state||ap(e))return ab(e);let f=d.conversations[aG(d,e.conversationId)],g=new Set([f?.generations.at(-1)?.path].filter(a=>!!a)),h=f?N(d,f.engine,g):"";e.state=b,e.deliveredAt="delivered"===b?ac():null,e.error=c?.slice(0,240)??null,"delivered"===b&&(e.text=""),"failed"===b&&as(d,e),f&&P(d,f.engine,h,g);let i=ab(e);return("delivered"===b||"failed"===b)&&aw(d,e.conversationId,this.now()),i})}recordDeliveryOutcomeForOperation(a,b,c,d=null){return this.recordDeliveryOutcomesForOperations([{conversationId:a,operationId:b,state:c,error:d}])[0]??null}recordDeliveryOutcomesForOperations(a){return this.mutate(b=>{let c=(a,c)=>`${aG(b,a)}\u0000${c}`,d=new Map;for(let a of Object.values(b.heldDeliveries)){let b=c(a.conversationId,a.command.operationId);d.has(b)||d.set(b,a)}let e=new Set,f=a.map(a=>{let f=aG(b,a.conversationId),g=d.get(c(f,a.operationId));if(!g||"delivered"===g.state)return g?ab(g):null;let h="failed"===g.state&&"delivered"===a.state&&!ap(g);if("delivery-uncertain"!==g.state&&!h)return null;let i=b.conversations[f],j=new Set([i?.generations.at(-1)?.path].filter(a=>!!a)),k=i?N(b,i.engine,j):"";return g.state=a.state,g.deliveredAt="delivered"===a.state?ac():null,g.error=a.error?.slice(0,240)??null,"delivered"===a.state&&(g.text=""),"failed"===a.state&&as(b,g),i&&P(b,i.engine,k,j),e.add(g.conversationId),ab(g)});for(let a of e)aw(b,a,this.now());return f})}discardDelivery(a){this.mutate(b=>{let c=b.heldDeliveries[a],d=c?b.conversations[aG(b,c.conversationId)]:void 0,e=new Set([d?.generations.at(-1)?.path].filter(a=>!!a)),f=d?N(b,d.engine,e):"";if(c){let a=b.deliveryOperationOwners[c.command.operationId];0===c.attempts&&a?.deliveryId===c.id&&delete b.deliveryOperationOwners[c.command.operationId]}delete b.heldDeliveries[a],d&&P(b,d.engine,f,e)})}requeueHeldDelivery(a){return this.placeDeliveryForRetry(a,!1)}retryUncertainDelivery(a){return this.placeDeliveryForRetry(a,!0)}requeueUnactuatedDelivery(a){return this.placeDeliveryForRetry(a,!0)}placeDeliveryForRetry(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d)throw Error("held delivery is unknown");if("delivered"===d.state)return ab(d);if("delivery-uncertain"===d.state&&!b)throw Error("uncertain delivery requires an explicit client retry");if(b&&"delivery-uncertain"!==d.state)throw Error("delivery outcome is already resolved");let e=c.conversations[aG(c,d.conversationId)],f=new Set([e?.generations.at(-1)?.path].filter(a=>!!a)),g=e?N(c,e.engine,f):"";if(e?.migration&&["waiting-turn","requested","preparing","successor-starting","verifying"].includes(e.migration.phase))return d.state="held",d.generationId=null,d.assignedAt=null,d.deliveredAt=null,d.error=null,aq(c,d),e&&P(c,e.engine,g,f),ab(d);let h=e?.generations.at(-1);return h?(d.state="assigned",d.generationId=h.id,d.assignedAt=ac(),d.deliveredAt=null,d.error=null):(d.state="failed",d.deliveredAt=null,d.error="delivery target is unavailable and remains recoverable"),aq(c,d),e&&P(c,e.engine,g,f),ab(d)})}rollbackConversationMigration(a,b){return this.mutate(c=>{let d=aG(c,a),e=c.conversations[d];if(!e?.migration)throw Error("conversation has no migration");if(void 0!==b&&e.migration.revision!==b)throw Error("migration revision is stale");let f=new Set([e.generations.at(-1)?.path].filter(a=>!!a)),g=N(c,e.engine,f),h=ac();return R(c,e,h),c.engineRouting[e.engine].activeAccountId===e.migration.targetId&&(e.migrationOptOut={targetId:e.migration.targetId,updatedAt:h}),S(c,e,p.Mi),e.migration={...e.migration,phase:"rolled-back",error:null,errorCode:null,updatedAt:h},e.updatedAt=h,P(c,e.engine,g,f),ab(e)})}clearRolledBackConversationMigration(a,b){return this.mutate(c=>{let d=c.conversations[aG(c,a)],e=d?.migration;return!(!d||!e||"rolled-back"!==e.phase||e.intentId!==b||Object.values(c.heldDeliveries).some(a=>aG(c,a.conversationId)===d.id&&["held","assigned","delivery-uncertain"].includes(a.state)))&&(d.migration=null,d.updatedAt=ac(),c.conversationRevision[d.engine]+=1,!0)})}}let a5=process;function a6(){return a5.__llvAgentRegistry??=new a4(void 0,void 0,void 0,{resolveBackendIdentity:!0}),a5.__llvAgentRegistry}},47473:(a,b,c)=>{c.d(b,{CC:()=>l,Hy:()=>j,Zx:()=>g,gy:()=>i,h1:()=>k,in:()=>f,kW:()=>n,rM:()=>o,t6:()=>h});var d=c(77598),e=c.n(d);let f=["image/png","image/jpeg","image/gif","image/webp"],g="structured-image-v1",h="The selected Codex model does not advertise image input through app-server.",i="Structured image protocol is unavailable for this host.";class j extends Error{constructor(){super("structured message text exceeds the 32000-byte envelope bound"),this.name="StructuredEnvelopeTooLargeError"}}function k(a){if(Buffer.byteLength(a,"utf8")>32e3)throw new j}function l(a){let b="image/jpg"===a.toLowerCase()?"image/jpeg":a.toLowerCase();return f.includes(b)?b:null}function m(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b="string"==typeof a.mime?l(a.mime):null;return b&&"string"==typeof a.sha256&&/^[a-f0-9]{64}$/.test(a.sha256)&&Number.isSafeInteger(a.bytes)&&!(a.bytes<=0)?{sha256:a.sha256,mime:b,bytes:a.bytes}:null}function n(a,b){if(!Array.isArray(a)||a.length>b)return null;let c=a.map(m);return c.every(a=>null!==a)?c:null}function o(a,b){let c,d={text:a,images:b.map(a=>({...a}))};if(!d.text.trim()&&0===d.images.length)throw Error("message content is required");return{content:d,contentDigest:(c=JSON.stringify({text:d.text,images:d.images.map(({sha256:a,mime:b,bytes:c})=>({sha256:a,mime:b,bytes:c}))}),e().createHash("sha256").update(c).digest("hex"))}}},57718:(a,b,c)=>{function d(a,b=160){let c=a.replace(/\[([^\]]+)\]\(([^)]+)\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/[*_~#>]+/g,"").replace(/\s+/g," ").trim().replace(/(?:\/[^\s)]+){3,}/g,a=>{if(a.length<=40)return a;let b=a.split("/").filter(Boolean);return b.length>=2?".../"+b.slice(-2).join("/"):a}).replace(/\s+/g," ").trim();return c.length>b?c.slice(0,b-1).trimEnd()+"…":c}c.d(b,{QE:()=>f,St:()=>g,V0:()=>i,bF:()=>j,cr:()=>d,tU:()=>h});let e=new Set(["codex session","claude session","codex","claude"]),f="title is required for every new spawn";function g(a,b=160){var c;if("string"!=typeof a)return null;let f=a.trim(),h=d(f,b);return!f||!/[\p{L}\p{N}]/u.test(h)||"string"==typeof(c=f)&&e.has(c.toLocaleLowerCase().replace(/[\p{P}\p{S}\s]+/gu," ").trim())?null:f.length>b?f.slice(0,b-1).trimEnd()+"…":f}function h(a,b=160){let c=g(a,b);return c?d(c,b):null}function i(a,b=60){return h(a?.split(/\r?\n/,1)[0]??"",b)}function j(a,b,c="New task"){let e="string"==typeof a&&d(a,40)||"agent",f=i(b,60)??h(c,60)??"New task";return d(`${e} \xb7 ${f}`,120)}},58577:(a,b,c)=>{c.d(b,{Lf:()=>k,MO:()=>i,QK:()=>h,Qq:()=>m,Ui:()=>j,WB:()=>n});var d=c(23953),e=c(72294),f=c(57718);let g=/^-?[A-Za-z0-9][A-Za-z0-9._-]{0,126}$/;function h(a){if("string"!=typeof a)return null;let b=a.trim();return g.test(b)?b:null}function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=h(a.project);return b&&("operator"===a.source||"relocation"===a.source)?{project:b,source:a.source,setAt:"string"==typeof a.setAt?a.setAt:"1970-01-01T00:00:00.000Z",operationId:"string"==typeof a.operationId?a.operationId:""}:null}function j(a={},b){return{cwd:"",model:null,effort:null,fast:null,permissionMode:null,readOnly:null,allowSubagents:!1,title:null,project:null,parentConversationId:null,role:"worker",goal:null,plan:null,...a,mcpServers:(0,d.c1)(a.mcpServers,b),plugins:(0,e.sJ)(a.plugins)}}function k(a){return j({...a,title:(0,f.St)(a.title,120)??(0,f.bF)("migration successor",a.goal?.objective??a.cwd,"Conversation migration")})}function l(a,b){return a.pid===b.pid&&a.startIdentity===b.startIdentity}function m(a,b){if(a.kind!==b.kind||a.identity!==b.identity||a.epoch!==b.epoch)return!1;let c=a.tmuxHost,d=b.tmuxHost;return c&&d?c.kind===d.kind&&c.endpoint===d.endpoint&&l(c.server,d.server)&&c.paneId===d.paneId&&l(c.panePid,d.panePid)&&c.windowName===d.windowName&&l(c.agent,d.agent)&&c.argv.length===d.argv.length&&c.argv.every((a,b)=>a===d.argv[b]):c===d}function n(a,b){return a.operationId===b.operationId&&a.nativeId===b.nativeId&&a.path===b.path&&a.historyHash===b.historyHash&&a.continuityPaths.length===b.continuityPaths.length&&a.continuityPaths.every((a,c)=>a===b.continuityPaths[c])&&m(a.host,b.host)}},60546:(a,b,c)=>{c.d(b,{Jc:()=>g,MT:()=>i,mo:()=>k,n4:()=>f,rF:()=>h});var d=c(7733);let e=Object.freeze(["reviewer","verifier"]);function f(a){return"string"==typeof a&&e.includes(a)}class g extends Error{constructor(a,b){super(b.guidance),this.receipt=a,this.rejection=b,this.name="SpawnAdmissionError"}}function h(a){return`${"verifier"===a?"Verifier":"Reviewer"} sessions run every check in-session — filesystem, shell, GitHub, and browser access stay available, but child agents do not. For more perspectives, report the need to your parent so an operator or orchestrator adds a visible reviewer stage (POST /api/pipelines or POST ${d.VIEWER_SPAWN_ENDPOINT}).`}function i(a,b){return`Agent nesting is capped at depth ${b} and this launch would create a depth-${a} child. Finish delegated work in-session or report the need to your parent. An operator can raise maxAgentNestingDepth in Viewer spawn settings (PATCH /api/spawn/policy).`}function j(a,b){let c=new Set,d=b;for(;!c.has(d);){c.add(d);let b=a.conversationAliases[d];if(!b)break;d=b}return d}function k(a,b){if("agent"!==b.kind&&"container"!==b.kind)return null;let c="agent"===b.kind?b.conversationId:b.creatorConversationId,d=c?j(a,c):null;return{kind:b.kind,conversationId:d,role:d?function(a,b){let c=j(a,b),d=a.conversations[c]?.agentRole;if("string"==typeof d&&d.trim())return d;let e=a.lineageEdges[c]?.role;if("string"==typeof e&&e.trim())return e;let f=[...a.memberships[c]??[]].sort((a,b)=>b.createdAt.localeCompare(a.createdAt))[0];return f?.role??null}(a,d):null,depth:d?function(a,b){let c=j(a,b),d=a.conversations[c]?.delegationDepth;if(Number.isInteger(d)&&d>=0)return d;if((a.memberships[c]??[]).length>0)return 1;let e=0,f=new Set([c]),g=c;for(;e<8;){let b=a.lineageEdges[g];if(!b||"viewer-spawn"!==b.source)break;let c=j(a,b.parentConversationId);if(f.has(c))break;f.add(c),e+=1;let d=a.conversations[c]?.delegationDepth;if(Number.isInteger(d)&&d>=0)return d+e;g=c}return e}(a,d):0}}},63685:(a,b,c)=>{c.d(b,{Cu:()=>E,gB:()=>p,oV:()=>D});var d=c(16698),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(27146),l=c(52e3);let m=globalThis.__llvAccountMutationRuntime??={transactionContext:new d.AsyncLocalStorage,localWaiters:[],localHeld:!1},n=m.transactionContext,o=m.localWaiters;class p extends Error{constructor(a="account mutation is busy; retry shortly"){super(a),this.name="AccountMutationBusyError"}}function q(){let a=o.shift();a?a():m.localHeld=!1}async function r(){return m.localHeld?await new Promise(a=>o.push(a)):m.localHeld=!0,q}let s=function(){try{return h().readlinkSync("/proc/self/ns/pid")}catch{return null}}();function t(a,b){try{return Date.now()-h().statSync(a).mtimeMs>b}catch{return!1}}function u(a,b=null){if(null!==b&&t(a,b))return!0;try{let b=JSON.parse(h().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){if(("string"==typeof b.ns?b.ns:null)!==s)return t(a,3e4);if(!l.B.pidAlive(b.pid))return!0;if("string"!=typeof b.startIdentity)return!1;let c=l.B.processIdentity(b.pid);return null!==c&&c!==b.startIdentity}return t(a,3e4)}catch{return t(a,3e4)}}function v(a,b){try{JSON.parse(h().readFileSync(a,"utf8")).token===b&&h().rmSync(a,{force:!0})}catch{}}function w(){try{let a=JSON.parse(h().readFileSync((0,k.BQ)("account-mutation-revision.json"),"utf8"));return 1===a.version&&Number.isSafeInteger(a.revision)&&a.revision>=0?a.revision:0}catch{return 0}}function x(){let a=(0,k.BQ)("account-selection.lock"),b=`${a}.queue`;h().mkdirSync(b,{recursive:!0,mode:448});let c={pid:process.pid,startIdentity:l.B.processIdentity(process.pid),ns:s,token:f().randomUUID()},d=j().join(b,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${f().randomUUID()}.json`);return h().writeFileSync(d,JSON.stringify(c),{encoding:"utf8",flag:"wx",mode:384}),{lock:a,queue:b,owner:c,ticket:d}}function y(a){let b=new Date;try{return h().utimesSync(a,b,b),!0}catch{return!1}}function z(a){let b,c=[];for(let b of h().readdirSync(a.queue).filter(a=>a.endsWith(".json")).sort()){let d=j().join(a.queue,b);if(d!==a.ticket&&u(d,6e5)){h().rmSync(d,{force:!0});continue}h().existsSync(d)&&c.push(d)}if(c[0]!==a.ticket)return null;try{b=h().openSync(a.lock,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;return u(a.lock)&&h().rmSync(a.lock,{force:!0}),null}try{h().writeFileSync(b,JSON.stringify(a.owner),"utf8"),h().fsyncSync(b)}catch(c){throw h().closeSync(b),h().rmSync(a.lock,{force:!0}),c}let d={active:!0,revision:w()},e=setInterval(()=>y(a.lock),1e4);return e.unref?.(),{context:d,release(){clearInterval(e),d.active=!1,h().closeSync(b),v(a.lock,a.owner.token),v(a.ticket,a.owner.token)}}}function A(a,b){return{context:a.context,release(){try{a.release()}finally{b()}}}}async function B(){let a=await r(),b=null;try{b=x();let d=Date.now();for(let e=0;e<2e3;e+=1){let e=z(b);if(e)return A(e,a);if(Date.now()-d>=1e4){d=Date.now();var c=b;if(!y(c.ticket))try{h().writeFileSync(c.ticket,JSON.stringify(c.owner),{encoding:"utf8",mode:384})}catch{}}await new Promise(a=>setTimeout(a,5))}throw Error("account mutation is busy; retry shortly")}catch(c){throw b&&v(b.ticket,b.owner.token),a(),c}}function C(a){!function(a){let b=(0,k.BQ)("account-mutation-revision.json");if(w()!==a)throw Error("account mutation revision fence changed while locked");let c=`${b}.${process.pid}.${f().randomUUID()}.tmp`;h().mkdirSync(j().dirname(b),{recursive:!0,mode:448});try{h().writeFileSync(c,JSON.stringify({version:1,revision:a+1})+"\n",{mode:384});let d=h().openSync(c,"r");try{h().fsyncSync(d)}finally{h().closeSync(d)}h().renameSync(c,b)}finally{h().rmSync(c,{force:!0})}}(a.revision),a.revision+=1}function D(a){let b=n.getStore();if(b?.active)return a();let c=function(){let a=function(){if(m.localHeld)throw new p("account mutation is busy in this process; retry shortly");return m.localHeld=!0,q}(),b=null;try{b=x();for(let c=0;c<2;c+=1){let c=z(b);if(c)return A(c,a)}throw new p}catch(c){throw b&&v(b.ticket,b.owner.token),a(),c}}();try{return C(c.context),n.run(c.context,a)}finally{c.release()}}async function E(a){let b=n.getStore();if(b?.active)return a();let c=await B();try{return C(c.context),await n.run(c.context,a)}finally{c.release()}}},65972:(a,b,c)=>{c.d(b,{AM:()=>k,LB:()=>o,Oh:()=>f,Vm:()=>t,dw:()=>n,eW:()=>l,vZ:()=>s});var d=c(52e3),e=c(88623);function f(a,b=Date.now()){if(!a.enabled)return{kind:"unavailable",reason:"account-disabled",stale:a.stale,retryAt:null};if("failed"===a.authentication)return{kind:"unavailable",reason:"auth-failed",stale:a.stale,retryAt:null};if("exhausted"===a.limits){let c=function(a,b){if(!a)return null;let c=Date.parse(a);return Number.isFinite(c)&&c>b?new Date(c).toISOString():null}(a.retryAt,b);return c?{kind:"retry-at",reason:"hard-limit",stale:a.stale,retryAt:c}:{kind:"unavailable",reason:"hard-limit",stale:a.stale,retryAt:null}}return{kind:"admissible",basis:a.stale||"unknown"===a.authentication?"last-known":"current",stale:a.stale,retryAt:null}}let g=new Set(["starting","live","idle","handoff"]),h=new Set(["starting","pane-bound","host-verified","prompt-delivered","path-pending"]),i=new Set(["committed","rolled-back"]),j=new Set(["held","assigned","delivery-uncertain"]);function k(a={}){return{now:a.now??(()=>Date.now()),pidAlive:a.pidAlive??(a=>d.B.pidAlive(a)),processIdentity:a.processIdentity??(a=>d.B.processIdentity(a))}}function l(a,b){return!!a&&!!Number.isInteger(a.pid)&&!(a.pid<=0)&&!!b.pidAlive(a.pid)&&(null===a.startIdentity||b.processIdentity(a.pid)===a.startIdentity)}function m(a,b){let c=a?Date.parse(a):NaN;return!!Number.isFinite(c)&&b.now()-c<3e5}function n(a,b){return!!g.has(a.status)&&(!!(l(a.host?.agent,b)||l(a.host?.panePid,b)||l(a.structuredHost?.process??null,b))||m(a.updatedAt,b))}function o(a,b,c){if(!h.has(b.state))return!1;if(l(b.admissionOwner,c)||l(b.verifiedHost?.agent,c)||l(b.pane?.panePid,c))return!0;let d=b.key?a.entries[(0,e.pp)(b.key)]:void 0;return!!(d&&n(d,c))||m(b.createdAt,c)}function p(a,b){let c=new Set,d=b;for(;!c.has(d);){c.add(d);let b=a.conversationAliases[d];if(!b)break;d=b}return d}function q(a,b,c,d){let e=b.generations.at(-1);if(e&&l(e.host?.tmuxHost?.agent,d))return!0;for(let a of c)if(function(a,b){return a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b)}(b,a))return!0;if(b.migration&&!i.has(b.migration.phase))return!0;let f=c=>p(a,c)===b.id;for(let b of Object.values(a.heldDeliveries))if(j.has(b.state)&&(f(b.conversationId)||f(b.runtimeConversationId))&&("delivery-uncertain"!==b.state||m(b.createdAt,d)))return!0;for(let b of Object.values(a.receipts))if(f(b.conversationId)&&o(a,b,d))return!0;return!1}function r(a,b,c){let d=new Set;for(let e of Object.values(a.entries))e.key.engine===b&&n(e,c)&&d.add(e.artifactPath);return d}function s(a,b={}){let c=k(b),d=new Map,e=b=>{let e=d.get(b);return e||(e=r(a,b,c),d.set(b,e)),e},f=[];for(let b of Object.values(a.heldDeliveries)){if("delivery-uncertain"!==b.state||m(b.createdAt,c))continue;let d=a.conversations[p(a,b.conversationId)];d&&(q(a,d,e(d.engine),c)||f.push(b.id))}return f}function t(a,b,c,d={}){let e=k(d),f=r(a,b,e),g=[];for(let d of Object.values(a.conversations))d.engine===b&&d.generations.at(-1)?.accountId===c&&q(a,d,f,e)&&g.push(d.id);return g}},74085:(a,b,c)=>{c.d(b,{DD:()=>l,Oy:()=>m});var d=c(88623),e=c(57718);let f="identity-wave-a-d-913";function g(a,b){if(!b.startsWith("conversation_"))return null;let c=b,d=new Set;for(;a.conversationAliases[c]&&!d.has(c);)d.add(c),c=a.conversationAliases[c];return d.has(c)?null:c}function h(a){if("string"!=typeof a)return null;let b=a.split(/\r?\n/).find(a=>a.trim());return(0,e.tU)(b,120)}function i(a){return"string"==typeof a&&null===(0,e.tU)(a)}function j(a){if("failed"===a.kind)throw a.error;return"found"===a.kind?a.value:null}function k(a,b,c){a.path===b&&(a.path=c),a.continuityPaths=[...new Set(a.continuityPaths.map(a=>a===b?c:a))]}function l(a,b,c){let e=b.conversationId?g(a,b.conversationId):null,f=e?a.conversations[e]:null;if(!e||!f)return{changed:!1,engine:null};let h=b.predecessorConversationId?g(a,b.predecessorConversationId):null,i=h&&h!==e?a.conversations[h]:null,j=!!h&&!!i&&function(a,b,c){let d=new Set,e=c;for(;e;){if(e===b||d.has(e))return!0;d.add(e);let c=a.lineageEdges[e]?.parentConversationId;e=c?g(a,c):null}return!1}(a,e,h),k=j?null:h,l=j?null:i,m=a.memberships[e]??=[],n=!1;if(m.some(a=>"orchestrator"===a.kind&&a.containerId===b.project&&a.slot===`seat:${b.seatEpoch}`)||(m.push({conversationId:e,kind:"orchestrator",containerId:b.project,role:"orchestrator",slot:`seat:${b.seatEpoch}`,stageId:null,stageOrder:null,round:null,parentConversationId:l?k:null,runtime:null,createdAt:c}),n=!0),"orchestrator"!==f.agentRole&&(f.agentRole="orchestrator",n=!0),0!==f.delegationDepth&&(f.delegationDepth=0,n=!0),l&&!a.lineageEdges[e]){let b=f.generations.at(-1),g=l.generations.at(-1),h={childConversationId:e,parentConversationId:k,childSessionKey:b?(0,d.sz)(f.engine,b.path):null,parentSessionKey:g?(0,d.sz)(l.engine,g.path):null,childArtifactPath:b?.path??null,parentArtifactPath:g?.path??null,kind:"spawn",role:"orchestrator",reviewsConversationId:null,source:"viewer-spawn",evidence:{launchId:null,clientAttemptId:null,parentSource:null},createdAt:c};a.lineageEdges[e]=h,n=!0}return n&&(f.updatedAt=c),{changed:n,engine:f.engine}}function m(a,b){let c=!0===b.dryRun,d=c?structuredClone(a):a;if(d.identityMigrations[f])return{dryRun:c,alreadyCompleted:!0,retitled:0,rekeyed:0,quarantinedRekeys:0,edgesStamped:0};let m=function(a){let b=new Map;for(let c of Object.values(a.receipts).sort((a,b)=>a.createdAt.localeCompare(b.createdAt)).sort((a,b)=>Number("launch"===b.purpose)-Number("launch"===a.purpose))){let d=g(a,c.conversationId),e=h(c.launchDisplay?.prompt);d&&e&&!b.has(d)&&b.set(d,e)}return b}(d),n=function(a,b){let c=new Map;for(let d of Object.values(a.conversations)){if(!d.generations.at(-1))continue;let f=function(a){for(let b=a.generations.length-1;b>=0;b-=1){let c=(0,e.St)(a.generations[b].launchProfile.title);if(c)return c}return null}(d),h=function(a,b){if(b.generations.some(a=>i(a.launchProfile.title)))return!0;let c=new Set(b.generations.map(a=>a.path));return!!Object.values(a.entries).some(a=>c.has(a.artifactPath)&&i(a.launchProfile?.title))||Object.values(a.receipts).some(c=>g(a,c.conversationId)===b.id&&i(c.launchProfile.title))}(a,d),k=d.generations.flatMap(a=>{let c=j(function(a,b){try{let c=a.sharedPathForLegacy(b);if(!c||c.sharedPath===b)return{kind:"absent"};return{kind:"found",value:c}}catch(a){return{kind:"failed",error:a}}}(b,a.path));return c?[{legacyPath:a.path,...c}]:[]});c.set(d.id,{conversationTitle:f,needsTitleCleanup:h,pathRekeys:k,transcriptTitle:null})}return c}(d,b),o=function(a,b){let c=new Map,d=new Map,e=new Map,f=(a,b,c)=>{let d=a.get(b)??new Set;d.add(c),a.set(b,d)};for(let b of Object.values(a.conversations)){for(let a of b.generations)f(c,a.path,b.id),f(d,a.path,b.id),f(e,`${b.engine}:${a.id}`,b.id);for(let a of b.continuityPaths)f(c,a,b.id)}for(let b of Object.values(a.receipts))b.artifactPath&&f(c,b.artifactPath,g(a,b.conversationId)??`receipt:${b.launchId}`);for(let b of Object.values(a.entries)){let a=e.get(`${b.key.engine}:${b.key.sessionId}`);if(a?.size)for(let d of a)f(c,b.artifactPath,d);else f(c,b.artifactPath,`entry:${b.key.engine}:${b.key.sessionId}`)}let h=new Map,i=[],j=0;for(let[a,e]of b){let b=[];for(let f of e.pathRekeys){if(!f.identityEquivalent){j+=1;continue}let e=c.get(f.sharedPath),g=c.get(f.legacyPath),k=d.get(f.sharedPath),l=h.get(f.sharedPath);if(!g||1!==g.size||!g.has(a)||e&&[...e].some(b=>b!==a)||k&&f.sharedPath!==f.legacyPath||l&&l!==f.legacyPath){j+=1;continue}h.set(f.sharedPath,f.legacyPath),b.push(f),i.push({legacyPath:f.legacyPath,sharedPath:f.sharedPath})}e.pathRekeys=b}return{rekeys:i,quarantined:j}}(d,n);for(let a of Object.values(d.conversations)){let c=a.generations.at(-1),d=n.get(a.id);if(!c||!d?.needsTitleCleanup||null!==d.conversationTitle||m.has(a.id))continue;let e=d.pathRekeys.find(a=>a.legacyPath===c.path)?.sharedPath??c.path;d.transcriptTitle=j(function(a,b,c){try{let d=h(a.transcriptTitle(b,c));return d?{kind:"found",value:d}:{kind:"absent"}}catch(a){return{kind:"failed",error:a}}}(b,e,a.engine))}!c&&o.rekeys.length>0&&b.commitExternalPathRekeys?.(o.rekeys);let p=new Set,q=0,r=0,s=0;for(let a of Object.values(d.conversations)){if(!a.generations.at(-1))continue;let c=!1,e=n.get(a.id),f=e?.pathRekeys??[];if(f.length>0){for(let{legacyPath:b,sharedPath:c}of f){for(let d of(a.continuityPaths.includes(b)||a.continuityPaths.push(b),a.continuityPaths=a.continuityPaths.filter(a=>a!==c),a.generations))d.path===b&&(d.path=c);!function(a,b,c){for(let d of Object.values(a.entries))d.artifactPath===b&&(d.artifactPath=c);for(let d of Object.values(a.receipts))d.artifactPath===b&&(d.artifactPath=c),d.resumeSourcePath===b&&(d.resumeSourcePath=c);for(let d of Object.values(a.lineageEdges))d.childArtifactPath===b&&(d.childArtifactPath=c),d.parentArtifactPath===b&&(d.parentArtifactPath=c);for(let d of Object.values(a.heldDeliveries))d.artifactPaths=[...new Set(d.artifactPaths.map(a=>a===b?c:a))];for(let d of Object.values(a.conversations)){let a=d.migration;a&&(a.providerReceipt&&k(a.providerReceipt,b,c),a.pendingContinuityPaths=[...new Set(a.pendingContinuityPaths.map(a=>a===b?c:a))])}for(let d of Object.values(a.pendingSuccessorCleanups))k(d.receipt,b,c);let d=a.legacyResumePanes.panes[b];d&&(a.legacyResumePanes.panes[c]??=d,delete a.legacyResumePanes.panes[b])}(d,b,c)}r+=1,c=!0}if(e?.needsTitleCleanup){let b=e.conversationTitle??m.get(a.id)??e?.transcriptTitle??null;for(let c of a.generations)i(c.launchProfile.title)&&(c.launchProfile.title=b);let f=new Set(a.generations.map(a=>a.path));for(let a of Object.values(d.entries))f.has(a.artifactPath)&&a.launchProfile&&i(a.launchProfile.title)&&(a.launchProfile.title=b);for(let c of Object.values(d.receipts))g(d,c.conversationId)===a.id&&i(c.launchProfile.title)&&(c.launchProfile.title=b,b&&(c.identityWaveTitleBackfill=!0));b&&(q+=1),c=!0}c&&(a.updatedAt=b.now,p.add(a.engine))}for(let a of b.orchestratorSeats){let c=l(d,a,a.activatedAt??a.designatedAt??b.now),e=c.engine?{changed:!1,engine:null}:function(a,b){let c=b.conversationId?g(a,b.conversationId):null;if(!c||a.conversations[c])return{changed:!1,engine:null};let d=Object.values(a.receipts).find(b=>g(a,b.conversationId)===c);if(!d)return{changed:!1,engine:null};let e={project:b.project,seatEpoch:b.seatEpoch,conversationId:c,predecessorConversationId:b.predecessorConversationId?g(a,b.predecessorConversationId):null,designatedAt:b.designatedAt,activatedAt:b.activatedAt,path:b.path??null};return JSON.stringify(d.pendingOrchestratorSeatIdentity)===JSON.stringify(e)?{changed:!1,engine:d.engine}:(d.pendingOrchestratorSeatIdentity=e,{changed:!0,engine:d.engine})}(d,a),f=c.changed||e.changed,h=c.engine??e.engine;f&&h&&(s+=1,p.add(h))}for(let a of p)d.conversationRevision[a]+=1;return c||(d.identityMigrations[f]={completedAt:b.now,retitled:q,rekeyed:r,quarantinedRekeys:o.quarantined,edgesStamped:s}),{dryRun:c,alreadyCompleted:!1,retitled:q,rekeyed:r,quarantinedRekeys:o.quarantined,edgesStamped:s}}},82093:(a,b,c)=>{c.d(b,{AY:()=>l,BD:()=>e,JJ:()=>f,Mi:()=>g,bj:()=>i,fz:()=>d,uK:()=>h,xc:()=>k});let d=3e5,e="delivery cancelled because",f=`${e} its owning account migration was stopped; send again to authorize a fresh delivery`,g=`${e} its owning account migration was rolled back; send again to authorize a fresh delivery`,h=`${e} its owning account migration committed; send again to authorize a fresh delivery action`;function i(a,b){let c=Date.parse(b),d=Date.parse(a.assignedAt??a.createdAt);return Number.isFinite(c)&&Number.isFinite(d)&&d<c}function j(a){let b=Date.parse(a);return Number.isFinite(b)?b:0}function k(a,b,c){return"draining"===b.state&&a.engineRouting[b.engine].activeAccountId===b.targetId&&!l(a,b,c)}function l(a,b,c){let e=function(a,b){let c=j(b.updatedAt);for(let d of Object.values(a.conversations))d.migration?.intentId===b.id&&"requested"!==d.migration.phase&&"waiting-turn"!==d.migration.phase&&(c=Math.max(c,j(d.migration.updatedAt)));return c}(a,b);return e>c||c-e>=d}},88858:(a,b,c)=>{c.d(b,{S:()=>e,n:()=>f});let d=/^[A-Za-z0-9_.:-]{1,64}$/;function e(a){return"string"==typeof a&&d.test(a)?a:void 0}function f(a){if(!a||"object"!=typeof a||Array.isArray(a)||"operator"!==a.kind&&"agent"!==a.kind)return null;let b="agent"===a.kind?e(a.role):void 0;return{kind:a.kind,...b?{role:b}:{}}}},93151:(a,b,c)=>{c.d(b,{Dc:()=>r,EB:()=>m,Ej:()=>q,KL:()=>o});var d=c(77598),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g);let i="LLV_AGENT_REGISTRY_SQLITE";class j extends Error{constructor(...a){super(...a),this.name="RegistryBackendIdentityError"}}let k={readText(a){try{return f().readFileSync(a,"utf8")}catch(b){if("ENOENT"===b.code)return null;throw new j(`${h().basename(a)} is unreadable: ${b.code??"unknown error"}`)}},exists:a=>f().existsSync(a),writeText(a,b){f().mkdirSync(h().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${(0,d.randomUUID)()}.tmp`,e=f().openSync(c,"wx",384);try{f().writeFileSync(e,b),f().fsyncSync(e)}finally{f().closeSync(e)}f().renameSync(c,a)}};function l(a){let b=h().basename(a).replace(/\.json$/,"");return h().join(h().dirname(a),`${b}.backend.json`)}function m(a){return a.endsWith(".json")?`${a.slice(0,-5)}.sqlite`:`${a}.sqlite`}function n(a){return"off"===a||"dual-write"===a||"read"===a||"sqlite"===a}function o(a=process.env){let b=a[i]??"off";if(n(b))return b;throw Error(`${i} must be off, dual-write, read, or sqlite`)}function p(a,b){let c;try{c=JSON.parse(a)}catch{throw new j(`${b} is not valid JSON`)}if(!c||"object"!=typeof c||Array.isArray(c))throw new j(`${b} is not an object`);let d=c;if(1!==d.schemaVersion)throw new j(`${b} declares schema version ${String(d.schemaVersion)}, but this build understands 1`);if(!n(d.mode))throw new j(`${b} declares an unknown backend mode`);let e=d.sqliteFile;if(null!==e&&"string"!=typeof e)throw new j(`${b} declares an invalid store filename`);if("string"==typeof e&&(""===e||e!==h().basename(e)))throw new j(`${b} must name its store as a bare filename`);if("off"!==d.mode&&null===e)throw new j(`${b} declares the ${d.mode} backend but names no store`);return{schemaVersion:1,mode:d.mode,sqliteFile:e??null,publishedAt:"string"==typeof d.publishedAt?d.publishedAt:""}}function q(a,b=process.env,c=k){if(void 0!==b[i])return{mode:o(b),sqliteFilename:null,source:"environment"};let d=l(a),e=h().basename(d),f=m(a),g=c.readText(d);if(null===g){if(c.exists(f))throw new j(`the agent registry backend identity is unpublished while ${h().basename(f)} exists, so SQLite may be authoritative and the JSON mirror may be stale; start the registry writer with ${i} set so it publishes ${e}`);return{mode:"off",sqliteFilename:null,source:"json-only"}}let n=p(g,e);if("off"===n.mode){if(c.exists(f))throw new j(`${e} claims the JSON backend while ${h().basename(f)} exists; remove the stale store or republish the descriptor from the writer`);return{mode:"off",sqliteFilename:null,source:"descriptor"}}let r=h().join(h().dirname(d),n.sqliteFile);if(!c.exists(r))throw new j(`${e} names the ${n.mode} backend store ${n.sqliteFile}, which is unavailable`);return{mode:n.mode,sqliteFilename:r,source:"descriptor"}}function r(a,b,c,d=k,e=()=>new Date().toISOString()){let f=l(a),g="off"===b?null:h().basename(c),i=d.readText(f);if(null!==i)try{let a=p(i,h().basename(f));if(a.mode===b&&a.sqliteFile===g)return}catch{}let j={schemaVersion:1,mode:b,sqliteFile:g,publishedAt:e()};d.writeText(f,`${JSON.stringify(j)}
|
|
42
|
+
`)}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=9403,exports.ids=[9403],exports.modules={99403:(a,b,c)=>{c.r(b),c.d(b,{admitInboxFilePayload:()=>o,buildFilePayload:()=>s,deleteInboxFiles:()=>r,inboxFileBatchToken:()=>p,inboxFilesDir:()=>m,saveInboxFiles:()=>q});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h);function j(a){return String(Math.round(a/1048576*10)/10)}function k(a){let b=(String(a??"").split(/[\\/]/).pop()??"").replace(/[\u0000-\u001f\u007f]/g,"").replace(/\s+/g,"_").trim();if(!b||/^\.+$/.test(b))return"attachment";if(b.length<=100)return b;let c=b.lastIndexOf("."),d=c>0&&b.length-c<=12?b.slice(c):"";return b.slice(0,100-d.length)+d}var l=c(91724);function m(){return i().join((0,l.oy)(),"files")}function n(a,b){return{files:[],error:{error:a,status:b}}}function o(a){if(void 0===a.files||null===a.files)return{files:[],error:null};if(!Array.isArray(a.files))return n("files must be an array",400);if(a.files.length>5)return n("too many files (5 limit)",413);let b=[],c=0;for(let d of a.files){if(!d||"object"!=typeof d||Array.isArray(d)||"string"!=typeof d.base64||"string"!=typeof d.name)return n("invalid file",400);let a=k(d.name);if(function(a){let b=a.endsWith("==")?2:+!!a.endsWith("=");return Math.max(0,Math.floor(3*a.length/4)-b)}(d.base64)>0x1400000)return n(`${a} is too large (${j(0x1400000)} MB limit)`,413);let e=function(a){if(!a||a.length%4!=0||!/^[A-Za-z0-9+/]+={0,2}$/.test(a))return null;let b=Buffer.from(a,"base64");return b.length>0?b:null}(d.base64);if(!e)return n(`${a} could not be read`,400);if((c+=e.byteLength)>0x2800000)return n(`attachments exceed the ${j(0x2800000)} MB request limit`,413);b.push({name:a,data:e})}return{files:b,error:null}}function p(a){let b=a?.trim();return b?e().createHash("sha256").update(b).digest("hex").slice(0,12):e().randomUUID().slice(0,12)}function q(a,b){if(!a.length)return[];let c=function(a){let b=m(),c=i().resolve(b,k(a));if(c!==b&&!c.startsWith(b+i().sep))throw Error("inbox batch directory escapes the inbox");return c}(b),d=[];try{g().mkdirSync(c,{recursive:!0});let b=new Set;for(let e of a){let a=k(e.name),f=a;for(let c=2;b.has(f);c+=1){let b=a.lastIndexOf(".");f=b>0?`${a.slice(0,b)}-${c}${a.slice(b)}`:`${a}-${c}`}b.add(f);let h=i().resolve(c,f);if(!h.startsWith(c+i().sep))throw Error("inbox attachment escapes the inbox");g().writeFileSync(h,e.data),d.push(h)}}catch(a){throw r(d),a}return d}function r(a){let b=m(),c=new Set;for(let b of a){try{g().unlinkSync(b)}catch{}c.add(i().dirname(b))}for(let a of c)if(a!==b&&a.startsWith(b+i().sep))try{g().rmdirSync(a)}catch{}}function s(a,b,c){let d=q(b,c);return{payload:[a,...d].filter(Boolean).join("\n"),filePaths:d}}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=9411,exports.ids=[9411],exports.modules={18797:(a,b,c)=>{c.d(b,{W:()=>
|
|
1
|
+
"use strict";exports.id=9411,exports.ids=[9411],exports.modules={18797:(a,b,c)=>{c.d(b,{W:()=>h});var d=c(4837);let e=["Read-only mode: edits, staging, commits, pushes, service restarts, and GitHub comments are prohibited.","Every finding carries file:line evidence. Clean work earns a clear NO FINDINGS verdict."],f="Two standing rules. (1) Anchor the frame: when the assignment carries the requester's originating requirement, validate the work against that verbatim requirement, never against the artifact's previous revision — WRONG-PREMISE (\"this does not serve the original requirement\") is an expected verdict and outranks any finding about internal rigour. (2) Over-engineering pass: on every review, flag machinery heavier than the problem it solves (a library plus wrapper where a native primitive does), name the simpler mechanism, and report what to cut — OVER-BUILT is a first-class verdict, and a round that only removes scope is a successful round.",g=`http://127.0.0.1:${process.env.PORT?.trim()||"8898"}`,h=[{id:"orchestrator",name:"Orchestrator",description:"Coordinates fresh agents through the Viewer control plane.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Operating mode for the coordination run.",kind:"select",options:["standard","plan-tickets","wayfind","backlog-campaign"]},{key:"repo",label:"Repository",description:"Repository for backlog-campaign mode.",kind:"text"},{key:"issueQuery",label:"Issue query",description:"GitHub issue query for backlog-campaign mode.",kind:"text"},{key:"urgent",label:"Urgent list",description:"Comma-separated urgent issue ids.",kind:"text"},{key:"maxWorkers",label:"Maximum workers",description:"Worker cap for backlog-campaign mode.",kind:"integer",default:3,min:1,max:20},{key:"mergePolicy",label:"Merge policy",description:"Delivery policy for backlog-campaign mode.",kind:"select",options:["pr","merge"]},{key:"completionPolicy",label:"Completion policy",description:"Terminal policy for backlog-campaign mode.",kind:"select",options:["pr-opened","merged","released"]}],promptScaffold:`You are the Orchestrator. Drive work through the production Viewer API at ${g}. Use fresh empty sessions with src lineage; forks are disabled. Keep every worker visible and controllable in the Viewer.
|
|
2
2
|
|
|
3
3
|
Mode: {{mode}}
|
|
4
4
|
Repository: {{repo}}
|
|
@@ -8,7 +8,7 @@ Maximum workers: {{maxWorkers}}
|
|
|
8
8
|
Merge policy: {{mergePolicy}}
|
|
9
9
|
Completion policy: {{completionPolicy}}
|
|
10
10
|
|
|
11
|
-
For backlog-campaign mode, inventory dependencies before assignment, use Opus/Sol gates, route backend work to Terra and frontend work to Opus, complete one review round, and require root release checks. Before a Viewer replacement, preserve the external-worker deployment barrier.`,safetyFences:["Viewer control uses http://127.0.0.1:8898 with src lineage.","Fresh empty sessions only; forks are disabled.","One owner holds a file at a time across active worktrees."],capabilities:["spawn"]},{id:"reviewer",name:"Reviewer",description:"Reviews a code diff and returns severity-ranked evidence-backed findings.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"diffSource",label:"Diff source",description:"Diff or pull request reference to inspect.",kind:"text",required:!0},{key:"lens",label:"Lens",description:"Review lens.",kind:"select",options:["correctness","over-engineering","silent-failure","test-coverage","scope","prod-ops","standards+spec","code-smells","all"]},{key:"mode",label:"Mode",description:"Reviewer context mode.",kind:"select",options:["fresh"]},{key:"parallelN",label:"Parallel passes",description:"Independent review passes.",kind:"integer",min:1,max:8}],promptScaffold:`You are a fresh-context Reviewer. Inspect {{diffSource}} with lens {{lens}}. Run {{parallelN}} independent pass(es), preserving their axes. Report the reviewed SHA. State plainly when GitHub or DNS access was unavailable. Classify any gate blocked by sandbox limits as an environmental note and keep it out of code findings. Run TypeScript checks with bunx tsc --noEmit --incremental false so they do not need a tsbuildinfo write in the checkout. Return severity-ranked findings with file:line evidence, or exactly NO FINDINGS when the diff is clean. Every finding is an actionable fix plan: clear problem statement, fix intent, constraints, and acceptance criteria. No copy-paste code unless absolutely necessary. ${f}`,safetyFences:e,capabilities:["read-only"]},{id:"verifier",name:"Verifier",description:"Tests supplied hypotheses and returns a per-claim evidence verdict.",config:{engine:"codex",model:d.je,effort:"high"},parameters:[{key:"claims",label:"Claims",description:"Hypotheses to confirm or refute.",kind:"text",required:!0}],promptScaffold:"You are a Verifier. Evaluate these supplied claims: {{claims}}. Rank falsifiable hypotheses before testing. Return CONFIRMED or WRONG for every claim with exact evidence and identify missing evidence.",safetyFences:e,capabilities:["read-only"]},{id:"builder",name:"Builder",description:"Writes product code for a scoped directive.",config:{engine:"codex",model:d.je,effort:"medium"},parameters:[{key:"mode",label:"Mode",description:"Implementation discipline.",kind:"select",options:["plain","apply-fixes","tdd","diagnose","prototype","merge-resolve"]},{key:"domain",label:"Domain",description:"Product domain for the implementation.",kind:"select",options:["general","frontend"]}],promptScaffold:"You are a Builder in {{mode}} mode. Implement the scoped product directive with focused checks. Keep changes within the assigned file ownership, run a self-review, and report the verification evidence.",safetyFences:["Product source changes stay inside the assigned scope.","A deployment requires a Deployer role and explicit operator approval."],capabilities:[]},{id:"architect",name:"Architect",description:"Produces an evidence-grounded design without product edits.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Architecture output mode.",kind:"select",options:["design","spec","architecture-audit"]}],promptScaffold:`You are an Architect in {{mode}} mode. Ground the design in current code, state options and trade-offs, then deliver a design document. Product-source edits are prohibited. Open the document with the requester's originating requirement verbatim (with date and source; redact credentials and personal data). The default answer to "should we build this" is no unless that requirement demands it; validate the final design against the quote, and move cut scope into a "Deferred — not currently justified" section instead of deleting it. ${f}`,safetyFences:["Product-source edits, staging, commits, pushes, and service restarts are prohibited.","Capture an ADR only for a hard-to-reverse decision with a material trade-off."],capabilities:["read-only"]},{id:"cleaner",name:"Cleaner",description:"Safely recovers a dirty checkout under a backup contract.",config:{engine:"codex",model:d.fC,effort:"low"},parameters:[],promptScaffold:"You are a Cleaner. Classify the dirty checkout, preserve recoverable evidence before each destructive operation, and keep sibling worktrees untouched. Report the exact recovery actions and resulting git status.",safetyFences:["Create a backup before each destructive operation.","Sibling worktrees and user data remain untouched without explicit operator approval."],capabilities:[]},{id:"prod-auditor",name:"Prod-auditor",description:"Performs a read-only evidence-backed production investigation.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"questions",label:"Questions",description:"Production questions to investigate.",kind:"text",required:!0}],promptScaffold:"You are a Prod-auditor. Investigate {{questions}} through the production read wrapper only. Cite every finding with the exact command or SQL and UTC time bounds. Return evidence with no runtime mutation.",safetyFences:["Use the production read wrapper only.","Writes, restarts, deploys, and credential disclosure are prohibited."],capabilities:["read-only","production-read"]},{id:"deployer",name:"Deployer",description:"Plans a blue/green production deployment and stops for approval before mutation.",config:{engine:"codex",model:d.fC,effort:"medium"},parameters:[{key:"sha",label:"Merged SHA",description:"Merged commit SHA to deploy.",kind:"text",required:!0},{key:"pr",label:"Pull request",description:"Optional pull request reference.",kind:"text"}],promptScaffold:"You are a Deployer. Plan the blue/green deployment for merged SHA {{sha}} (PR {{pr}}). Validate the inactive color, present each mutating step for explicit operator approval, then stop. Preserve the external-worker deployment barrier.",safetyFences:["Every mutating production step waits for explicit operator approval.","Rebuild or restart only the inactive color after its validation."],capabilities:["production-write"]}]},79247:(a,b,c)=>{c.d(b,{y:()=>d});function d(a){return void 0!==a.default?a.default:"integer"===a.kind?a.min??1:"select"===a.kind?a.options?.[0]??"":""}},89822:(a,b,c)=>{c.d(b,{le:()=>l,gP:()=>k,pQ:()=>p,e3:()=>q});var d=c(73024),e=c.n(d);c(76760);var f=c(91724),g=c(58152),h=c(4837),i=c(18797);let j=["orchestrator","reviewer","verifier","builder","architect","cleaner","prod-auditor","deployer"],k=1,l=12e3;class m extends Error{constructor(a,b){super(a,b),this.name="RoleStoreError"}}let n=()=>(0,f.BQ)("role-presets.json");function o(a){return i.W.map(b=>{let c=a[b.id];return{...b,config:{...b.config,...c?.config},promptScaffold:c?.promptScaffold??b.promptScaffold}})}function p(){return o(function(){let a,b;try{a=e().readFileSync(n(),"utf8")}catch(a){if("ENOENT"===a.code)return{schemaVersion:k,overrides:{}};throw new m(`could not read role override registry: ${n()}`,{cause:a})}try{b=JSON.parse(a)}catch(a){throw new m("role override registry contains malformed JSON",{cause:a})}if(b.schemaVersion!==k)throw new m(`unsupported role override schema: ${String(b.schemaVersion)}`);if(!b.overrides||"object"!=typeof b.overrides||Array.isArray(b.overrides))throw new m("role override registry must contain an overrides object");let c={};for(let[a,d]of Object.entries(b.overrides)){if(!("string"==typeof a&&j.includes(a))||!function(a){if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"config"!==a&&"promptScaffold"!==a)||void 0!==a.promptScaffold&&("string"!=typeof a.promptScaffold||a.promptScaffold.length>l))return!1;if(void 0!==a.config){if(!a.config||"object"!=typeof a.config||Array.isArray(a.config)||Object.keys(a.config).some(a=>"engine"!==a&&"model"!==a&&"effort"!==a))return!1;let{engine:b,model:c,effort:d}=a.config;if(void 0!==b&&"claude"!==b&&"codex"!==b||void 0!==c&&("string"!=typeof c||c.length>128)||void 0!==d&&("string"!=typeof d||d.length>32))return!1}return!0}(d)||!function(a,b){let c={...i.W.find(b=>b.id===a).config,...b.config};return!(c.model.length>128||/[\u0000-\u001f\u007f]/.test(c.model))&&("claude"!==c.engine||!!(0,h.OV)(c.model))&&("codex"!==c.engine||!!c.model.startsWith("gpt-"))&&(0,g.z9)(c.engine,c.effort)}(a,d))throw new m(`invalid role override: ${a}`);c[a]=d}return{schemaVersion:k,overrides:c}}().overrides)}function q(){try{return p()}catch(a){return console.warn("[roles] override registry unreadable; falling back to built-in defaults",a),o({})}}},99411:(a,b,c)=>{c.d(b,{aW:()=>m,OH:()=>o,fy:()=>n,s8:()=>p,X2:()=>l,hB:()=>k,$d:()=>j});var d=c(58152),e=c(4837);let f={engine:"claude",model:"opus",effort:"high"},g={engine:"codex",model:"gpt-5.6-terra",effort:"low"};var h=c(79247),i=c(89822);function j(a,b,{requireRequired:c=!0}={}){if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return{ok:!1,error:"roleParams must be an object"};let d=b??{},e=new Map(a.parameters.map(a=>[a.key,a]));for(let b of Object.keys(d))if(!e.has(b)){let c=a.parameters.map(a=>a.key).join(", ")||"none";return{ok:!1,error:`unknown role parameter: ${b} (${a.id} accepts: ${c})`}}let f={};for(let b of a.parameters){let a=d[b.key];if(void 0===a||""===a){if(b.required&&c)return{ok:!1,error:`missing required role parameter: ${b.key}`};f[b.key]=(0,h.y)(b);continue}if("integer"===b.kind){if(!Number.isInteger(a)||"number"!=typeof a||void 0!==b.min&&a<b.min||void 0!==b.max&&a>b.max)return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=a;continue}let e=function(a){if("string"!=typeof a)return null;let b=a.trim();return b&&b.length<=2e3?b:null}(a);if(!e||"select"===b.kind&&!b.options?.includes(e))return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=e}return{ok:!0,value:f}}function k(a,b){var c;let d="builder"===a.id&&"frontend"===b.domain?"\n\nUI/frontend implementation guidance: follow the approved interaction and visual contract, preserve accessible semantics, responsive behavior, and English/Ukrainian parity.":"";return c=a.promptScaffold,c.replace(/\{\{([A-Za-z][A-Za-z0-9]*)\}\}/g,(a,c)=>String(b[c]??""))+d}function l(a){return a.safetyFences.length?`
|
|
11
|
+
For backlog-campaign mode, inventory dependencies before assignment, use Opus/Sol gates, route backend work to Terra and frontend work to Opus, complete one review round, and require root release checks. Before a Viewer replacement, preserve the external-worker deployment barrier.`,safetyFences:[`Viewer control uses ${g} with src lineage.`,"Fresh empty sessions only; forks are disabled.","One owner holds a file at a time across active worktrees."],capabilities:["spawn"]},{id:"reviewer",name:"Reviewer",description:"Reviews a code diff and returns severity-ranked evidence-backed findings.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"diffSource",label:"Diff source",description:"Diff or pull request reference to inspect.",kind:"text",required:!0},{key:"lens",label:"Lens",description:"Review lens.",kind:"select",options:["correctness","over-engineering","silent-failure","test-coverage","scope","prod-ops","standards+spec","code-smells","all"]},{key:"mode",label:"Mode",description:"Reviewer context mode.",kind:"select",options:["fresh"]},{key:"parallelN",label:"Parallel passes",description:"Independent review passes.",kind:"integer",min:1,max:8}],promptScaffold:`You are a fresh-context Reviewer. Inspect {{diffSource}} with lens {{lens}}. Run {{parallelN}} independent pass(es), preserving their axes. Report the reviewed SHA. State plainly when GitHub or DNS access was unavailable. Classify any gate blocked by sandbox limits as an environmental note and keep it out of code findings. Run TypeScript checks with bunx tsc --noEmit --incremental false so they do not need a tsbuildinfo write in the checkout. Return severity-ranked findings with file:line evidence, or exactly NO FINDINGS when the diff is clean. Every finding is an actionable fix plan: clear problem statement, fix intent, constraints, and acceptance criteria. No copy-paste code unless absolutely necessary. ${f}`,safetyFences:e,capabilities:["read-only"]},{id:"verifier",name:"Verifier",description:"Tests supplied hypotheses and returns a per-claim evidence verdict.",config:{engine:"codex",model:d.je,effort:"high"},parameters:[{key:"claims",label:"Claims",description:"Hypotheses to confirm or refute.",kind:"text",required:!0}],promptScaffold:"You are a Verifier. Evaluate these supplied claims: {{claims}}. Rank falsifiable hypotheses before testing. Return CONFIRMED or WRONG for every claim with exact evidence and identify missing evidence.",safetyFences:e,capabilities:["read-only"]},{id:"builder",name:"Builder",description:"Writes product code for a scoped directive.",config:{engine:"codex",model:d.je,effort:"medium"},parameters:[{key:"mode",label:"Mode",description:"Implementation discipline.",kind:"select",options:["plain","apply-fixes","tdd","diagnose","prototype","merge-resolve"]},{key:"domain",label:"Domain",description:"Product domain for the implementation.",kind:"select",options:["general","frontend"]}],promptScaffold:"You are a Builder in {{mode}} mode. Implement the scoped product directive with focused checks. Keep changes within the assigned file ownership, run a self-review, and report the verification evidence.",safetyFences:["Product source changes stay inside the assigned scope.","A deployment requires a Deployer role and explicit operator approval."],capabilities:[]},{id:"architect",name:"Architect",description:"Produces an evidence-grounded design without product edits.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Architecture output mode.",kind:"select",options:["design","spec","architecture-audit"]}],promptScaffold:`You are an Architect in {{mode}} mode. Ground the design in current code, state options and trade-offs, then deliver a design document. Product-source edits are prohibited. Open the document with the requester's originating requirement verbatim (with date and source; redact credentials and personal data). The default answer to "should we build this" is no unless that requirement demands it; validate the final design against the quote, and move cut scope into a "Deferred — not currently justified" section instead of deleting it. ${f}`,safetyFences:["Product-source edits, staging, commits, pushes, and service restarts are prohibited.","Capture an ADR only for a hard-to-reverse decision with a material trade-off."],capabilities:["read-only"]},{id:"cleaner",name:"Cleaner",description:"Safely recovers a dirty checkout under a backup contract.",config:{engine:"codex",model:d.fC,effort:"low"},parameters:[],promptScaffold:"You are a Cleaner. Classify the dirty checkout, preserve recoverable evidence before each destructive operation, and keep sibling worktrees untouched. Report the exact recovery actions and resulting git status.",safetyFences:["Create a backup before each destructive operation.","Sibling worktrees and user data remain untouched without explicit operator approval."],capabilities:[]},{id:"prod-auditor",name:"Prod-auditor",description:"Performs a read-only evidence-backed production investigation.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"questions",label:"Questions",description:"Production questions to investigate.",kind:"text",required:!0}],promptScaffold:"You are a Prod-auditor. Investigate {{questions}} through the production read wrapper only. Cite every finding with the exact command or SQL and UTC time bounds. Return evidence with no runtime mutation.",safetyFences:["Use the production read wrapper only.","Writes, restarts, deploys, and credential disclosure are prohibited."],capabilities:["read-only","production-read"]},{id:"deployer",name:"Deployer",description:"Plans a blue/green production deployment and stops for approval before mutation.",config:{engine:"codex",model:d.fC,effort:"medium"},parameters:[{key:"sha",label:"Merged SHA",description:"Merged commit SHA to deploy.",kind:"text",required:!0},{key:"pr",label:"Pull request",description:"Optional pull request reference.",kind:"text"}],promptScaffold:"You are a Deployer. Plan the blue/green deployment for merged SHA {{sha}} (PR {{pr}}). Validate the inactive color, present each mutating step for explicit operator approval, then stop. Preserve the external-worker deployment barrier.",safetyFences:["Every mutating production step waits for explicit operator approval.","Rebuild or restart only the inactive color after its validation."],capabilities:["production-write"]}]},79247:(a,b,c)=>{c.d(b,{y:()=>d});function d(a){return void 0!==a.default?a.default:"integer"===a.kind?a.min??1:"select"===a.kind?a.options?.[0]??"":""}},89822:(a,b,c)=>{c.d(b,{le:()=>l,gP:()=>k,pQ:()=>p,e3:()=>q});var d=c(73024),e=c.n(d);c(76760);var f=c(91724),g=c(58152),h=c(4837),i=c(18797);let j=["orchestrator","reviewer","verifier","builder","architect","cleaner","prod-auditor","deployer"],k=1,l=12e3;class m extends Error{constructor(a,b){super(a,b),this.name="RoleStoreError"}}let n=()=>(0,f.BQ)("role-presets.json");function o(a){return i.W.map(b=>{let c=a[b.id];return{...b,config:{...b.config,...c?.config},promptScaffold:c?.promptScaffold??b.promptScaffold}})}function p(){return o(function(){let a,b;try{a=e().readFileSync(n(),"utf8")}catch(a){if("ENOENT"===a.code)return{schemaVersion:k,overrides:{}};throw new m(`could not read role override registry: ${n()}`,{cause:a})}try{b=JSON.parse(a)}catch(a){throw new m("role override registry contains malformed JSON",{cause:a})}if(b.schemaVersion!==k)throw new m(`unsupported role override schema: ${String(b.schemaVersion)}`);if(!b.overrides||"object"!=typeof b.overrides||Array.isArray(b.overrides))throw new m("role override registry must contain an overrides object");let c={};for(let[a,d]of Object.entries(b.overrides)){if(!("string"==typeof a&&j.includes(a))||!function(a){if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"config"!==a&&"promptScaffold"!==a)||void 0!==a.promptScaffold&&("string"!=typeof a.promptScaffold||a.promptScaffold.length>l))return!1;if(void 0!==a.config){if(!a.config||"object"!=typeof a.config||Array.isArray(a.config)||Object.keys(a.config).some(a=>"engine"!==a&&"model"!==a&&"effort"!==a))return!1;let{engine:b,model:c,effort:d}=a.config;if(void 0!==b&&"claude"!==b&&"codex"!==b||void 0!==c&&("string"!=typeof c||c.length>128)||void 0!==d&&("string"!=typeof d||d.length>32))return!1}return!0}(d)||!function(a,b){let c={...i.W.find(b=>b.id===a).config,...b.config};return!(c.model.length>128||/[\u0000-\u001f\u007f]/.test(c.model))&&("claude"!==c.engine||!!(0,h.OV)(c.model))&&("codex"!==c.engine||!!c.model.startsWith("gpt-"))&&(0,g.z9)(c.engine,c.effort)}(a,d))throw new m(`invalid role override: ${a}`);c[a]=d}return{schemaVersion:k,overrides:c}}().overrides)}function q(){try{return p()}catch(a){return console.warn("[roles] override registry unreadable; falling back to built-in defaults",a),o({})}}},99411:(a,b,c)=>{c.d(b,{aW:()=>m,OH:()=>o,fy:()=>n,s8:()=>p,X2:()=>l,hB:()=>k,$d:()=>j});var d=c(58152),e=c(4837);let f={engine:"claude",model:"opus",effort:"high"},g={engine:"codex",model:"gpt-5.6-terra",effort:"low"};var h=c(79247),i=c(89822);function j(a,b,{requireRequired:c=!0}={}){if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return{ok:!1,error:"roleParams must be an object"};let d=b??{},e=new Map(a.parameters.map(a=>[a.key,a]));for(let b of Object.keys(d))if(!e.has(b)){let c=a.parameters.map(a=>a.key).join(", ")||"none";return{ok:!1,error:`unknown role parameter: ${b} (${a.id} accepts: ${c})`}}let f={};for(let b of a.parameters){let a=d[b.key];if(void 0===a||""===a){if(b.required&&c)return{ok:!1,error:`missing required role parameter: ${b.key}`};f[b.key]=(0,h.y)(b);continue}if("integer"===b.kind){if(!Number.isInteger(a)||"number"!=typeof a||void 0!==b.min&&a<b.min||void 0!==b.max&&a>b.max)return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=a;continue}let e=function(a){if("string"!=typeof a)return null;let b=a.trim();return b&&b.length<=2e3?b:null}(a);if(!e||"select"===b.kind&&!b.options?.includes(e))return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=e}return{ok:!0,value:f}}function k(a,b){var c;let d="builder"===a.id&&"frontend"===b.domain?"\n\nUI/frontend implementation guidance: follow the approved interaction and visual contract, preserve accessible semantics, responsive behavior, and English/Ukrainian parity.":"";return c=a.promptScaffold,c.replace(/\{\{([A-Za-z][A-Za-z0-9]*)\}\}/g,(a,c)=>String(b[c]??"")).replace(/^(Repository|Issue query|Urgent list):\s*\n/gm,"")+d}function l(a){return a.safetyFences.length?`
|
|
12
12
|
|
|
13
13
|
Safety fences:
|
|
14
14
|
${a.safetyFences.map(a=>`- ${a}`).join("\n")}`:""}function m(a,b){return"builder"!==a.id?a.config:"frontend"===b.domain?f:"apply-fixes"===b.mode?g:a.config}function n(a,b={},c={},f=(0,i.pQ)()){let g=f.find(b=>b.id===a);if(!g)return{ok:!1,error:`unknown role: ${a} (allowed: ${f.map(a=>a.id).join(", ")})`};let h=j(g,b);if(!h.ok)return h;let o=function(a,b,c){let f={...m(a,b),...c};if("claude"!==f.engine&&"codex"!==f.engine)return{ok:!1,error:"engine must be claude or codex"};let g=(0,e.RC)(f.engine,f.model);return"error"in g?{ok:!1,error:g.error}:(f.model=g.model,(0,d.z9)(f.engine,f.effort))?{ok:!0,value:f}:{ok:!1,error:`effort for ${f.engine} must be one of: ${"codex"===f.engine?"low, medium, high, xhigh":"low, medium, high, xhigh, max"}`}}(g,h.value,c);return o.ok?{ok:!0,value:{definition:g,config:o.value,params:h.value,prompt:k(g,h.value)+l(g),requiresDeploymentConfirmation:"deployer"===g.id}}:o}function o(){return(0,i.pQ)()}function p(a){if(void 0===a.role||null===a.role||""===a.role)return{ok:!0,value:null};if("string"!=typeof a.role)return{ok:!1,error:"role must be a string"};let b=n(a.role,a.roleParams);if(!b.ok)return b;let c={};if(void 0!==a.engine){if("claude"!==a.engine&&"codex"!==a.engine)return{ok:!1,error:"engine must be claude or codex"};if(a.engine!==b.value.config.engine&&void 0===a.model)return{ok:!1,error:"model is required when overriding a role engine"};c.engine=a.engine}"string"==typeof a.model&&a.model.trim()&&(c.model=a.model.trim()),"string"==typeof a.effort&&a.effort.trim()&&(c.effort=a.effort.trim());let d=n(a.role,a.roleParams,c);return d.ok?d.value.requiresDeploymentConfirmation&&"deploy"!==a.confirm?{ok:!1,error:"deployer requires confirm: deploy"}:{ok:!0,value:{config:d.value.config,scaffold:d.value.prompt,role:d.value.definition.id}}:d}}};
|