agent-log-viewer 1.0.0 → 1.0.1
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 +12 -21
- package/bin/cli.mjs +28 -4
- package/bin/mcp-server.mjs +7 -0
- package/bin/mcp-server.test.ts +2 -0
- package/bin/provision-telegram-connector.mjs +193 -0
- package/bin/server-runtime.mjs +4 -8
- package/bin/server-runtime.test.ts +46 -7
- package/bin/telegram-login-bridge.py +253 -0
- package/bin/telegram-mcp-server.py +106 -0
- package/bin/telegram-session-reader.mjs +6 -0
- package/bin/telegram-session-validator.mjs +71 -0
- package/dist/mcp-server.mjs +31771 -25627
- package/dist/standalone/.next/BUILD_ID +1 -1
- package/dist/standalone/.next/app-path-routes-manifest.json +22 -15
- package/dist/standalone/.next/build-manifest.json +3 -3
- package/dist/standalone/.next/prerender-manifest.json +3 -3
- package/dist/standalone/.next/react-loadable-manifest.json +19 -0
- package/dist/standalone/.next/required-server-files.json +4 -1
- package/dist/standalone/.next/routes-manifest.json +48 -6
- package/dist/standalone/.next/server/account-migration-controller-worker.js +1 -0
- 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 +4 -1
- 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 +4 -1
- 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 +4 -1
- 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 +4 -1
- 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 +4 -1
- 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 +1 -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 -0
- package/dist/standalone/.next/server/app/api/{orchestrator → artifact}/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/artifact/route_client-reference-manifest.js +1 -0
- 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 +4 -1
- 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 +4 -1
- 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 +1 -0
- package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/log/provenance/route_client-reference-manifest.js +1 -0
- 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/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 +2 -2
- 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 -1
- 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 +3 -0
- package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route_client-reference-manifest.js +1 -0
- 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 +3 -0
- package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/projects/create/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/projects/crown/route.js +1 -0
- package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/projects/crown/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 +1 -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/interrupt/route.js +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 -0
- package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/search/transcripts/route_client-reference-manifest.js +1 -0
- 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 +6 -3
- 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 +1 -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 +1 -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 -0
- package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/telegram/reports/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/telegram/route.js +1 -0
- package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/telegram/route_client-reference-manifest.js +1 -0
- 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 +1 -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 +3 -3
- 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 -2
- 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 +41 -24
- 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 +22 -15
- package/dist/standalone/.next/server/chunks/156.js +2 -2
- package/dist/standalone/.next/server/chunks/1617.js +2 -0
- package/dist/standalone/.next/server/chunks/1858.js +91 -0
- package/dist/standalone/.next/server/chunks/1888.js +1 -0
- package/dist/standalone/.next/server/chunks/1920.js +1 -1
- package/dist/standalone/.next/server/chunks/2190.js +1 -1
- package/dist/standalone/.next/server/chunks/230.js +1 -0
- package/dist/standalone/.next/server/chunks/2318.js +2 -0
- package/dist/standalone/.next/server/chunks/2324.js +1 -0
- package/dist/standalone/.next/server/chunks/2338.js +9 -0
- package/dist/standalone/.next/server/chunks/2904.js +42 -0
- package/dist/standalone/.next/server/chunks/2923.js +1 -0
- package/dist/standalone/.next/server/chunks/2962.js +1 -0
- package/dist/standalone/.next/server/chunks/2977.js +1 -1
- package/dist/standalone/.next/server/chunks/306.js +3 -3
- package/dist/standalone/.next/server/chunks/3086.js +1 -0
- package/dist/standalone/.next/server/chunks/3139.js +10 -0
- package/dist/standalone/.next/server/chunks/3214.js +82 -0
- package/dist/standalone/.next/server/chunks/3336.js +1 -1
- 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/3598.js +81 -0
- package/dist/standalone/.next/server/chunks/3740.js +126 -0
- package/dist/standalone/.next/server/chunks/3793.js +6 -0
- package/dist/standalone/.next/server/chunks/3916.js +1 -0
- package/dist/standalone/.next/server/chunks/3953.js +1 -0
- package/dist/standalone/.next/server/chunks/4012.js +2 -2
- package/dist/standalone/.next/server/chunks/4191.js +1 -1
- package/dist/standalone/.next/server/chunks/4260.js +2 -2
- package/dist/standalone/.next/server/chunks/4509.js +1 -1
- package/dist/standalone/.next/server/chunks/4968.js +1 -1
- package/dist/standalone/.next/server/chunks/4972.js +130 -2
- package/dist/standalone/.next/server/chunks/5689.js +11 -0
- package/dist/standalone/.next/server/chunks/6333.js +47 -0
- package/dist/standalone/.next/server/chunks/6796.js +1 -0
- package/dist/standalone/.next/server/chunks/6826.js +2 -2
- package/dist/standalone/.next/server/chunks/6850.js +1 -1
- package/dist/standalone/.next/server/chunks/6909.js +1 -0
- package/dist/standalone/.next/server/chunks/6977.js +1 -0
- package/dist/standalone/.next/server/chunks/7126.js +1 -0
- package/dist/standalone/.next/server/chunks/7159.js +1 -0
- package/dist/standalone/.next/server/chunks/7270.js +45 -0
- package/dist/standalone/.next/server/chunks/7295.js +10 -0
- package/dist/standalone/.next/server/chunks/7471.js +16 -14
- package/dist/standalone/.next/server/chunks/7563.js +1 -1
- package/dist/standalone/.next/server/chunks/7644.js +13 -0
- package/dist/standalone/.next/server/chunks/7722.js +1 -1
- package/dist/standalone/.next/server/chunks/7733.js +4 -0
- package/dist/standalone/.next/server/chunks/7868.js +1 -0
- package/dist/standalone/.next/server/chunks/8026.js +1 -0
- package/dist/standalone/.next/server/chunks/8176.js +1 -1
- package/dist/standalone/.next/server/chunks/8444.js +1 -1
- package/dist/standalone/.next/server/chunks/8465.js +2 -0
- package/dist/standalone/.next/server/chunks/849.js +6 -0
- package/dist/standalone/.next/server/chunks/8600.js +12 -0
- package/dist/standalone/.next/server/chunks/8617.js +2 -0
- package/dist/standalone/.next/server/chunks/8797.js +1 -1
- package/dist/standalone/.next/server/chunks/8817.js +5 -0
- package/dist/standalone/.next/server/chunks/8966.js +2 -2
- package/dist/standalone/.next/server/chunks/8996.js +1 -0
- package/dist/standalone/.next/server/chunks/9246.js +47 -0
- package/dist/standalone/.next/server/chunks/9364.js +310 -0
- package/dist/standalone/.next/server/chunks/9411.js +3 -3
- package/dist/standalone/.next/server/chunks/9434.js +13 -0
- package/dist/standalone/.next/server/chunks/9507.js +1 -0
- package/dist/standalone/.next/server/chunks/9676.js +62 -0
- package/dist/standalone/.next/server/chunks/9733.js +6 -3
- package/dist/standalone/.next/server/chunks/9901.js +62 -0
- package/dist/standalone/.next/server/chunks/9937.js +2 -0
- package/dist/standalone/.next/server/chunks/9940.js +128 -0
- package/dist/standalone/.next/server/chunks/static/media/pdf.worker.min.65fe1ff1.mjs +6 -0
- package/dist/standalone/.next/server/file-scanner-worker.js +2 -2
- package/dist/standalone/.next/server/files-response-worker.js +5 -5
- package/dist/standalone/.next/server/functions-config-manifest.json +8 -1
- 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/middleware-react-loadable-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 -0
- package/dist/standalone/.next/server/webpack-runtime.js +1 -1
- package/dist/standalone/.next/static/chunks/2619.fd64e7a5bd9005d5.js +1 -0
- package/dist/standalone/.next/static/chunks/8293.5545fdbde0213c98.js +1 -0
- package/dist/standalone/.next/static/chunks/9178-e32f088e89b55503.js +1 -0
- package/dist/standalone/.next/static/chunks/9b0008ae.eb7a9c4c1c92a63b.js +45 -0
- package/dist/standalone/.next/static/chunks/app/_global-error/page-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/access/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/agent/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/answer/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/artifact/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/attach-command/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/attention/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/board/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/bridge/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/conversations/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/files/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/flows/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/image/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/inbox/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/limits/history/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/limits/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/logs/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/proc/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/projects/create/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/push/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/resources/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/roles/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/session/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/session/title/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/spawn/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/staging/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/telegram/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/timeline/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tmux/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tts/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/view/presence/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/workflows/route-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/app/page-ac9463b910bf83fe.js +77 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c132c5ba005ff29e.js +1 -0
- package/dist/standalone/.next/static/chunks/webpack-1637988d4c7cf23c.js +1 -0
- package/dist/standalone/.next/static/css/498f12ddef7ecb0e.css +1 -0
- package/dist/standalone/.next/static/kt9OPe8iwfpNcdOX9ygvb/_buildManifest.js +1 -0
- package/dist/standalone/.next/static/media/pdf.worker.min.e890bf87.mjs +6 -0
- package/dist/standalone/package.json +9 -5
- package/dist/standalone/server.bun.js +38 -0
- package/dist/standalone/server.js +18 -37
- package/package.json +9 -5
- package/vendor/telegram-mcp/.python-version +1 -0
- package/vendor/telegram-mcp/LICENSE +201 -0
- package/vendor/telegram-mcp/PROVENANCE.md +70 -0
- package/vendor/telegram-mcp/SHA256SUMS +24 -0
- package/vendor/telegram-mcp/main.py +67 -0
- package/vendor/telegram-mcp/pyproject.toml +100 -0
- package/vendor/telegram-mcp/requirements.txt +7 -0
- package/vendor/telegram-mcp/sanitize.py +143 -0
- package/vendor/telegram-mcp/session_string_generator.py +259 -0
- package/vendor/telegram-mcp/telegram_mcp/__init__.py +15 -0
- package/vendor/telegram-mcp/telegram_mcp/client_identity.py +31 -0
- package/vendor/telegram-mcp/telegram_mcp/install_guard.py +209 -0
- package/vendor/telegram-mcp/telegram_mcp/runner.py +198 -0
- package/vendor/telegram-mcp/telegram_mcp/runtime.py +1812 -0
- package/vendor/telegram-mcp/telegram_mcp/singleton.py +143 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/__init__.py +13 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/accounts.py +31 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/chats.py +1163 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/contacts.py +802 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/events.py +485 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/folders.py +600 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/groups.py +1286 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/media.py +470 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/messages.py +2041 -0
- package/vendor/telegram-mcp/telegram_mcp/tools/profile.py +449 -0
- package/vendor/telegram-mcp/uv.lock +1693 -0
- package/dist/standalone/.next/server/app/api/orchestrator/route.js +0 -1
- package/dist/standalone/.next/server/app/api/orchestrator/route_client-reference-manifest.js +0 -1
- package/dist/standalone/.next/server/chunks/1699.js +0 -1
- package/dist/standalone/.next/server/chunks/2596.js +0 -1
- package/dist/standalone/.next/server/chunks/3886.js +0 -1
- package/dist/standalone/.next/server/chunks/4792.js +0 -101
- package/dist/standalone/.next/server/chunks/5622.js +0 -2
- package/dist/standalone/.next/server/chunks/616.js +0 -42
- package/dist/standalone/.next/server/chunks/620.js +0 -1
- package/dist/standalone/.next/server/chunks/6299.js +0 -4
- package/dist/standalone/.next/server/chunks/9598.js +0 -1
- package/dist/standalone/.next/server/chunks/9936.js +0 -6
- package/dist/standalone/.next/static/5aZdjqUDNxpxX8nVsuO2S/_buildManifest.js +0 -1
- package/dist/standalone/.next/static/chunks/9260-0e7e550c65609f11.js +0 -1
- package/dist/standalone/.next/static/chunks/app/_global-error/page-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/access/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/agent/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/answer/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/attach-command/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/attention/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/board/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/bridge/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/conversations/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/files/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/flows/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/image/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/inbox/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/limits/history/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/limits/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/logs/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/proc/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/push/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/resources/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/roles/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/session/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/session/title/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/spawn/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/staging/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/timeline/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tmux/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tts/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/view/presence/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/workflows/route-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/app/page-45fd788b5dbb86eb.js +0 -57
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-483eb859fba02a43.js +0 -1
- package/dist/standalone/.next/static/chunks/webpack-46c1a0323c2ca312.js +0 -1
- package/dist/standalone/.next/static/css/b5b2fbc52caf460a.css +0 -1
- /package/dist/standalone/.next/static/{5aZdjqUDNxpxX8nVsuO2S → kt9OPe8iwfpNcdOX9ygvb}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=7722,exports.ids=[7722],exports.modules={3359:(a,b,c)=>{c.d(b,{HJ:()=>h,QD:()=>k,X0:()=>l,qe:()=>i,s0:()=>j});var d=c(77598),e=c.n(d),f=c(89937),g=c(4012);let h=`Agent-initiated spawns require role; reviewer spawns also require reviews (the implementer conversation or transcript). The parent is inferred from the authenticated caller conversation; src stays optional verification. POST ${g.nP} with {engine, model, cwd, prompt, role, src?, reviews?}.`;function i(a,b){return a?.kind==="agent"?{parentConversationId:a.conversationId,role:b.role,reviews:b.reviews}:a?.kind==="operator"?{src:b.src,role:b.role,reviews:b.reviews}:b}function j(a){if("same-origin"!==a.headers.get("sec-fetch-site"))return!0;let b=a.headers.get("origin"),c=a.headers.get("host");if(!b||!c)return!0;try{return new URL(b).host!==c}catch{return!0}}function k(a,b){return j(a)?(void 0===b.src||"string"==typeof b.src&&b.src.trim())&&"string"==typeof b.role&&b.role.trim()&&("reviewer"!==b.role.trim()||"string"==typeof b.reviews&&b.reviews.trim())?null:h:null}function l(a,b,c){let d=a.headers.get(g.ab)?.trim()??"",h=d&&/^[A-Za-z0-9_-]{43}$/.test(d)?e().createHash("sha256").update(d).digest("hex"):"",i=c.conversationIdForSpawnCapabilityDigest(h);if(i){if(null!=b){let a="string"==typeof b?c.conversationForPath(b.trim()):null;if(!a||a.id!==i)return{error:"src must identify the authenticated caller conversation"}}return{kind:"agent",conversationId:i,liveChildrenCap:20}}try{if((0,f.jU)(d))return{kind:"operator",conversationId:null,liveChildrenCap:void 0}}catch(a){if(a instanceof f.Ib)return{error:a.message,status:503};throw a}return{error:`Agent spawn requests require ${g.ab}: $LLV_SPAWN_CAPABILITY from the caller launch.`}}},11831:(a,b,c)=>{function d(a){return{error:a.rejection.guidance,code:a.rejection.code,launchId:a.receipt.launchId,conversationId:a.receipt.conversationId,rejection:a.rejection}}function e(a,b){return"starting"===a.state||b&&"path-pending"===a.state?202:200}function f(a,b=a.artifactPath,c={}){let d="structured"===a.transport||null===a.transport&&!0===c.structured,e=(null!==a.verifiedHost||!0===c.structured&&"completed"===a.state)&&"failed"!==a.state&&"conflicted"!==a.state;return{ok:!0,target:a.pane?.paneId??a.target??null,path:b,...d&&"claude"===a.engine?{effectivePermissionMode:a.launchProfile.permissionMode??"default"}:{},launchId:a.launchId,conversationId:a.conversationId,parent:a.parentConversationId?{conversationId:a.parentConversationId,source:a.parentSource}:null,launched:e,retrySafe:"failed"===a.state,initialMessage:c.initialMessage??("failed"===a.state||"conflicted"===a.state?"failed":"completed"===a.state||"prompt-delivered"===a.state?"delivered":d&&"path-pending"===a.state?"queued":"pending"),...a.error?{error:a.error}:{},state:"conflicted"===a.state?"conflict":"failed"===a.state?"failed":"starting"===a.state||"pane-bound"===a.state?"starting":"host-verified"===a.state||"prompt-delivered"===a.state||"path-pending"===a.state?"path-pending":"settled"}}c.d(b,{AU:()=>f,UH:()=>d,Xl:()=>e})},67722:(a,b,c)=>{c.d(b,{executeSpawnRequest:()=>ab,b:()=>$,r:()=>aa});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(23211),k=c(41617),l=c(78966),m=c(86850),n=c(74382),o=c(14509),p=c(29733),q=c(58152),r=c(10230),s=c(61971),t=c(4837),u=c(99411),v=c(21241),w=c(77598),x=c.n(w);function y(a){return x().createHash("sha256").update(JSON.stringify(a)).digest("hex")}function z(a){return"string"==typeof a.parentConversationId?{conversationId:a.parentConversationId}:"string"==typeof a.parent?{path:a.parent}:"string"==typeof a.src?{path:a.src}:null}var A=c(48892),B=c(94896),C=c(79511),D=c(11831),E=c(4012),F=c(42087),G=c(16089),H=c(26474),I=c(35961),J=c(3127),K=c(63629),L=c(68512),M=c(50201),N=c(32372),O=c(41022),P=c(45656),Q=c(43384),R=c(73984),S=c(33282),T=c(70107),U=c(92094),V=c(27471);let W={transcriptAllowed:B.FK,readCwd:a=>(0,G.tX)(a),isDirectory:a=>{try{return e().statSync(a).isDirectory()}catch{return!1}}};var X=c(3359),Y=c(5602);class Z extends Error{}let $={registry:p.tk,resolveHealthySpawnAccount:m.ax,resolveSpawnAccount:(a,b)=>m.lD.resolveSpawn(a,b),runtimeHostClient:J.sS,publishFilesRevision:L.G,spawnStructuredConversation:P.sh,assertStructuredRuntime:v.x_,defer:a=>(0,j.after)(a),storeImages:a=>(0,N.PF)().putMany(a),adoptPipelineAttemptFromSource:R.F_,pipelineAttemptTargetForSource:R.RO};function _(a,b,c){!b||a.includes(b)||c&&(0,T.hY)(b)!==c||a.push(b)}async function aa(a){let b=a.nextUrl.searchParams.get("project")??"",{cwd:c,cwdExists:d}=function(a,b=W){if(!a||!b.transcriptAllowed(a))return{cwd:null,cwdExists:!1};let c=b.readCwd(a);return{cwd:c,cwdExists:!!(c&&b.isDirectory(c))}}(a.nextUrl.searchParams.get("src")),e=(await (0,S.CS)()).filter(a=>a.path.endsWith(".jsonl")&&("claude-projects"===a.root||"codex-sessions"===a.root)).filter(a=>!a.path.includes(i().sep+"subagents"+i().sep)).sort((a,c)=>Number(c.project===b)-Number(a.project===b)||c.mtime-a.mtime).slice(0,80),f=c?[c]:[];if(!c)for(let a of(0,U.Xi)(b,10))_(f,a,b);for(let a of e){if(f.length>=10)break;b&&a.project!==b||_(f,(0,G.tX)(a.path,{requireDir:!0}),b)}f.length||f.push(g().homedir());let h=(0,Q.l)();return j.NextResponse.json({dirs:f,cwd:c,cwdExists:d,spawnTransport:h,imageInput:{claude:(0,N.ki)("claude","structured"===h),codex:(0,N.ki)("codex","structured"===h&&(0,t.JL)(null))}})}async function ab(a,b=$){var c;let d,f,h,m=(0,I.W)(a);if(m)return m;try{d=await a.json()}catch{return j.NextResponse.json({error:"invalid JSON"},{status:400})}let v=(0,r.t3)(d.mcpServers);if(!v.ok)return j.NextResponse.json({error:v.error},{status:400});let w=void 0===d.mcpServers?null:v.value,x=(0,s.jh)(d.plugins);if(!x.ok)return j.NextResponse.json({error:x.error},{status:400});let G=(0,X.QD)(a,d);if(G)return j.NextResponse.json({error:G},{status:400});let L=(0,X.s0)(a);if(void 0!==d.allowSubagents&&"boolean"!=typeof d.allowSubagents)return j.NextResponse.json({error:"allowSubagents must be a boolean"},{status:400});let N=(0,u.s8)(d);if(!N.ok)return j.NextResponse.json({error:N.error},{status:400});if(N.value?.role==="reviewer"&&("string"!=typeof d.reviews||!d.reviews.trim()))return j.NextResponse.json({error:"reviewer requires reviews"},{status:400});if(N.value?.role!=="reviewer"&&void 0!==d.reviews)return j.NextResponse.json({error:"reviews requires role: reviewer"},{status:400});if(N.value&&(0,C.n4)(N.value.role)&&!0===d.allowSubagents)return j.NextResponse.json({error:`${N.value.role} launches cannot enable subagents: reviewer and verifier sessions run every check in-session`},{status:400});let R="claude"===d.engine||"codex"===d.engine?d.engine:N.value?.config.engine??null;if(!R)return j.NextResponse.json({error:"engine must be claude or codex"},{status:400});if(void 0!==d.accountId&&"string"!=typeof d.accountId)return j.NextResponse.json({error:"accountId must be a string"},{status:400});if(void 0!==d.clientAttemptId&&("string"!=typeof d.clientAttemptId||!/^[A-Za-z0-9_-]{8,128}$/.test(d.clientAttemptId)))return j.NextResponse.json({error:"clientAttemptId must be 8-128 URL-safe characters"},{status:400});let S=(0,q.BL)(R,{...d,effort:void 0===d.effort?N.value?.config.effort:d.effort});if(S.error)return j.NextResponse.json({error:S.error},{status:400});let T=(0,t.wi)({model:void 0===d.model?N.value?.config.model:d.model});if(T.error)return j.NextResponse.json({error:T.error},{status:400});let U="string"==typeof d.prompt?d.prompt.trim():"",W=N.value?[N.value.scaffold,U].filter(Boolean).join("\n\n"):U,{images:_,error:aa}=(0,V.Fu)(d);if(aa)return j.NextResponse.json({error:aa.error},{status:aa.status});try{f=(0,Q.l)()}catch(a){return j.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}if("structured"===f){try{b.assertStructuredRuntime()}catch(a){return j.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:503})}let a=(0,Q.H)({engine:R,model:T.model,hasImages:_.length>0,fast:S.fast});if(a)return j.NextResponse.json({error:a},{status:409});try{(0,O.h1)(W)}catch(a){return j.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:413})}}let ac=b.registry(),ad=null;if(L){let b=(0,X.X0)(a,d.src,ac);if("error"in b)return j.NextResponse.json({error:b.error},{status:b.status??403});ad=b}if(L&&!0===d.allowSubagents&&ad?.kind!=="operator")return j.NextResponse.json({error:"allowSubagents requires an authenticated Viewer operator spawn"},{status:403});let ae=null;if(void 0!==d.project&&null!==d.project){if(!(ae="string"==typeof d.project?(0,n.QK)(d.project):null))return j.NextResponse.json({error:"project must be a valid project key"},{status:400});if(L&&ad?.kind!=="operator")return j.NextResponse.json({error:"explicit project requires an authenticated Viewer operator spawn"},{status:403})}let af=null;if(void 0!==d.supersedes&&null!==d.supersedes){if("string"!=typeof d.supersedes||!d.supersedes.trim())return j.NextResponse.json({error:"supersedes must name a conversation id or transcript path"},{status:400});let a=d.supersedes.trim(),b=a.startsWith("conversation_")?ac.conversation(a):ac.conversationForPath(a);if(!b)return j.NextResponse.json({error:"supersedes does not resolve to a known conversation"},{status:404});let c=ac.supersedenceConflict(b.id);if(c)return j.NextResponse.json({error:`supersedes conflicts with the live conversation ${c}`,successorConversationId:c},{status:409});af=b.id}let ag="string"==typeof d.cwd?d.cwd.trim():"";if(!ag)return j.NextResponse.json({error:"working directory is required"},{status:400});let ah=i().resolve("~"===ag||ag.startsWith("~/")?i().join(g().homedir(),ag.slice(1)):ag);try{h=e().statSync(ah)}catch{return j.NextResponse.json({error:`directory does not exist: ${ah}`},{status:400})}if(!h.isDirectory())return j.NextResponse.json({error:`not a directory: ${ah}`},{status:400});let ai=[],aj=null;try{let a="string"==typeof d.clientAttemptId?d.clientAttemptId:null,g=a?ac.spawnReceiptForClientAttempt(a):null,h=g&&void 0===d.accountId&&null!==g.accountId?b.resolveSpawnAccount(g.engine,g.accountId):await b.resolveHealthySpawnAccount(R,d.accountId),k=(0,B.bs)((0,X.qe)(ad,{...d,role:N.value?.role}),ac),m=k.parent,q=k.reviewed?.conversationId??null;if(L&&ad?.kind==="agent"&&!m)return j.NextResponse.json({error:X.HJ},{status:400});let t=ad?.kind==="agent"?"string"==typeof d.src&&!!d.src.trim():"string"==typeof d.src&&!!d.src.trim()||"string"==typeof d.parent&&!!d.parent.trim()||void 0!==d.parentConversationId||"string"==typeof d.reviews&&!!d.reviews.trim(),u=m?t?"explicit":"inferred-caller":null,v=m?.conversationId??null,C="string"==typeof d.src&&d.src.trim()?v:null,G=m?.sessionKey??null,I=m?.artifactPath??null,O=(0,s.GU)({origin:{kind:ad?.kind==="agent"?"agent":"operator"},parentConversationId:v,agentRole:N.value?.role??null}),Q=(0,s.wE)({engine:R,origin:O,requested:x.value}),Y=(0,r.Mt)({origin:O,requested:w}),$=(c={engine:R,cwd:ah,model:T.model,effort:S.effort,fast:S.fast,accountId:h.accountId,role:N.value?.role??null,mcpServers:Y,...Q.length?{plugins:Q}:{},...!0===d.allowSubagents?{allowSubagents:!0}:{},...ae?{project:ae}:{},parent:z({parentConversationId:v??void 0}),...q?{reviews:z({parentConversationId:q})}:{},...af?{supersedes:z({parentConversationId:af})}:{},prompt:W,images:_.map(a=>{var b;return{mime:a.mime,digest:(b={image:a.base64},y(b))}})},y(c)),aa=C&&b.pipelineAttemptTargetForSource?b.pipelineAttemptTargetForSource(C):null,ab=(0,o.lV)(R,ah,{model:T.model,effort:S.effort,fast:S.fast,codexHome:"codex"===R?h.home:null,claudeConfigDir:"claude"===R?h.home:null,claudeProjectsDir:"claude"===R?h.transcriptRoot:null,allowSubagents:!0===d.allowSubagents,mcpServers:Y,deferClaudeSpawnPolicy:!0}),ag="claude"===R&&"structured"===f?(0,P.eK)(ab.launchProfile?.permissionMode,{agentInitiated:L,operatorAuthenticated:ad?.kind==="operator",roleSpawn:!!N.value}):ab.launchProfile?.permissionMode,ak={...ab,launchProfile:(0,n.Ui)({...ab.launchProfile??{},cwd:ah,parentConversationId:v,allowSubagents:!0===d.allowSubagents,mcpServers:Y,plugins:Q,permissionMode:ag,...ae?{project:ae}:{}})},al=ac.beginSpawnRequest({engine:R,cwd:ah,transport:f,accountId:h.accountId,parentConversationId:v,parentSource:u,parentSessionKey:G,parentArtifactPath:I,role:N.value?.role??null,reviewsConversationId:q,explicitProject:ae,supersedes:af,supersedesReason:"recovery-spawn",liveChildrenCap:ad?.liveChildrenCap,origin:ad?.kind==="agent"?{kind:"agent",conversationId:ad.conversationId}:{kind:"operator"},launchProfile:ak.launchProfile,clientAttemptId:a,requestDigest:$,launchDisplay:U.trim()||_.length?{prompt:U,images:_.length,echo:W}:null,memberships:aa&&C?[{kind:"pipeline",containerId:aa.pipelineId,role:aa.role,slot:`adopt:${aa.stageId}:${$.slice(0,24)}`,stageId:aa.stageId,stageOrder:aa.stageOrder,round:null,parentConversationId:C,runtime:{engine:R,model:ak.launchProfile.model,effort:ak.launchProfile.effort}}]:[]});if("conflict"===al.kind)return j.NextResponse.json({error:"spawn attempt conflicts with its original request"},{status:409});let am=async(a,c)=>{if(!C||!b.adoptPipelineAttemptFromSource)return;let d=ac.readOnlySnapshot().receipts[a.launchId]??a;try{await b.adoptPipelineAttemptFromSource(C,{launchId:d.launchId,conversationId:d.conversationId,sessionId:d.key?.sessionId??null,agentPath:c,paneId:d.verifiedHost?.paneId??d.pane?.paneId??null,startedAt:d.createdAt,runtime:{engine:d.engine,model:d.launchProfile.model,effort:d.launchProfile.effort}})}catch(a){console.error("[spawn] pipeline attempt adoption failed",{launchId:d.launchId,conversationId:d.conversationId,sourceConversationId:C,error:a})}},an=(a,c,d)=>{b.defer(async()=>{let f;try{f=await b.spawnStructuredConversation({engine:R,receipt:a,spec:ak,account:h,prompt:W,imageRefs:d,registry:ac,client:c})}catch(b){console.error("[spawn] structured launch failed",{launchId:a.launchId,conversationId:a.conversationId,error:b}),b instanceof J.Hr&&ac.failStructuredSpawn(a.launchId,`structured spawn transport failed: ${b.message}`.slice(0,240));return}if(I&&f.path)try{(0,H.A6)(f.path,I),(0,H.OA)()}catch(b){console.error("[spawn] handoff lineage persistence failed",{launchId:a.launchId,conversationId:a.conversationId,childArtifactPath:f.path,parentArtifactPath:I,error:b})}if(f.path&&await am(a,f.path),f.path&&e().existsSync(f.path))try{await b.publishFilesRevision?.(c)}catch(b){console.error("[spawn] transcript materialization refresh failed",{launchId:a.launchId,conversationId:a.conversationId,artifactPath:f.path,error:b})}})};if("replay"===al.kind){let a,c="structured"===al.receipt.transport||null===al.receipt.transport&&!!(al.receipt.key&&ac.readOnlySnapshot().entries[(0,A.pp)(al.receipt.key)]?.structuredHost),d=al.receipt,e=c?b.runtimeHostClient():null;if(e){try{let b=await (0,P.reconcileStructuredSpawnReplay)(d.launchId,ac,e);d=b,a=b.initialMessage}catch{}let c=ac.claimStartingStructuredSpawn(d.launchId);if(d=c.receipt,c.claimed){let a;try{a=b.storeImages(_)}catch(a){throw c.receipt.admissionOwner&&ac.releaseStartingStructuredSpawn(d.launchId,c.receipt.admissionOwner),new Z(a instanceof Error?a.message:String(a))}an(d,e,a)}}d.artifactPath&&await am(d,d.artifactPath);let f=(0,D.AU)(d,d.artifactPath,{structured:c,initialMessage:a});return j.NextResponse.json(f,{status:(0,D.Xl)(f,c)})}if(aj=al.receipt.launchId,"claude"===R&&"tmux"===f){let a=i().basename(ak.transcript??"",".jsonl");(0,l.fg)(h.home)&&(0,E.DV)(h.home,ah),(0,E.UI)(h.home,{allowSubagents:!0===d.allowSubagents,baseSettingsPath:(0,l.fg)(h.home)?(0,l.ZK)():null,profileId:a,cwd:ah,mcpServers:Y,mcpStatePath:"managed"===h.kind?i().join(h.home,".claude.json"):i().join(i().dirname(h.home),".claude.json")})}if("structured"===f){let a,c=b.runtimeHostClient();if(!c)throw Error("structured spawn runtime host is unavailable");try{a=b.storeImages(_)}catch(a){throw new Z(a instanceof Error?a.message:String(a))}return an(al.receipt,c,a),j.NextResponse.json((0,D.AU)(al.receipt,al.receipt.artifactPath,{structured:!0}),{status:202})}let ao=(0,V.Am)(W,_);ai=ao.imagePaths;let ap=(0,M.Zn)()?b.runtimeHostClient():null,aq=ap?al.receipt.launchId:null;if(ap&&aq)try{await ap.operation({scope:(0,K.zV)("operation",aq),kind:"spawn.intent",operationId:aq,producerKey:`viewer-spawn:${aq}`,payload:{engine:R,cwd:ah,accountId:h.accountId,parentConversationId:v}})}catch{console.warn("[runtime] spawn bookkeeping unavailable; continuing through the legacy spawn path"),ap=null}let ar=Date.now(),as=await (0,V.Tk)(ak,ao.payload,al.receipt),at=await (0,F.s)({engine:R,knownTranscript:ak.transcript??null,panePid:as.panePid??null,cwd:ah,startedAtMs:ar,codexSessionsDir:"codex"===R?h.transcriptRoot:null}),au=at?(0,A.sz)(R,at):null;if(!as.host||!await (0,V.PB)(as.host)){(0,p.tk)().invalidateSpawnHost(al.receipt.launchId,"spawn host disappeared before API confirmation");let a=(0,p.tk)().readOnlySnapshot().receipts[al.receipt.launchId];return j.NextResponse.json((0,D.AU)(a,at))}if(!at||!au||!as.receipt){let a=(0,p.tk)().markSpawnPathPending(al.receipt.launchId);return j.NextResponse.json((0,D.AU)(a,null))}let av=(0,p.tk)().settleSpawn(as.receipt.launchId,{key:au,artifactPath:at,cwd:ah,accountId:h.accountId,status:"starting",host:as.host,claimEpoch:0,claimOwner:null,pendingAction:"spawn"});if("conflict"===av.kind)return j.NextResponse.json((0,D.AU)(av.receipt));if(await am(av.receipt,at),ap&&aq)try{await ap.append({scope:(0,K.zV)("edge",aq),kind:"edge.created",producerKey:`viewer-spawn-edge:${aq}`,payload:{edge:"viewer_spawn",childConversationId:av.conversation.id,parentConversationId:v,operationId:aq}})}catch{console.warn("[runtime] spawned agent is healthy; lineage bookkeeping will reconcile later")}if(I&&(at&&(0,H.A6)(at,I),(0,H.OA)()),!await (0,V.PB)(as.host)){(0,p.tk)().invalidateSpawnHost(al.receipt.launchId,"spawn host disappeared before API response");let a=(0,p.tk)().readOnlySnapshot().receipts[al.receipt.launchId];return j.NextResponse.json((0,D.AU)(a,at))}return j.NextResponse.json((0,D.AU)(av.receipt,at))}catch(c){let a=aj?(0,p.tk)().readOnlySnapshot().receipts[aj]:null;if(a&&null!==a.pane||(a&&(0,p.tk)().failSpawn(a.launchId,"spawn failed before pane binding"),(0,V.IJ)(ai)),c instanceof B.eX)return j.NextResponse.json({error:c.message},{status:c.status});if(c instanceof C.Jc)return j.NextResponse.json((0,D.UH)(c),{status:403});if(c instanceof p.fr)return j.NextResponse.json({error:c.message},{status:429});if(c instanceof Z)return j.NextResponse.json({error:c.message},{status:503});if(c instanceof k.m1||c instanceof l.UV)return j.NextResponse.json({error:c.message},{status:400});let b=c instanceof Y.KP?j.NextResponse.json({error:c.message,retrySafe:!0},{status:503}):null;if(b)return b;if(a?.pane){("prompt-delivered"===a.state||"host-verified"===a.state)&&(0,p.tk)().markSpawnPathPending(a.launchId);let b=(0,p.tk)().readOnlySnapshot().receipts[a.launchId];if(b)return j.NextResponse.json((0,D.AU)(b,b.artifactPath))}return j.NextResponse.json({error:c instanceof Error?c.message:String(c)},{status:500})}}},92094:(a,b,c)=>{c.d(b,{Qf:()=>q,Xi:()=>p});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91724),i=c(52509),j=c(70107);let k=["project-catalog.json","flows.json","pipelines.json","workflows.json","worktree-map.json"],l=(0,i.E)("project-directories-v2");function m(a){try{let b=JSON.parse(e().readFileSync(a,"utf8"));return b&&"object"==typeof b&&!Array.isArray(b)?b:null}catch{return null}}function n(a,b,c){if(!(!a||"object"!=typeof a||Array.isArray(a)))for(let d of b){let b=a[d];"string"==typeof b&&b.trim()&&c.add(b)}}function o(){let a=(0,h.Pn)(),b=k.map(b=>{let c=g().join(a,b);try{let a=e().statSync(c);return`${b}:${a.dev}:${a.ino}:${a.size}:${a.mtimeMs}:${a.ctimeMs}`}catch{return`${b}:missing`}}).join("|"),c=l.get(a);if(c&&c.expiresAt>Date.now()&&c.stateIdentity===b)return c.directories;let d=[],f=new Set;for(let b of function(a){let b=new Set,c=m(g().join(a,"project-catalog.json"))?.files;if(c&&"object"==typeof c&&!Array.isArray(c))for(let a of Object.values(c))n(a,["cwd","projectRoot"],b);for(let[c,d,e]of[["flows.json","flows",["cwd"]],["pipelines.json","pipelines",["repoDir","worktreeDir"]],["workflows.json","workflows",["repoDir","worktreeDir"]]]){let f=m(g().join(a,c))?.[d];if(Array.isArray(f))for(let a of f)n(a,e,b)}let d=m(g().join(a,"worktree-map.json"));if(d)for(let[a,c]of Object.entries(d))b.add(a),n(c,["repo"],b);return[...b]}(a)){try{if(!e().statSync(b).isDirectory())continue}catch{continue}let a=(0,j.hY)(b),c=(0,j.D$)(b),g=a?`${a}\0${b}`:"";!a||!c||f.has(g)||(f.add(g),d.push({cwd:b,project:a,projectRoot:c}))}return l.set(a,{directories:d,expiresAt:Date.now()+1e4,stateIdentity:b}),d}function p(a,b=10){return a?o().filter(b=>b.project===a).slice(0,b).map(a=>a.cwd):[]}function q(a){let b=new Set([...a].filter(Boolean)),c={};for(let a of o())b.has(a.project)&&!c[a.project]&&(c[a.project]=a.projectRoot);return c}}};
|
|
1
|
+
"use strict";exports.id=7722,exports.ids=[7722],exports.modules={3359:(a,b,c)=>{c.d(b,{HJ:()=>h,QD:()=>k,X0:()=>l,qe:()=>i,s0:()=>j});var d=c(77598),e=c.n(d),f=c(89937),g=c(4012);let h=`Agent-initiated spawns require role; reviewer spawns also require reviews (the implementer conversation or transcript). The parent is inferred from the authenticated caller conversation; src stays optional verification. POST ${g.VIEWER_SPAWN_ENDPOINT} with {engine, model, cwd, prompt, role, src?, reviews?}.`;function i(a,b){return a?.kind==="agent"?{parentConversationId:a.conversationId,role:b.role,reviews:b.reviews}:a?.kind==="operator"?{src:b.src,role:b.role,reviews:b.reviews}:b}function j(a){if("same-origin"!==a.headers.get("sec-fetch-site"))return!0;let b=a.headers.get("origin"),c=a.headers.get("host");if(!b||!c)return!0;try{return new URL(b).host!==c}catch{return!0}}function k(a,b){return j(a)?(void 0===b.src||"string"==typeof b.src&&b.src.trim())&&"string"==typeof b.role&&b.role.trim()&&("reviewer"!==b.role.trim()||"string"==typeof b.reviews&&b.reviews.trim())?null:h:null}function l(a,b,c){let d=a.headers.get(g.VIEWER_SPAWN_CAPABILITY_HEADER)?.trim()??"",h=d&&/^[A-Za-z0-9_-]{43}$/.test(d)?e().createHash("sha256").update(d).digest("hex"):"",i=c.conversationIdForSpawnCapabilityDigest(h);if(i){if(null!=b){let a="string"==typeof b?c.conversationForPath(b.trim()):null;if(!a||a.id!==i)return{error:"src must identify the authenticated caller conversation"}}return{kind:"agent",conversationId:i,liveChildrenCap:20}}try{if((0,f.matchesOperatorSpawnCapability)(d))return{kind:"operator",conversationId:null,liveChildrenCap:void 0}}catch(a){if(a instanceof f.OperatorSpawnCapabilityError)return{error:a.message,status:503};throw a}return{error:`Agent spawn requests require ${g.VIEWER_SPAWN_CAPABILITY_HEADER}: $LLV_SPAWN_CAPABILITY from the caller launch.`}}},11831:(a,b,c)=>{function d(a){return{error:a.rejection.guidance,code:a.rejection.code,launchId:a.receipt.launchId,conversationId:a.receipt.conversationId,rejection:a.rejection}}function e(a,b){return"starting"===a.state||b&&"path-pending"===a.state?202:200}function f(a,b=a.artifactPath,c={}){let d="structured"===a.transport||null===a.transport&&!0===c.structured,e=(null!==a.verifiedHost||!0===c.structured&&"completed"===a.state)&&"failed"!==a.state&&"conflicted"!==a.state;return{ok:!0,target:a.pane?.paneId??a.target??null,path:b,...d&&"claude"===a.engine?{effectivePermissionMode:a.launchProfile.permissionMode??"default"}:{},launchId:a.launchId,conversationId:a.conversationId,parent:a.parentConversationId?{conversationId:a.parentConversationId,source:a.parentSource}:null,launched:e,retrySafe:"failed"===a.state,initialMessage:c.initialMessage??("failed"===a.state||"conflicted"===a.state?"failed":"completed"===a.state||"prompt-delivered"===a.state?"delivered":d&&"path-pending"===a.state?"queued":"pending"),...a.error?{error:a.error}:{},state:"conflicted"===a.state?"conflict":"failed"===a.state?"failed":"starting"===a.state||"pane-bound"===a.state?"starting":"host-verified"===a.state||"prompt-delivered"===a.state||"path-pending"===a.state?"path-pending":"settled",transport:d?"structured":"tmux"}}c.d(b,{AU:()=>f,UH:()=>d,Xl:()=>e})},67722:(a,b,c)=>{c.r(b),c.d(b,{executeSpawnRequest:()=>ah,productionSpawnCommandDependencies:()=>ae,spawnSuggestions:()=>ag});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(23211),k=c(41617),l=c(78966),m=c(86850),n=c(74382),o=c(14509),p=c(29733),q=c(58152),r=c(10230),s=c(61971),t=c(4837),u=c(99411),v=c(21241),w=c(77598),x=c.n(w);function y(a){return x().createHash("sha256").update(JSON.stringify(a)).digest("hex")}function z(a){return"string"==typeof a.parentConversationId?{conversationId:a.parentConversationId}:"string"==typeof a.parent?{path:a.parent}:"string"==typeof a.src?{path:a.src}:null}var A=c(48892),B=c(94896),C=c(79511),D=c(11831),E=c(4012),F=c(42087),G=c(16089),H=c(26474),I=c(35961),J=c(3127),K=c(63629),L=c(68512),M=c(50201),N=c(32372),O=c(41022),P=c(45656),Q=c(43384),R=c(99463),S=c(5626),T=c(70107),U=c(92094),V=c(27471),W=c(57563),X=c(77308);let Y={transcriptAllowed:B.FK,readCwd:a=>(0,G.tX)(a),isDirectory:a=>{try{return e().statSync(a).isDirectory()}catch{return!1}}};var Z=c(3359),$=c(5602);let _=W.en["spawnCard.pinUnavailableFallback"],aa=X.uk["spawnCard.pinUnavailableFallback"],ab="string"==typeof aa?aa:_;function ac(a){let b=a.headers.get("accept-language")?.trim().toLowerCase()??"";return"uk"===b||b.startsWith("uk-")}class ad extends Error{}let ae={registry:p.agentRegistry,resolveHealthySpawnAccount:m.ax,resolveSpawnAccount:(a,b)=>m.lD.resolveSpawn(a,b),resolvePinnedSpawnAdmission:P.jJ,runtimeHostClient:J.sS,publishFilesRevision:L.G,spawnStructuredConversation:P.sh,assertStructuredRuntime:v.x_,defer:a=>(0,j.after)(a),storeImages:a=>(0,N.PF)().putMany(a),adoptPipelineAttemptFromSource:R.F_,pipelineAttemptTargetForSource:R.RO};function af(a,b,c){!b||a.includes(b)||c&&(0,T.hY)(b)!==c||a.push(b)}async function ag(a){let b=a.nextUrl.searchParams.get("project")??"",{cwd:c,cwdExists:d}=function(a,b=Y){if(!a||!b.transcriptAllowed(a))return{cwd:null,cwdExists:!1};let c=b.readCwd(a);return{cwd:c,cwdExists:!!(c&&b.isDirectory(c))}}(a.nextUrl.searchParams.get("src")),e=(await (0,S.CS)()).filter(a=>a.path.endsWith(".jsonl")&&("claude-projects"===a.root||"codex-sessions"===a.root)).filter(a=>!a.path.includes(i().sep+"subagents"+i().sep)).sort((a,c)=>Number(c.project===b)-Number(a.project===b)||c.mtime-a.mtime).slice(0,80),f=c?[c]:[];if(!c)for(let a of(0,U.Xi)(b,10))af(f,a,b);for(let a of e){if(f.length>=10)break;b&&a.project!==b||af(f,(0,G.tX)(a.path,{requireDir:!0}),b)}f.length||f.push(g().homedir());let h=(0,Q.l)();return j.NextResponse.json({dirs:f,cwd:c,cwdExists:d,spawnTransport:h,imageInput:{claude:(0,N.ki)("claude","structured"===h),codex:(0,N.ki)("codex","structured"===h&&(0,t.JL)(null))}})}async function ah(a,b=ae){var c;let d,f,h,m=(0,I.W)(a);if(m)return m;try{d=await a.json()}catch{return j.NextResponse.json({error:"invalid JSON"},{status:400})}let v=(0,r.t3)(d.mcpServers);if(!v.ok)return j.NextResponse.json({error:v.error},{status:400});let w=void 0===d.mcpServers?null:v.value,x=(0,s.jh)(d.plugins);if(!x.ok)return j.NextResponse.json({error:x.error},{status:400});let G=(0,Z.QD)(a,d);if(G)return j.NextResponse.json({error:G},{status:400});let L=(0,Z.s0)(a);if(void 0!==d.allowSubagents&&"boolean"!=typeof d.allowSubagents)return j.NextResponse.json({error:"allowSubagents must be a boolean"},{status:400});let N=(0,u.s8)(d);if(!N.ok)return j.NextResponse.json({error:N.error},{status:400});if(N.value?.role==="reviewer"&&("string"!=typeof d.reviews||!d.reviews.trim()))return j.NextResponse.json({error:"reviewer requires reviews"},{status:400});if(N.value?.role!=="reviewer"&&void 0!==d.reviews)return j.NextResponse.json({error:"reviews requires role: reviewer"},{status:400});if(N.value&&(0,C.n4)(N.value.role)&&!0===d.allowSubagents)return j.NextResponse.json({error:`${N.value.role} launches cannot enable subagents: reviewer and verifier sessions run every check in-session`},{status:400});let R="claude"===d.engine||"codex"===d.engine?d.engine:N.value?.config.engine??null;if(!R)return j.NextResponse.json({error:"engine must be claude or codex"},{status:400});if(void 0!==d.accountId&&"string"!=typeof d.accountId)return j.NextResponse.json({error:"accountId must be a string"},{status:400});if(void 0!==d.clientAttemptId&&("string"!=typeof d.clientAttemptId||!/^[A-Za-z0-9_-]{8,128}$/.test(d.clientAttemptId)))return j.NextResponse.json({error:"clientAttemptId must be 8-128 URL-safe characters"},{status:400});let S=(0,q.BL)(R,{...d,effort:void 0===d.effort?N.value?.config.effort:d.effort});if(S.error)return j.NextResponse.json({error:S.error},{status:400});let T=(0,t.wi)({model:void 0===d.model?N.value?.config.model:d.model});if(T.error)return j.NextResponse.json({error:T.error},{status:400});if(void 0!==d.model&&null!==d.model&&T.model){let a=(0,t.RC)(R,T.model);if("error"in a)return j.NextResponse.json({error:a.error},{status:400})}let U="string"==typeof d.prompt?d.prompt.trim():"",W=N.value?[N.value.scaffold,U].filter(Boolean).join("\n\n"):U,{images:X,error:Y}=(0,V.Fu)(d);if(Y)return j.NextResponse.json({error:Y.error},{status:Y.status});try{f=(0,Q.l)()}catch(a){return j.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}if("structured"===f){try{b.assertStructuredRuntime()}catch(a){return j.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:503})}let a=(0,Q.H)({engine:R,model:T.model,hasImages:X.length>0,fast:S.fast});if(a)return j.NextResponse.json({error:a},{status:409});try{(0,O.h1)(W)}catch(a){return j.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:413})}}let aa=b.registry(),af=null;if(L){let b=(0,Z.X0)(a,d.src,aa);if("error"in b)return j.NextResponse.json({error:b.error},{status:b.status??403});af=b}if(L&&!0===d.allowSubagents&&af?.kind!=="operator")return j.NextResponse.json({error:"allowSubagents requires an authenticated Viewer operator spawn"},{status:403});let ag=null;if(void 0!==d.project&&null!==d.project){if(!(ag="string"==typeof d.project?(0,n.QK)(d.project):null))return j.NextResponse.json({error:"project must be a valid project key"},{status:400});if(L&&af?.kind!=="operator")return j.NextResponse.json({error:"explicit project requires an authenticated Viewer operator spawn"},{status:403})}let ai=null;if(void 0!==d.supersedes&&null!==d.supersedes){if("string"!=typeof d.supersedes||!d.supersedes.trim())return j.NextResponse.json({error:"supersedes must name a conversation id or transcript path"},{status:400});let a=d.supersedes.trim(),b=a.startsWith("conversation_")?aa.conversation(a):aa.conversationForPath(a);if(!b)return j.NextResponse.json({error:"supersedes does not resolve to a known conversation"},{status:404});let c=aa.supersedenceConflict(b.id);if(c)return j.NextResponse.json({error:`supersedes conflicts with the live conversation ${c}`,successorConversationId:c},{status:409});ai=b.id}let aj="string"==typeof d.cwd?d.cwd.trim():"";if(!aj)return j.NextResponse.json({error:"working directory is required"},{status:400});let ak=i().resolve("~"===aj||aj.startsWith("~/")?i().join(g().homedir(),aj.slice(1)):aj);try{h=e().statSync(ak)}catch{return j.NextResponse.json({error:`directory does not exist: ${ak}`},{status:400})}if(!h.isDirectory())return j.NextResponse.json({error:`not a directory: ${ak}`},{status:400});let al=[],am=null;try{let g,h,k,m="string"==typeof d.clientAttemptId?d.clientAttemptId:null,q=m?aa.spawnReceiptForClientAttempt(m):null,t=(0,B.bs)((0,Z.qe)(af,{...d,role:N.value?.role}),aa),u=t.parent,v=t.reviewed?.conversationId??null;if(L&&af?.kind==="agent"&&!u)return j.NextResponse.json({error:Z.HJ},{status:400});let C=af?.kind==="agent"?"string"==typeof d.src&&!!d.src.trim():"string"==typeof d.src&&!!d.src.trim()||"string"==typeof d.parent&&!!d.parent.trim()||void 0!==d.parentConversationId||"string"==typeof d.reviews&&!!d.reviews.trim(),G=u?C?"explicit":"inferred-caller":null,I=u?.conversationId??null,O="string"==typeof d.src&&d.src.trim()?I:null,Q=u?.sessionKey??null,Y=u?.artifactPath??null,$=(0,s.GU)({origin:{kind:af?.kind==="agent"?"agent":"operator"},parentConversationId:I,agentRole:N.value?.role??null}),ae=b.internalGrant?.()??null,ah=ae?.sessionClass===r.Vv?ae:null,aj=ah?[...s.sN]:(0,s.wE)({engine:R,origin:$,requested:x.value}),an=ah?(0,r.c1)(ah.mcpServers):(0,r.Mt)({origin:$,requested:w}),ao=a=>{var b;return b={engine:R,cwd:ak,model:T.model,effort:S.effort,fast:S.fast,accountId:a,role:N.value?.role??null,mcpServers:an,...aj.length?{plugins:aj}:{},...!0===d.allowSubagents?{allowSubagents:!0}:{},...ag?{project:ag}:{},parent:z({parentConversationId:I??void 0}),...v?{reviews:z({parentConversationId:v})}:{},...ai?{supersedes:z({parentConversationId:ai})}:{},prompt:W,images:X.map(a=>{var b;return{mime:a.mime,digest:(b={image:a.base64},y(b))}})},y(b)},ap=O&&b.pipelineAttemptTargetForSource?b.pipelineAttemptTargetForSource(O):null,aq=!ah&&(U.trim()||X.length)?{prompt:U,images:X.length,echo:W}:null,ar=(a,b,c,e=void 0!==d.accountId)=>({engine:R,cwd:ak,transport:f,accountId:a,accountPin:e,parentConversationId:I,parentSource:G,parentSessionKey:Q,parentArtifactPath:Y,role:N.value?.role??null,reviewsConversationId:v,explicitProject:ag,supersedes:ai,supersedesReason:"recovery-spawn",liveChildrenCap:af?.liveChildrenCap,origin:af?.kind==="agent"?{kind:"agent",conversationId:af.conversationId}:{kind:"operator"},launchProfile:b,clientAttemptId:m,requestDigest:c,launchDisplay:aq,memberships:ap&&O?[{kind:"pipeline",containerId:ap.pipelineId,role:ap.role,slot:`adopt:${ap.stageId}:${c.slice(0,24)}`,stageId:ap.stageId,stageOrder:ap.stageOrder,round:null,parentConversationId:O,runtime:{engine:R,model:b.model,effort:b.effort}}]:[]}),as=(0,n.Ui)({cwd:ak,model:T.model,effort:S.effort,fast:S.fast,parentConversationId:I,allowSubagents:!0===d.allowSubagents,mcpServers:an,plugins:aj,...ag?{project:ag}:{}}),at=a=>{let b=d.accountId,c=(a instanceof Error?a.message:String(a)).slice(0,240),e=aa.beginSpawnRequest(ar(b,as,ao(b)));if("conflict"===e.kind)return j.NextResponse.json({error:"spawn attempt conflicts with its original request"},{status:409});"created"===e.kind&&("structured"===f?aa.failStructuredSpawn(e.receipt.launchId,c):aa.failSpawn(e.receipt.launchId,c));let g=aa.readOnlySnapshot().receipts[e.receipt.launchId]??e.receipt;return j.NextResponse.json((0,D.AU)(g,g.artifactPath,{structured:"structured"===f}))};if(q&&void 0!==d.accountId&&q.accountPin&&("failed"===q.state||"conflicted"===q.state))return at(Error(q.error??"the requested account is not available for this launch"));let au="string"==typeof d.accountId?d.accountId:null;try{g=q&&null!==q.accountId&&!(q.accountPin&&au)?b.resolveSpawnAccount(q.engine,q.accountId):await b.resolveHealthySpawnAccount(R,d.accountId)}catch(a){if(void 0===d.accountId)throw a;if("claude"!==R||!au)return at(a);try{let c=b.resolveSpawnAccount(R,au),d=await (b.resolvePinnedSpawnAdmission??P.jJ)(R,c);if("retry-at"!==d.kind&&"admissible"!==d.kind)return at(a);g={...c,admission:d,requestedAdmission:d}}catch{return at(a)}}let av=au&&g.requestedAdmission?.kind==="retry-at"?g.requestedAdmission.retryAt:null,aw=av?Date.parse(av):NaN,ax=Number.isFinite(aw)&&aw>Date.now()?new Date(aw).toISOString():null;ax&&au&&(g=b.resolveSpawnAccount(R,au));let ay=!!(au&&!ax&&g.accountId!==au),az=ao("string"==typeof d.accountId?d.accountId:g.accountId),aA=ax?(0,P.X3)(ac(a)?"uk":"en",ax):null,aB=ay?ac(a)?ab:_:null,aC=(c=g,h=(0,o.lV)(R,ak,{model:T.model,effort:S.effort,fast:S.fast,codexHome:"codex"===R?c.home:null,claudeConfigDir:"claude"===R?c.home:null,claudeProjectsDir:"claude"===R?c.transcriptRoot:null,allowSubagents:!0===d.allowSubagents,mcpServers:an,deferClaudeSpawnPolicy:!0}),k="claude"===R&&"structured"===f?(0,P.eK)(h.launchProfile?.permissionMode,{agentInitiated:L,operatorAuthenticated:af?.kind==="operator",roleSpawn:!!N.value}):h.launchProfile?.permissionMode,{...h,launchProfile:(0,n.Ui)({...h.launchProfile??{},cwd:ak,parentConversationId:I,allowSubagents:!0===d.allowSubagents,mcpServers:an,plugins:aj,permissionMode:k,...aB?{title:aB}:{},...ag?{project:ag}:{}})}),aD=()=>{if("claude"!==R||"tmux"!==f)return;let a=i().basename(aC.transcript??"",".jsonl");(0,l.fg)(g.home)&&(0,E.prepareManagedClaudeSpawnHome)(g.home,ak),(0,E.applyClaudeSpawnPolicy)(g.home,{allowSubagents:!0===d.allowSubagents,baseSettingsPath:(0,l.fg)(g.home)?(0,l.ZK)():null,profileId:a,cwd:ak,mcpServers:an,mcpStatePath:"managed"===g.kind?i().join(g.home,".claude.json"):i().join(i().dirname(g.home),".claude.json")})},aE=ay&&"string"==typeof d.accountId?d.accountId:g.accountId,aF=aa.beginSpawnRequest(ar(aE,aC.launchProfile,az,q?.accountPin??void 0!==d.accountId));if("conflict"===aF.kind)return j.NextResponse.json({error:"spawn attempt conflicts with its original request"},{status:409});"created"===aF.kind&&(am=aF.receipt.launchId);let aG=aF.receipt;if(ax&&aA&&au){let c,d=aF.receipt.queuedPinnedSpawn;if(d)c=d.imageRefs;else try{c=b.storeImages(X)}catch(a){throw new ad(a instanceof Error?a.message:String(a))}aG=aa.queuePinnedSpawn(aF.receipt.launchId,{version:1,retryAt:ax,accountId:au,locale:ac(a)?"uk":"en",spec:aC,prompt:W,imageRefs:c,parentArtifactPath:Y,pipelineSourceConversationId:O},aA)}let aH=(a,b,c)=>{if(!c||a.accountId===b)return;let d=aa.readOnlySnapshot(),e=d.receipts[a.launchId];if(!e?.key||e.artifactPath!==c)return;let f=d.entries[(0,A.pp)(e.key)],g=d.conversations[e.conversationId];f&&g&&(aa.reconcileConversations([{engine:e.engine,path:c,accountId:b,launchProfile:e.launchProfile,turn:{state:g.turn.state,source:g.turn.source,terminalAt:g.turn.terminalAt},expectedTurnObservedAt:g.turn.observedAt,observedAt:new Date().toISOString()}]),aa.upsert({...f,accountId:b}))},aI=async(a,c)=>{if(!O||!b.adoptPipelineAttemptFromSource)return;let d=aa.readOnlySnapshot().receipts[a.launchId]??a;try{await b.adoptPipelineAttemptFromSource(O,{launchId:d.launchId,conversationId:d.conversationId,sessionId:d.key?.sessionId??null,agentPath:c,paneId:d.verifiedHost?.paneId??d.pane?.paneId??null,startedAt:d.createdAt,runtime:{engine:d.engine,model:d.launchProfile.model,effort:d.launchProfile.effort}})}catch(a){console.error("[spawn] pipeline attempt adoption failed",{launchId:d.launchId,conversationId:d.conversationId,sourceConversationId:O,error:a})}},aJ=(a,c,d)=>{b.defer(async()=>{let f;try{f=await b.spawnStructuredConversation({engine:R,receipt:a,spec:aC,account:g,prompt:W,imageRefs:d,registry:aa,client:c}),aH(a,g.accountId,f.path)}catch(b){console.error("[spawn] structured launch failed",{launchId:a.launchId,conversationId:a.conversationId,error:b}),b instanceof J.Hr&&aa.failStructuredSpawn(a.launchId,`structured spawn transport failed: ${b.message}`.slice(0,240));return}if(Y&&f.path)try{(0,H.A6)(f.path,Y),(0,H.OA)()}catch(b){console.error("[spawn] handoff lineage persistence failed",{launchId:a.launchId,conversationId:a.conversationId,childArtifactPath:f.path,parentArtifactPath:Y,error:b})}if(f.path&&await aI(a,f.path),f.path&&e().existsSync(f.path))try{await b.publishFilesRevision?.(c)}catch(b){console.error("[spawn] transcript materialization refresh failed",{launchId:a.launchId,conversationId:a.conversationId,artifactPath:f.path,error:b})}})};if("replay"===aF.kind){let a,c="structured"===aG.transport||null===aG.transport&&!!(aG.key&&aa.readOnlySnapshot().entries[(0,A.pp)(aG.key)]?.structuredHost),d=aG,e=c?b.runtimeHostClient():null;if(e&&!ax){try{let b=await (0,P.reconcileStructuredSpawnReplay)(d.launchId,aa,e);d=b,a=b.initialMessage}catch{}let c=aa.claimStartingStructuredSpawn(d.launchId);if(d=c.receipt,c.claimed){let a;try{a=b.storeImages(X)}catch(a){throw c.receipt.admissionOwner&&aa.releaseStartingStructuredSpawn(d.launchId,c.receipt.admissionOwner),new ad(a instanceof Error?a.message:String(a))}aJ(d,e,a)}}d.artifactPath&&await aI(d,d.artifactPath);let f=(0,D.AU)(d,d.artifactPath,{structured:c,initialMessage:ax?"queued":a});return j.NextResponse.json(f,{status:(0,D.Xl)(f,c)})}if(ax){aD();let a=aG.admissionOwner?aa.releaseSpawnActuation(aG.launchId,aG.admissionOwner).receipt:aG;return j.NextResponse.json((0,D.AU)(a,a.artifactPath,{structured:"structured"===f,initialMessage:"queued"}),{status:202})}if(aD(),"structured"===f){let a,c=b.runtimeHostClient();if(!c)throw Error("structured spawn runtime host is unavailable");try{a=b.storeImages(X)}catch(a){throw new ad(a instanceof Error?a.message:String(a))}return aJ(aF.receipt,c,a),j.NextResponse.json((0,D.AU)(aF.receipt,aF.receipt.artifactPath,{structured:!0}),{status:202})}let aK=(0,V.Am)(W,X);al=aK.imagePaths;let aL=(0,M.Zn)()?b.runtimeHostClient():null,aM=aL?aF.receipt.launchId:null;if(aL&&aM)try{await aL.operation({scope:(0,K.zV)("operation",aM),kind:"spawn.intent",operationId:aM,producerKey:`viewer-spawn:${aM}`,payload:{engine:R,cwd:ak,accountId:g.accountId,parentConversationId:I}})}catch{console.warn("[runtime] spawn bookkeeping unavailable; continuing through the legacy spawn path"),aL=null}let aN=Date.now(),aO=await (b.spawnTmuxAgent??V.Tk)(aC,aK.payload,aF.receipt),aP=await (0,F.s)({engine:R,knownTranscript:aC.transcript??null,panePid:aO.panePid??null,cwd:ak,startedAtMs:aN,codexSessionsDir:"codex"===R?g.transcriptRoot:null}),aQ=aP?(0,A.sz)(R,aP):null;if(!aO.host||!await (0,V.PB)(aO.host)){(0,p.agentRegistry)().invalidateSpawnHost(aF.receipt.launchId,"spawn host disappeared before API confirmation");let a=(0,p.agentRegistry)().readOnlySnapshot().receipts[aF.receipt.launchId];return j.NextResponse.json((0,D.AU)(a,aP))}if(!aP||!aQ||!aO.receipt){let a=(0,p.agentRegistry)().markSpawnPathPending(aF.receipt.launchId);return j.NextResponse.json((0,D.AU)(a,null))}let aR=(0,p.agentRegistry)().settleSpawn(aO.receipt.launchId,{key:aQ,artifactPath:aP,cwd:ak,accountId:g.accountId,status:"starting",host:aO.host,claimEpoch:0,claimOwner:null,pendingAction:"spawn"});if("conflict"===aR.kind)return j.NextResponse.json((0,D.AU)(aR.receipt));if(aH(aR.receipt,g.accountId,aP),await aI(aR.receipt,aP),aL&&aM)try{await aL.append({scope:(0,K.zV)("edge",aM),kind:"edge.created",producerKey:`viewer-spawn-edge:${aM}`,payload:{edge:"viewer_spawn",childConversationId:aR.conversation.id,parentConversationId:I,operationId:aM}})}catch{console.warn("[runtime] spawned agent is healthy; lineage bookkeeping will reconcile later")}if(Y&&(aP&&(0,H.A6)(aP,Y),(0,H.OA)()),!await (0,V.PB)(aO.host)){(0,p.agentRegistry)().invalidateSpawnHost(aF.receipt.launchId,"spawn host disappeared before API response");let a=(0,p.agentRegistry)().readOnlySnapshot().receipts[aF.receipt.launchId];return j.NextResponse.json((0,D.AU)(a,aP))}return j.NextResponse.json((0,D.AU)(aR.receipt,aP))}catch(c){let a=am?aa.readOnlySnapshot().receipts[am]:null;if(a&&null!==a.pane||(a&&aa.failSpawn(a.launchId,"spawn failed before pane binding"),(0,V.IJ)(al)),c instanceof B.eX)return j.NextResponse.json({error:c.message},{status:c.status});if(c instanceof C.Jc)return j.NextResponse.json((0,D.UH)(c),{status:403});if(c instanceof p.fr)return j.NextResponse.json({error:c.message},{status:429});if(c instanceof ad)return j.NextResponse.json({error:c.message},{status:503});if(c instanceof k.m1||c instanceof l.UV)return j.NextResponse.json({error:c.message},{status:400});let b=c instanceof $.KP?j.NextResponse.json({error:c.message,retrySafe:!0},{status:503}):null;if(b)return b;if(a?.pane){("prompt-delivered"===a.state||"host-verified"===a.state)&&aa.markSpawnPathPending(a.launchId);let b=aa.readOnlySnapshot().receipts[a.launchId];if(b)return j.NextResponse.json((0,D.AU)(b,b.artifactPath))}return j.NextResponse.json({error:c instanceof Error?c.message:String(c)},{status:500})}}},92094:(a,b,c)=>{c.d(b,{Qf:()=>r,Xi:()=>q});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91724),i=c(13117),j=c(52509),k=c(70107);let l=["project-catalog.json","worktree-map.json"],m=(0,j.E)("project-directories-v2");function n(a){try{let b=JSON.parse(e().readFileSync(a,"utf8"));return b&&"object"==typeof b&&!Array.isArray(b)?b:null}catch{return null}}function o(a,b,c){if(!(!a||"object"!=typeof a||Array.isArray(a)))for(let d of b){let b=a[d];"string"==typeof b&&b.trim()&&c.add(b)}}function p(){let a=(0,h.Pn)(),b=function(a){let b=l.map(b=>{let c=g().join(a,b);try{let a=e().statSync(c);return`${b}:${a.dev}:${a.ino}:${a.size}:${a.mtimeMs}:${a.ctimeMs}`}catch{return`${b}:missing`}}),c=g().join(a,"state.sqlite");for(let[d,f]of[["flows","flows.json"],["pipelines","pipelines.json"],["workflows","workflows.json"]]){let h=(0,i.jY)(c,d);if(null!==h)b.push(`${d}:sqlite:${h}`);else{let c=g().join(a,f);try{let a=e().statSync(c);b.push(`${f}:${a.dev}:${a.ino}:${a.size}:${a.mtimeMs}:${a.ctimeMs}`)}catch{b.push(`${f}:missing`)}}}return b.join("|")}(a),c=m.get(a);if(c&&c.expiresAt>Date.now()&&c.stateIdentity===b)return c.directories;let d=[],f=new Set;for(let b of function(a){let b=new Set,c=n(g().join(a,"project-catalog.json"))?.files;if(c&&"object"==typeof c&&!Array.isArray(c))for(let a of Object.values(c))o(a,["cwd","projectRoot"],b);let d=g().join(a,"state.sqlite");for(let[c,e,f]of[["flows.json","flows",["cwd"]],["pipelines.json","pipelines",["repoDir","worktreeDir"]],["workflows.json","workflows",["repoDir","worktreeDir"]]]){let h=(0,i.Vx)(d,e)??n(g().join(a,c))?.[e];if(Array.isArray(h))for(let a of h)o(a,f,b)}let e=n(g().join(a,"worktree-map.json"));if(e)for(let[a,c]of Object.entries(e))b.add(a),o(c,["repo"],b);return[...b]}(a)){try{if(!e().statSync(b).isDirectory())continue}catch{continue}let a=(0,k.hY)(b),c=(0,k.D$)(b)??(a?.startsWith("dir-")?b:void 0),g=a?`${a}\0${b}`:"";!a||!c||f.has(g)||(f.add(g),d.push({cwd:b,project:a,projectRoot:c}))}return m.set(a,{directories:d,expiresAt:Date.now()+1e4,stateIdentity:b}),d}function q(a,b=10){return a?p().filter(b=>b.project===a).slice(0,b).map(a=>a.cwd):[]}function r(a){let b=new Set([...a].filter(Boolean)),c={};for(let a of p())b.has(a.project)&&!c[a.project]&&(c[a.project]=a.projectRoot);return c}}};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";exports.id=7733,exports.ids=[7733],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:()=>E,claudeSpawnPolicyPaths:()=>w,fenceViewerSpawnPrompt:()=>F,prepareManagedClaudeSpawnHome:()=>D});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,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}${y(c)}`}}function x(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function y(a){return"'"+a.replace(/'/g,"'\\''")+"'"}function z(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 A(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=x(b);if(!c)throw Error(`Claude settings must contain a JSON object: ${a}`);return c}function B(a){return Array.isArray(a)?a.filter(a=>"string"==typeof a):[]}function C(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)?x(A(d).mcpServers)??{}:{}}function D(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=x(a);if(!b)throw Error(`Claude state must contain a JSON object: ${c}`);d=b}let f=void 0===d.projects?{}:x(d.projects);if(!f)throw Error(`Claude state projects must contain a JSON object: ${c}`);let h=void 0===f[b]?{}:x(f[b]);if(!h)throw Error(`Claude project state must contain a JSON object: ${b}`);z(c,JSON.stringify({...d,hasCompletedOnboarding:!0,bypassPermissionsModeAccepted:!0,projects:{...f,[b]:{...h,hasTrustDialogAccepted:!0,hasCompletedProjectOnboarding:!0}}},null,2)+"\n",384)}function E(a,b={}){let c=g().join(a,"settings.json"),d=w(a,b.profileId??i().randomUUID()),f=e().existsSync(c),h=f?A(c):b.baseSettingsPath?A(b.baseSettingsPath):{},k=f?{}:h;if(!b.allowSubagents&&!0===h.disableAllHooks)throw Error("Claude settings disableAllHooks prevents the Viewer spawn policy from enforcing native sub-agent denial");if(!b.allowSubagents&&!0===h.allowManagedHooksOnly)throw Error("Claude settings allowManagedHooksOnly prevents the Viewer spawn policy from enforcing native sub-agent denial");let m=void 0===h.hooks?{}:x(h.hooks);if(!m)throw Error("Claude settings hooks must contain a JSON object");let o=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=x(a);if(!b||!Array.isArray(b.hooks))return[a];let c=b.hooks.filter(a=>{var b;return!("string"==typeof(b=x(a)?.command)&&b.startsWith(l))});return c.length?[{...b,hooks:c}]:[]})}(m.PreToolUse);if(!b.allowSubagents){let a=`#!/bin/sh
|
|
2
|
+
printf '%s\\n' ${y(t)} >&2
|
|
3
|
+
exit 2
|
|
4
|
+
`;z(d.hookPath,a,448),o.push({matcher:p,hooks:[{type:"command",command:d.command}]})}let q=b.allowSubagents?k:{...k,disableAllHooks:!1,allowManagedHooksOnly:!1},r=function(a,b,c){if(!e().existsSync(a))return{};let d=A(a),f=x(d.mcpServers)??{},g=x(d.projects),h=b&&g?x(g[b]):null,i=C(b),k=x(h?.mcpServers)??{},l={...f,...i,...k};return Object.fromEntries((0,j.c1)(c).flatMap(a=>{let b=x(l[a]);return b?[[a,b]]:[]}))}(b.mcpStatePath??g().join(a,".claude.json"),b.cwd,b.mcpServers),s=new Set(Object.keys(r)),u=Object.keys(C(b.cwd)).filter(a=>!s.has(a)),v=Object.fromEntries(Object.entries(q).filter(([a])=>"mcpServers"!==a)),D=Object.fromEntries(n.flatMap(a=>void 0===h[a]?[]:[[a,h[a]]]));void 0!==h.enabledMcpjsonServers&&(D.enabledMcpjsonServers=B(h.enabledMcpjsonServers).filter(a=>s.has(a)));let F=[...new Set([...B(h.disabledMcpjsonServers),...u])];return F.length>0&&(D.disabledMcpjsonServers=F),z(d.settingsPath,JSON.stringify({...v,...D,hooks:{...m,PreToolUse:o}},null,2)+"\n",384),z(d.mcpConfigPath,JSON.stringify({mcpServers:r},null,2)+"\n",384),d}function F(a,b){return"codex"!==a?b:[b.trim(),u].filter(Boolean).join("\n\n")}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=7868,exports.ids=[7868],exports.modules={37868:(a,b,c)=>{c.r(b),c.d(b,{AccountMigrationController:()=>a_,accountControllerScan:()=>aY,createMigrationDeliveryPort:()=>aL,reconcileAccountMigrationCycle:()=>aU,startAccountMigrationController:()=>a1,syncCompatibilityRouting:()=>aV});var d=c(68465),e=c(82940),f=c(2952),g=c(63685),h=c(12904),i=c(44874),j=c(43237),k=c(31421),l=c(73024),m=c.n(l),n=c(76760),o=c.n(n),p=c(98817),q=c(59397),r=c(86519),s=c(58444),t=c(20208),u=c(89508),v=c(77598),w=c.n(v),x=c(65972),y=c(6430),z=c(27146),A=c(5082),B=c(23260),C=c(82093),D=c(52e3),E=c(93994),F=c(62490),G=c(75211),H=c(227),I=c(34570),J=c(53740);let K={"flow-worker":1800,"headless-reviewer":300,probe:3600,"duplicate-resume":0,"dead-transcript":1800};function L(a,b){return Object.values(a.conversations).find(a=>a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b))??null}function M(a){let b=Number(a.slice(1));return Number.isInteger(b)?b:-1}function N(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function O(a,b){if(!b)return null;let c=Date.parse(b);return Number.isFinite(c)?Math.max(0,Math.floor((a-c)/1e3)):null}function P(a){let b=new Map(a.files.map(a=>[a.path,a])),c=function(a){let b=new Map;for(let c of a){if(!c.primaryPath)continue;let a=`${c.engine}:${c.primaryPath}`;b.set(a,[...b.get(a)??[],c])}return b}(a.hosts),d=[...a.hosts.map(d=>{var e,f,g,h;let i,j=d.primaryPath,k=j?b.get(j):void 0,l=j?L(a.registry,j):null,m=j?function(a,b){let c=Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile;if(c)return c;let d=L(a,b);return d?.generations.find(a=>a.path===b)?.launchProfile??d?.generations.at(-1)?.launchProfile??null}(a.registry,j):null,n=j?function(a,b){let c=[];for(let[d,e]of a.entries()){e.implementerPath===b&&c.push({flow:e,round:null,role:"implementer",order:d});let a=e.rounds.find(a=>a.reviewerPath===b);a&&c.push({flow:e,round:a,role:"reviewer",order:d})}let d=a=>!["approved","done_comment","closed"].includes(a.state),e=a=>Date.parse(a.createdAt)||0,f=c.sort((a,b)=>Number(d(b.flow))-Number(d(a.flow))||e(b.flow)-e(a.flow)||b.order-a.order)[0];return f?{flow:f.flow,round:f.round,role:f.role}:null}(a.flows,j):null,o=j?c.get(`${d.engine}:${j}`)??[]:[],p=o.length>1?[...o].sort((a,b)=>M(b.paneId)-M(a.paneId))[0]:null,q=null,r=null,s=[];if(o.length>1)q="duplicate-resume",r=0,p?.paneId===d.paneId&&s.push("newest-duplicate");else if(n)q="flow-worker",r=O(a.now,(e=n.flow).closedAt??e.rounds.at(-1)?.reviewedAt??null),new Set(["approved","closed"]).has(n.flow.state)||s.push("flow-in-progress"),a.mergedFlowIds.has(n.flow.id)||s.push("flow-not-merged");else{let c;j&&a.viewerOwnedPaths.has(j)&&(c=[m?.title,m?.project,m?.goal?.objective,d.windowName,...d.agentArgv].filter(Boolean).join(" "),/\b(?:probe|soak)\b/i.test(c))?(q="probe",r=j?(f=a.now,(g=b.get(j))?Math.max(0,Math.floor(f/1e3-g.mtime)):null):null):j&&a.missingTranscriptPaths.has(j)&&(q="dead-transcript",r=O(a.now,a.firstObservedAt[N(d)]))}j&&a.userAuthoredPaths.has(j)&&s.unshift("user-authored-message"),j&&a.authorshipUnverifiedPaths.has(j)&&s.unshift("authorship-unverified"),(k?.activity==="live"||k?.activity==="stalled"||k?.pendingQuestion||k?.waitingInput||l&&("busy"===l.turn.state||"unknown"===l.turn.state||(h=a.registry,i=l.turn.observedAt?Date.parse(l.turn.observedAt):NaN,Object.values(h.heldDeliveries).some(a=>{if(a.conversationId!==l.id)return!1;if("held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state)return!0;if("delivered"!==a.state||!a.deliveredAt)return!1;let b=Date.parse(a.deliveredAt);return Number.isFinite(b)&&(!Number.isFinite(i)||b>=i)}))))&&s.unshift("mid-turn"),l?.migration&&!["committed","rolled-back"].includes(l.migration.phase)&&s.unshift("migration-in-progress"),j&&a.manualPaths.has(j)&&s.unshift("manual-board-placement");let t=q?K[q]:null;q?null===r?s.push("observation-pending"):null!==t&&r<t&&s.push("idle-ttl"):s.push("unclassified");let u=null!==q&&0===s.length;return{targetKind:"tmux",paneId:d.paneId,panePid:d.panePid,agentPid:d.agentPid,processIdentity:d.agentIdentity,tmuxEvidence:a.tmuxEvidenceByHost?.get(N(d))??null,flowId:n?.flow.id??null,round:n?.round?.n??null,path:j,conversationId:l?.id??null,class:q,idleSeconds:r,ttlSeconds:t,protectedReasons:s,eligible:u,action:u&&!a.enabled?"dry-run":"retained"}}),...a.reviewerProcesses.map(b=>{let c=a.flows.find(a=>a.id===b.flowId),d=c?.rounds.find(a=>a.n===b.round)??null,e=d?function(a,b){if(!b.error)return O(a,b.reviewedAt);let c=[b.reviewedAt,b.relayedAt,b.relayStartedAt,b.spawnStartedAt,b.startedAt].map(a=>a?Date.parse(a):NaN).filter(Number.isFinite).sort((a,b)=>b-a)[0];return O(a,b.terminalAt??(void 0===c?null:new Date(c).toISOString()))}(a.now,d):null,f=[];c&&d&&"headless"===c.reviewerMode?d.verdict||d.error||f.push("review-verdict-pending"):f.push("unclassified"),null===e?f.push("observation-pending"):e<K["headless-reviewer"]&&f.push("idle-ttl");let g=void 0!==c&&null!==d&&"headless"===c.reviewerMode&&0===f.length;return{targetKind:"process",paneId:null,panePid:null,agentPid:b.pid,processIdentity:b.identity,tmuxEvidence:null,flowId:b.flowId,round:b.round,path:b.path,conversationId:null,class:"headless-reviewer",idleSeconds:e,ttlSeconds:K["headless-reviewer"],protectedReasons:f,eligible:g,action:g&&!a.enabled?"dry-run":"retained"}})];return{generatedAt:new Date(a.now).toISOString(),mode:a.enabled?"active":"dry-run",configFlag:"LLV_REAPER_ENABLED",eligibleCount:d.filter(a=>a.eligible).length,agents:d}}async function Q(a,b){if("dry-run"===a.mode)return a;for(let c of a.agents){if(!c.eligible||null===c.class)continue;let a=!1;try{a=await b.actuate(c)}catch{a=!1}c.action=a?"reaped":"kill-failed",b.journal({at:new Date().toISOString(),targetKind:c.targetKind,paneId:c.paneId,agentPid:c.agentPid,path:c.path,class:c.class,reason:"idle-ttl-exceeded",outcome:a?"reaped":"kill-failed"})}return a}let R=()=>(0,z.BQ)("reaper-state.json");function S(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function T(a,b){m().mkdirSync(o().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${w().randomUUID()}.tmp`;m().writeFileSync(c,JSON.stringify(b,null,2)+"\n",{encoding:"utf8",mode:384}),m().renameSync(c,a)}function U(a){let b=(0,k.spawnSync)("git",["status","--porcelain=v1","--untracked-files=all"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});return 0!==b.status?null:0===b.stdout.trim().length}async function V(a,b,c){return new Promise(d=>{let e=setTimeout(()=>d(c),b);a.then(a=>{clearTimeout(e),d(a)},()=>{clearTimeout(e),d(c)})})}async function W(a,b,c){let d=0,e=async()=>{for(;d<a.length;){let b=d;d+=1,await c(a[b])}};await Promise.all(Array.from({length:Math.min(b,a.length)},e))}function X(a){return JSON.stringify(Object.fromEntries(Object.entries(a).filter(([a])=>"mergeEvidence"!==a)))}async function Y(a,b={}){let c=(b.now??Date.now)(),d=new Set,e=new Map(a.map(a=>[a.id,X(a)])),f=new Set,g=a=>{f.add(a.id)},h=b.mergeProbeTimeoutMs??5e3,i=Math.max(1,b.mergeProbeConcurrency??4);return await W(a,i,async a=>{var e;let f,i=a.mergeEvidence??null,j=(b.checkoutClean??U)(a);if(!1===j||null===j&&m().existsSync(a.cwd)){(i?.mergedAt||i?.source)&&(i.mergedAt=null,i.checkedAt=null,i.source=null,g(a));return}let l=(e=i,f=[...a.rounds].reverse().find(a=>"APPROVE"===a.verdict),f?.reviewHeadSha?f.reviewHeadSha:e?.source==="github-pr"&&e.mergedAt?e.headSha:null);if(!l)return;let n=(b.resolveMergeIdentity??A.NN)(a.cwd);if(!n&&m().existsSync(a.cwd)){(i?.mergedAt||i?.source)&&(i.mergedAt=null,i.checkedAt=null,i.source=null,g(a));return}if(n){if(n.headSha!==l){(i?.mergedAt||i?.source)&&(i.mergedAt=null,i.checkedAt=null,i.source=null,g(a));return}i&&i.repository===n.repository&&i.headRef===n.headRef&&i.headSha===l||(a.mergeEvidence=i={...n,headSha:l,prNumber:null,mergedAt:null,checkedAt:null,source:null},g(a))}else i?.headSha!==l&&(a.mergeEvidence=i=i?{...i,headSha:l,prNumber:null,mergedAt:null,checkedAt:null,source:null}:null,g(a));if(i?.mergedAt)return void d.add(a.id);let o=i?.checkedAt?Date.parse(i.checkedAt):NaN;if(Number.isFinite(o)&&c-o<3e5)return;let p=null;if(i?.repository&&i.headRef){let d=b.probePullRequest?Promise.resolve(b.probePullRequest(i)):function(a,b=5e3){if(!a.repository||!a.headRef)return Promise.resolve(null);let c=a.prNumber?["pr","view",String(a.prNumber),"--repo",a.repository,"--json","number,mergedAt,headRefOid"]:["pr","list","--repo",a.repository,"--head",a.headRef,"--state","all","--json","number,mergedAt,headRefOid","--limit","1"];return new Promise(d=>{let e=(0,k.spawn)("gh",c,{stdio:["ignore","pipe","ignore"]}),f="",g=!1,h=a=>{g||(g=!0,clearTimeout(i),d(a))},i=setTimeout(()=>{e.kill("SIGKILL"),h(null)},b);e.stdout.setEncoding("utf8"),e.stdout.on("data",a=>{f.length<=1048576&&(f+=a)}),e.on("error",()=>h(null)),e.on("close",b=>{if(0!==b||f.length>1048576)return h(null);try{let b=JSON.parse(f),c=Array.isArray(b)?b[0]:b;if(!c||!Number.isInteger(c.number))return h(null);let d="string"==typeof c.mergedAt&&c.mergedAt?c.mergedAt:null,e="string"==typeof c.headRefOid&&c.headRefOid?c.headRefOid:null;if(d&&(!a.headSha||e!==a.headSha))return h(null);h({number:c.number,mergedAt:d,headRefOid:e})}catch{h(null)}})})}(i,h),e=await V(d,h,null);e?.mergedAt&&e.headRefOid===i.headSha?p={...i,prNumber:e.number,mergedAt:e.mergedAt,headSha:e.headRefOid??i.headSha,checkedAt:new Date(c).toISOString(),source:"github-pr"}:(e&&(i.prNumber=e.number),i.checkedAt=new Date(c).toISOString(),g(a))}!p&&(b.localBranchMerged??function(a,b){if(!0!==U(a))return!1;let c=(0,k.spawnSync)("git",["rev-parse","HEAD"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});if(0!==c.status||c.stdout.trim()!==b)return!1;for(let c of["origin/main","origin/master","main","master"])if(0===(0,k.spawnSync)("git",["merge-base","--is-ancestor",b,c],{cwd:a.cwd,stdio:"ignore",timeout:2e3}).status)return!0;return!1})(a,l)&&(p={repository:i?.repository??null,headRef:i?.headRef??null,headSha:l,prNumber:i?.prNumber??null,mergedAt:new Date(c).toISOString(),checkedAt:new Date(c).toISOString(),source:"git-ancestor"}),p&&(a.mergeEvidence=p,d.add(a.id),g(a))}),!function(a,b,c,d){if(0===b.size||d.loadFlows&&!d.saveFlows)return;let e=d.loadFlows?d.loadFlows():d.saveFlows?a:(0,p.loadFlows)(),f=!1;for(let d of a){if(!b.has(d.id))continue;let a=e.find(a=>a.id===d.id);if(a&&X(a)===c.get(d.id)){var g;a.mergeEvidence=(g=d.mergeEvidence)?{...g}:null,f=!0}}f&&(d.saveFlows??p.saveFlows)(e)}(a,f,e,b),d}function Z(a,b){return Object.values(a.receipts).some(a=>"launch"===a.purpose&&a.artifactPath===b&&"worker"===a.launchProfile.role&&"completed"===a.state)}async function $(a,b,c,d,e,f,g){let h=new Set(Object.keys(f)),i=new Set,k=new Map,l=new Map,n=new Map;await (0,j.pV)(d,a=>{l.set(a.path,a)}),await (0,j.pV)(b,a=>{a.primaryPath&&n.set(a.primaryPath,a.engine)}),await (0,j.pV)(d,a=>{if("claude"!==a.engine&&"codex"!==a.engine||"live"===a.activity||n.has(a.path))return;let b=g[a.path];void 0!==b&&b>=a.mtime||n.set(a.path,a.engine)});let p={remaining:0x2000000};return await (0,j.pV)([...n],async([b,d])=>{var f;if(h.has(b)||i.has(b)||e.has(b))return;let g=+!!Z(a,b)+function(a,b){let c=0;for(let d of a)d.kickoffDelivery?.path===b&&(c+=1),c+=d.rounds.filter(a=>a.relayDelivery?.path===b).length;return c}(c,b)+function(a,b){for(let c of a)if("headless"===c.reviewerMode){for(let a of c.rounds)if(a.reviewerPath===b&&a.sessionId&&o().basename(b).includes(a.sessionId))return 1}return 0}(c,b)+((f=l.get(b))&&("claude-projects"===f.root&&"subagent"===f.kind||"codex-sessions"===f.root&&"codex"===f.engine&&(0,H.ET)(f.path,f.size))?1:0),j=null;try{j=m().statSync(b).mtimeMs/1e3}catch{i.add(b);return}let n=await (0,I.vK)(b,d,g+1,{resume:!0,maxBytes:4194304,budget:p});n.count>g?h.add(b):n.complete?k.set(b,j):i.add(b)}),{userAuthoredPaths:h,unverifiedPaths:i,verifiedCleanAt:k}}async function _(a){let b=await (0,r.CS)();return await (0,B.VB)(a,b),b}function aa(a,b=a=>D.B.processIdentity(a)){return{kind:"tmux",endpoint:(0,J.WH)(),server:{pid:a.tmuxServerPid,startIdentity:b(a.tmuxServerPid)},paneId:a.paneId,panePid:{pid:a.panePid,startIdentity:b(a.panePid)},windowName:a.windowName??"",agent:{pid:a.agentPid,startIdentity:a.agentIdentity},argv:a.agentArgv}}function ab(a){let b=(0,z.BQ)("reaper-journal.ndjson");m().mkdirSync(o().dirname(b),{recursive:!0,mode:448});try{m().statSync(b).size>4194304&&m().renameSync(b,`${b}.1`)}catch{}m().appendFileSync(b,JSON.stringify(a)+"\n",{encoding:"utf8",mode:384})}async function ac(a,b,c,d,e,f={}){let g=(f.loadFlows??p.loadFlows)(),h=f.processIdentity??(a=>D.B.processIdentity(a)),i=await Y(g,f),j=a.readOnlySnapshot(),k=new Set(b.flatMap(a=>a.primaryPath&&!m().existsSync(a.primaryPath)?[a.primaryPath]:[])),l=await $(j,b,g,c,k,d.userAuthoredPaths,d.scannedAt),n=!1;for(let a of l.userAuthoredPaths)d.userAuthoredPaths[a]||(d.userAuthoredPaths[a]=!0,n=!0);for(let[a,b]of l.verifiedCleanAt)d.scannedAt[a]!==b&&(d.scannedAt[a]=b,n=!0);n&&T(R(),d);let o=new Set([...l.userAuthoredPaths,...b.flatMap(a=>a.primaryPath&&d.userAuthoredPaths[a.primaryPath]?[a.primaryPath]:[])]);return{now:e,registry:j,hosts:b,tmuxEvidenceByHost:new Map(b.map(a=>[S(a),aa(a,h)])),reviewerProcesses:function(a,b){let c=b.pidAlive??(a=>D.B.pidAlive(a)),d=b.processIdentity??(a=>D.B.processIdentity(a)),e=[];for(let b of a)if("headless"===b.reviewerMode)for(let a of b.rounds){let f=a.reviewerPid??null,g=a.reviewerIdentity??null;f&&g&&c(f)&&d(f)===g&&e.push({flowId:b.id,round:a.n,pid:f,identity:g,path:a.reviewerPath})}return e}(g,f),viewerOwnedPaths:new Set(b.flatMap(a=>a.primaryPath&&Z(j,a.primaryPath)?[a.primaryPath]:[])),authorshipUnverifiedPaths:l.unverifiedPaths,files:c,flows:g,manualPaths:function(a,b,c){let d=new Map(c.map(a=>[a.path,a])),e=new Set,f=new Map;for(let c of b){let b=c.primaryPath;if(!b)continue;let g=d.get(b)?.project||function(a,b){return Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile??Object.values(a.conversations).flatMap(a=>a.generations).find(a=>a.path===b)?.launchProfile??null}(a,b)?.project;if(g)try{let a=f.get(g);a||(a=new Set((0,y.C9)(g).explicitManual??[]),f.set(g,a)),a.has(b)&&e.add(b)}catch{e.add(b)}}return e}(j,b,c),userAuthoredPaths:o,missingTranscriptPaths:k,mergedFlowIds:i,firstObservedAt:d.firstObservedAt,enabled:"1"===process.env.LLV_REAPER_ENABLED}}function ad(a,b){try{process.kill(-a,b)}catch{process.kill(a,b)}}async function ae(a,b={}){let c={pidAlive:a=>D.B.pidAlive(a),processIdentity:a=>D.B.processIdentity(a),signal:ad,sleep:a=>new Promise(b=>setTimeout(b,a)),maxVerifyAttempts:20,...b},d=()=>!c.pidAlive(a.pid)||c.processIdentity(a.pid)!==a.identity;if(d())return!1;for(let b of["SIGTERM","SIGKILL"]){try{c.signal(a.pid,b)}catch{if(d())return!0;break}for(let a=0;a<c.maxVerifyAttempts;a+=1){if(d())return!0;a+1<c.maxVerifyAttempts&&await c.sleep(25)}}return!1}function af(a,b){return a.kind===b.kind&&a.endpoint===b.endpoint&&a.server.pid===b.server.pid&&a.server.startIdentity===b.server.startIdentity&&a.paneId===b.paneId&&a.panePid.pid===b.panePid.pid&&a.panePid.startIdentity===b.panePid.startIdentity&&a.windowName===b.windowName&&a.agent.pid===b.agent.pid&&a.agent.startIdentity===b.agent.startIdentity&&a.argv.length===b.argv.length&&a.argv.every((a,c)=>a===b.argv[c])}function ag(a,b,c){return"tmux"===b.targetKind&&null!==b.tmuxEvidence&&af(aa(a,c),b.tmuxEvidence)&&a.primaryPath===b.path}function ah(a,b){return b?JSON.stringify(Object.values(a.heldDeliveries).filter(a=>a.conversationId===b).sort((a,b)=>a.id.localeCompare(b.id))):""}async function ai(a,b,c,d,e={}){if("process"===d.targetKind){if(!d.flowId||null===d.round||!d.processIdentity)return!1;let f=P(await ac(a,[],b,c,(e.now??Date.now)(),e)).agents.find(a=>"process"===a.targetKind&&a.flowId===d.flowId&&a.round===d.round&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity);return!!f?.eligible&&(e.killProcess??ae)({pid:d.agentPid,identity:d.processIdentity})}let f=d.paneId,g=d.tmuxEvidence;if(null===f||!g||null===g.server.startIdentity||null===g.panePid.startIdentity||null===g.agent.startIdentity)return!1;let h=e.readHosts??i.oe,j=e.kill??J.B$,k=e.now??Date.now,l=e.processIdentity??(a=>D.B.processIdentity(a)),m=(await h(!0)).hosts.find(a=>ag(a,d,l));if(!m?.primaryPath)return!1;let n=Object.values(a.readOnlySnapshot().entries).find(a=>a.artifactPath===d.path);if(!n)return!1;let o={pid:process.pid,startIdentity:D.B.processIdentity(process.pid)};return a.withOperationLock(n.key,o,async()=>{let b=`reaper:${w().randomUUID()}`;try{a.claim(n.key,b);let f=await h(!0);if(!f.hosts.find(a=>ag(a,d,l)))return!1;let i=await (e.refreshLifecycle??_)(a),m=await ac(a,f.hosts,i,c,k(),e),o=P(m).agents.find(a=>"tmux"===a.targetKind&&a.paneId===d.paneId&&a.panePid===d.panePid&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity&&a.path===d.path&&null!==a.tmuxEvidence&&null!==d.tmuxEvidence&&af(a.tmuxEvidence,d.tmuxEvidence));if(!o?.eligible||ah(a.readOnlySnapshot(),o.conversationId)!==ah(m.registry,o.conversationId))return!1;let p=await j(g),q=a.readOnlySnapshot().entries[`${n.key.engine}:${n.key.sessionId}`]?.host;return p&&q&&af(q,g)&&a.markUnhosted(n.key),p}finally{a.releaseClaim(n.key,b)}})}async function aj(a){let b=a.registry??(0,h.agentRegistry)(),c=a.now??Date.now();try{!function(a,b=Date.now(),c={},d=[]){let e=a.readOnlySnapshot(),f=(0,x.AM)({...c,now:()=>b}),g=new Set(d.flatMap(a=>(a.primaryPath?[a.primaryPath,...a.claimedPaths]:a.claimedPaths).map(b=>`${a.engine}:${b}`))),h=new Set;for(let d of(0,x.vZ)(e,{...c,now:()=>b}))"failed"===a.recordDeliveryOutcome(d,"failed","delivery-uncertain abandoned: owning migration settled with no live host or receipt (#652)").state&&h.add(d);for(let c of Object.values(e.migrationIntents)){let d=Object.values(e.conversations).filter(a=>a.migration?.intentId===c.id),i=function(a,b){let c=new Set(Object.values(a.conversations).filter(a=>a.migration?.intentId===b).map(a=>a.id));return Object.values(a.heldDeliveries).filter(a=>c.has(a.conversationId)&&["held","assigned","delivery-uncertain"].includes(a.state)).map(a=>a.id)}(e,c.id),j=new Set;for(let a of d)a.migration?.phase==="rolled-back"&&j.add(a.id);let k=i.filter(b=>{let d=e.heldDeliveries[b];return!(d&&j.has(d.conversationId)&&a.terminalizeRolledBackMigrationDelivery(b,c.id,C.Mi))||(h.add(b),!1)});if("draining"!==c.state){for(let b of j)a.clearRolledBackConversationMigration(b,c.id);continue}let l=new Set(k.map(a=>e.heldDeliveries[a]?.conversationId).filter(a=>!!a)),m=(0,C.AY)(e,c,b);if(!m)for(let b of d){if(b.migration?.phase!=="requested"||!l.has(b.id)||function(a,b,c,d){let e=b.migration;if(!e)return!1;let f=b.generations.find(a=>a.id===e.sourceGenerationId);if(!f)return!1;let g=`${b.engine}:${f.path}`;return!!(d.has(g)||(0,x.eW)(f.host?.tmuxHost?.agent,c)||Object.values(a.entries).some(a=>a.key.engine===b.engine&&a.artifactPath===f.path&&(0,x.dw)(a,c)))||Object.values(a.receipts).some(d=>d.engine===b.engine&&d.conversationId===b.id&&(0,x.LB)(a,d,c))}(e,b,f,g))continue;let c=`delivery cancelled because source conversation ${b.id} has no live owner; send again to authorize a fresh delivery`;for(let d of k)e.heldDeliveries[d]?.conversationId===b.id&&"failed"===a.terminalizeHeldDelivery(d,c).state&&h.add(d);a.rollbackConversationMigration(b.id,b.migration.revision),k=k.filter(a=>e.heldDeliveries[a]?.conversationId!==b.id)}if(!m)continue;let n=`delivery cancelled because its owning account migration made no progress for ${C.fz}ms; send again to authorize a fresh delivery`;a.setMigrationIntentState(c.id,"stopped",c.revision,n);let o=a.readOnlySnapshot();for(let a of k)o.heldDeliveries[a]?.state==="failed"&&h.add(a)}[...h]}(b,c,{},a.hosts)}catch(a){console.error("[reaper] stale undeliverable held-delivery convergence failed",a)}try{b.terminalizeFailedSpawnDeliveries()}catch(a){console.error("[reaper] failed-spawn held-delivery convergence failed",a)}try{(0,F.cf)(b)}catch(a){console.error("[reaper] dead structured-host ownership convergence failed",a)}let d=(a.actuation?.runtimeClient??E.sS)();try{await (a.actuation?.terminalizeStaleSpawns??G.LH)(b,d)}catch(a){console.error("[reaper] stale structured spawn convergence failed",a)}let e=function(a,b){let c=function(){try{let a=JSON.parse(m().readFileSync(R(),"utf8"));if(1===a.version&&a.firstObservedAt&&"object"==typeof a.firstObservedAt)return{version:1,firstObservedAt:a.firstObservedAt,userAuthoredPaths:a.userAuthoredPaths&&"object"==typeof a.userAuthoredPaths?a.userAuthoredPaths:{},scannedAt:a.scannedAt&&"object"==typeof a.scannedAt&&!Array.isArray(a.scannedAt)?a.scannedAt:{}}}catch{}return{version:1,firstObservedAt:{},userAuthoredPaths:{},scannedAt:{}}}(),d={};for(let e of a){let a=S(e);d[a]=c.firstObservedAt[a]??new Date(b).toISOString()}let e={version:1,firstObservedAt:d,userAuthoredPaths:c.userAuthoredPaths,scannedAt:c.scannedAt};return T(R(),e),e}(a.hosts,c),f=P(await ac(b,a.hosts,a.files,e,c,a.actuation)),g=await Q(f,{actuate:c=>ai(b,a.files,e,c,a.actuation),journal:ab});return T((0,z.BQ)("reaper-report.json"),g),g}var ak=c(48161),al=c.n(ak),am=c(1198);function an(a,b){if(0!==a.tty)return null;let c=a.argv,d=c.indexOf("--output-last-message");return c.includes("exec")&&c.includes("--json")&&!(d<0)&&c.some(a=>/(^|[/\\])codex(?:-[^/\\]+)?$/i.test(a))?function(a,b){if(!a||!o().isAbsolute(a))return null;let c=o().relative(o().resolve(b),o().resolve(a));if(!c||o().isAbsolute(c)||".."===c||c.startsWith(`..${o().sep}`))return null;let d=c.split(o().sep);if(2!==d.length||!d[0])return null;let e=/^round-(\d+)-last-message\.md$/.exec(d[1]);return e?{flowId:d[0],round:Number(e[1])}:null}(c[d+1],b):null}function ao(a){return a.argv.some(a=>/(^|[/\\])codex(?:-[^/\\]+)?$/i.test(a))&&(a.argv.includes("exec")||a.argv.includes("app-server"))}function ap(a){return a.argv.some(a=>/(^|[/\\])claude(?:-[^/\\]+)?$/i.test(a))}let aq=/(?:^|[-_.])mcp(?:[-_.]|$)/i,ar=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*(?:@[^\s/]+)?$/i;function as(a){if(!a||!ar.test(a))return!1;let b=a.startsWith("@")?a.indexOf("@",a.indexOf("/")+1):a.indexOf("@"),c=b>0?a.slice(0,b):a;return aq.test(c.split("/").at(-1)??"")}function at(a,b){for(let c=b;c<a.length;c+=1){let b=a[c];if("--"===b)break;if("--package"===b||"-p"===b)return a[c+1];if(b.startsWith("--package="))return b.slice(10);if(!b.startsWith("-"))return b}}let au=new Set(["--cache-dir","--color","--config-file","--directory","--project","--python"]);function av(a){var b;if(0!==a.tty)return!1;let c=a.argv;if((b=c[0])&&aq.test(o().basename(b)))return!0;let d=o().basename(c[0]??"").toLowerCase();return"npx"===d||"bunx"===d||"uvx"===d?as(at(c,1)):"npm"===d&&("exec"===c[1]||"x"===c[1])||("pnpm"===d||"yarn"===d)&&("dlx"===c[1]||"exec"===c[1])||"bun"===d&&"x"===c[1]?as(at(c,2)):"uv"===d&&function(a){let b=1;for(;b<a.length;){let c=a[b];if("run"===c)return as(at(a,b+1));if("tool"===c&&"run"===a[b+1])return as(at(a,b+2));if(au.has(c)){b+=2;continue}if(c.startsWith("-")){b+=1;continue}break}return!1}(c)}function aw(a,b){let c=new Set;for(let b of a.hosts)c.add(b.panePid),c.add(b.agentPid);for(let b of a.panePids)c.add(b);for(let d of a.flows)if("headless"===d.reviewerMode)for(let a of d.rounds){if(!a.reviewerPid||a.verdict||a.error||a.terminalAt)continue;let d=b.get(a.reviewerPid);d&&(a.reviewerIdentity&&d.identity!==a.reviewerIdentity||c.add(a.reviewerPid))}let d=new Set,e=new Map(a.processes.map(a=>[a.pid,a.ppid]));for(let a of c)for(let b of(0,am.mO)(a,e))d.add(b);return d}function ax(a){let b=new Map(a.processes.map(a=>[a.pid,a])),c=aw(a,b),d=new Set(a.processes.filter(b=>b.ageMs>=a.thresholdMs&&function(a,b){let c=an(a,b.flowArtifactsRoot);if(!c||!a.identity)return!1;let d=b.flows.find(a=>a.id===c.flowId),e=d?.rounds.find(a=>a.n===c.round);return d?.reviewerMode==="headless"&&e?.reviewerPid===a.pid&&e.reviewerIdentity===a.identity}(b,a)&&!c.has(b.pid)).map(a=>a.pid)),e=[];for(let f of a.processes){if(!f.identity||f.ageMs<a.thresholdMs||c.has(f.pid))continue;if(d.has(f.pid)){e.push({pid:f.pid,identity:f.identity,kind:"codex-exec"});continue}if(ao(f)||ap(f)||!av(f))continue;let g=function(a,b){let c=[],d=new Set([a]),e=b.get(a)?.ppid??0;for(;e>0&&!d.has(e);)c.push(e),d.add(e),e=b.get(e)?.ppid??0;return c}(f.pid,b);!(g.some(a=>d.has(a)||av(b.get(a)??{argv:[],tty:0}))||g.some(a=>ao(b.get(a)??{argv:[]}))||g.some(a=>ap(b.get(a)??{argv:[]})))&&(g.some(a=>1!==a&&b.has(a))||e.push({pid:f.pid,identity:f.identity,kind:"orphan-mcp"}))}return e.sort((a,b)=>a.pid-b.pid)}let ay={listProcesses:()=>D.B.listProcesses(),ppidMap:()=>D.B.ppidMap(),processIdentity:a=>D.B.processIdentity(a),processAgeMs:function(a,b){if(!b)return null;let c=b.slice(b.indexOf(":")+1);if("linux"===D.B.name&&/^\d+$/.test(c))return Math.max(0,1e3*al().uptime()-10*Number(c));let d=Date.parse(c);return Number.isFinite(d)?Math.max(0,Date.now()-d):null},loadFlows:p.loadFlows,readHosts:async()=>(await (0,i.oe)(!0)).hosts,readPanePids:async()=>{let a=await (0,J.m7)(!0);return"failure"===a.kind?null:"available"===a.kind?[...a.panes.keys()]:[]},signalProcess:process.kill,setTimeout:(a,b)=>setTimeout(a,b)};function az(a){let b=new Set;for(let c of a)if("headless"===c.reviewerMode)for(let a of c.rounds)!a.reviewerPid||a.verdict||a.error||a.terminalAt||b.add(a.reviewerPid);return b}function aA(a,b){let c=b.loadFlows(),d=az(c),e=b.ppidMap(),f=b.listProcesses().map(a=>({...a,ppid:e.get(a.pid)??0,identity:d.has(a.pid)?b.processIdentity(a.pid):null,ageMs:0})),g=new Map(f.map(a=>[a.pid,a]));return{protectedPids:function(a,b){let c=aw(a,b),d=new Map(a.processes.map(a=>[a.pid,a.ppid]));for(let b of a.processes)if(ao(b)||ap(b))for(let a of(0,am.mO)(b.pid,d))c.add(a);return c}({...a,flows:c,processes:f},g),ppids:e}}function aB(a,b,c=new Set){let d=a.ppidMap();return a.listProcesses().map(e=>{let f=c.has(e.pid)||null!==an(e,b)||av(e),g=f?a.processIdentity(e.pid):null;return{...e,ppid:d.get(e.pid)??0,identity:g,ageMs:f?a.processAgeMs(e.pid,g)??0:0}})}async function aC(a){let b={...ay,...a.dependencies},c=a.thresholdMs??function(a=process.env){let b=Number(a.LLV_HEADLESS_REAPER_THRESHOLD_MS);return Number.isFinite(b)&&b>=6e4?b:72e5}(),d=a.flowArtifactsRoot??(0,z.BQ)("flows"),e=await b.readPanePids();if(null===e)return{candidates:0,signaled:0};let f=a.flows??b.loadFlows(),g=ax({processes:aB(b,d,az(f)),flows:f,hosts:a.hosts,panePids:e,flowArtifactsRoot:d,thresholdMs:c}),h=0;for(let e of g){let[f,g,i]=await Promise.all([b.readHosts(),Promise.resolve(b.loadFlows()),b.readPanePids()]);if(null===i)continue;let j={processes:aB(b,d,az(g)),flows:g,hosts:f,panePids:i,flowArtifactsRoot:d,thresholdMs:c},k=ax(j).find(a=>a.pid===e.pid&&a.identity===e.identity&&a.kind===e.kind);if(k){if("codex-exec"===k.kind){if(!function(a,b,c){if(b.processIdentity(a.pid)!==a.identity)return!1;try{b.signalProcess(-a.pid,"SIGTERM")}catch{if(b.processIdentity(a.pid)!==a.identity)return!1;try{b.signalProcess(a.pid,"SIGTERM")}catch{return!1}}let d=b.setTimeout(()=>{try{b.signalProcess(-a.pid,"SIGKILL")}catch{}},c);return d.unref?.(),!0}(k,b,a.shutdownGraceMs??3e3))continue}else if(!function(a,b,c,d){let e,f=new Map(b.processes.map(a=>[a.pid,a.identity]));try{e=aA(b,c)}catch{return!1}let{ppids:g,protectedPids:h}=e,i=(0,am.mO)(a.pid,g).reverse();if(i.some(a=>h.has(a)))return!1;let j=i.map(a=>{let b=f.get(a)??null,d=c.processIdentity(a);return{pid:a,observedIdentity:b,expectedIdentity:d,eligible:!!(d&&(!b||b===d))}}),k=j.find(b=>b.pid===a.pid);if(k?.observedIdentity!==a.identity||k.expectedIdentity!==a.identity)return!1;for(let a of j)if(a.eligible&&a.expectedIdentity&&c.processIdentity(a.pid)===a.expectedIdentity)try{c.signalProcess(a.pid,"SIGTERM")}catch{}let l=c.setTimeout(()=>{let a;try{a=aA(b,c).protectedPids}catch{return}for(let b of j)if(!a.has(b.pid)&&b.eligible&&b.expectedIdentity&&c.processIdentity(b.pid)===b.expectedIdentity)try{c.signalProcess(b.pid,"SIGKILL")}catch{}},d);return l.unref?.(),!0}(k,j,b,a.shutdownGraceMs??3e3))continue;h+=1}}return{candidates:g.length,signaled:h}}function aD(a){return!("claude-projects"!==a.root||!a.path.endsWith(".jsonl")||a.path.includes(o().sep+"subagents"+o().sep))&&2===a.name.split(o().sep).length}function aE(a,b){return aF(a,new Map(b.map(a=>[a.path,a])))}function aF(a,b){let c=b.get(a);if(!c?.parent||c.handoff)return null;let d=b.get(c.parent);return d&&aD(c)&&aD(d)?d.path:null}var aG=c(10988),aH=c(96796),aI=c(65281),aJ=c(25052),aK=c(42427);function aL(a={}){let b=a.structuredDelivery??aK.deliverHeldStructuredMessage,c=a.legacyDelivery??(async({delivery:a,path:b,clientMessageId:c})=>{if("runtime-images"===a.payloadKind)return"delivery-uncertain";let d=await (0,aJ.Ku)({pid:null,path:b,text:a.text,images:[],clientMessageId:c,reservedDeliveryId:a.id,...a.command.origin?{origin:a.command.origin}:{}});return(0,aJ.$n)(d)}),d=({delivery:a,path:c,clientMessageId:d})=>b({conversationId:a.conversationId,runtimeConversationId:a.runtimeConversationId,path:c,deliveryId:a.id,clientMessageId:d,text:a.text,command:a.command,...a.runtimeImages.length?{imageRefs:a.runtimeImages}:{}});return{deliver:async a=>await d(a)??c(a),reconcileUncertain:async a=>await d(a)??"delivery-uncertain"}}var aM=c(63608),aN=c(37495),aO=c(75748),aP=c(80323),aQ=c(88517);let aR={list:a=>"claude"===a?(0,d.Fn)():(0,e.Sq)(),active:a=>"claude"===a?(0,d.No)():(0,e.O)(),async probe(a,b,c){if("claude"===a){let d=await aO.kR.status(b.home).catch(()=>({loggedIn:!1,indeterminate:!0}));if(d.indeterminate)throw Error("quota-auth-indeterminate");let e=d.loggedIn?await (0,aQ.nn)(o().join(b.home,".credentials.json")):{data:null,source:"unavailable",reason:"live authentication check failed"};return{engine:a,accountId:b.id,authenticated:d.loggedIn,authCheckedAt:c,limits:e.data,provenance:{source:e.source,reason:e.reason,staleSince:null},observedAt:c}}try{let d=await (0,f.VD)().probeQuota(b);return{engine:a,accountId:b.id,authenticated:d.authenticated,authCheckedAt:c,limits:(0,aQ.Bq)(d.rateLimits,Math.floor(c/1e3)),provenance:{source:"live",reason:d.authenticated?null:"unsupported-account-type",staleSince:null},observedAt:c,envelope:d.envelope}}catch(e){let d=await (0,aQ.Ki)({account:b,liveReader:async()=>Promise.reject(e)});if(!d.data)throw e;return{engine:a,accountId:b.id,authenticated:!1,authCheckedAt:c,limits:d.data,provenance:{source:d.source,reason:d.reason,staleSince:null},observedAt:c,envelope:null}}}};class aS{constructor(a=(0,h.agentRegistry)(),b=aR,c=w().randomUUID(),d=()=>Date.now(),e=15e3){this.registry=a,this.probe=b,this.bootId=c,this.now=d,this.probeTimeoutMs=e}carryForward(a,b,c,d){let e=this.registry.readOnlySnapshot().quotaObservations[a][b];return e?.limits?{engine:a,accountId:b,authenticated:e.authenticated,authCheckedAt:Date.parse(e.authCheckedAt)||d,limits:e.limits,provenance:{source:"cache",reason:c,staleSince:e.provenance.staleSince??e.observedAt},observedAt:Date.parse(e.observedAt)||d,envelope:null}:{engine:a,accountId:b,authenticated:!1,authCheckedAt:d,limits:null,provenance:{source:"unavailable",reason:c,staleSince:null},observedAt:d,envelope:null}}async tick(a){let b=this.now(),c=this.probe.list(a),d=await Promise.all(c.map(async c=>{try{var d;let e=await Promise.race([this.probe.probe(a,c,b),(d=this.probeTimeoutMs,new Promise((a,b)=>{let c=setTimeout(()=>b(Error("quota-probe-timeout")),d);c.unref?.()}))]);if(e.authenticated&&!e.limits)return this.carryForward(a,c.id,e.provenance.reason??"quota-probe-empty",b);return e}catch(e){let d=e instanceof Error&&"quota-probe-timeout"===e.message?"quota-probe-timeout":"quota-probe-failed";return this.carryForward(a,c.id,d,b)}}));d.forEach((b,d)=>{let e=c[d];(0,aP.pq)({engine:a,accountId:b.accountId,accountKind:e.kind,envelope:b.envelope??null,probePhase:"account-rate-limits",provenance:b.provenance.source,reasonCode:b.provenance.reason})});let e=d.map(b=>({engine:a,accountId:b.accountId,authenticated:b.authenticated,authCheckedAt:new Date(b.authCheckedAt??b.observedAt).toISOString(),limits:b.limits,provenance:b.provenance,observedAt:new Date(b.observedAt).toISOString(),bootId:this.bootId}));this.registry.recordQuotaEvaluation({engine:a,observations:e,signature:null,evidence:null,bootId:this.bootId,now:new Date(b).toISOString(),minimumGapMs:6e4})}}let aT=aL();async function aU(a,b,c=new aN.wh,d=aT){a.compactDeliveryReservations(),await (0,j.Lh)();let e=Promise.all([b.tick("claude"),b.tick("codex")]);try{await (0,B.c0)(c,d,a)}finally{await e}}function aV(a){let b=a.readOnlySnapshot().engineRouting,c=(()=>{try{return!!(b.claude.activeAccountId&&b.claude.activeAccountId!==(0,d.No)())}catch{return!0}})(),f=(()=>{try{return!!(b.codex.activeAccountId&&b.codex.activeAccountId!==(0,e.O)())}catch{return!0}})();(c||f)&&(0,g.oV)(()=>{let b=a.readOnlySnapshot(),c=b.engineRouting.claude.activeAccountId,f=b.engineRouting.codex.activeAccountId;try{c&&c!==(0,d.No)()&&(0,d.ss)(c)}catch{}try{f&&f!==(0,e.O)()&&(0,e.b0)(f)}catch{}})}async function aW(){let a=(0,e.J0)();await Promise.all((0,e.Sq)().map(async b=>{if("managed"===b.kind){b.loginPane&&!a&&(0,e.yG)(b.id,null),(0,f.VD)().peekLogin(b).attemptState&&await (0,f.VD)().loginSnapshot(b);return}if(!b.loginPane)return;let c=await (0,J.RZ)(b.loginPane.paneId);(0,e.hg)(b.authPresent,b.loginPane,c).clear&&!a&&(0,e.yG)(b.id,null)}))}let aX={files:[],projectCatalog:[],complete:!1};function aY(a=process.env,b=s.TF,c=t.wj){return"1"!==a.LLV_ACCOUNT_CONTROLLER_INVENTORY_WORKER?c():Promise.resolve(b()??aX)}async function aZ(a,b){await aW();let c=await (0,i.oe)(!0,b);try{await aj({registry:a,hosts:c.hosts,files:b})}catch(a){console.error("[agent reaper] lifecycle reconciliation failed",a)}try{let a=await aC({hosts:c.hosts,flows:(0,p.loadFlows)()});a.signaled>0&&console.warn(`[headless process reaper] terminated ${a.signaled} stale process group(s)`)}catch(a){console.error("[headless process reaper] reconciliation failed",a)}}let a$={scan:()=>aY(),reconcileInventory:B.VB,reconcileFlowOwnership:p.reconcileFlowConversationOwnershipCooperatively,reconcileWorkflowOwnership:aH.reconcileWorkflowConversationOwnershipCooperatively,reconcileHandoffOwnership:q.d5,reconcileFiles:r.CR,reconcileRuntime:aZ,reconcileTaskStore:function(a,b){let c=(0,h.oP)(a.readOnlySnapshot());(0,aG.z4)(a=>{let d=function(a,b,c={}){let d=!1,e=new Map(a.map(a=>[a.path,a])),f=c.successorForPath?c:{...c,successorForPath:a=>aF(a,e)},g=b.map(b=>{let c=!1,g=b.assignments.map(b=>{let d=function(a,b,c,d){let e=a,f=!1;if(e.conversationId){let a=d.canonicalConversationId?.(e.conversationId)??e.conversationId;a!==e.conversationId&&(e={...e,conversationId:a},f=!0)}if(e.path&&!e.conversationId){let a=d.conversationIdForPath?.(e.path)??c.get(e.path)?.conversationId??null;a&&(e={...e,conversationId:a},f=!0)}let g=d.now?.()??new Date().toISOString();if(e.path){let a=(e.conversationId?d.pathForConversationId?.(e.conversationId)??null:null)??function(a,b,c){let d=c??aE,e=new Set([a]),f=a,g=null;for(;;){let a=d(f,b);if(!a||e.has(a))return g;g=a,f=a,e.add(f)}}(e.path,b,d.successorForPath);if(a&&a!==e.path){let b="handoff"===e.state?"handoff":"delivered";return{assignment:{...e,path:a,state:b,error:null,at:g},dirty:!0}}return{assignment:e,dirty:f}}if(null!==e.panePid){let a=d.pathForPanePid?.(e.panePid,b)??null;if(a){let b=d.conversationIdForPath?.(a)??c.get(a)?.conversationId??null;return{assignment:{...e,path:a,...b?{conversationId:b}:{},state:"delivered",error:null,at:g},dirty:!0}}if(!(d.panePidAlive?.(e.panePid)??!0)&&"failed"!==e.state)return{assignment:{...e,state:"failed",error:"agent did not start",at:g},dirty:!0}}return{assignment:e,dirty:f}}(b,a,e,f);return d.dirty&&(c=!0),d.assignment});return c?(d=!0,{...b,assignments:g,updatedAt:f.now?.()??new Date().toISOString()}):b});return{tasks:d?g:b,dirty:d}}(b,a,{pathForPanePid:(a,b)=>(function(a,b,c){if(!Number.isInteger(b)||b<=0)return null;for(let d of a){if(null===d.pid)continue;let a=new Set;for(let e=d.pid;null!==e&&!a.has(e)&&(a.add(e),!(a.size>15));e=c(e))if(e===b)return d.path}return null})(b,a,u.Ib),panePidAlive:u.pl,conversationIdForPath:a=>c.conversationForPath(a)?.id??null,canonicalConversationId:a=>a.startsWith("conversation_")?c.canonicalConversationId(a):null,pathForConversationId:a=>a.startsWith("conversation_")?c.conversation(a)?.generations.at(-1)?.path??null:null});return{tasks:d.dirty?d.tasks:void 0,result:void 0}})},syncRouting:aV,reconcileMigrationCycle:aU};class a_{constructor(a=(0,h.agentRegistry)(),b=new aS(a),c=null,d={}){this.registry=a,this.quota=b,this.cycle=c,this.running=null,this.trailingCycleRequested=!1,this.ports={...a$,...d}}tick(){return this.running?this.trailingCycleRequested=!0:this.running=this.runRequestedCycles().finally(()=>{this.running=null}),this.running}poll(){return this.running?this.running:this.tick()}async runRequestedCycles(){let a=null;do{this.trailingCycleRequested=!1;try{await (this.cycle?.()??this.run())}catch(b){a??=b}}while(this.trailingCycleRequested);if(a)throw a}async run(){let{files:a,complete:b}=await this.ports.scan();if(!b)return;await (0,j.Lh)();let c=await this.ports.reconcileInventory(this.registry,a);await (0,j.Lh)();let d=(0,h.oP)(c);await this.ports.reconcileFlowOwnership(d),await this.ports.reconcileWorkflowOwnership(d),await this.ports.reconcileHandoffOwnership(d),await (0,j.Lh)(),await this.ports.reconcileFiles(a),await (0,j.Lh)(),await this.ports.reconcileRuntime(this.registry,a),await (0,j.Lh)(),await this.ports.reconcileTaskStore(this.registry,a),await (0,j.Lh)(),await this.ports.syncRouting(this.registry),await this.ports.reconcileMigrationCycle(this.registry,this.quota)}}let a0=globalThis;async function a1(){await (0,j.Lh)();let a=(0,h.agentRegistry)(),b=new aS(a);if("1"===process.env.LLV_ACCOUNT_CONTROLLER_INVENTORY_WORKER)return void function(a,b){let c=a0.__llvAccountMigrationController??=new a_(a,b);if(!a0.__llvAccountMigrationTimer){let a=setInterval(()=>void c.poll().catch(a=>{console.error("[account migration controller] durable reconciliation tick failed",a)}),6e4);a.unref?.(),a0.__llvAccountMigrationTimer=a}if(!a0.__llvAccountMigrationBootstrapStarted){a0.__llvAccountMigrationBootstrapStarted=!0;let a=setTimeout(()=>{a0.__llvAccountMigrationInitialTimer=void 0,c.poll().catch(a=>{console.error("[account migration controller] initial inventory reconciliation failed",a)})},1e3);a.unref?.(),a0.__llvAccountMigrationInitialTimer=a}}(a,b);let c=a0.__llvAccountMigrationFastController??=new a_(a,b,()=>aU(a,b));(0,aM.c)(()=>c.tick()),c.tick().catch(a=>{console.error("[account migration controller] initial durable reconciliation failed",a)}),function a(){if(a0.__llvAccountMigrationInventoryWorker)return;let b=function(a=process.cwd()){let b=o().join(a,"src/lib/accountMigrationController.worker.ts"),c=o().join(a,".next/server/account-migration-controller-worker.js");return m().existsSync(b)&&m().existsSync("/usr/local/bin/bun-container")?{executable:"/usr/local/bin/bun-container",workerPath:b}:m().existsSync(c)?{executable:process.versions.bun?process.execPath:process.env.LLV_BUN_EXECUTABLE||"bun",workerPath:c}:{executable:process.execPath,workerPath:b}}(),c=m().existsSync("/usr/bin/nice"),d=(0,k.spawn)(c?"/usr/bin/nice":b.executable,[...c?["-n","10",b.executable]:[],b.workerPath],{cwd:process.cwd(),stdio:["ignore","inherit","inherit"],env:{...(0,aI.Fd)(process.env),LLV_ACCOUNT_CONTROLLER_INVENTORY_WORKER:"1"}});a0.__llvAccountMigrationInventoryWorker=d,d.once("error",a=>{console.error("[account migration controller] inventory worker failed to start",a)}),d.once("exit",(b,c)=>{if(a0.__llvAccountMigrationInventoryWorker===d&&(a0.__llvAccountMigrationInventoryWorker=void 0),a0.__llvAccountMigrationInventoryWorkerRestart)return;console.error("[account migration controller] inventory worker exited",{code:b,signal:c});let e=setTimeout(()=>{a0.__llvAccountMigrationInventoryWorkerRestart=void 0,a()},1e3);e.unref?.(),a0.__llvAccountMigrationInventoryWorkerRestart=e})}()}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=8026,exports.ids=[8026],exports.modules={28026:(a,b,c)=>{c.d(b,{adoptStructuredHostsAtStartup:()=>Y});var d=c(77598),e=c.n(d),f=c(76760),g=c.n(f),h=c(20695),i=c(68465),j=c(66812),k=c(12904),l=c(38992),m=c(88623),n=c(73024),o=c.n(n),p=c(27146),q=c(38751);function r(a){return(0,q.G$)(a.trim())}function s(){return{schemaVersion:1,nextSeatEpoch:1,seats:{},pending:{},revocations:[],history:[]}}function t(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.project||!a.project||"number"!=typeof a.seatEpoch||!Number.isInteger(a.seatEpoch)||a.seatEpoch<1||null!==a.conversationId&&"string"!=typeof a.conversationId||null!==a.path&&"string"!=typeof a.path||"string"!=typeof a.mandate||"pending"!==a.state&&"active"!==a.state)return null;let b=a.intent;return b&&"string"==typeof b.clientRequestId&&b.clientRequestId&&("spawn"===b.mode||"existing"===b.mode)&&"string"==typeof a.designatedAt&&(null===a.activatedAt||"string"==typeof a.activatedAt)?{project:a.project,seatEpoch:a.seatEpoch,conversationId:a.conversationId??null,path:a.path??null,mandate:a.mandate,promptVersion:"number"==typeof a.promptVersion&&Number.isInteger(a.promptVersion)?a.promptVersion:null,predecessorConversationId:"string"==typeof a.predecessorConversationId?a.predecessorConversationId:null,state:a.state,intent:{clientRequestId:b.clientRequestId,mode:b.mode,launchId:"string"==typeof b.launchId?b.launchId:null,error:"string"==typeof b.error?b.error:null},designatedAt:a.designatedAt,activatedAt:a.activatedAt??null}:null}function u(a,b){let c=a[b.project];(!c||b.seatEpoch>c.seatEpoch)&&(a[b.project]=b)}function v(){return Object.values(function(){let a;try{a=o().readFileSync((0,p.BQ)("orchestrator-seats.json"),"utf8")}catch{return s()}try{let b=JSON.parse(a);if(1!==b.schemaVersion)return s();let c=s();for(let[a,d]of(c.nextSeatEpoch="number"==typeof b.nextSeatEpoch&&Number.isInteger(b.nextSeatEpoch)&&b.nextSeatEpoch>=1?b.nextSeatEpoch:1,Object.entries(b.seats??{}))){let b=t(d);b&&b.project===a&&"active"===b.state&&b.conversationId&&u(c.seats,{...b,project:r(a)})}for(let[a,d]of Object.entries(b.pending??{})){let b=t(d);b&&b.project===a&&"pending"===b.state&&u(c.pending,{...b,project:r(a)})}for(let a of Array.isArray(b.revocations)?b.revocations:[])"string"==typeof a.project&&"string"==typeof a.conversationId&&"number"==typeof a.seatEpoch&&Number.isInteger(a.seatEpoch)&&"string"==typeof a.revokedAt&&c.revocations.push({project:r(a.project),conversationId:a.conversationId,seatEpoch:a.seatEpoch,revokedAt:a.revokedAt,successorConversationId:"string"==typeof a.successorConversationId?a.successorConversationId:null});for(let a of Array.isArray(b.history)?b.history:[]){let b=t(a.seat);b&&("terminal_error"===a.reason||"superseded_epoch"===a.reason)&&"string"==typeof a.terminalizedAt&&c.history.push({seat:{...b,project:r(b.project)},reason:a.reason,terminalizedAt:a.terminalizedAt})}let d=Math.max(0,...Object.values(c.seats).map(a=>a.seatEpoch),...Object.values(c.pending).map(a=>a.seatEpoch),...c.revocations.map(a=>a.seatEpoch),...c.history.map(a=>a.seat.seatEpoch));return c.nextSeatEpoch<=d&&(c.nextSeatEpoch=d+1),c}catch{return s()}}().seats)}var w=c(21420),x=c(842),y=c(65281),z=c(62490),A=c(93994),B=c(96755),C=c(5242),D=c(42427),E=c(75211),F=c(61532);let G=[];function H(a,b){let c=new Map(a.map(a=>[(0,m.pp)(a.key),a]));for(let a of b){let b=(0,m.pp)(a.key);c.has(b)||c.set(b,a)}return[...c.values()]}async function I(a,b,c=a.readOnlySnapshot(),d=new Set){let e=[];for(let a of b)!function(a,b,c=new Set){let d=(0,m.pp)(b.key),e=a.entries[d];if(!e?.structuredHost||"dead"===e.status||"unhosted"===e.status)return!1;let f=Object.values(a.conversations).find(a=>a.engine===b.key.engine&&a.generations.at(-1)?.id===b.key.sessionId);return!!(f&&!f.supersededBy&&("terminal"!==f.turn.state||c.has(d)))}(c,a,d)?await a.host.release():e.push(a);return e}let J=["runtime.send","runtime.steer","runtime.interrupt","runtime.answer","runtime.spawn","runtime.reconfigure","runtime.compact"],K="recovery-continuation",L=e().randomUUID(),M=[];function N(a,b){G=a;let c=new Set(a.map(a=>(0,m.pp)(a.key)));M=b.filter(a=>c.has(a.hostKey))}function O(a,b,c,d=a.readOnlySnapshot()){let e=c.find(a=>a.project===b.project);if(!e||"active"!==e.state||e.seatEpoch!==b.seatEpoch||!e.conversationId?.startsWith("conversation_")||a.canonicalConversationId(e.conversationId)!==b.conversationId)return!1;let f=d.conversations[b.conversationId],g=f?.generations.at(-1);if(!f||!g||f.supersededBy||g.path!==b.path||(0,m.pp)({engine:f.engine,sessionId:g.id})!==b.hostKey)return!1;let h=d.entries[b.hostKey];return!!(h?.structuredHost&&null===h.host&&("live"===h.status||"idle"===h.status))}function P(a,b,c,d=a.readOnlySnapshot()){return new Set(b.filter(b=>O(a,b,c,d)).map(a=>a.hostKey))}async function Q(a,b,c,d,e){for(let f of c){if(!d.has(f.hostKey)||!O(a,f,e()))continue;let c=`orchestrator-restart-recovery-${L}-${f.seatEpoch}`,g=await (0,D.enqueueStructuredMessage)({path:f.path,conversationId:f.conversationId,clientMessageId:c,text:"Viewer restarted and severed your structured host. You were re-hosted automatically. Resume your checkpoint loop and re-arm any scheduled work.",images:[]},{enabled:()=>!0,client:()=>b,registry:()=>a});if(!g?.ok)throw console.error("[structured hosts] orchestrator restart recovery delivery failed",{conversationId:f.conversationId,status:g?.status??503,error:g?.error??"structured delivery unavailable"}),new A.Hr(g?.error??"orchestrator restart recovery delivery admission failed")}}function R(a,b){return`${K}-${a}-${b}`}async function S(a,b,c,d,e,f){for(let g of c){let c=(0,m.pp)(g.key),h=d.get(c);if(!h||f.has(h))continue;let i=a.readOnlySnapshot().entries[c];if(!i)throw Error(`adopted Codex registry row disappeared: ${c}`);let j=R(g.key.sessionId,i.claimEpoch),k=e.get(c);if(k){if("failed"===k.receipt.status||"rejected"===k.receipt.status){k.receipt.retryOfOperationId||await b.retryOperation(k.operationId,`${k.receipt.idempotencyKey}-retry-1`,{requireHostedConversationId:h});continue}if(k.operationId===j||"delivered"!==k.receipt.status||k.receipt.retryOfOperationId)continue}await b.command({kind:"send",operationId:j,idempotencyKey:j,conversationId:h,text:"Continue the interrupted turn from the transcript.",policy:"queue",turnId:null})}}async function T(a,b,c){let d=new Map;for(let e of c){let c=(0,m.pp)(e.key),f=a.readOnlySnapshot().entries[c];if(!f)continue;let g=await b.operationStatus(R(e.key.sessionId,f.claimEpoch),{currentRetryLeaf:!0});if(g){d.set(c,g);continue}if(f.claimEpoch<=0)continue;let h=await b.operationStatus(R(e.key.sessionId,f.claimEpoch-1),{currentRetryLeaf:!0});h&&d.set(c,h)}return d}async function U(a){let b=a.readOnlySnapshot(),c=new Date().toISOString(),d=Object.values(b.conversations).flatMap(a=>{let c=a.generations.at(-1);if(!c)return[];let d=b.entries[(0,m.pp)({engine:a.engine,sessionId:c.id})];return d?.structuredHost&&"live"===d.status&&!a.supersededBy?[{conversation:a,generation:c}]:[]}),e=[],f=0,g=Array.from({length:Math.min(16,d.length)},async()=>{for(;f<d.length;){let a=d[f++];if(!a)continue;let{conversation:b,generation:g}=a,h=await (0,x.mR)(g.path);if("complete"!==h.integrity)continue;let i=function(a,b,c){if("claude"===b)return(0,j.j)(a,!1);if(!c)return(0,j.j)(a,!0,!0);let d=a.findLastIndex(a=>{let b=a.payload;if(!b||"object"!=typeof b||Array.isArray(b))return!1;let c=b.type;return"task_started"===c||"turn_started"===c||"user_message"===c});if(d<0){let b=(0,j.j)(a,!0,!0);return"terminal"===b.state?{state:"unknown",source:"empty",terminalAt:null}:b}return(0,j.j)(a.slice(d),!0,!0)}(h.records,b.engine,h.prefixTruncated);("busy"===i.state||"terminal"===i.state)&&e.push({engine:b.engine,path:g.path,accountId:g.accountId,launchProfile:g.launchProfile,turn:i,expectedTurnObservedAt:b.turn.observedAt,observedAt:c})}});await Promise.all(g),e.length>0&&a.reconcileConversations(e)}function V(a,b){return b.startsWith("conversation_")?a.canonicalConversationId(b):b}async function W(a,b){if(!b)return{hostedRunningConversationIds:new Set,pendingOperationConversationIds:new Set,pendingCodexContinuationConversationIds:new Set};let c=await b.snapshot(),d=new Set(c.sessions.filter(a=>"hosted"===a.host&&("running"===a.turn||"interrupt_requested"===a.turn)).map(b=>V(a,b.conversationId))),e=new Set(c.recentOperations.filter(a=>"pending"===a.status||"queued"===a.status||"delivering"===a.status||"applying"===a.status).filter(a=>"kill"!==a.kind).map(b=>V(a,b.conversationId))),f=new Set,g=0;for(;;){let c=await b.effectBatch(J,g);for(let b of c){let c=b.payload.conversationId;if("string"==typeof c){let d=V(a,c);e.add(d),"runtime.send"===b.kind&&"string"==typeof b.payload.operationId&&b.payload.operationId.startsWith(`${K}-`)&&f.add(d)}}if(c.length<100)break;let d=Math.max(...c.map(a=>a.eventSeq));if(!Number.isSafeInteger(d)||d<=g)throw Error("structured startup operation page did not advance");g=d}return{hostedRunningConversationIds:d,pendingOperationConversationIds:e,pendingCodexContinuationConversationIds:f}}function X(a,b,c=a.readOnlySnapshot(),d=new Map,e=v){let f=new Map(Object.values(c.conversations).flatMap(a=>{let b=a.generations.at(-1);return b?[[(0,m.pp)({engine:a.engine,sessionId:b.id}),a]]:[]})),g=new Set(Object.values(c.heldDeliveries).filter(a=>"held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state).map(b=>a.canonicalConversationId(b.conversationId)));return c=>{let h=f.get((0,m.pp)(c.key));if(!h||h.supersededBy)return!1;let i=d.get((0,m.pp)(c.key));if(i?.some(b=>O(a,b,e())))return!0;let j=a.canonicalConversationId(h.id);if(g.has(j)||b.pendingOperationConversationIds.has(j))return!0;if("terminal"===h.turn.state)return!1;let k=b.hostedRunningConversationIds.has(j),l="busy"===h.turn.state||!!c.structuredHost?.activeTurnRef||"live"===c.status&&k;return"live"===c.status&&l}}async function Y(a={}){(0,w.x_)();let b=a.registry??(0,k.agentRegistry)(),c=void 0===a.client?(0,A.sS)():a.client,d=a.orchestratorSeats??v,e=function(a,b){let c=new Map;for(let d of[...a,...b])c.set(`${d.project}\0${d.seatEpoch}\0${d.hostKey}`,d);return[...c.values()]}(M,function(a,b=v(),c=a.readOnlySnapshot()){return b.flatMap(b=>{if(!b.conversationId?.startsWith("conversation_"))return[];let d=a.canonicalConversationId(b.conversationId),e=c.conversations[d],f=e?.generations.at(-1);if(!e||!f||e.supersededBy)return[];let g=(0,m.pp)({engine:e.engine,sessionId:f.id}),h=c.entries[g];return h?.structuredHost&&null===h.host&&("live"===h.status||"idle"===h.status)?[{project:b.project,conversationId:d,path:f.path,seatEpoch:b.seatEpoch,hostKey:g}]:[]})}(b,d())),f=function(a){let b=new Map;for(let c of a){let a=b.get(c.hostKey)??[];a.push(c),b.set(c.hostKey,a)}return b}(e),j=null!==c;c&&!(0,B.SW)(b)&&await (0,B.S8)([],{registry:b,client:c,deferStartupWork:!0}),(0,F.lk)({phase:"refreshing transcripts",completedHosts:0,totalHosts:null}),await (a.refreshTranscriptState??U)(b);let n=P(b,e,d()),o=await I(b,G,b.readOnlySnapshot(),n);N(o,e),(0,z.cf)(b,a=>n.has((0,m.pp)(a.key)));let p=await W(b,c),q=X(b,p,b.readOnlySnapshot(),f,d),r=Object.values(b.readOnlySnapshot().entries).filter(a=>a.structuredHost&&q(a)),s=r.filter(a=>"codex"===a.key.engine).length,t=r.length-s,u=r.length,x=0,D=a=>{(0,F.lk)({phase:a,completedHosts:x,totalHosts:u})};D("adopting Codex hosts");let J=a.resolveCodexOwner??(a=>h.lD.resolveTranscriptOwner("codex",a.artifactPath)),K=a.resolveClaudeOwner??(a=>h.lD.resolveTranscriptOwner("claude",a.artifactPath)),L=(0,y.Fd)(process.env),O=await (a.adopt??z.Gd)(b,a=>{let c=J(a),d=b.rotateSpawnCapabilityForPath(a.artifactPath),e=(0,E.bf)(a.launchProfile?.readOnly===!0,L,d);return{cwd:a.cwd,codexHome:c?.home,fileAuthCredentials:c?.kind==="managed",model:a.launchProfile?.model??void 0,effort:a.launchProfile?.effort??void 0,allowSubagents:a.launchProfile?.allowSubagents??!1,mcpServers:a.launchProfile?.mcpServers??["viewer"],plugins:a.launchProfile?.plugins??[],...e.codex,...e.host,env:e.env}},L,q,()=>{x+=1,u=Math.max(u,x),D("adopting Codex hosts")});x=Math.max(x,s),N(o=H(o,O),e),D("adopting Claude hosts");let R=await (a.adoptClaude??z.Fn)(b,a=>{let c=K(a),d=b.rotateSpawnCapabilityForPath(a.artifactPath),e=(0,y.Fd)(c?.env??L),f=(0,E.bf)(a.launchProfile?.readOnly===!0,e,d);return{cwd:a.cwd,claudeConfigDir:c?.kind==="managed"?c.home:void 0,claudeProjectsDir:c?.transcriptRoot,spawnPolicyBaseSettingsPath:c?.kind==="managed"?(0,i.ZK)():null,allowSubagents:a.launchProfile?.allowSubagents??!1,mcpServers:a.launchProfile?.mcpServers??["viewer"],mcpStatePath:c?.kind==="managed"?g().join(c.home,".claude.json"):c?g().join(g().dirname(c.home),".claude.json"):void 0,readOnly:a.launchProfile?.readOnly===!0,env:f.env,...f.host,model:a.launchProfile?.model??void 0,effort:a.launchProfile?.effort??void 0,permissionMode:(0,l.A5)(a.launchProfile??{})}},L,q,()=>{x+=1,u=Math.max(u,x),D("adopting Claude hosts")});x=Math.max(x,s+t),N(o=H(o,R),e),D("reconciling structured hosts"),n=P(b,e,d()),N(o=await I(b,o,b.readOnlySnapshot(),n),e);let V=new Set(o.map(a=>(0,m.pp)(a.key))),Z=o.filter(a=>"codex"===a.key.engine&&!n.has((0,m.pp)(a.key))),$=c?await T(b,c,Z):new Map;await (0,z.K$)(b,a=>V.has((0,m.pp)(a.key))||q(a));let _=b.readOnlySnapshot();n=P(b,e,d(),_),N(o=await I(b,o,_,n),e);let aa=X(b,p,_,f,d),ab=new Set(o.map(a=>(0,m.pp)(a.key))),ac=function(a,b,c,d=a.readOnlySnapshot()){return new Map(Object.values(d.conversations).flatMap(e=>{let f=e.generations.at(-1);if("codex"!==e.engine||!f)return[];let g={engine:"codex",sessionId:f.id},h=d.entries[(0,m.pp)(g)];return("busy"===e.turn.state||"unknown"===e.turn.state&&(h?.structuredHost?.activeTurnRef||c.has(a.canonicalConversationId(e.id))))&&h?.structuredHost&&b(h)?[[(0,m.pp)(g),e.id]]:[]}))}(b,a=>ab.has((0,m.pp)(a.key))||aa(a),p.hostedRunningConversationIds,_),ad=o.filter(a=>"codex"===a.key.engine&&!n.has((0,m.pp)(a.key)));return D("finalizing structured delivery"),j?await (0,B.le)(o):await (0,B.S8)(o,{registry:b,client:c}),await Q(b,c,e,ab,d),c&&(await S(b,c,ad,ac,$,p.pendingCodexContinuationConversationIds),await (0,C.l)()),c&&await (0,E.Z4)(b,c),G=[],M=[],o}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=8176,exports.ids=[8176],exports.modules={2033:(a,b,c)=>{c.d(b,{Ol:()=>r,Qm:()=>l,pM:()=>s});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(59683);let k=new Int32Array(new SharedArrayBuffer(4));class l extends Error{constructor(a){super(a),this.name="FileTransactionBusyError"}}function m(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){let a="string"==typeof b.startIdentity?b.startIdentity:null;if(!j.B.pidAlive(b.pid))return!0;if(null!==a){let c=j.B.processIdentity(b.pid);return null!==c&&c!==a}return!1}return Date.now()-g().statSync(a).mtimeMs>3e4}catch{try{return Date.now()-g().statSync(a).mtimeMs>3e4}catch{return!1}}}function n(a,b){try{JSON.parse(g().readFileSync(a,"utf8")).token===b&&g().rmSync(a,{force:!0})}catch{}}function o(a){let b=`${a}.write-lock`,c=`${a}.write-locks`;g().mkdirSync(c,{recursive:!0,mode:448});let d={pid:process.pid,startIdentity:j.B.processIdentity(process.pid),token:e().randomUUID()},f=i().join(c,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${e().randomUUID()}.json`);return g().writeFileSync(f,JSON.stringify(d),{encoding:"utf8",flag:"wx",mode:384}),{lockPath:b,queuePath:c,owner:d,ticketPath:f}}function p(a){let b;if(function(a){let b=[];for(let c of g().readdirSync(a.queuePath).filter(a=>a.endsWith(".json")).sort()){let d=i().join(a.queuePath,c);if(m(d)){g().rmSync(d,{force:!0});continue}g().existsSync(d)&&b.push(d)}return b[0]??null}(a)!==a.ticketPath)return null;try{b=g().openSync(a.lockPath,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;return m(a.lockPath)&&g().rmSync(a.lockPath,{force:!0}),null}try{return g().writeFileSync(b,JSON.stringify(a.owner),"utf8"),g().fsyncSync(b),b}catch(c){throw g().closeSync(b),g().rmSync(a.lockPath,{force:!0}),c}}function q(a,b){g().closeSync(b),n(a.lockPath,a.owner.token)}function r(a,b,c){let d=o(a);try{for(let a=0;a<6e3;a+=1){let a=p(d);if(null===a){Atomics.wait(k,0,0,5);continue}try{return c()}finally{q(d,a)}}throw new l(b)}finally{n(d.ticketPath,d.owner.token)}}async function s(a,b,c){let d=o(a);try{for(let a=0;a<6e3;a+=1){let a=p(d);if(null===a){await new Promise(a=>setTimeout(a,5));continue}try{return await c()}finally{q(d,a)}}throw new l(b)}finally{n(d.ticketPath,d.owner.token)}}},21153:(a,b,c)=>{c.d(b,{Pf:()=>x,h6:()=>u,z4:()=>w});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(89940),l=c(2033),m=c(49729);let n=(0,j.BQ)("tasks.json");function o(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,JSON.stringify(b,null,2)+"\n","utf8"),g().renameSync(c,a)}function p(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"number"==typeof a.x&&Number.isFinite(a.x)&&"number"==typeof a.y&&Number.isFinite(a.y)}function q(a){var b;return!(!a||"object"!=typeof a||Array.isArray(a))&&("string"==typeof a.path||null===a.path)&&(void 0===a.launchId||"string"==typeof a.launchId||null===a.launchId)&&(void 0===a.clientAttemptId||"string"==typeof a.clientAttemptId||null===a.clientAttemptId)&&(void 0===a.conversationId||"string"==typeof a.conversationId||null===a.conversationId)&&("number"==typeof a.panePid||null===a.panePid)&&(null===a.panePid||Number.isInteger(a.panePid)&&a.panePid>0)&&("delivered"===(b=a.state)||"failed"===b||"spawning"===b||"handoff"===b)&&("string"==typeof a.error||null===a.error)&&"string"==typeof a.at}function r(a){return"pinned"===a||"unplaced"===a||"auto"===a}function s(a){var b,c,d;let e,f;if(!a||"object"!=typeof a||Array.isArray(a)||!("string"==typeof a.id&&"string"==typeof a.project&&("inbox"===(b=a.status)||"assigned"===b||"blocked"===b||"done"===b)&&"string"==typeof a.text&&(void 0===a.placement||r(a.placement))&&(void 0===a.pos||p(a.pos))&&(e=void 0!==a.dueAt,f=void 0!==a.dueTz,!e&&!f||"string"==typeof a.dueAt&&"string"==typeof a.dueTz)&&(void 0===(c=a.attachments)||Array.isArray(c)&&c.every(m.tK))&&Array.isArray(a.assignments)&&a.assignments.every(q)&&(void 0===a.source||!(!(d=a.source)||"object"!=typeof d||Array.isArray(d))&&"string"==typeof d.path&&("string"==typeof d.ts||null===d.ts)&&"string"==typeof d.text&&"string"==typeof d.fingerprint&&("claude"===d.engine||"codex"===d.engine))&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt))return null;let g=p(a.pos),h=r(a.placement)?a.placement:g?"pinned":"unplaced";return{id:a.id,project:(0,k.G$)(a.project),status:a.status,text:a.text,placement:"pinned"!==h||g?h:"unplaced",..."pinned"===h&&g?{pos:a.pos}:{},...void 0!==a.dueAt?{dueAt:a.dueAt,dueTz:a.dueTz}:{},...void 0!==a.attachments?{attachments:a.attachments}:{},assignments:a.assignments,...void 0!==a.source?{source:a.source}:{},createdAt:a.createdAt,updatedAt:a.updatedAt}}function t(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.clientRequestId&&"string"==typeof a.taskId}function u(a=n){return v(a).tasks}function v(a=n){let b=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(a);return{tasks:Array.isArray(b?.tasks)?b.tasks.map(s).filter(a=>null!==a):[],recentCreates:Array.isArray(b?.recentCreates)?b.recentCreates.filter(t):[]}}function w(a,b=n){return(0,l.Ol)(b,"task state is busy",()=>{let c=v(b),d=a(c.tasks);return d.tasks&&o(b,c.recentCreates.length?{tasks:d.tasks,recentCreates:c.recentCreates}:{tasks:d.tasks}),d.result})}function x(a,b=n){return(0,l.Ol)(b,"task state is busy",()=>{let c=a(v(b));return c.state&&o(b,c.state.recentCreates.length?{tasks:c.state.tasks,recentCreates:c.state.recentCreates}:{tasks:c.state.tasks}),c.result})}},49729:(a,b,c)=>{c.d(b,{L0:()=>p,tK:()=>n,Gm:()=>q,nw:()=>r,Bx:()=>s});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(99410);let l=new Set(["png","jpg","gif","webp"]),m={png:"image/png",jpg:"image/jpeg",gif:"image/gif",webp:"image/webp"};function n(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&a.id.length>0&&"string"==typeof a.sha256&&/^[0-9a-f]{64}$/.test(a.sha256)&&"string"==typeof a.ext&&l.has(a.ext)&&"string"==typeof a.mime&&null!==(0,k.PG)(a.mime)&&"number"==typeof a.bytes&&Number.isFinite(a.bytes)&&a.bytes>0&&"string"==typeof a.createdAt}function o(){return(0,j.BQ)("attachments","tasks")}function p(a){return i().join(o(),`${a.sha256}.${a.ext}`)}function q(a,b){if(!/^[0-9a-f]{64}$/.test(a)||!l.has(b))return null;let c=p({sha256:a,ext:b});try{return{data:g().readFileSync(c),mime:m[b]}}catch{return null}}function r(a,b,c,d=e().randomUUID()){let f=(0,k.PG)(b);if(null===f||!l.has(f))return{ok:!1,error:"unsupported image type",status:400};if(0===a.length)return{ok:!1,error:"empty image",status:400};if(a.length>k.YP)return{ok:!1,error:"image is too large",status:413};let h={id:d,sha256:e().createHash("sha256").update(a).digest("hex"),ext:f,mime:b,bytes:a.length,createdAt:c},j=p(h);if(!g().existsSync(j)){g().mkdirSync(i().dirname(j),{recursive:!0});let b=`${j}.${process.pid}.${e().randomUUID()}.tmp`;g().writeFileSync(b,a),g().renameSync(b,j)}return{ok:!0,attachment:h}}function s(a,b,c=o()){try{let d=function(a){let b=new Set;for(let c of a)for(let a of c.attachments??[])b.add(a.sha256);return b}(a);for(let a of g().readdirSync(c)){let e=a.replace(/\.[^.]+$/,"");if(d.has(e))continue;let f=i().join(c,a);try{let a=g().statSync(f);if(b-a.mtimeMs<6048e5)continue;g().unlinkSync(f)}catch{}}}catch{}}},60641:(a,b,c)=>{function d(){return new Date().toISOString()}function e(a){return(a.split(/\r?\n/,1)[0]?.trim()??"")||"Untitled"}function f(a,b){return`Task #${a.slice(0,8)}: ${b}`}c.d(b,{Ec:()=>d,F7:()=>f,bO:()=>e})},90748:(a,b,c)=>{c.d(b,{O6:()=>s,UT:()=>m,Xb:()=>p,fW:()=>r,mQ:()=>n,vq:()=>o,yy:()=>q});var d=c(77598),e=c.n(d),f=c(49729),g=c(60641);function h(a){return"string"!=typeof a?null:a.trim()||null}function i(a){return!a||"object"!=typeof a||Array.isArray(a)?null:"number"==typeof a.x&&Number.isFinite(a.x)&&"number"==typeof a.y&&Number.isFinite(a.y)?{x:a.x,y:a.y}:null}function j(a){return"pinned"===a||"unplaced"===a?a:null}function k(a,b){let c=null!=a,d=null!=b;if(!c&&!d)return{ok:!0};if(c!==d)return{ok:!1,error:"dueAt and dueTz must be set together"};if("string"!=typeof a||"string"!=typeof b)return{ok:!1,error:"invalid deadline"};let e=Date.parse(a);return Number.isFinite(e)?!function(a){try{return new Intl.DateTimeFormat(void 0,{timeZone:a}),!0}catch{return!1}}(b)?{ok:!1,error:"invalid dueTz"}:{ok:!0,dueAt:new Date(e).toISOString(),dueTz:b}:{ok:!1,error:"invalid dueAt"}}function l(){return{ok:!1,error:"Task text must be no longer than 6000 characters",status:400}}function m(a,b,c=[],d={}){var n,o;let p="string"!=typeof(o=b.project)?null:o.trim()||null;if(!p)return{ok:!1,error:"project is required",status:400};let q=h(b.text);if(!q)return{ok:!1,error:"task text is required",status:400};if(q.length>6e3)return l();let r="string"==typeof b.clientRequestId&&b.clientRequestId.trim()?b.clientRequestId.trim():null;if(r){let b=c.find(a=>a.clientRequestId===r);if(b){let d=a.find(a=>a.id===b.taskId);if(d)return{ok:!0,tasks:a,task:d,recentCreates:c,replay:!0}}}let s=i(b.pos);if(void 0!==b.pos&&null!==b.pos&&!s)return{ok:!1,error:"invalid task position",status:400};let t=j(b.placement)??(s?"pinned":null);if(void 0!==b.placement&&null===t)return{ok:!1,error:"invalid placement",status:400};if("pinned"===t&&!s)return{ok:!1,error:"task position is required",status:400};if("unplaced"===t&&s)return{ok:!1,error:"unplaced task must not carry a position",status:400};if(null===t)return{ok:!1,error:"task position is required",status:400};let u=k(b.dueAt,b.dueTz);if(!u.ok)return{ok:!1,error:u.error,status:400};let v=function(a,b){if(null==a)return{ok:!0};if(!Array.isArray(a))return{ok:!1,error:"invalid attachments",status:400};if(0===a.length)return{ok:!0};let c=[];for(let d of a){if(!(0,f.tK)(d))return{ok:!1,error:"invalid attachment ref",status:400};if(!b(d))return{ok:!1,error:"attachment not found in store",status:400};c.push(d)}return{ok:!0,attachments:c}}(b.attachments,d.attachmentExists??(()=>!0));if(!v.ok)return v;let w=void 0===(n=b.source)?void 0:!n||"object"!=typeof n||Array.isArray(n)?null:"string"==typeof n.path&&n.path.trim()&&(null===n.ts||"string"==typeof n.ts)&&"string"==typeof n.text&&n.text.trim()&&"string"==typeof n.fingerprint&&n.fingerprint.trim()&&("claude"===n.engine||"codex"===n.engine)?{path:n.path,ts:n.ts,text:n.text,fingerprint:n.fingerprint,engine:n.engine}:null;if(null===w)return{ok:!1,error:"invalid task source",status:400};if(a.filter(a=>a.project===p).length>=300)return{ok:!1,error:"The project already has 300 tasks. Close or delete extra tasks.",status:409};let x=d.now?.()??(0,g.Ec)(),y=d.id?.()??e().randomUUID(),z={id:y,project:p,status:"inbox",text:q,placement:t,..."pinned"===t&&s?{pos:s}:{},...u.dueAt?{dueAt:u.dueAt,dueTz:u.dueTz}:{},...v.attachments?{attachments:v.attachments}:{},...w?{source:w}:{},assignments:[],createdAt:x,updatedAt:x};return{ok:!0,tasks:[...a,z],task:z,recentCreates:r?[...c,{clientRequestId:r,taskId:y}].slice(-100):c,replay:!1}}function n(a,b,c,d=(0,g.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let f=a[e],m={};if(Object.hasOwn(c,"text")){let a=h(c.text);if(!a)return{ok:!1,error:"task text is required",status:400};if(a.length>6e3)return l();m.text=a}if(Object.hasOwn(c,"status")){var o;let a="inbox"===(o=c.status)||"assigned"===o||"blocked"===o||"done"===o?o:null;if(!a)return{ok:!1,error:"invalid task status",status:400};m.status=a}if(Object.hasOwn(c,"pos")){let a=i(c.pos);if(!a)return{ok:!1,error:"invalid task position",status:400};m.pos=a,m.placement="pinned"}if(Object.hasOwn(c,"placement")){let a=j(c.placement);if(!a)return{ok:!1,error:"invalid placement",status:400};if("pinned"===a&&!m.pos&&!f.pos)return{ok:!1,error:"task position is required",status:400};m.placement=a}if(Object.hasOwn(c,"dueAt")||Object.hasOwn(c,"dueTz"))if(null===c.dueAt&&void 0===c.dueTz)m.dueAt=void 0,m.dueTz=void 0;else{let a=k(c.dueAt,c.dueTz);if(!a.ok)return{ok:!1,error:a.error,status:400};m.dueAt=a.dueAt,m.dueTz=a.dueTz}let p={...f,...m,updatedAt:d};Object.hasOwn(m,"dueAt")&&void 0===m.dueAt&&(delete p.dueAt,delete p.dueTz),"unplaced"===p.placement&&delete p.pos;let q=a.slice();return q[e]=p,{ok:!0,tasks:q,task:p}}function o(a,b){let c=a.filter(a=>a.id!==b);return c.length===a.length?{ok:!1,error:"task not found",status:404}:{ok:!0,tasks:c}}function p(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={};return"string"==typeof a.launchId&&a.launchId.trim()&&(b.launchId=a.launchId.trim()),"string"==typeof a.path&&a.path.trim()&&(b.path=a.path.trim()),"string"==typeof a.conversationId&&a.conversationId.trim()&&(b.conversationId=a.conversationId.trim()),"number"==typeof a.panePid&&Number.isInteger(a.panePid)&&a.panePid>0&&(b.panePid=a.panePid),null!=b.launchId||null!=b.conversationId||null!=b.path||null!=b.panePid?b:null}function q(a,b,c,d=(0,g.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let f="string"==typeof c?{path:c}:c,h=a[e],i=h.assignments.filter(a=>null!=f.launchId?a.launchId!==f.launchId:null!=f.conversationId?a.conversationId!==f.conversationId:null!=f.path?a.path!==f.path:null==f.panePid||a.panePid!==f.panePid);if(i.length===h.assignments.length)return{ok:!0,tasks:a,task:h};let j={...h,assignments:i,updatedAt:d},k=a.slice();return k[e]=j,{ok:!0,tasks:k,task:j}}function r(a,b){return a.find(a=>a.engine===b&&"string"==typeof a.accountId)?.accountId??null}function s(a,b,c,d=(0,g.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let f=a[e],h=function(a,b){let c=a.slice();for(let a of b){let b=c.findIndex(b=>a.launchId&&b.launchId?b.launchId===a.launchId:null!==a.path&&b.path===a.path||null===a.path&&null!==a.panePid&&null===b.path&&b.panePid===a.panePid),d=b>=0?c[b]:void 0,e=void 0!==a.launchId?a.launchId:d?.launchId,f=void 0!==a.clientAttemptId?a.clientAttemptId:d?.clientAttemptId,g=void 0!==a.conversationId?a.conversationId:d?.conversationId,h={...void 0!==e?{launchId:e}:{},...void 0!==f?{clientAttemptId:f}:{},path:a.path,...void 0!==g?{conversationId:g}:{},panePid:a.panePid,state:a.state,error:a.error,at:a.at,...void 0!==a.accountId?{accountId:a.accountId}:{},...void 0!==a.engine?{engine:a.engine}:{}};c=b>=0?[...c.slice(0,b),h,...c.slice(b+1)]:[...c,h]}return c}(f.assignments,c),i=h.some(a=>"delivered"===a.state||"spawning"===a.state||"handoff"===a.state),j=f.status;("inbox"===j||"assigned"===j)&&(j=i?"assigned":"inbox");let k={...f,status:j,assignments:h,updatedAt:d},l=a.slice();return l[e]=k,{ok:!0,tasks:l,task:k}}},99410:(a,b,c)=>{c.d(b,{PG:()=>f,YP:()=>e});let d={"image/png":"png","image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/webp":"webp"},e=0xa00000;function f(a){return d[a]??null}}};
|
|
1
|
+
"use strict";exports.id=8176,exports.ids=[8176],exports.modules={21153:(a,b,c)=>{c.d(b,{Pf:()=>x,h6:()=>u,z4:()=>w});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(89940),l=c(2033),m=c(49729);let n=(0,j.BQ)("tasks.json");function o(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,JSON.stringify(b,null,2)+"\n","utf8"),g().renameSync(c,a)}function p(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"number"==typeof a.x&&Number.isFinite(a.x)&&"number"==typeof a.y&&Number.isFinite(a.y)}function q(a){var b;return!(!a||"object"!=typeof a||Array.isArray(a))&&("string"==typeof a.path||null===a.path)&&(void 0===a.launchId||"string"==typeof a.launchId||null===a.launchId)&&(void 0===a.clientAttemptId||"string"==typeof a.clientAttemptId||null===a.clientAttemptId)&&(void 0===a.conversationId||"string"==typeof a.conversationId||null===a.conversationId)&&("number"==typeof a.panePid||null===a.panePid)&&(null===a.panePid||Number.isInteger(a.panePid)&&a.panePid>0)&&("delivered"===(b=a.state)||"failed"===b||"spawning"===b||"handoff"===b)&&("string"==typeof a.error||null===a.error)&&"string"==typeof a.at}function r(a){return"pinned"===a||"unplaced"===a||"auto"===a}function s(a){var b,c,d;let e,f;if(!a||"object"!=typeof a||Array.isArray(a)||!("string"==typeof a.id&&"string"==typeof a.project&&("inbox"===(b=a.status)||"assigned"===b||"blocked"===b||"done"===b)&&"string"==typeof a.text&&(void 0===a.placement||r(a.placement))&&(void 0===a.pos||p(a.pos))&&(e=void 0!==a.dueAt,f=void 0!==a.dueTz,!e&&!f||"string"==typeof a.dueAt&&"string"==typeof a.dueTz)&&(void 0===(c=a.attachments)||Array.isArray(c)&&c.every(m.tK))&&Array.isArray(a.assignments)&&a.assignments.every(q)&&(void 0===a.source||!(!(d=a.source)||"object"!=typeof d||Array.isArray(d))&&"string"==typeof d.path&&("string"==typeof d.ts||null===d.ts)&&"string"==typeof d.text&&"string"==typeof d.fingerprint&&("claude"===d.engine||"codex"===d.engine))&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt))return null;let g=p(a.pos),h=r(a.placement)?a.placement:g?"pinned":"unplaced";return{id:a.id,project:(0,k.G$)(a.project),status:a.status,text:a.text,placement:"pinned"!==h||g?h:"unplaced",..."pinned"===h&&g?{pos:a.pos}:{},...void 0!==a.dueAt?{dueAt:a.dueAt,dueTz:a.dueTz}:{},...void 0!==a.attachments?{attachments:a.attachments}:{},assignments:a.assignments,...void 0!==a.source?{source:a.source}:{},createdAt:a.createdAt,updatedAt:a.updatedAt}}function t(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.clientRequestId&&"string"==typeof a.taskId}function u(a=n){return v(a).tasks}function v(a=n){let b=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(a);return{tasks:Array.isArray(b?.tasks)?b.tasks.map(s).filter(a=>null!==a):[],recentCreates:Array.isArray(b?.recentCreates)?b.recentCreates.filter(t):[]}}function w(a,b=n){return(0,l.Ol)(b,"task state is busy",()=>{let c=v(b),d=a(c.tasks);return d.tasks&&o(b,c.recentCreates.length?{tasks:d.tasks,recentCreates:c.recentCreates}:{tasks:d.tasks}),d.result})}function x(a,b=n){return(0,l.Ol)(b,"task state is busy",()=>{let c=a(v(b));return c.state&&o(b,c.state.recentCreates.length?{tasks:c.state.tasks,recentCreates:c.state.recentCreates}:{tasks:c.state.tasks}),c.result})}},49729:(a,b,c)=>{c.d(b,{L0:()=>p,tK:()=>n,Gm:()=>q,nw:()=>r,Bx:()=>s});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(99410);let l=new Set(["png","jpg","gif","webp"]),m={png:"image/png",jpg:"image/jpeg",gif:"image/gif",webp:"image/webp"};function n(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&a.id.length>0&&"string"==typeof a.sha256&&/^[0-9a-f]{64}$/.test(a.sha256)&&"string"==typeof a.ext&&l.has(a.ext)&&"string"==typeof a.mime&&null!==(0,k.PG)(a.mime)&&"number"==typeof a.bytes&&Number.isFinite(a.bytes)&&a.bytes>0&&"string"==typeof a.createdAt}function o(){return(0,j.BQ)("attachments","tasks")}function p(a){return i().join(o(),`${a.sha256}.${a.ext}`)}function q(a,b){if(!/^[0-9a-f]{64}$/.test(a)||!l.has(b))return null;let c=p({sha256:a,ext:b});try{return{data:g().readFileSync(c),mime:m[b]}}catch{return null}}function r(a,b,c,d=e().randomUUID()){let f=(0,k.PG)(b);if(null===f||!l.has(f))return{ok:!1,error:"unsupported image type",status:400};if(0===a.length)return{ok:!1,error:"empty image",status:400};if(a.length>k.YP)return{ok:!1,error:"image is too large",status:413};let h={id:d,sha256:e().createHash("sha256").update(a).digest("hex"),ext:f,mime:b,bytes:a.length,createdAt:c},j=p(h);if(!g().existsSync(j)){g().mkdirSync(i().dirname(j),{recursive:!0});let b=`${j}.${process.pid}.${e().randomUUID()}.tmp`;g().writeFileSync(b,a),g().renameSync(b,j)}return{ok:!0,attachment:h}}function s(a,b,c=o()){try{let d=function(a){let b=new Set;for(let c of a)for(let a of c.attachments??[])b.add(a.sha256);return b}(a);for(let a of g().readdirSync(c)){let e=a.replace(/\.[^.]+$/,"");if(d.has(e))continue;let f=i().join(c,a);try{let a=g().statSync(f);if(b-a.mtimeMs<6048e5)continue;g().unlinkSync(f)}catch{}}}catch{}}},60641:(a,b,c)=>{function d(){return new Date().toISOString()}function e(a){return(a.split(/\r?\n/,1)[0]?.trim()??"")||"Untitled"}function f(a,b){return`Task #${a.slice(0,8)}: ${b}`}c.d(b,{Ec:()=>d,F7:()=>f,bO:()=>e})},90748:(a,b,c)=>{c.d(b,{O6:()=>s,UT:()=>m,Xb:()=>p,fW:()=>r,mQ:()=>n,vq:()=>o,yy:()=>q});var d=c(77598),e=c.n(d),f=c(49729),g=c(60641);function h(a){return"string"!=typeof a?null:a.trim()||null}function i(a){return!a||"object"!=typeof a||Array.isArray(a)?null:"number"==typeof a.x&&Number.isFinite(a.x)&&"number"==typeof a.y&&Number.isFinite(a.y)?{x:a.x,y:a.y}:null}function j(a){return"pinned"===a||"unplaced"===a?a:null}function k(a,b){let c=null!=a,d=null!=b;if(!c&&!d)return{ok:!0};if(c!==d)return{ok:!1,error:"dueAt and dueTz must be set together"};if("string"!=typeof a||"string"!=typeof b)return{ok:!1,error:"invalid deadline"};let e=Date.parse(a);return Number.isFinite(e)?!function(a){try{return new Intl.DateTimeFormat(void 0,{timeZone:a}),!0}catch{return!1}}(b)?{ok:!1,error:"invalid dueTz"}:{ok:!0,dueAt:new Date(e).toISOString(),dueTz:b}:{ok:!1,error:"invalid dueAt"}}function l(){return{ok:!1,error:"Task text must be no longer than 6000 characters",status:400}}function m(a,b,c=[],d={}){var n,o;let p="string"!=typeof(o=b.project)?null:o.trim()||null;if(!p)return{ok:!1,error:"project is required",status:400};let q=h(b.text);if(!q)return{ok:!1,error:"task text is required",status:400};if(q.length>6e3)return l();let r="string"==typeof b.clientRequestId&&b.clientRequestId.trim()?b.clientRequestId.trim():null;if(r){let b=c.find(a=>a.clientRequestId===r);if(b){let d=a.find(a=>a.id===b.taskId);if(d)return{ok:!0,tasks:a,task:d,recentCreates:c,replay:!0}}}let s=i(b.pos);if(void 0!==b.pos&&null!==b.pos&&!s)return{ok:!1,error:"invalid task position",status:400};let t=j(b.placement)??(s?"pinned":null);if(void 0!==b.placement&&null===t)return{ok:!1,error:"invalid placement",status:400};if("pinned"===t&&!s)return{ok:!1,error:"task position is required",status:400};if("unplaced"===t&&s)return{ok:!1,error:"unplaced task must not carry a position",status:400};if(null===t)return{ok:!1,error:"task position is required",status:400};let u=k(b.dueAt,b.dueTz);if(!u.ok)return{ok:!1,error:u.error,status:400};let v=function(a,b){if(null==a)return{ok:!0};if(!Array.isArray(a))return{ok:!1,error:"invalid attachments",status:400};if(0===a.length)return{ok:!0};let c=[];for(let d of a){if(!(0,f.tK)(d))return{ok:!1,error:"invalid attachment ref",status:400};if(!b(d))return{ok:!1,error:"attachment not found in store",status:400};c.push(d)}return{ok:!0,attachments:c}}(b.attachments,d.attachmentExists??(()=>!0));if(!v.ok)return v;let w=void 0===(n=b.source)?void 0:!n||"object"!=typeof n||Array.isArray(n)?null:"string"==typeof n.path&&n.path.trim()&&(null===n.ts||"string"==typeof n.ts)&&"string"==typeof n.text&&n.text.trim()&&"string"==typeof n.fingerprint&&n.fingerprint.trim()&&("claude"===n.engine||"codex"===n.engine)?{path:n.path,ts:n.ts,text:n.text,fingerprint:n.fingerprint,engine:n.engine}:null;if(null===w)return{ok:!1,error:"invalid task source",status:400};if(a.filter(a=>a.project===p).length>=300)return{ok:!1,error:"The project already has 300 tasks. Close or delete extra tasks.",status:409};let x=d.now?.()??(0,g.Ec)(),y=d.id?.()??e().randomUUID(),z={id:y,project:p,status:"inbox",text:q,placement:t,..."pinned"===t&&s?{pos:s}:{},...u.dueAt?{dueAt:u.dueAt,dueTz:u.dueTz}:{},...v.attachments?{attachments:v.attachments}:{},...w?{source:w}:{},assignments:[],createdAt:x,updatedAt:x};return{ok:!0,tasks:[...a,z],task:z,recentCreates:r?[...c,{clientRequestId:r,taskId:y}].slice(-100):c,replay:!1}}function n(a,b,c,d=(0,g.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let f=a[e],m={};if(Object.hasOwn(c,"text")){let a=h(c.text);if(!a)return{ok:!1,error:"task text is required",status:400};if(a.length>6e3)return l();m.text=a}if(Object.hasOwn(c,"status")){var o;let a="inbox"===(o=c.status)||"assigned"===o||"blocked"===o||"done"===o?o:null;if(!a)return{ok:!1,error:"invalid task status",status:400};m.status=a}if(Object.hasOwn(c,"pos")){let a=i(c.pos);if(!a)return{ok:!1,error:"invalid task position",status:400};m.pos=a,m.placement="pinned"}if(Object.hasOwn(c,"placement")){let a=j(c.placement);if(!a)return{ok:!1,error:"invalid placement",status:400};if("pinned"===a&&!m.pos&&!f.pos)return{ok:!1,error:"task position is required",status:400};m.placement=a}if(Object.hasOwn(c,"dueAt")||Object.hasOwn(c,"dueTz"))if(null===c.dueAt&&void 0===c.dueTz)m.dueAt=void 0,m.dueTz=void 0;else{let a=k(c.dueAt,c.dueTz);if(!a.ok)return{ok:!1,error:a.error,status:400};m.dueAt=a.dueAt,m.dueTz=a.dueTz}let p={...f,...m,updatedAt:d};Object.hasOwn(m,"dueAt")&&void 0===m.dueAt&&(delete p.dueAt,delete p.dueTz),"unplaced"===p.placement&&delete p.pos;let q=a.slice();return q[e]=p,{ok:!0,tasks:q,task:p}}function o(a,b){let c=a.filter(a=>a.id!==b);return c.length===a.length?{ok:!1,error:"task not found",status:404}:{ok:!0,tasks:c}}function p(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={};return"string"==typeof a.launchId&&a.launchId.trim()&&(b.launchId=a.launchId.trim()),"string"==typeof a.path&&a.path.trim()&&(b.path=a.path.trim()),"string"==typeof a.conversationId&&a.conversationId.trim()&&(b.conversationId=a.conversationId.trim()),"number"==typeof a.panePid&&Number.isInteger(a.panePid)&&a.panePid>0&&(b.panePid=a.panePid),null!=b.launchId||null!=b.conversationId||null!=b.path||null!=b.panePid?b:null}function q(a,b,c,d=(0,g.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let f="string"==typeof c?{path:c}:c,h=a[e],i=h.assignments.filter(a=>null!=f.launchId?a.launchId!==f.launchId:null!=f.conversationId?a.conversationId!==f.conversationId:null!=f.path?a.path!==f.path:null==f.panePid||a.panePid!==f.panePid);if(i.length===h.assignments.length)return{ok:!0,tasks:a,task:h};let j={...h,assignments:i,updatedAt:d},k=a.slice();return k[e]=j,{ok:!0,tasks:k,task:j}}function r(a,b){return a.find(a=>a.engine===b&&"string"==typeof a.accountId)?.accountId??null}function s(a,b,c,d=(0,g.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let f=a[e],h=function(a,b){let c=a.slice();for(let a of b){let b=c.findIndex(b=>a.launchId&&b.launchId?b.launchId===a.launchId:null!==a.path&&b.path===a.path||null===a.path&&null!==a.panePid&&null===b.path&&b.panePid===a.panePid),d=b>=0?c[b]:void 0,e=void 0!==a.launchId?a.launchId:d?.launchId,f=void 0!==a.clientAttemptId?a.clientAttemptId:d?.clientAttemptId,g=void 0!==a.conversationId?a.conversationId:d?.conversationId,h={...void 0!==e?{launchId:e}:{},...void 0!==f?{clientAttemptId:f}:{},path:a.path,...void 0!==g?{conversationId:g}:{},panePid:a.panePid,state:a.state,error:a.error,at:a.at,...void 0!==a.accountId?{accountId:a.accountId}:{},...void 0!==a.engine?{engine:a.engine}:{}};c=b>=0?[...c.slice(0,b),h,...c.slice(b+1)]:[...c,h]}return c}(f.assignments,c),i=h.some(a=>"delivered"===a.state||"spawning"===a.state||"handoff"===a.state),j=f.status;("inbox"===j||"assigned"===j)&&(j=i?"assigned":"inbox");let k={...f,status:j,assignments:h,updatedAt:d},l=a.slice();return l[e]=k,{ok:!0,tasks:l,task:k}}},99410:(a,b,c)=>{c.d(b,{PG:()=>f,YP:()=>e});let d={"image/png":"png","image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/webp":"webp"},e=0xa00000;function f(a){return d[a]??null}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=8444,exports.ids=[8444],exports.modules={20208:(a,b,c)=>{c.d(b,{wj:()=>t,uh:()=>s,KZ:()=>o});var d=c(38349),e=c(31421),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h);let j={setTimeout:(a,b)=>setTimeout(a,b),clearTimeout:a=>{clearTimeout(a)}};var k=c(65281);function l(){return new DOMException("file scan cancelled","AbortError")}function m(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}let n=globalThis;function o(a,b={},c=new AbortController().signal){let f={...b,persist:a.persist,...a.fresh?{fresh:!0}:{}};if(c.aborted)return Promise.reject(q(c.reason));if(!function(a=process.env){return"test"!==a.NODE_ENV&&"1"!==a.LLV_FILE_SCANNER_WORKER&&"1"!==a.LLV_FILE_SCANNER_WORKER_DISABLED}())return(0,d.SW)(void 0,{...f,signal:c}).then(a=>{if(c.aborted)throw q(c.reason);return a});let{onResourceSnapshot:h,...n}=f;return function(a,b,c={}){if(c.signal?.aborted)return Promise.reject(l());let d=c.launch??function(a=process.cwd()){let b=i().join(a,"src/lib/fileScanner.worker.ts"),c=i().join(a,".next/server/file-scanner-worker.js");return g().existsSync(b)&&g().existsSync("/usr/local/bin/bun-container")?{executable:"/usr/local/bin/bun-container",workerPath:b}:g().existsSync(c)?{executable:process.execPath,workerPath:c}:{executable:process.execPath,workerPath:b}}(c.cwd),f=void 0===c.launch&&g().existsSync("/usr/bin/nice"),h=(0,e.spawn)(f?"/usr/bin/nice":d.executable,[...f?["-n","10",d.executable]:[],d.workerPath],{cwd:c.cwd??process.cwd(),stdio:["pipe","pipe","pipe"],env:{...(0,k.Fd)(c.env??process.env),LLV_FILE_SCANNER_WORKER:"1"}});return new Promise((d,e)=>{let f,g=c.scheduler??j,i=!1,k=!1,n="",o="",p=0,q=null,r=null,s=(a,b)=>{i||(i=!0,void 0!==f&&(g.clearTimeout(f),f=void 0),k&&(c.signal?.removeEventListener("abort",v),k=!1),a?e(a):d(b))},t=a=>{if(!i&&!r){r=a;try{h.kill("SIGKILL")}catch{}(null!==h.exitCode||null!==h.signalCode)&&s(a)}},u=a=>{t(Error(a))},v=()=>t(l()),w=()=>{for(;;){let a,c=n.indexOf("\n");if(c<0)return;let d=n.slice(0,c);if(n=n.slice(c+1),!d)continue;try{a=JSON.parse(d)}catch{u("file scanner worker emitted invalid JSON");return}let e=function(a){var b;return m(a)&&("resource"===a.type||"complete"===a.type)&&m(b=a.snapshot)&&Array.isArray(b.files)&&Array.isArray(b.projectCatalog)&&"boolean"==typeof b.complete&&(void 0===b.pinOverlayPaths||Array.isArray(b.pinOverlayPaths))?a:null}(a);if(!e)return void u("file scanner worker emitted an invalid message");"resource"===e.type?b?.(e.snapshot):q=e.snapshot}};f=g.setTimeout(()=>{f=void 0,u("file scanner worker timed out")},c.timeoutMs??3e5),h.once("error",a=>s(a)),h.stdout.setEncoding("utf8"),h.stdout.on("data",a=>{(p+=Buffer.byteLength(a))>0x2000000?u("file scanner worker exceeded output limit"):(n+=a,w())}),h.stderr.setEncoding("utf8"),h.stderr.on("data",a=>{o=`${o}${a}`,Buffer.byteLength(o)>4096&&(o=Buffer.from(o).subarray(-4096).toString("utf8"))}),h.once("close",(a,b)=>{if(!i){if(r)return void s(r);if(w(),0!==a||!q){let c=o.trim();s(Error(`file scanner worker exited before completion (${b??a??"unknown"})${c?`: ${c}`:""}`));return}s(void 0,q)}}),h.stdin.once("error",a=>{r||s(a)}),c.signal&&(c.signal.addEventListener("abort",v,{once:!0}),k=!0,c.signal.aborted&&v()),h.stdin.end(JSON.stringify({type:"scan",options:a}))})}(n,h,{signal:c})}let p=(a,b)=>o(a,{},b);function q(a){return a instanceof Error&&"AbortError"===a.name?a:new DOMException("file scan cancelled","AbortError")}function r(a,b){if(b.settled||b.subscribers>0||(b.controller.abort(q()),b.started))return;let c=a.queue.indexOf(b);c>=0&&a.queue.splice(c,1),b.settled=!0,b.reject(q())}async function s(a={},b=p){var c,d;let e=n.__llvFileScanCoordinator??={generation:0,queue:[],startScheduled:!1};if(a.signal?.aborted)throw q(a.signal.reason);let f={persist:!0===a.persist,fresh:!0===a.fresh},g=!0===a.exclusive,h=e.inflight,i=g||!h||h.controller.signal.aborted||h.exclusive||!1===a.join||(c=h.intent,!c.persist&&f.persist||!c.fresh&&f.fresh)?function(a,b,c,d){let e,f,g;if(!d){let c=a.queue.find(a=>!a.exclusive);if(c)return c.intent={persist:c.intent.persist||b.persist,fresh:c.intent.fresh||b.fresh},c}let h=((g=new Promise((a,b)=>{e=a,f=b})).catch(()=>void 0),{generation:0,intent:b,runner:c,exclusive:d,controller:new AbortController,subscribers:0,started:!1,settled:!1,promise:g,resolve:e,reject:f});return a.queue.push(h),function a(b){b.startScheduled||(b.startScheduled=!0,queueMicrotask(()=>{if(b.startScheduled=!1,b.inflight)return;let c=b.queue.shift();c&&function(b,c){let d;b.generation+=1,c.generation=b.generation,c.started=!0,b.inflight=c;try{d=Promise.resolve(c.runner(c.intent,c.controller.signal))}catch(a){d=Promise.reject(a)}d.then(a=>{c.settled=!0,c.resolve(a)},a=>{c.settled=!0,c.reject(a)}).finally(()=>{b.inflight===c&&(b.inflight=void 0),a(b)})}(b,c)}))}(a),h}(e,f,b,g):h;return d=a.signal,d?.aborted?(r(e,i),Promise.reject(q(d.reason))):(i.subscribers+=1,new Promise((a,b)=>{let c=!0,f=()=>{c&&(c=!1,d?.removeEventListener("abort",g),i.subscribers-=1,r(e,i))},g=()=>{f(),b(q(d?.reason))};d?.addEventListener("abort",g,{once:!0}),i.promise.then(b=>{c&&(f(),a(structuredClone(b)))},a=>{c&&(f(),b(a))})}))}function t(){return s({persist:!0})}},58444:(a,b,c)=>{c.d(b,{Nm:()=>D,TF:()=>v});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(27146),k=c(842),l=c(28976),m=c(88430),n=c(90136),o=c(20208);let p="files-scan-snapshot.json",q=-1/0,r=globalThis;function s(a){return"object"==typeof a&&null!==a}function t(a){if(!s(a)||!0!==a.complete||!Array.isArray(a.files)||!Array.isArray(a.projectCatalog))return!1;let b=a.files.every(a=>{var b;return!!s(a)&&"string"==typeof a.path&&("codex-sessions"===a.root||"claude-projects"===a.root||"claude-tasks"===a.root)&&"string"==typeof a.name&&"string"==typeof a.project&&"string"==typeof a.title&&("codex"===a.engine||"claude"===a.engine||"shell"===a.engine)&&"string"==typeof a.kind&&("codex"===a.fmt||"claude"===a.fmt||"plain"===a.fmt)&&(null===a.parent||"string"==typeof a.parent)&&"number"==typeof a.mtime&&Number.isFinite(a.mtime)&&"number"==typeof a.size&&Number.isFinite(a.size)&&(void 0===a.sessionStartedAt||null===a.sessionStartedAt||"string"==typeof a.sessionStartedAt)&&(void 0===a.nativeParentThreadId||null===a.nativeParentThreadId||"string"==typeof a.nativeParentThreadId)&&(void 0===a.nativeForkSourceThreadId||null===a.nativeForkSourceThreadId||"string"==typeof a.nativeForkSourceThreadId)&&("live"===a.activity||"recent"===a.activity||"stalled"===a.activity||"idle"===a.activity)&&(void 0===a.authoritativeTurn||!!s(b=a.authoritativeTurn)&&("busy"===b.state||"terminal"===b.state||"idle"===b.state||"unknown"===b.state)&&("lifecycle"===b.source||"tool"===b.source||"assistant"===b.source||"empty"===b.source)&&(null===b.terminalAt||"string"==typeof b.terminalAt))&&(null===a.proc||"running"===a.proc||"done"===a.proc||"killed"===a.proc)&&(null===a.pid||"number"==typeof a.pid)&&(null===a.model||"string"==typeof a.model)&&(null===a.pendingQuestion||s(a.pendingQuestion))&&(null===a.waitingInput||s(a.waitingInput))}),c=a.projectCatalog.every(a=>s(a)&&"string"==typeof a.project&&"number"==typeof a.smt&&Number.isFinite(a.smt)&&"number"==typeof a.conversations&&Number.isSafeInteger(a.conversations)&&(void 0===a.projectRoot||"string"==typeof a.projectRoot));return b&&c}function u(){try{let a=JSON.parse(g().readFileSync((0,j.BQ)(p),"utf8"));if(!s(a)||1!==a.version||9!==a.schemaVersion||!t(a.snapshot))return;return a.snapshot}catch{return}}function v(){return u()}function w(a){return s(a)&&"promise"in a?w(a.promise):s(a)&&"function"==typeof a.then?Promise.resolve(a):void 0}function x(a,b,c,d=c,e=new AbortController){let f={generation:b,promise:c,resourcePromise:d,controller:e,subscribers:0,settled:!1};a.refresh=f;let g=()=>{f.settled=!0,a.refresh===f&&(a.refresh=void 0)};return c.then(g,g),f}function y(a){return a instanceof Error&&"AbortError"===a.name?a:new DOMException("file scan cancelled","AbortError")}async function z(a,b,c,d){let e=performance.now();try{let f=await d();return a.lastScan={generation:b,reason:c,status:"complete",durationMs:performance.now()-e},f}catch(d){throw a.lastScan={generation:b,reason:c,status:"failed",durationMs:performance.now()-e},d}}function A(a,b,c,d,f){let h=void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration,k="ordinary"===c||"cold"===c;return z(a,b,c,async()=>{let c=await (0,o.uh)({fresh:h,join:k,signal:f},(b,c)=>(0,o.KZ)(b,{persistIndex:"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER,...d?{onResourceSnapshot:d,resourceBaseline:a.snapshot}:{}},c));if(!c.complete)throw Error("filesystem scan incomplete");return"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER&&function(a){let b,c="create state directory",d=(0,j.BQ)(p);try{let f=(0,j.BQ)(p);d=f,g().mkdirSync(i().dirname(f),{recursive:!0,mode:448}),b=i().join(i().dirname(f),`.${i().basename(f)}.${process.pid}.${e().randomUUID()}.tmp`),c="write temporary snapshot",d=b,g().writeFileSync(b,JSON.stringify({version:1,schemaVersion:9,snapshot:a})+"\n",{encoding:"utf8",mode:384}),c="rename temporary snapshot",d=f,g().renameSync(b,f)}catch(e){if(void 0!==b)try{g().unlinkSync(b)}catch{}let a=Date.now();if(a-q>=6e4){q=a;let b=e instanceof Error?`${e.message}${"code"in e&&e.code?` (${String(e.code)})`:""}`:String(e);console.error(`[files scan cache] ${c} failed for ${d}: ${b}; a later refresh will retry`)}}}(c),a.snapshot=c,a.snapshotGeneration=Math.max(a.snapshotGeneration,b),a.refreshedAt=Date.now(),a.completedAt=a.refreshedAt,h&&void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration&&(a.freshObservationGeneration=void 0),c})}function B(a,b,c,d){let e=performance.now(),f=b?function(a,b){let c=a.pinnedSnapshots?.get(b);if(c)return a.pinnedSnapshots.delete(b),a.pinnedSnapshots.set(b,c),c}(a,b):void 0;if(f){let b=structuredClone({snapshot:f.snapshot,pinOverlayPaths:f.pinOverlayPaths,generation:f.generation,targetGeneration:c});return{...b,cacheStatus:d??(b.generation<c?"stale":"hit"),requestCount:a.requestCount??0,cloneDurationMs:performance.now()-e,refreshedAt:f.refreshedAt,...a.lastScan?{lastScan:{...a.lastScan}}:{}}}return{snapshot:structuredClone(a.snapshot),generation:a.snapshotGeneration,targetGeneration:c,cacheStatus:d??(a.snapshotGeneration<c?"stale":"hit"),requestCount:a.requestCount??0,cloneDurationMs:performance.now()-e,refreshedAt:a.completedAt??a.refreshedAt,...a.lastScan?{lastScan:{...a.lastScan}}:{}}}function C(a){return a.requestedGeneration+=1,a.requestedGeneration}async function D({revalidate:a=!0,signal:b}={}){let c,d,e=function(){let a=(r.__llvFilesRouteScans??=new Map,r.__llvFilesRouteScans),b=a.get("");if(void 0===b){let b=u();b&&function(a){for(let b of((0,m.X)(a.files),a.files)){let a;if(!0!==b.derivationComplete)continue;try{a=g().statSync(b.path)}catch{continue}if(a.size!==b.size||a.mtimeMs/1e3!==b.mtime)continue;let c=1e3*b.mtime,d=function(a){if("jsonl_turn_open"===a.activityReason||"jsonl_turn_stalled"===a.activityReason||"pane_at_composer"===a.activityReason)return{state:"busy",source:"lifecycle",terminalAt:null};if("jsonl_turn_completed"===a.activityReason){let b=a.lastTurn?.endedAt;return{state:"terminal",source:"lifecycle",terminalAt:"number"==typeof b&&Number.isFinite(b)?new Date(b).toISOString():null}}if("mtime_fresh"===a.activityReason||"mtime_recent"===a.activityReason||"mtime_old"===a.activityReason)return{state:"unknown",source:"empty",terminalAt:null}}(b);void 0!==d&&b.path.endsWith(".jsonl")&&("claude"===b.engine||"codex"===b.engine)&&((0,k.Ul)(b.path,b.size,c,"codex"===b.engine,d,{authoritative:!1,composerReleased:"pane_at_composer"===b.activityReason}),b.authoritativeTurn?(0,k.Ul)(b.path,b.size,c,"codex"===b.engine,b.authoritativeTurn,{composerReleased:"pane_at_composer"===b.activityReason}):("codex"===b.engine||"terminal"!==d.state)&&(0,k.Ul)(b.path,b.size,c,"codex"===b.engine,d,{composerReleased:"pane_at_composer"===b.activityReason})),"claude-projects"===b.root&&b.path.includes(`${i().sep}subagents${i().sep}`)||(0,l.E)("model").set(b.path,[b.size,c,{display:b.model,launch:b.launchModel??null}]),Object.hasOwn(b,"effort")&&("claude"!==b.engine||"running"!==b.proc)&&(0,l.E)("effort").set(b.path,[b.size,c,b.effort??null]),Object.hasOwn(b,"plan")&&(0,l.E)("plan-v2").set(b.path,[b.size,c,b.plan]),Object.hasOwn(b,"goal")&&(0,l.E)("goal-v2").set(b.path,[b.size,c,b.goal]),Object.hasOwn(b,"ctx")&&(0,l.E)("ctx-v2").set(b.path,[b.size,c,b.ctx]),Object.hasOwn(b,"lastTurn")&&(0,l.E)("last-turn-v5").set(b.path,[b.size,c,b.lastTurn]),Object.hasOwn(b,"pendingWakeup")&&(0,l.E)("wakeup-v2").set(b.path,[b.size,c,b.pendingWakeup]),"claude-projects"===b.root&&b.path.endsWith(".jsonl")&&(0,l.E)(n.oS).set(b.path,[b.size,c,function(a){if(!a.pendingQuestion)return null;let{pid:b,paneTarget:c,...d}=a.pendingQuestion;return d}(b)])}}(b);let c={schemaVersion:9,snapshot:b,snapshotGeneration:0,requestedGeneration:0,refreshedAt:0,completedAt:b?function(){try{return g().statSync((0,j.BQ)(p)).mtimeMs}catch{return 0}}():0};return a.set("",c),c}let c=function(a){if(s(a)&&9===a.schemaVersion&&Number.isSafeInteger(a.snapshotGeneration)&&Number.isSafeInteger(a.requestedGeneration)){let b=w(a.refresh);return!b||a.refresh?.controller&&Number.isSafeInteger(a.refresh.subscribers)||x(a,a.refresh?.generation??0,b),a}let b=s(a)?a:{},c={schemaVersion:9,snapshot:t(b.snapshot)?b.snapshot:void 0,snapshotGeneration:0,requestedGeneration:0,refreshedAt:"number"==typeof b.refreshedAt&&Number.isFinite(b.refreshedAt)?b.refreshedAt:0,completedAt:"number"==typeof b.completedAt&&Number.isFinite(b.completedAt)?b.completedAt:"number"==typeof b.refreshedAt&&Number.isFinite(b.refreshedAt)?b.refreshedAt:0},d=w(b.refresh);if(d){let a=d.then(a=>{if(!a.complete)throw Error("filesystem scan incomplete");return c.snapshot=a,c.refreshedAt=Date.now(),c.completedAt=c.refreshedAt,a});x(c,0,a)}return c}(b);return a.delete(""),a.set("",c),c}();if(e.requestCount=(e.requestCount??0)+1,e.snapshot){let b=Date.now();if(a&&!e.refresh&&b-Math.max(e.refreshedAt,e.ordinaryRefreshRequestedAt??0)>=3e5){let a,c,d,f,g=C(e);e.ordinaryRefreshRequestedAt=b,a=!1,c=!1,d=new AbortController,f=new Promise(a=>setImmediate(a)).then(()=>{if(a=!0,d.signal.aborted)throw y(d.signal.reason);if(c){if(!e.snapshot)throw Error("deferred file scan canceled without a completed snapshot");return e.snapshot}return A(e,g,"ordinary",void 0,d.signal)}),x(e,g,f,f,d).cancelBeforeStart=()=>!a&&(c=!0,!0)}return B(e,void 0,e.snapshotGeneration)}let f=e.refresh?.generation??C(e),h=e.refresh??(d=A(e,f,"cold",void 0,(c=new AbortController).signal),x(e,f,d,d,c));return await (b?.aborted?Promise.reject(y(b.reason)):(h.subscribers+=1,new Promise((a,c)=>{let d=!0,e=()=>{d&&(d=!1,b?.removeEventListener("abort",f),h.subscribers-=1,0!==h.subscribers||h.settled||h.controller.abort(y()))},f=()=>{e(),c(y(b?.reason))};b?.addEventListener("abort",f,{once:!0}),h.promise.then(b=>{d&&(e(),a(b))},a=>{d&&(e(),c(a))})}))),B(e,void 0,f,"miss")}}};
|
|
1
|
+
"use strict";exports.id=8444,exports.ids=[8444],exports.modules={20208:(a,b,c)=>{c.d(b,{wj:()=>v,uh:()=>u,KZ:()=>q});var d=c(86519),e=c(31421),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h);let j={setTimeout:(a,b)=>setTimeout(a,b),clearTimeout:a=>{clearTimeout(a)}};var k=c(10991),l=c(65281),m=c(55218);function n(){return new DOMException("file scan cancelled","AbortError")}function o(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}let p=globalThis;function q(a,b={},c=new AbortController().signal){let f={...b,persist:a.persist,...a.fresh?{fresh:!0}:{}};if(c.aborted)return Promise.reject(s(c.reason));if(!function(a=process.env){return"test"!==a.NODE_ENV&&"1"!==a.LLV_FILE_SCANNER_WORKER&&"1"!==a.LLV_FILE_SCANNER_WORKER_DISABLED}())return(0,d.SW)(void 0,{...f,signal:c}).then(a=>{if(c.aborted)throw s(c.reason);return a});let{onResourceSnapshot:h,...p}=f;return function(a,b,c={}){if(c.signal?.aborted)return Promise.reject(n());let d=(0,m.FX)(!1),f=c.launch??function(a=process.cwd()){let b=i().join(a,"src/lib/fileScanner.worker.ts"),c=i().join(a,".next/server/file-scanner-worker.js");return g().existsSync(b)&&g().existsSync("/usr/local/bin/bun-container")?{executable:"/usr/local/bin/bun-container",workerPath:b}:g().existsSync(c)?{executable:process.versions.bun?process.execPath:process.env.LLV_BUN_EXECUTABLE||"bun",workerPath:c}:{executable:process.execPath,workerPath:b}}(c.cwd),h=void 0===c.launch&&g().existsSync("/usr/bin/nice"),p=(0,e.spawn)(h?"/usr/bin/nice":f.executable,[...h?["-n","10",f.executable]:[],f.workerPath],{cwd:c.cwd??process.cwd(),stdio:["pipe","pipe","pipe"],env:{...(0,l.Fd)(c.env??process.env),LLV_FILE_SCANNER_WORKER:"1"}});return new Promise((e,f)=>{let g,h,i=c.scheduler??j,l=!1,q=!1,r="",s="",t=0,u=null,v=null,w=(a,b)=>{l||(l=!0,void 0!==h&&(i.clearTimeout(h),h=void 0),q&&(c.signal?.removeEventListener("abort",z),q=!1),a?f(a):e(b))},x=a=>{if(!l&&!v){v=a;try{p.kill("SIGKILL")}catch{}(null!==p.exitCode||null!==p.signalCode)&&w(a)}},y=a=>{x(Error(a))},z=()=>x(n()),A=()=>{for(;;){let a,c=r.indexOf("\n");if(c<0)return;let d=r.slice(0,c);if(r=r.slice(c+1),!d)continue;try{a=JSON.parse(d)}catch{y("file scanner worker emitted invalid JSON");return}let e=function(a){var b;return o(a)&&("resource"===a.type||"complete"===a.type)&&o(b=a.snapshot)&&Array.isArray(b.files)&&Array.isArray(b.projectCatalog)&&"boolean"==typeof b.complete&&(void 0===b.conversationCatalog||Array.isArray(b.conversationCatalog))&&(void 0===b.pinOverlayPaths||Array.isArray(b.pinOverlayPaths))?a:null}(a);if(!e)return void y("file scanner worker emitted an invalid message");if("resource"===e.type)b?.(e.snapshot);else{let{conversationCatalog:a,...b}=e.snapshot;g=a,u=b}}};h=i.setTimeout(()=>{h=void 0,y("file scanner worker timed out")},c.timeoutMs??3e5),p.once("error",a=>w(a)),p.stdout.setEncoding("utf8"),p.stdout.on("data",a=>{(t+=Buffer.byteLength(a))>0x2000000?y("file scanner worker exceeded output limit"):(r+=a,A())}),p.stderr.setEncoding("utf8"),p.stderr.on("data",a=>{s=`${s}${a}`,Buffer.byteLength(s)>4096&&(s=Buffer.from(s).subarray(-4096).toString("utf8"))}),p.once("close",(a,b)=>{if(!l){if(v)return void w(v);if(A(),0!==a||!u){let c=s.trim();w(Error(`file scanner worker exited before completion (${b??a??"unknown"})${c?`: ${c}`:""}`));return}if(g){let a=(0,m.pu)(d);(0,m.OQ)(g,d,u.complete),a&&(c.transcriptIndexScheduler??k.O)({complete:u.complete,sources:g.map(a=>({path:a.path,project:a.project,engine:a.engine,size:a.size,mtimeMs:1e3*a.mtime}))})}w(void 0,u)}}),p.stdin.once("error",a=>{v||w(a)}),c.signal&&(c.signal.addEventListener("abort",z,{once:!0}),q=!0,c.signal.aborted&&z()),p.stdin.end(JSON.stringify({type:"scan",options:a}))})}(p,h,{signal:c})}let r=(a,b)=>q(a,{},b);function s(a){return a instanceof Error&&"AbortError"===a.name?a:new DOMException("file scan cancelled","AbortError")}function t(a,b){if(b.settled||b.subscribers>0||(b.controller.abort(s()),b.started))return;let c=a.queue.indexOf(b);c>=0&&a.queue.splice(c,1),b.settled=!0,b.reject(s())}async function u(a={},b=r){var c,d;let e=p.__llvFileScanCoordinator??={generation:0,queue:[],startScheduled:!1};if(a.signal?.aborted)throw s(a.signal.reason);let f={persist:!0===a.persist,fresh:!0===a.fresh},g=!0===a.exclusive,h=e.inflight,i=g||!h||h.controller.signal.aborted||h.exclusive||!1===a.join||(c=h.intent,!c.persist&&f.persist||!c.fresh&&f.fresh)?function(a,b,c,d){let e,f,g;if(!d){let c=a.queue.find(a=>!a.exclusive);if(c)return c.intent={persist:c.intent.persist||b.persist,fresh:c.intent.fresh||b.fresh},c}let h=((g=new Promise((a,b)=>{e=a,f=b})).catch(()=>void 0),{generation:0,intent:b,runner:c,exclusive:d,controller:new AbortController,subscribers:0,started:!1,settled:!1,promise:g,resolve:e,reject:f});return a.queue.push(h),function a(b){b.startScheduled||(b.startScheduled=!0,queueMicrotask(()=>{if(b.startScheduled=!1,b.inflight)return;let c=b.queue.shift();c&&function(b,c){let d;b.generation+=1,c.generation=b.generation,c.started=!0,b.inflight=c;try{d=Promise.resolve(c.runner(c.intent,c.controller.signal))}catch(a){d=Promise.reject(a)}d.then(a=>{c.settled=!0,c.resolve(a)},a=>{c.settled=!0,c.reject(a)}).finally(()=>{b.inflight===c&&(b.inflight=void 0),a(b)})}(b,c)}))}(a),h}(e,f,b,g):h;return d=a.signal,d?.aborted?(t(e,i),Promise.reject(s(d.reason))):(i.subscribers+=1,new Promise((a,b)=>{let c=!0,f=()=>{c&&(c=!1,d?.removeEventListener("abort",g),i.subscribers-=1,t(e,i))},g=()=>{f(),b(s(d?.reason))};d?.addEventListener("abort",g,{once:!0}),i.promise.then(b=>{c&&(f(),a(structuredClone(b)))},a=>{c&&(f(),b(a))})}))}function v(){return u({persist:!0})}},58444:(a,b,c)=>{c.d(b,{Nm:()=>D,TF:()=>v});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(27146),k=c(842),l=c(28976),m=c(88430),n=c(90136),o=c(20208);let p="files-scan-snapshot.json",q=-1/0,r=globalThis;function s(a){return"object"==typeof a&&null!==a}function t(a){if(!s(a)||!0!==a.complete||!Array.isArray(a.files)||!Array.isArray(a.projectCatalog))return!1;let b=a.files.every(a=>{var b;return!!s(a)&&"string"==typeof a.path&&("codex-sessions"===a.root||"claude-projects"===a.root||"claude-tasks"===a.root)&&"string"==typeof a.name&&"string"==typeof a.project&&"string"==typeof a.title&&("codex"===a.engine||"claude"===a.engine||"shell"===a.engine)&&"string"==typeof a.kind&&("codex"===a.fmt||"claude"===a.fmt||"plain"===a.fmt)&&(null===a.parent||"string"==typeof a.parent)&&"number"==typeof a.mtime&&Number.isFinite(a.mtime)&&"number"==typeof a.size&&Number.isFinite(a.size)&&(void 0===a.sessionStartedAt||null===a.sessionStartedAt||"string"==typeof a.sessionStartedAt)&&(void 0===a.nativeParentThreadId||null===a.nativeParentThreadId||"string"==typeof a.nativeParentThreadId)&&(void 0===a.nativeForkSourceThreadId||null===a.nativeForkSourceThreadId||"string"==typeof a.nativeForkSourceThreadId)&&("live"===a.activity||"recent"===a.activity||"stalled"===a.activity||"idle"===a.activity)&&(void 0===a.authoritativeTurn||!!s(b=a.authoritativeTurn)&&("busy"===b.state||"terminal"===b.state||"idle"===b.state||"unknown"===b.state)&&("lifecycle"===b.source||"tool"===b.source||"assistant"===b.source||"empty"===b.source)&&(null===b.terminalAt||"string"==typeof b.terminalAt))&&(null===a.proc||"running"===a.proc||"done"===a.proc||"killed"===a.proc)&&(null===a.pid||"number"==typeof a.pid)&&(null===a.model||"string"==typeof a.model)&&(null===a.pendingQuestion||s(a.pendingQuestion))&&(null===a.waitingInput||s(a.waitingInput))}),c=a.projectCatalog.every(a=>s(a)&&"string"==typeof a.project&&"number"==typeof a.smt&&Number.isFinite(a.smt)&&"number"==typeof a.conversations&&Number.isSafeInteger(a.conversations)&&(void 0===a.projectRoot||"string"==typeof a.projectRoot));return b&&c}function u(){try{let a=JSON.parse(g().readFileSync((0,j.BQ)(p),"utf8"));if(!s(a)||1!==a.version||9!==a.schemaVersion||!t(a.snapshot))return;return a.snapshot}catch{return}}function v(){return u()}function w(a){return s(a)&&"promise"in a?w(a.promise):s(a)&&"function"==typeof a.then?Promise.resolve(a):void 0}function x(a,b,c,d=c,e=new AbortController){let f={generation:b,promise:c,resourcePromise:d,controller:e,subscribers:0,settled:!1};a.refresh=f;let g=()=>{f.settled=!0,a.refresh===f&&(a.refresh=void 0)};return c.then(g,g),f}function y(a){return a instanceof Error&&"AbortError"===a.name?a:new DOMException("file scan cancelled","AbortError")}async function z(a,b,c,d){let e=performance.now();try{let f=await d();return a.lastScan={generation:b,reason:c,status:"complete",durationMs:performance.now()-e},f}catch(d){throw a.lastScan={generation:b,reason:c,status:"failed",durationMs:performance.now()-e},d}}function A(a,b,c,d,f){let h=void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration,k="ordinary"===c||"cold"===c;return z(a,b,c,async()=>{let c=await (0,o.uh)({fresh:h,join:k,signal:f},(b,c)=>(0,o.KZ)(b,{persistIndex:"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER,...d?{onResourceSnapshot:d,resourceBaseline:a.snapshot}:{}},c));if(!c.complete)throw Error("filesystem scan incomplete");return"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER&&function(a){let b,c="create state directory",d=(0,j.BQ)(p);try{let f=(0,j.BQ)(p);d=f,g().mkdirSync(i().dirname(f),{recursive:!0,mode:448}),b=i().join(i().dirname(f),`.${i().basename(f)}.${process.pid}.${e().randomUUID()}.tmp`),c="write temporary snapshot",d=b,g().writeFileSync(b,JSON.stringify({version:1,schemaVersion:9,snapshot:a})+"\n",{encoding:"utf8",mode:384}),c="rename temporary snapshot",d=f,g().renameSync(b,f)}catch(e){if(void 0!==b)try{g().unlinkSync(b)}catch{}let a=Date.now();if(a-q>=6e4){q=a;let b=e instanceof Error?`${e.message}${"code"in e&&e.code?` (${String(e.code)})`:""}`:String(e);console.error(`[files scan cache] ${c} failed for ${d}: ${b}; a later refresh will retry`)}}}(c),a.snapshot=c,a.snapshotGeneration=Math.max(a.snapshotGeneration,b),a.refreshedAt=Date.now(),a.completedAt=a.refreshedAt,h&&void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration&&(a.freshObservationGeneration=void 0),c})}function B(a,b,c,d){let e=performance.now(),f=b?function(a,b){let c=a.pinnedSnapshots?.get(b);if(c)return a.pinnedSnapshots.delete(b),a.pinnedSnapshots.set(b,c),c}(a,b):void 0;if(f){let b=structuredClone({snapshot:f.snapshot,pinOverlayPaths:f.pinOverlayPaths,generation:f.generation,targetGeneration:c});return{...b,cacheStatus:d??(b.generation<c?"stale":"hit"),requestCount:a.requestCount??0,cloneDurationMs:performance.now()-e,refreshedAt:f.refreshedAt,...a.lastScan?{lastScan:{...a.lastScan}}:{}}}return{snapshot:structuredClone(a.snapshot),generation:a.snapshotGeneration,targetGeneration:c,cacheStatus:d??(a.snapshotGeneration<c?"stale":"hit"),requestCount:a.requestCount??0,cloneDurationMs:performance.now()-e,refreshedAt:a.completedAt??a.refreshedAt,...a.lastScan?{lastScan:{...a.lastScan}}:{}}}function C(a){return a.requestedGeneration+=1,a.requestedGeneration}async function D({revalidate:a=!0,signal:b}={}){let c,d,e=function(){let a=(r.__llvFilesRouteScans??=new Map,r.__llvFilesRouteScans),b=a.get("");if(void 0===b){let b=u();b&&function(a){for(let b of((0,m.X)(a.files),a.files)){let a;if(!0!==b.derivationComplete)continue;try{a=g().statSync(b.path)}catch{continue}if(a.size!==b.size||a.mtimeMs/1e3!==b.mtime)continue;let c=1e3*b.mtime,d=function(a){if("jsonl_turn_open"===a.activityReason||"jsonl_turn_stalled"===a.activityReason||"pane_at_composer"===a.activityReason)return{state:"busy",source:"lifecycle",terminalAt:null};if("jsonl_turn_completed"===a.activityReason){let b=a.lastTurn?.endedAt;return{state:"terminal",source:"lifecycle",terminalAt:"number"==typeof b&&Number.isFinite(b)?new Date(b).toISOString():null}}if("mtime_fresh"===a.activityReason||"mtime_recent"===a.activityReason||"mtime_old"===a.activityReason)return{state:"unknown",source:"empty",terminalAt:null}}(b);void 0!==d&&b.path.endsWith(".jsonl")&&("claude"===b.engine||"codex"===b.engine)&&((0,k.Ul)(b.path,b.size,c,"codex"===b.engine,d,{authoritative:!1,composerReleased:"pane_at_composer"===b.activityReason}),b.authoritativeTurn?(0,k.Ul)(b.path,b.size,c,"codex"===b.engine,b.authoritativeTurn,{composerReleased:"pane_at_composer"===b.activityReason}):("codex"===b.engine||"terminal"!==d.state)&&(0,k.Ul)(b.path,b.size,c,"codex"===b.engine,d,{composerReleased:"pane_at_composer"===b.activityReason})),"claude-projects"===b.root&&b.path.includes(`${i().sep}subagents${i().sep}`)||(0,l.E)("model").set(b.path,[b.size,c,{display:b.model,launch:b.launchModel??null}]),Object.hasOwn(b,"effort")&&("claude"!==b.engine||"running"!==b.proc)&&(0,l.E)("effort").set(b.path,[b.size,c,b.effort??null]),Object.hasOwn(b,"plan")&&(0,l.E)("plan-v2").set(b.path,[b.size,c,b.plan]),Object.hasOwn(b,"goal")&&(0,l.E)("goal-v2").set(b.path,[b.size,c,b.goal]),Object.hasOwn(b,"ctx")&&(0,l.E)("ctx-v2").set(b.path,[b.size,c,b.ctx]),Object.hasOwn(b,"lastTurn")&&(0,l.E)("last-turn-v5").set(b.path,[b.size,c,b.lastTurn]),Object.hasOwn(b,"pendingWakeup")&&(0,l.E)("wakeup-v2").set(b.path,[b.size,c,b.pendingWakeup]),"claude-projects"===b.root&&b.path.endsWith(".jsonl")&&(0,l.E)(n.oS).set(b.path,[b.size,c,function(a){if(!a.pendingQuestion)return null;let{pid:b,paneTarget:c,...d}=a.pendingQuestion;return d}(b)])}}(b);let c={schemaVersion:9,snapshot:b,snapshotGeneration:0,requestedGeneration:0,refreshedAt:0,completedAt:b?function(){try{return g().statSync((0,j.BQ)(p)).mtimeMs}catch{return 0}}():0};return a.set("",c),c}let c=function(a){if(s(a)&&9===a.schemaVersion&&Number.isSafeInteger(a.snapshotGeneration)&&Number.isSafeInteger(a.requestedGeneration)){let b=w(a.refresh);return!b||a.refresh?.controller&&Number.isSafeInteger(a.refresh.subscribers)||x(a,a.refresh?.generation??0,b),a}let b=s(a)?a:{},c={schemaVersion:9,snapshot:t(b.snapshot)?b.snapshot:void 0,snapshotGeneration:0,requestedGeneration:0,refreshedAt:"number"==typeof b.refreshedAt&&Number.isFinite(b.refreshedAt)?b.refreshedAt:0,completedAt:"number"==typeof b.completedAt&&Number.isFinite(b.completedAt)?b.completedAt:"number"==typeof b.refreshedAt&&Number.isFinite(b.refreshedAt)?b.refreshedAt:0},d=w(b.refresh);if(d){let a=d.then(a=>{if(!a.complete)throw Error("filesystem scan incomplete");return c.snapshot=a,c.refreshedAt=Date.now(),c.completedAt=c.refreshedAt,a});x(c,0,a)}return c}(b);return a.delete(""),a.set("",c),c}();if(e.requestCount=(e.requestCount??0)+1,e.snapshot){let b=Date.now();if(a&&!e.refresh&&b-Math.max(e.refreshedAt,e.ordinaryRefreshRequestedAt??0)>=3e5){let a,c,d,f,g=C(e);e.ordinaryRefreshRequestedAt=b,a=!1,c=!1,d=new AbortController,f=new Promise(a=>setImmediate(a)).then(()=>{if(a=!0,d.signal.aborted)throw y(d.signal.reason);if(c){if(!e.snapshot)throw Error("deferred file scan canceled without a completed snapshot");return e.snapshot}return A(e,g,"ordinary",void 0,d.signal)}),x(e,g,f,f,d).cancelBeforeStart=()=>!a&&(c=!0,!0)}return B(e,void 0,e.snapshotGeneration)}let f=e.refresh?.generation??C(e),h=e.refresh??(d=A(e,f,"cold",void 0,(c=new AbortController).signal),x(e,f,d,d,c));return await (b?.aborted?Promise.reject(y(b.reason)):(h.subscribers+=1,new Promise((a,c)=>{let d=!0,e=()=>{d&&(d=!1,b?.removeEventListener("abort",f),h.subscribers-=1,0!==h.subscribers||h.settled||h.controller.abort(y()))},f=()=>{e(),c(y(b?.reason))};b?.addEventListener("abort",f,{once:!0}),h.promise.then(b=>{d&&(e(),a(b))},a=>{d&&(e(),c(a))})}))),B(e,void 0,f,"miss")}}};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";exports.id=8465,exports.ids=[8465],exports.modules={68465:(a,b,c)=>{c.d(b,{Fn:()=>L,Hy:()=>w,No:()=>M,OL:()=>u,UV:()=>s,Yb:()=>J,ZK:()=>T,fM:()=>U,fg:()=>X,kK:()=>N,o1:()=>A,ob:()=>O,pW:()=>Q,qX:()=>R,ss:()=>P,x0:()=>W,y3:()=>S});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(27146),k=c(65281),l=c(63685);let m=/^[a-z0-9][a-z0-9-]{0,31}$/,n="default",o=["skills","commands","agents"],p=["settings.json"],q=new Set([".credentials.json",".claude.json","projects","history.jsonl","session-env","shell-snapshots","file-history","todos","cache","debug","backups","paste-cache","plugins","mcp.json","settings.local.json"]),r=null;class s extends Error{constructor(a){super(`unknown Claude account: ${a}`),this.name="UnknownClaudeAccountError"}}class t extends Error{constructor(){super("account label must contain visible text and be at most 80 characters"),this.name="InvalidClaudeAccountLabelError"}}class u extends Error{constructor(){super("Claude account registry is corrupt; repair or remove it before changing accounts"),this.name="CorruptClaudeAccountsError"}}class v extends Error{constructor(){super("managed Claude home failed safety checks"),this.name="UnsafeClaudeHomeError"}}function w(){return i().resolve(process.env.LLV_CLAUDE_HOME||i().join(g().homedir(),".claude"))}function x(){return i().join(i().dirname((0,j.Pn)()),"accounts","claude")}function y(){return(0,j.BQ)("claude-accounts.json")}function z(){return i().join(i().dirname((0,j.Pn)()),"shared","claude")}function A(){return i().join(z(),"projects")}function B(a){let b=i().join(a,"projects");try{if(!e().lstatSync(b).isSymbolicLink())return b;let a=A();if(e().realpathSync(b)===e().realpathSync(a))return a}catch{}return b}function C(a){return i().join(x(),a)}function D(){return{version:1,active:n,accounts:[],retired:[]}}function E(a,b=!1){if(!m.test(a)||a===n)return!1;let c=i().resolve(x()),d=i().resolve(C(a));if(i().dirname(d)!==c)return!1;try{var f;let a=e().lstatSync(c),b=e().lstatSync(d);if(!a.isDirectory()||a.isSymbolicLink()||!b.isDirectory()||b.isSymbolicLink()||(f=b.mode,(63&f)!=0||(511&f)!=448))return!1;return i().dirname(e().realpathSync(d))===e().realpathSync(c)}catch{return!b}}function F(){let a,b=y(),c=`${b}:${function(a){try{let b=e().statSync(a);return`${b.mtimeMs}:${b.size}`}catch{return"missing"}}(b)}`;if(r?.key===c)return r.loaded;try{a=e().existsSync(b)?function(a){if(!a||"object"!=typeof a||1!==a.version||"string"!=typeof a.active||!Array.isArray(a.accounts)||void 0!==a.retired&&!Array.isArray(a.retired))return{registry:D(),corrupt:!0};let b=new Set,c=!1,d=[];for(let e of a.accounts){if(!(e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.label&&"managed"===e.kind&&"number"==typeof e.createdAt&&E(e.id))||b.has(e.id)){c=!0;continue}b.add(e.id),d.push(e)}let e=[];for(let d of a.retired??[]){if(!(d&&"object"==typeof d&&"string"==typeof d.id&&"string"==typeof d.label&&"number"==typeof d.retiredAt&&E(d.id))||b.has(d.id)){c=!0;continue}b.add(d.id),e.push(d)}return{registry:{version:1,active:a.active,accounts:d,retired:e},corrupt:c}}(JSON.parse(e().readFileSync(b,"utf8"))):{registry:D(),corrupt:!1}}catch{a={registry:D(),corrupt:!0}}return r={key:c,loaded:a},a}function G(){let a=F();if(a.corrupt)throw new u;return a.registry}function H(a){return(0,l.oV)(()=>{let b=`${y()}.lock`,c=Date.now();for(e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});;)try{let c=e().openSync(b,"wx",384);try{return e().writeFileSync(c,`${process.pid}
|
|
2
|
+
`,"utf8"),a()}finally{e().closeSync(c),e().rmSync(b,{force:!0})}}catch(a){if("EEXIST"!==a.code)throw a;try{if(Date.now()-e().statSync(b).mtimeMs>3e4){e().rmSync(b,{force:!0});continue}}catch{continue}if(Date.now()-c>=5e3)throw Error("Claude account registry is busy; retry shortly");Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,10)}})}function I(a){let b=y();e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});let c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${Date.now()}.tmp`);try{e().writeFileSync(c,JSON.stringify(a,null,2)+"\n",{mode:384});let d=e().openSync(c,"r");try{e().fsyncSync(d)}finally{e().closeSync(d)}e().renameSync(c,b);let f=e().openSync(i().dirname(b),"r");try{e().fsyncSync(f)}finally{e().closeSync(f)}r=null}finally{e().rmSync(c,{force:!0})}}function J(a,b=!1){let c=i().join(a,".credentials.json");try{let a=e().lstatSync(c);return a.isFile()&&!a.isSymbolicLink()&&a.uid===(process.getuid?.()??a.uid)&&(63&a.mode)==0}catch{return!b}}function K(a){let b=C(a.id);return{...a,home:b,projectsDir:B(b),authPresent:J(b,!0)}}function L(){let a;return[{id:n,label:"Main",kind:"legacy",home:a=w(),projectsDir:B(a),authPresent:J(a,!0),createdAt:0},...F().registry.accounts.map(K)]}function M(){let a=F().registry.active;return L().some(b=>b.id===a)?a:n}function N(){return F().corrupt}function O(a){let b=L().find(b=>b.id===(a??M()));if(!b)throw new s(a??"");if("managed"===b.kind&&(!E(b.id,!0)||!J(b.home)))throw new v;return{id:b.id,kind:b.kind,home:b.home,projectsDir:b.projectsDir}}function P(a){H(()=>{r=null;let b=G();if(!L().some(b=>b.id===a))throw new s(a);I({...b,active:a})})}function Q(){return[...new Set([...L().map(a=>a.projectsDir),...F().registry.retired.map(a=>B(C(a.id)))])]}function R(a,b){let c;try{c=e().realpathSync(a)}catch{return{kind:"unreadable"}}let d=L(),f=null;try{f=e().realpathSync(A())}catch{}for(let a of d)try{let b=e().realpathSync(a.projectsDir);if(null!==f&&b===f)continue;if(c.startsWith(b+i().sep))return{kind:"owned",accountId:a.id,home:a.home,source:"path"}}catch{}let g=b?d.find(a=>a.id===b):void 0;if(g)return{kind:"owned",accountId:g.id,home:g.home,source:"recorded"};if(null!==f&&c.startsWith(f+i().sep)){let a=M(),b=d.find(b=>b.id===a)??d[0];if(b)return{kind:"owned",accountId:b.id,home:b.home,source:"shared-store"}}return{kind:"foreign"}}function S(a){let b=R(a);return"owned"===b.kind&&"path"===b.source?b.home:null}function T(){let a=i().join(z(),"settings.json");return e().existsSync(a)?a:null}function U(a){let b=a.trim();if(!b||b.length>80||/[\u0000-\u001f\u007f]/.test(b))throw new t;return H(()=>{r=null;let a=G(),c=function(a,b){let c=a.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32)||"account";for(let a=0;;a+=1){let d=a?`-${a}`:"",f=`${c.slice(0,32-d.length)}${d}`;if(m.test(f)&&f!==n&&!b.has(f)&&!e().existsSync(C(f)))return f}}(b,new Set([...L().map(a=>a.id),...a.retired.map(a=>a.id)])),d=C(c),f=!1;try{e().mkdirSync(i().dirname(d),{recursive:!0,mode:448}),e().chmodSync(i().dirname(d),448),e().mkdirSync(d,{mode:448}),e().chmodSync(d,448),f=!0;let g=function(){let a=z(),b=`${a}.tmp-${process.pid}-${Date.now()}`,c={files:0,bytes:0};e().rmSync(b,{recursive:!0,force:!0}),e().mkdirSync(b,{recursive:!0,mode:448});try{for(let a of[...o,...p]){let d=i().join(w(),a);e().existsSync(d)&&function a(b,c,d){let f=e().lstatSync(b);if(!f.isSymbolicLink()&&(f.isDirectory()||f.isFile())){if(f.isFile()){if(++d.files>2e3||(d.bytes+=f.size)>0x1000000)throw Error("Claude capability snapshot exceeds safety limit");e().mkdirSync(i().dirname(c),{recursive:!0,mode:448}),e().copyFileSync(b,c),e().chmodSync(c,384);return}for(let f of(e().mkdirSync(c,{recursive:!0,mode:448}),e().readdirSync(b,{withFileTypes:!0})))q.has(f.name)||a(i().join(b,f.name),i().join(c,f.name),d)}}(d,i().join(b,a),c)}return e().mkdirSync(i().dirname(a),{recursive:!0,mode:448}),e().chmodSync(i().dirname(a),448),e().rmSync(a,{recursive:!0,force:!0}),e().renameSync(b,a),e().chmodSync(a,448),a}catch(a){throw e().rmSync(b,{recursive:!0,force:!0}),a}}();for(let a of o){let b=i().join(g,a);e().existsSync(b)&&e().symlinkSync(b,i().join(d,a))}e().mkdirSync(i().join(d,"projects"),{mode:448});let h={id:c,label:b,kind:"managed",createdAt:Date.now()};return I({...a,accounts:[...a.accounts,h]}),K(h)}catch(a){throw f&&e().rmSync(d,{recursive:!0,force:!0}),a}})}let V=["ANTHROPIC_API_KEY","ANTHROPIC_AUTH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","ANTHROPIC_BASE_URL","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","GOOGLE_APPLICATION_CREDENTIALS","VERTEXAI_PROJECT","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX"];function W(a,b=process.env){let c={...(0,k.Fd)(b),CLAUDE_CONFIG_DIR:a};for(let a of V)delete c[a];return c}function X(a){return L().some(b=>"managed"===b.kind&&b.home===a&&E(b.id,!0))}}};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";exports.id=849,exports.ids=[849],exports.modules={70849:(a,b,c)=>{c.d(b,{telegramService:()=>R});var d=c(77598),e=c.n(d),f=c(31421),g=c(80481),h=c.n(g),i=c(21962),j=c(88714);function k(a){let b=a&&"object"==typeof a?a:{};return{name:"string"==typeof b.name&&b.name?b.name:"Telegram account",username:"string"==typeof b.username&&b.username?b.username:null,id:(0,i.S)(b.id)}}function l(a,b="bridge_failed"){return"string"==typeof a&&/^[a-z_]{1,40}$/.test(a)?a:b}function m(a){let b=(0,j.w5)();if(!b)return null;let c=(0,j.kt)(a,b);try{return(0,f.spawn)(c.command,c.args,{cwd:c.cwd,env:c.env,stdio:["pipe","pipe","pipe"]})}catch{return null}}function n(a){try{let b=JSON.parse(a);return b&&"object"==typeof b?b:null}catch{return null}}async function o(a,b){return await (0,j.Gs)()?new Promise(c=>{let d=m(a);if(!d)return void c(null);let e=!1,f=a=>{if(!e){e=!0,clearTimeout(g);try{d.kill("SIGKILL")}catch{}c(a)}},g=setTimeout(()=>f(null),6e4);d.once("error",()=>f(null)),d.once("close",()=>f(null)),h().createInterface({input:d.stdout}).on("line",b=>{let c=n(b);c?.event===a&&f(c)}),d.stderr.on("data",()=>void 0);try{d.stdin.write(JSON.stringify({session:b})+"\n"),d.stdin.end()}catch{f(null)}}):null}var p=c(80338),q=c(73024),r=c.n(q),s=c(48161),t=c.n(s),u=c(76760),v=c.n(u),w=c(78966),x=c(91724),y=c(68032);let z="telegram",A="# >>> agent-log-viewer telegram >>>",B="# <<< agent-log-viewer telegram <<<";function C(){let a=[v().join(v().dirname((0,w.Hy)()),".claude.json")];try{for(let b of(0,w.Fn)())"managed"===b.kind&&a.push(v().join(b.home,".claude.json"))}catch{}let b=v().resolve(process.env.LLV_CODEX_HOME||v().join(t().homedir(),".codex"));return{claudeStatePaths:[...new Set(a)],codexConfigPaths:[v().join(b,"config.toml")]}}function D(a){try{let b=r().lstatSync(a);return b.isFile()&&!b.isSymbolicLink()}catch(a){return"ENOENT"===a.code}}function E(a,b,c){r().mkdirSync(v().dirname(a),{recursive:!0});let d=v().join(v().dirname(a),`.${v().basename(a)}.${process.pid}.telegram.tmp`);try{r().writeFileSync(d,b,{mode:c}),r().renameSync(d,a)}finally{r().rmSync(d,{force:!0})}}function F(a){if(!r().existsSync(a))return{};try{let b=JSON.parse(r().readFileSync(a,"utf8"));return b&&"object"==typeof b&&!Array.isArray(b)?b:null}catch{return null}}function G(a,b){return null!==b&&!!a&&"object"==typeof a&&"http"===a.type&&a.url===b&&null!==a.headers&&"object"==typeof a.headers&&!Array.isArray(a.headers)&&a.headers.Authorization===`Bearer \${${y.mq}}`&&1===Object.keys(a.headers).length&&3===Object.keys(a).length}function H(){return(0,x.BQ)("telegram","registrations.json")}function I(){try{let a=JSON.parse(r().readFileSync(H(),"utf8"));if(1===a.version&&a.claude&&"object"==typeof a.claude)return{version:1,claude:{...a.claude}}}catch{}return{version:1,claude:{}}}function J(a){(0,y._q)(!0),E(H(),JSON.stringify(a)+"\n",384)}function K(a){let b=[...a.matchAll(/^# >>> agent-log-viewer telegram >>>\r?$/gm)],c=[...a.matchAll(/^# <<< agent-log-viewer telegram <<<\r?$/gm)];if(0===b.length&&0===c.length)return{status:"none",contents:a};if(1!==b.length||1!==c.length)return{status:"invalid"};let d=b[0],e=c[0];if(d.index>=e.index)return{status:"invalid"};let f=a.slice(d.index,e.index+e[0].length).replaceAll("\r\n","\n").split("\n");if(5!==f.length||f[0]!==A||"[mcp_servers.telegram]"!==f[1]||!/^url = "[^"\r\n]+"$/.test(f[2])||f[3]!==`bearer_token_env_var = "${y.mq}"`||f[4]!==B)return{status:"invalid"};let g=e.index+e[0].length,h=a.slice(0,d.index).replace(/\n+$/,"\n"),i=a.slice(g).replace(/^\n+/,"");return{status:"valid",contents:""===h||"\n"===h?i||"\n":h+i}}function L(a){try{return Bun.TOML.parse(a),!0}catch{return!1}}var M=c(43034);let N={adapter:{unavailableReason:()=>(0,j.w5)()?null:"credentials_missing",startEnrollment(a){let b=!1,c=!1,d=null,e=c=>{b||(("authorized"===c.type||"failed"===c.type)&&(b=!0),a(c))};return(0,j.Gs)().then(a=>{c||b||(a&&(d=m("enroll"))?(h().createInterface({input:d.stdout}).on("line",a=>{let b=n(a);if(b)switch(b.event){case"qr":"string"==typeof b.url&&b.url.startsWith("tg://login")&&e({type:"qr",url:b.url,expiresAt:"string"==typeof b.expiresAt?b.expiresAt:new Date(Date.now()+3e4).toISOString()});return;case"password_required":e({type:"password_required"});return;case"password_invalid":e({type:"password_invalid"});return;case"verifying":e({type:"verifying"});return;case"authorized":"string"==typeof b.session&&b.session?e({type:"authorized",sessionString:b.session,identity:k(b.identity)}):e({type:"failed",code:"bridge_failed"});return;case"failed":e({type:"failed",code:l(b.code)});return}}),d.stderr.on("data",()=>void 0),d.once("error",()=>e({type:"failed",code:"start_failed"})),d.once("close",()=>e({type:"failed",code:"bridge_failed"}))):e({type:"failed",code:"start_failed"}))}).catch(()=>e({type:"failed",code:"start_failed"})),{submitPassword(a){try{d?.stdin.write(JSON.stringify({password:a})+"\n")}catch{e({type:"failed",code:"bridge_failed"})}},cancel(){c=!0,b=!0;try{d?.kill("SIGTERM")}catch{}setTimeout(()=>{try{d?.kill("SIGKILL")}catch{}},2e3).unref?.()}}},async checkSession(a){let b=await o("health",a);return b?"connected"===b.status?{status:"connected",identity:k(b.identity)}:"expired"===b.status?{status:"expired"}:{status:"error",code:l(b.code,"health_failed")}:{status:"error",code:"health_failed"}},async logout(a){let b=await o("logout",a);return b?!0===b.ok?{ok:!0,code:null}:{ok:!1,code:l(b.code,"logout_failed")}:{ok:!1,code:"logout_failed"}}},ensureConnector:a=>(0,p.X8)(a),readConnectorIdentity:a=>(0,M.tx)(a.credentialRef).getMe(),stopConnector:a=>a?(0,p.UF)(a):(0,p.TT)(),registerHosts:()=>(function(a=C(),b=(0,j.h3)()){let c=I(),d={ok:!1,claude:{registered:0,conflict:0,unwritable:0},codex:{registered:0,failed:0}},e=[];for(let f of a.claudeStatePaths){let a=function(a){try{let b=r().lstatSync(a);if(b.isSymbolicLink()||!b.isFile())return null;return{pathname:a,existed:!0,contents:r().readFileSync(a,"utf8"),mode:511&b.mode}}catch(b){if("ENOENT"===b.code)return{pathname:a,existed:!1,contents:"",mode:384};return null}}(f),g=function(a,b,c=null){if(!D(a))return"unwritable";let d=F(a);if(!d||void 0!==d.mcpServers&&(!d.mcpServers||"object"!=typeof d.mcpServers||Array.isArray(d.mcpServers)))return"unwritable";let e=void 0===d.mcpServers?{}:{...d.mcpServers},f=e[z];if(void 0!==f){if(!G(f,c))return"conflict";if(G(f,b))return"registered"}return e[z]={type:"http",url:b,headers:{Authorization:`Bearer \${${y.mq}}`}},E(a,JSON.stringify({...d,mcpServers:e},null,2)+"\n",384),"registered"}(f,b,c.claude[f]??null);d.claude[g]+=1,"registered"===g?(c.claude[f]=b,a&&e.push(a)):"conflict"===g&&delete c.claude[f]}try{J(c)}catch(a){for(let a of e.reverse())try{a.existed?E(a.pathname,a.contents,a.mode):D(a.pathname)&&r().rmSync(a.pathname,{force:!0})}catch{}throw a}for(let c of a.codexConfigPaths)!function(a,b){if(!D(a))return!1;let c=r().existsSync(a)?r().readFileSync(a,"utf8"):"";if(!L(c))return!1;let d=K(c);if("invalid"===d.status)return!1;let e=d.contents;if(function(a){try{let b=Bun.TOML.parse(a).mcp_servers;return!!(b&&"object"==typeof b&&!Array.isArray(b)&&Object.prototype.hasOwnProperty.call(b,z))}catch{return!1}}(e))return!1;let f=`${A}
|
|
2
|
+
[mcp_servers.telegram]
|
|
3
|
+
url = "${b}"
|
|
4
|
+
bearer_token_env_var = "${y.mq}"
|
|
5
|
+
${B}
|
|
6
|
+
`;if(c.includes(f))return!0;let g=(""===e?"":e.replace(/\n*$/,"\n\n"))+f;return!!L(g)&&(E(a,g,384),!0)}(c,b)?d.codex.failed+=1:d.codex.registered+=1;return d.ok=0===d.claude.conflict&&0===d.claude.unwritable&&0===d.codex.failed,d})(),unregisterHosts:()=>(function(a=C()){let b=I();for(let c of new Set([...a.claudeStatePaths,...Object.keys(b.claude)]))(function(a,b){if(!D(a)||!r().existsSync(a))return!0;let c=F(a);if(!c||void 0!==c.mcpServers&&(!c.mcpServers||"object"!=typeof c.mcpServers||Array.isArray(c.mcpServers)))return!1;let d=void 0===c.mcpServers?{}:{...c.mcpServers};return!G(d[z],b)||(delete d[z],E(a,JSON.stringify({...c,mcpServers:d},null,2)+"\n",384),!0)})(c,b.claude[c]??null)&&delete b.claude[c];for(let c of(J(b),a.codexConfigPaths))!function(a){if(!D(a)||!r().existsSync(a))return;let b=r().readFileSync(a,"utf8");if(!L(b))return;let c=K(b);"invalid"!==c.status&&("none"===c.status||E(a,c.contents,384))}(c)})(),now:Date.now,credentialsConfigured:()=>null!==(0,j.w5)()};class O{constructor(a=N){this.ports=a,this.login=null,this.lifecycleGeneration=0,this.lifecycleActive=!1,this.lifecycleQueue=[],this.reportReaders=0,this.healthActive=!1,this.healthWaiters=[]}enqueueLifecycle(a,b={}){let c=b.supersede?++this.lifecycleGeneration:b.expectedGeneration??this.lifecycleGeneration;return new Promise((d,e)=>{this.lifecycleQueue.push({generation:c,skip:()=>{try{d((b.stale??(()=>this.status()))())}catch(a){e(a)}},run:async b=>{try{d(await a(b))}catch(a){e(a)}}}),this.drainLifecycleQueue()})}async drainLifecycleQueue(){if(!this.lifecycleActive){this.lifecycleActive=!0;try{for(;this.lifecycleQueue.length>0;){let a=this.lifecycleQueue.shift();if(a.generation!==this.lifecycleGeneration){a.skip();continue}await a.run(a.generation)}}finally{this.lifecycleActive=!1,this.lifecycleQueue.length>0&&this.drainLifecycleQueue()}}}lifecycleIsCurrent(a){return a===this.lifecycleGeneration}status(){let a;if(this.login)return{phase:this.login.phase,login:{operationId:this.login.operationId,qr:"awaiting_scan"===this.login.phase?this.login.qr:null,passwordError:this.login.passwordError},identity:null,credentialRef:null,lastHealthCheckAt:null,error:null,credentialsConfigured:this.ports.credentialsConfigured()};try{a=(0,y.Kd)()}catch(a){if(!(a instanceof y.cg))throw a;return this.payloadFor({version:1,status:"error",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:"session_unsafe",identityIdUpgradedAt:null})}return this.payloadFor(a)}payloadFor(a){return{phase:a.status,login:null,identity:a.identity?{name:a.identity.name,username:a.identity.username}:null,credentialRef:a.credentialRef,lastHealthCheckAt:a.lastHealthCheckAt,error:"error"===a.status&&a.errorCode?{code:a.errorCode}:null,credentialsConfigured:this.ports.credentialsConfigured()}}credentialsSaved(){if(!this.login)try{let a=(0,y.Kd)();"error"===a.status&&"credentials_missing"===a.errorCode&&(0,y.RV)({version:1,status:"disconnected",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:null,identityIdUpgradedAt:null})}catch{}return this.status()}startLogin(){return this.enqueueLifecycle(a=>this.startLoginLocked(a))}startLoginLocked(a){if(this.login)throw Error("a Telegram login operation is already running");let b=this.ports.adapter.unavailableReason();if(b)return this.recordError(b),this.status();let c=e().randomUUID(),d=this.ports.adapter.startEnrollment(b=>{this.enqueueLifecycle(a=>this.applyEnrollmentEvent(c,b,a),{expectedGeneration:a,stale:()=>void 0})});return this.login={operationId:c,generation:a,phase:"starting",qr:null,passwordError:!1,handle:d,stored:null},this.status()}async applyEnrollmentEvent(a,b,c){let d=this.login;if(d&&d.operationId===a)switch(b.type){case"qr":d.phase="awaiting_scan",d.qr={url:b.url,expiresAt:b.expiresAt};return;case"password_required":d.phase="awaiting_password",d.qr=null;return;case"password_invalid":d.phase="awaiting_password",d.passwordError=!0;return;case"verifying":d.phase="verifying",d.qr=null;return;case"authorized":d.phase="verifying",d.qr=null,await this.completeEnrollment(d,b.sessionString,b.identity,c);return;case"failed":this.login=null,await this.cleanupCanceledLogin(d),"canceled"!==b.code&&this.recordError(b.code);return}}async completeEnrollment(a,b,c,d){let e,f;try{a.stored=e=(0,y.vh)(b)}catch{this.login=null,this.recordError("session_unsafe");return}try{f=await this.ports.ensureConnector(e)}catch{f={ok:!1,code:"connector_failed"}}if(this.lifecycleIsCurrent(d)&&this.login===a){if(this.login=null,!f.ok)return void(0,y.RV)({version:1,status:"error",credentialRef:e.credentialRef,identity:c,lastHealthCheckAt:null,errorCode:f.code,identityIdUpgradedAt:null});if(!this.registerVerifiedHosts()){await this.cleanupFailedRegistration(),(0,y.RV)({version:1,status:"error",credentialRef:e.credentialRef,identity:c,lastHealthCheckAt:null,errorCode:"host_registration_failed",identityIdUpgradedAt:null});return}(0,y.RV)({version:1,status:"connected",credentialRef:e.credentialRef,identity:c,lastHealthCheckAt:new Date(this.ports.now()).toISOString(),errorCode:null,identityIdUpgradedAt:null})}}registerVerifiedHosts(){try{return this.ports.registerHosts().ok}catch{return!1}}async cleanupFailedRegistration(){await this.teardownConnectorAndHosts()}async teardownConnectorAndHosts(){let a=!0;try{await this.ports.stopConnector()}catch{a=!1}try{this.ports.unregisterHosts()}catch{}return a}deleteCredentialsAndPublishDisconnected(a=!0){let b=!1;try{(0,y.L8)(),b=!0}catch{}try{b?(0,y.RV)({version:1,status:a?"disconnected":"error",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:a?null:"connector_failed",identityIdUpgradedAt:null}):this.recordError("session_unsafe")}catch{}}recordError(a){let b=this.safeConnection();(0,y.RV)({...b,status:"error",errorCode:a})}safeConnection(){try{return(0,y.Kd)()}catch{return{version:1,status:"disconnected",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:null,identityIdUpgradedAt:null}}}submitPassword(a,b){let c=this.login?.generation;return this.enqueueLifecycle(()=>this.submitPasswordLocked(a,b),{expectedGeneration:c,stale:()=>this.status()})}submitPasswordLocked(a,b){let c=this.login;if(!c||c.operationId!==a)throw Error("Telegram login operation is unavailable");if("awaiting_password"!==c.phase)throw Error("Telegram login is not awaiting a password");if("string"!=typeof b||0===b.length||b.length>4096)throw Error("Telegram password is invalid");return c.phase="verifying",c.passwordError=!1,c.handle.submitPassword(b),this.status()}cancelLogin(a){let b=this.login?.operationId===a;return this.enqueueLifecycle(()=>this.cancelLoginLocked(a),{supersede:b})}async cancelLoginLocked(a){let b=this.login;return b&&b.operationId===a&&(this.login=null,b.handle.cancel(),await this.cleanupCanceledLogin(b)),this.status()}async cleanupCanceledLogin(a){if(!a.stored)return;let b=await this.teardownConnectorAndHosts();try{let b=(0,y.w0)();if(b&&b.credentialRef!==a.stored.credentialRef)return}catch{}this.deleteCredentialsAndPublishDisconnected(b)}async beginReportReadPhase(){for(;this.healthActive;)await new Promise(a=>{this.healthWaiters.push(a)});this.reportReaders+=1;let a=!1;return()=>{a||(a=!0,this.reportReaders=Math.max(0,this.reportReaders-1))}}tryBeginHealthCheck(){if(this.reportReaders>0||this.healthActive)return null;this.healthActive=!0;let a=!1;return()=>{if(!a)for(let b of(a=!0,this.healthActive=!1,this.healthWaiters.splice(0)))b()}}checkHealth(){let a=this.lifecycleGeneration;return this.enqueueLifecycle(async a=>(this.login||await this.runHealthCheck(a),this.status()),{expectedGeneration:a,stale:()=>this.status()})}async runHealthCheck(a){let b=this.tryBeginHealthCheck();if(b)try{await this.runHealthCheckWithConnector(a)}finally{b()}}async runHealthCheckWithConnector(a){let b,c;try{b=(0,y.w0)()}catch(a){if(!(a instanceof y.cg))throw a;await this.teardownConnectorAndHosts(),this.recordError("session_unsafe");return}let d=this.safeConnection();if(!b){let a=await this.teardownConnectorAndHosts();a&&"disconnected"===d.status||(0,y.RV)({version:1,status:a?"disconnected":"error",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:a?null:"connector_failed",identityIdUpgradedAt:null});return}try{c=await this.ports.ensureConnector(b)}catch{c={ok:!1,code:"connector_failed"}}if(!this.lifecycleIsCurrent(a))return;let e=new Date(this.ports.now()).toISOString();if(c.ok){let c;try{c=await this.ports.readConnectorIdentity(b)}catch{c=null}if(!this.lifecycleIsCurrent(a))return;if(!c){let c=await this.replaceFailedConnector(b,a);if(!c)return;(0,y.RV)({...d,status:"error",credentialRef:b.credentialRef,lastHealthCheckAt:e,errorCode:c.ok?"connector_failed":c.code});return}let f=P(d,c,e);if(!this.registerVerifiedHosts()){try{this.ports.unregisterHosts()}catch{}(0,y.RV)({version:1,status:"error",credentialRef:b.credentialRef,...f,lastHealthCheckAt:e,errorCode:"host_registration_failed"});return}(0,y.RV)({version:1,status:"connected",credentialRef:b.credentialRef,...f,lastHealthCheckAt:e,errorCode:null});return}if((0,p.e4)(b))return void(0,y.RV)({...d,status:"error",credentialRef:b.credentialRef,lastHealthCheckAt:e,errorCode:c.code});let f=await this.ports.adapter.checkSession(b.sessionString);if(this.lifecycleIsCurrent(a)){if("connected"===f.status){let a=P(d,f.identity,e);(0,y.RV)({version:1,status:"error",credentialRef:b.credentialRef,...a,lastHealthCheckAt:e,errorCode:c.code});return}if("expired"===f.status)return void(0,y.RV)({version:1,status:"expired",credentialRef:b.credentialRef,identity:d.identity,lastHealthCheckAt:e,errorCode:null,identityIdUpgradedAt:d.identityIdUpgradedAt});(0,y.RV)({version:1,status:"error",credentialRef:b.credentialRef,identity:d.identity,lastHealthCheckAt:e,errorCode:f.code,identityIdUpgradedAt:d.identityIdUpgradedAt})}}currentHealthSession(a,b){if(!this.lifecycleIsCurrent(b))return null;try{let b=(0,y.w0)();return b?.credentialRef===a.credentialRef?b:null}catch{return null}}async replaceFailedConnector(a,b){let c,d=this.currentHealthSession(a,b);if(!d)return null;try{await this.ports.stopConnector(d)}catch{return{ok:!1,code:"connector_failed"}}if(!(d=this.currentHealthSession(a,b)))return null;try{c=await this.ports.ensureConnector(d)}catch{c={ok:!1,code:"connector_failed"}}return this.currentHealthSession(a,b)?c:null}logout(){return this.enqueueLifecycle(a=>this.logoutLocked(a),{supersede:null===this.login})}async logoutLocked(a){let b;if(this.login)throw Error("a Telegram login operation is running");try{b=(0,y.w0)()}catch(a){if(!(a instanceof y.cg))throw a;return await this.teardownConnectorAndHosts(),this.recordError("session_unsafe"),this.status()}if(!b)return await this.disconnectLocally(),this.status();try{await this.ports.stopConnector()}catch{return this.recordError("connector_failed"),this.status()}let c=await this.ports.adapter.logout(b.sessionString);return this.lifecycleIsCurrent(a)&&(c.ok?await this.disconnectLocally():this.recordError(c.code??"logout_failed")),this.status()}deleteLocalSession(){return this.enqueueLifecycle(()=>this.deleteLocalSessionLocked(),{supersede:null===this.login})}async deleteLocalSessionLocked(){if(this.login)throw Error("a Telegram login operation is running");return await this.disconnectLocally(),this.status()}async disconnectLocally(){let a=await this.teardownConnectorAndHosts();this.deleteCredentialsAndPublishDisconnected(a)}}function P(a,b,c){let d=a.identity?.id??null,e=null!==a.identity&&null===d;return{identity:{...b,id:b.id??d},identityIdUpgradedAt:a.identityIdUpgradedAt??(e?c:null)}}let Q="__llvTelegramService";function R(){let a=globalThis;return a[Q]??=new O,a[Q]}}};
|