agent-log-viewer 1.2.0 → 1.2.2
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/dist/mcp-server.mjs +3712 -1753
- package/dist/runtime-host.mjs +3442 -1472
- package/dist/standalone/.next/BUILD_ID +1 -1
- package/dist/standalone/.next/app-path-routes-manifest.json +29 -27
- package/dist/standalone/.next/build-manifest.json +2 -2
- package/dist/standalone/.next/prerender-manifest.json +4 -4
- package/dist/standalone/.next/required-server-files.json +1 -0
- package/dist/standalone/.next/routes-manifest.json +12 -0
- package/dist/standalone/.next/server/account-migration-controller-worker.js +1 -1
- package/dist/standalone/.next/server/app/_global-error/page.js +2 -2
- 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/_tree.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_not-found/page.js +1 -1
- 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/_not-found/__PAGE__.segment.rsc +2 -2
- 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/account-project-bindings/route.js +1 -1
- package/dist/standalone/.next/server/app/api/account-project-bindings/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js +1 -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/limits/route.js +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/limits/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js +1 -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 +1 -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 +1 -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/cli/route.js +1 -0
- package/dist/standalone/.next/server/app/api/accounts/cli/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/accounts/cli/route_client-reference-manifest.js +1 -0
- 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/limits/route.js +1 -1
- package/dist/standalone/.next/server/app/api/accounts/codex/limits/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/reset-credits/route.js +2 -2
- package/dist/standalone/.next/server/app/api/accounts/codex/reset-credits/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 +1 -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 -1
- package/dist/standalone/.next/server/app/api/artifact/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/attach-command/route.js +1 -1
- package/dist/standalone/.next/server/app/api/attach-command/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/attention/[id]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/attention/[id]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/attention/route.js +1 -1
- package/dist/standalone/.next/server/app/api/attention/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/board/route.js +1 -1
- package/dist/standalone/.next/server/app/api/board/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/bridge/route.js +1 -1
- package/dist/standalone/.next/server/app/api/bridge/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/conversation-host/route.js +1 -1
- package/dist/standalone/.next/server/app/api/conversation-host/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/conversation-host/targets/route.js +1 -1
- package/dist/standalone/.next/server/app/api/conversation-host/targets/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 +6 -3
- 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 +1 -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 +1 -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 +14 -12
- package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/log/route.js +1 -1
- package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/log/suggestions/route.js +2 -2
- package/dist/standalone/.next/server/app/api/log/suggestions/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/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/monitor/seat-tick/route.js +13 -14
- package/dist/standalone/.next/server/app/api/monitor/seat-tick/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js +2 -2
- package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/onboarding/route.js +1 -0
- package/dist/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -0
- 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 +1 -3
- package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/pipelines/route.js +1 -1
- 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 +1 -2
- package/dist/standalone/.next/server/app/api/pipelines/tick/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
- package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/projects/create/route.js +2 -2
- package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/projects/crown/route.js +1 -1
- package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/projects/directories/route.js +1 -1
- package/dist/standalone/.next/server/app/api/projects/directories/route.js.nft.json +1 -1
- 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 +3 -3
- 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/hosts/route.js +1 -1
- package/dist/standalone/.next/server/app/api/runtime/hosts/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/runtime/inject/route.js +1 -1
- package/dist/standalone/.next/server/app/api/runtime/inject/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/queue/route.js +1 -1
- package/dist/standalone/.next/server/app/api/runtime/queue/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 +1 -1
- package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/session/route.js +1 -1
- package/dist/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/session/supersedence/route.js +1 -1
- package/dist/standalone/.next/server/app/api/session/supersedence/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/session/title/route.js +1 -1
- package/dist/standalone/.next/server/app/api/session/title/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/spawn/policy/route.js +2 -2
- 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 +1 -1
- package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/spawn/validate/route.js +1 -1
- package/dist/standalone/.next/server/app/api/spawn/validate/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 +1 -1
- package/dist/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/telegram/reports/route.js +1 -1
- package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/telegram/route.js +1 -1
- package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
- package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tmux/route.js +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 +2 -2
- 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 +2 -1
- package/dist/standalone/.next/server/app/api/view/presence/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/workflows/[id]/route.js +1 -1
- package/dist/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/workflows/route.js +1 -1
- package/dist/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/favicon.ico/route.js +1 -1
- package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/index.html +1 -1
- package/dist/standalone/.next/server/app/index.rsc +3 -3
- package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/page.js +20 -20
- 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 +29 -27
- package/dist/standalone/.next/server/chunks/107.js +1 -1
- package/dist/standalone/.next/server/chunks/1106.js +5 -0
- package/dist/standalone/.next/server/chunks/112.js +1 -0
- package/dist/standalone/.next/server/chunks/1406.js +37 -170
- package/dist/standalone/.next/server/chunks/1585.js +3 -3
- package/dist/standalone/.next/server/chunks/160.js +18 -18
- package/dist/standalone/.next/server/chunks/1617.js +2 -2
- package/dist/standalone/.next/server/chunks/1849.js +1 -1
- package/dist/standalone/.next/server/chunks/1952.js +1 -1
- package/dist/standalone/.next/server/chunks/2150.js +1 -1
- package/dist/standalone/.next/server/chunks/2499.js +1 -0
- package/dist/standalone/.next/server/chunks/2555.js +1 -1
- package/dist/standalone/.next/server/chunks/2589.js +127 -0
- package/dist/standalone/.next/server/chunks/261.js +1 -0
- package/dist/standalone/.next/server/chunks/2744.js +3 -0
- package/dist/standalone/.next/server/chunks/2857.js +1 -1
- package/dist/standalone/.next/server/chunks/286.js +22 -0
- package/dist/standalone/.next/server/chunks/2914.js +20 -21
- package/dist/standalone/.next/server/chunks/2916.js +1 -0
- package/dist/standalone/.next/server/chunks/3086.js +1 -1
- package/dist/standalone/.next/server/chunks/3131.js +1 -1
- package/dist/standalone/.next/server/chunks/3407.js +1 -1
- package/dist/standalone/.next/server/chunks/3509.js +1 -0
- package/dist/standalone/.next/server/chunks/3570.js +1 -1
- package/dist/standalone/.next/server/chunks/3696.js +5 -0
- package/dist/standalone/.next/server/chunks/3743.js +10 -8
- package/dist/standalone/.next/server/chunks/3784.js +5 -0
- package/dist/standalone/.next/server/chunks/3830.js +1 -1
- package/dist/standalone/.next/server/chunks/3957.js +1 -0
- package/dist/standalone/.next/server/chunks/4037.js +1 -0
- package/dist/standalone/.next/server/chunks/4651.js +1 -1
- package/dist/standalone/.next/server/chunks/4972.js +38 -16
- package/dist/standalone/.next/server/chunks/53.js +1 -0
- package/dist/standalone/.next/server/chunks/5408.js +1 -0
- package/dist/standalone/.next/server/chunks/5465.js +156 -0
- package/dist/standalone/.next/server/chunks/5545.js +1 -1
- package/dist/standalone/.next/server/chunks/568.js +1 -1
- package/dist/standalone/.next/server/chunks/5771.js +1 -1
- package/dist/standalone/.next/server/chunks/6023.js +1 -1
- package/dist/standalone/.next/server/chunks/6211.js +1 -0
- package/dist/standalone/.next/server/chunks/6289.js +1 -2
- package/dist/standalone/.next/server/chunks/6418.js +1 -0
- package/dist/standalone/.next/server/chunks/644.js +1 -1
- package/dist/standalone/.next/server/chunks/6453.js +1 -1
- package/dist/standalone/.next/server/chunks/6522.js +1 -1
- package/dist/standalone/.next/server/chunks/6796.js +1 -1
- package/dist/standalone/.next/server/chunks/6826.js +3 -3
- package/dist/standalone/.next/server/chunks/6942.js +3 -3
- package/dist/standalone/.next/server/chunks/6978.js +1 -1
- package/dist/standalone/.next/server/chunks/7008.js +21 -19
- package/dist/standalone/.next/server/chunks/7192.js +1 -1
- package/dist/standalone/.next/server/chunks/7238.js +2 -2
- package/dist/standalone/.next/server/chunks/7294.js +1 -0
- package/dist/standalone/.next/server/chunks/7722.js +1 -1
- package/dist/standalone/.next/server/chunks/781.js +17 -17
- package/dist/standalone/.next/server/chunks/8027.js +1 -1
- package/dist/standalone/.next/server/chunks/8330.js +1 -0
- package/dist/standalone/.next/server/chunks/8444.js +1 -1
- package/dist/standalone/.next/server/chunks/8465.js +2 -2
- package/dist/standalone/.next/server/chunks/8512.js +1 -1
- package/dist/standalone/.next/server/chunks/8513.js +2 -2
- package/dist/standalone/.next/server/chunks/8617.js +1 -1
- package/dist/standalone/.next/server/chunks/8817.js +2 -2
- package/dist/standalone/.next/server/chunks/8966.js +2 -2
- package/dist/standalone/.next/server/chunks/8985.js +1 -1
- package/dist/standalone/.next/server/chunks/8996.js +1 -1
- package/dist/standalone/.next/server/chunks/9006.js +1 -0
- package/dist/standalone/.next/server/chunks/9060.js +4 -0
- package/dist/standalone/.next/server/chunks/9296.js +20 -21
- package/dist/standalone/.next/server/chunks/9298.js +1 -2
- package/dist/standalone/.next/server/chunks/9307.js +1 -1
- package/dist/standalone/.next/server/chunks/9360.js +14 -12
- package/dist/standalone/.next/server/chunks/9517.js +1 -1
- package/dist/standalone/.next/server/chunks/9611.js +1 -0
- package/dist/standalone/.next/server/chunks/9822.js +1 -1
- package/dist/standalone/.next/server/chunks/9839.js +5 -0
- package/dist/standalone/.next/server/chunks/9867.js +1 -0
- package/dist/standalone/.next/server/chunks/9940.js +37 -15
- package/dist/standalone/.next/server/chunks/9998.js +1 -1
- package/dist/standalone/.next/server/file-scanner-worker.js +2 -2
- package/dist/standalone/.next/server/files-response-worker.js +2 -2
- package/dist/standalone/.next/server/functions-config-manifest.json +2 -0
- package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/standalone/.next/server/middleware.js +3 -3
- 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/state-backup-worker.js +3 -0
- package/dist/standalone/.next/server/wakatime-sync-worker.js +1 -1
- package/dist/standalone/.next/static/chunks/9591-0fd6a5a4172de16d.js +1 -0
- package/dist/standalone/.next/static/chunks/app/_global-error/page-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/access/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/account-project-bindings/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/limits/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/cli/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/limits/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/reset-credits/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/accounts/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/agent/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/answer/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/artifact/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/attach-command/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/attention/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/board/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/bridge/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/conversation-host/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/conversation-host/targets/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/conversations/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/files/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/flows/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/image/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/inbox/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/limits/history/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/limits/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/logs/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/settings/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/onboarding/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/proc/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/projects/create/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/push/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/resources/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/roles/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/inject/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/queue/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/session/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/session/title/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/spawn/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/spawn/validate/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/staging/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tasks/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/telegram/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/timeline/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tmux/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tts/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/view/presence/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/workflows/route-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/app/page-a2e19d755e17b569.js +125 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-151390fbd8c93c25.js +1 -0
- package/dist/standalone/.next/static/css/9b32c3f7f468cbcc.css +1 -0
- package/dist/standalone/.next/static/fQ2a5S10vvpyAqE0L_wUj/_buildManifest.js +1 -0
- package/dist/standalone/AGENTS.md +10 -0
- package/dist/standalone/package.json +1 -1
- package/dist/standalone/server.bun.js +1 -1
- package/dist/standalone/src/lib/viewerInstrumentation.ts +63 -5
- package/package.json +1 -1
- package/dist/standalone/.next/server/chunks/1888.js +0 -1
- package/dist/standalone/.next/server/chunks/4127.js +0 -1
- package/dist/standalone/.next/server/chunks/480.js +0 -126
- package/dist/standalone/.next/server/chunks/7361.js +0 -22
- package/dist/standalone/.next/static/chunks/6976-016b6947195a6ed2.js +0 -1
- package/dist/standalone/.next/static/chunks/app/_global-error/page-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/access/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/account-project-bindings/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/limits/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/limits/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/reset-credits/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/accounts/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/agent/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/answer/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/artifact/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/attach-command/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/attention/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/board/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/bridge/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/conversation-host/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/conversation-host/targets/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/conversations/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/files/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/flows/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/image/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/inbox/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/limits/history/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/limits/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/logs/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/settings/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/proc/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/projects/create/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/push/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/resources/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/roles/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/inject/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/queue/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/session/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/session/title/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/spawn/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/spawn/validate/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/staging/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tasks/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/telegram/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/timeline/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tmux/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tts/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/view/presence/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/workflows/route-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/app/page-16384e540b4c0a90.js +0 -125
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-60a25d1c4cbf0128.js +0 -1
- package/dist/standalone/.next/static/css/496211a19557b7ee.css +0 -1
- package/dist/standalone/.next/static/e4qE_aCE0s0KQnnU6IWRw/_buildManifest.js +0 -1
- /package/dist/standalone/.next/static/{e4qE_aCE0s0KQnnU6IWRw → fQ2a5S10vvpyAqE0L_wUj}/_ssgManifest.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";exports.id=6826,exports.ids=[6826],exports.modules={25123:(a,b,c)=>{c.d(b,{Ix:()=>l,V8:()=>n,ae:()=>q,dA:()=>s,ot:()=>o});var d=c(31421),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(23921),j=c(92806),k=c(46825);let l=(a,b,c)=>{let e=(0,d.spawnSync)(a,b,{cwd:c,encoding:"utf8"});return e.error?{code:null,stdout:"",stderr:e.error.message}:{code:e.status,stdout:e.stdout??"",stderr:e.stderr??"",...e.signal?{signal:e.signal}:{}}};function m(a,b){let c=(b.stderr||b.stdout||"no output").trim();return{ok:!1,error:`${a}: ${c}`}}function n(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return m("resolving the repo branch",c);let d=c.stdout.trim();if(!d||"HEAD"===d)return{ok:!1,error:"the repo checkout is detached; a workflow needs a branch to target"};let e=b("git",["worktree","add","-b",a.branch,a.worktreeDir,"HEAD"],a.repoDir);if(0!==e.code){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.worktreeDir);if(0!==c.code||c.stdout.trim()!==a.branch)return m("git worktree add",e)}let f=b("git",["rev-parse","HEAD"],a.worktreeDir);if(0!==f.code)return m("resolving the workflow base ref",f);let g=f.stdout.trim();return g?{ok:!0,baseBranch:d,baseRef:g}:{ok:!1,error:"git returned an empty base ref"}}function o(a){let b=a.template.setup;if(!b)return{pid:null,error:"workflow has no setup command"};let c=(0,k.setupExitPath)(a.id);f().mkdirSync(h().dirname(c),{recursive:!0}),f().rmSync(c,{force:!0});let e=f().openSync((0,k.setupStdoutPath)(a.id),"w"),g=f().openSync((0,k.setupStderrPath)(a.id),"w");try{let f=(0,d.spawn)("sh",["-c",'sh -c "$LLV_SETUP_CMD"; printf \'%s\' "$?" > "$LLV_SETUP_EXIT"'],{cwd:a.worktreeDir,env:{...(0,j.Fd)(process.env),LLV_SETUP_CMD:b,LLV_SETUP_EXIT:c},detached:!0,stdio:["ignore",e,g]});return f.unref(),{pid:f.pid??null}}catch(a){return{pid:null,error:a instanceof Error?a.message:String(a)}}finally{f().closeSync(e),f().closeSync(g)}}function p(a){try{return f().readFileSync(a,"utf8")}catch{return""}}function q(a,b=Date.now()){let c=p((0,k.setupExitPath)(a.id)).trim();if(""!==c){if("0"===c)return{status:"done",detail:""};let b=p((0,k.setupStderrPath)(a.id)).trim().split("\n").slice(-3).join("\n");return{status:"failed",detail:`setup exited with code ${c}${b?`: ${b}`:""}`}}if(null!=a.setupPid&&(0,i.pl)(a.setupPid))return{status:"running",detail:""};let d=function(a,b){try{return b-f().statSync(a).mtimeMs}catch{return null}}((0,k.setupStdoutPath)(a.id),b);return null!==d&&d<3e3?{status:"running",detail:""}:{status:"failed",detail:"setup was interrupted before it finished"}}function r(a){let b=a.task.split("\n").map(a=>a.trim()).find(Boolean)??a.name;return b.length>72?b.slice(0,69)+"…":b}function s(a,b,c){let d=c("git",["status","--porcelain"],a.worktreeDir);if(0!==d.code)return m("checking the worktree state",d);let e=d.stdout.split("\n").filter(a=>a.trim());if(e.length){let a=e.slice(0,3).map(a=>a.slice(3).trim()||a.trim()),b=e.length>a.length?`, +${e.length-a.length} more`:"";return{ok:!1,error:`the worktree has uncommitted changes (${a.join(", ")}${b}) — commit them, then retry the finish`}}return"merge"===a.template.finish?function(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return m("resolving the repo branch",c);let d=c.stdout.trim();if(d!==a.baseBranch)return{ok:!1,error:`the repo checkout is on ${d}; check out ${a.baseBranch} before merging`};let e=b("git",["merge","--no-ff",a.branch,"-m",`Merge ${a.branch}: ${r(a)}`],a.repoDir);return 0!==e.code?(b("git",["merge","--abort"],a.repoDir),m("git merge",e)):{ok:!0,prUrl:null}}(a,c):function(a,b,c){let d=c("git",["push","-u","origin",a.branch],a.worktreeDir);if(0!==d.code)return m("git push",d);let e=c("gh",["pr","create","--title",r(a),"--body",b,"--base",a.baseBranch,"--head",a.branch],a.worktreeDir);if(0===e.code){var f;return{ok:!0,prUrl:(f=e.stdout,f.match(/https:\/\/\S+\/pull\/\d+/)?.[0]??null)}}if(/already exists/i.test(e.stderr)){let b=c("gh",["pr","view",a.branch,"--json","url","--jq",".url"],a.worktreeDir);if(0===b.code&&b.stdout.trim())return{ok:!0,prUrl:b.stdout.trim()}}return m("gh pr create",e)}(a,b,c)}},46825:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_FIXER:()=>v,SEEDED_TEMPLATES:()=>x,buildWorkflow:()=>ad,checkpointWorkflowRollbackMirrorForDemotion:()=>P,checkpointWorkflowRollbackMirrorForDemotionAsync:()=>Q,defaultFixerFromRoles:()=>u,loadTemplates:()=>aa,loadWorkflows:()=>I,mergeSeededTemplates:()=>ac,normalizeStage:()=>B,normalizeStages:()=>C,normalizeTemplate:()=>E,planWorkflowStateMigration:()=>K,reconcileWorkflowConversationOwnership:()=>W,reconcileWorkflowConversationOwnershipCooperatively:()=>X,roleConfigFromReference:()=>A,saveTemplates:()=>ab,saveWorkflows:()=>$,seededTemplatesFromRoles:()=>w,setupExitPath:()=>ah,setupStderrPath:()=>ag,setupStdoutPath:()=>af,validateWorkflowLaunchModels:()=>D,withWorkflowMutation:()=>_,workflowArtifactsDir:()=>ae,workflowStateCollectionSeed:()=>N});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(4837),i=c(91724),j=c(89940),k=c(10781),l=c(12770),m=c(98590),n=c(18797),o=c(99411),p=c(89822),q=c(13117);let r=()=>(0,i.BQ)("workflows.json"),s=()=>(0,i.BQ)("workflow-templates.json");function t(a,b={},c=(0,p.e3)()){if("builder"!==a)return{...c.find(b=>b.id===a).config};let d=(0,o.fy)(a,b,{},c);return d.ok?{...d.value.config}:{...n.W.find(b=>b.id===a).config}}function u(a){let b=t("cleaner",{},a);return{..."codex"===b.engine?b:{...n.W.find(a=>"cleaner"===a.id).config},effort:"low"}}let v=u();function w(){let a=(0,p.e3)(),b=t("builder",{},a),c=t("builder",{mode:"plain",domain:"frontend"},a),d=t("reviewer",{},a),e=u(a);return[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:c,scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]},{name:"Astra medium → Astra xhigh review",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Implement the requested change end to end, including focused tests and documentation updates."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]}].map(a=>({...a,managed:"role-registry"}))}let x=w();function y(a,b){(0,m.atomicWriteText)(a,JSON.stringify(b,null,2)+"\n")}function z(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}function A(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.role)return null;let b=a.overrides;if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return null;let c=b??{},d={..."claude"===c.engine||"codex"===c.engine?{engine:c.engine}:{},..."string"==typeof c.model?{model:c.model}:{},..."string"==typeof c.effort?{effort:c.effort}:{}},e=(0,o.fy)(a.role,a.roleParams,d);return e.ok?e.value.config:null}function B(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;if("implement"===b){let b;return(b=z(a.agent)??A(a))&&"string"==typeof a.scope&&a.scope.trim()?{kind:"implement",agent:b,scope:a.scope.trim()}:null}if("review-loop"===b){let b,c=z(a.reviewer)??A(a);return c?{kind:"review-loop",reviewer:c,fixer:(b=z(a.fixer))&&"codex"===b.engine?{engine:"codex",model:b.model,effort:"low"}:u(),roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>=0?Math.min(a.roundLimit,50):5,reviewerMode:"pane"===a.reviewerMode?"pane":"headless"}:null}return null}function C(a){if(!Array.isArray(a)||a.length<2)return{error:"a workflow needs at least one implement stage and a closing review-loop"};let b=[];for(let c of a){let a=B(c);if(!a)return{error:"invalid stage definition"};b.push(a)}return 1!==b.filter(a=>"review-loop"===a.kind).length||b.at(-1)?.kind!=="review-loop"?{error:"stages must be implement+ followed by exactly one review-loop last"}:{stages:b}}function D(a){for(let b of a)for(let a of"implement"===b.kind?[b.agent]:[b.reviewer,b.fixer]){if(!a.model)continue;let b=(0,h.RC)(a.engine,a.model);if("error"in b)return b;a.model=b.model}return{stages:a}}function E(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.name||!a.name.trim())return null;let b=C(a.stages);if("error"in b)return null;let c="merge"===a.finish?"merge":"pr";return{name:a.name.trim(),stages:b.stages,finish:c,..."role-registry"===a.managed?{managed:a.managed}:{},..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}function F(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.task&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&Array.isArray(a.stageRuns)&&"number"==typeof a.stageIndex&&null!==E(a.template)}let G=new WeakMap;function H(a){return G.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function I(){return H(O().snapshot())}function J(){let a=function(){let a;try{a=e().readFileSync(r(),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy workflow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy workflow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy workflow state must be an object");if(!Array.isArray(a.workflows)||!a.workflows.every(F))throw Error("legacy workflow state contains malformed records");return a.workflows.map(L)}function K(){let a=J();return{records:a.length,keys:a.map(a=>a.id)}}function L(a){return{...a,project:(0,j.G$)(a.project??""),pausedState:a.pausedState??null,setupPid:a.setupPid??null,srcPath:a.srcPath??null,srcConversationId:a.srcConversationId??null,flowId:a.flowId??null,fixerPath:a.fixerPath??null,fixerConversationId:a.fixerConversationId??null,stageRuns:a.stageRuns.map(a=>({...a,agentConversationId:a.agentConversationId??null})),prUrl:a.prUrl??null}}let M=new Map;function N(){return{collection:"workflows",schemaVersion:1,migrationId:"workflows-json-v1",loadRecords:J,key:a=>a.id}}function O(){let a=(0,i.BQ)("state.sqlite"),b=M.get(a);if(b)return b;(0,q.t0)(a,[N()]);let c=new q.UY(a,{collection:"workflows",schemaVersion:1,busyMessage:"workflow state is busy",key:a=>a.id,decode:a=>F(a)?L(a):null,clone:a=>L(structuredClone(a)),strictDecode:!0,decodeError:a=>Error("workflow SQLite state contains a malformed row",{cause:a}),validate:a=>{if(!F(a))throw Error("refusing to persist a malformed workflow record")}});return M.set(a,c),c}function P(){return O().checkpointMirrorForDemotion((a,b)=>{y(r(),{_sqliteRevision:b,workflows:a})})}async function Q(){return O().checkpointMirrorForDemotionAsync((a,b)=>{y(r(),{_sqliteRevision:b,workflows:a})})}function R(a,b){if(a.conversationId?.startsWith("conversation_")){let c=b.conversation(a.conversationId)?.generations.at(-1)?.path??a.path;return{path:c,conversationId:a.conversationId,changed:c!==a.path}}if(!a.path)return{path:a.path,conversationId:a.conversationId??null,changed:!1};let c=b.conversationForPath(a.path);return c?{path:a.path,conversationId:c.id,changed:!0}:{path:a.path,conversationId:a.conversationId??null,changed:!1}}function S(a,b){let c=R({path:a.agentPath,conversationId:a.agentConversationId},b);return a.agentPath=c.path,a.agentConversationId=c.conversationId,c.changed}function T(a,b){let c=R({path:a.srcPath??null,conversationId:a.srcConversationId},b);a.srcPath=c.path,a.srcConversationId=c.conversationId;let d=R({path:a.fixerPath,conversationId:a.fixerConversationId},b);return a.fixerPath=d.path,a.fixerConversationId=d.conversationId,c.changed||d.changed}function U(a,b,c){return a===c.path&&(b??null)===c.conversationId}function V(a,b){return a.path!==b.path||a.conversationId!==b.conversationId}function W(a=(0,k.agentRegistry)()){let b=I(),c=!1;for(let d of b)for(let b of(c=T(d,a)||c,d.stageRuns))c=S(b,a)||c;c&&$(b)}async function X(a=(0,k.agentRegistry)()){let b=I(),c=[];await (0,l.pV)(b,async b=>{let d={path:b.srcPath??null,conversationId:b.srcConversationId??null},e={path:b.fixerPath,conversationId:b.fixerConversationId??null};T(b,a);let f={path:b.srcPath??null,conversationId:b.srcConversationId??null},g={path:b.fixerPath,conversationId:b.fixerConversationId??null},h=[];await (0,l.pV)(b.stageRuns,b=>{let c={path:b.agentPath,conversationId:b.agentConversationId??null};S(b,a)&&h.push({index:b.index,before:c,after:{path:b.agentPath,conversationId:b.agentConversationId??null}})});let i=V(d,f),j=V(e,g);(i||j||h.length>0)&&c.push({id:b.id,source:i?{before:d,after:f}:null,fixer:j?{before:e,after:g}:null,runs:h})}),function(a){if(0===a.length)return;let b=I(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.source&&U(a.srcPath??null,a.srcConversationId,b.source.before)&&(a.srcPath=b.source.after.path,a.srcConversationId=b.source.after.conversationId,d=!0),b.fixer&&U(a.fixerPath,a.fixerConversationId,b.fixer.before)&&(a.fixerPath=b.fixer.after.path,a.fixerConversationId=b.fixer.after.conversationId,d=!0),b.runs)){let b=a.stageRuns.find(a=>a.index===c.index);b&&U(b.agentPath,b.agentConversationId,c.before)&&(b.agentPath=c.after.path,b.agentConversationId=c.after.conversationId,d=!0)}}d&&$(b)}(c)}function Y(a,b){return JSON.stringify(a)===JSON.stringify(b)}function Z(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function $(a){let b=G.get(a);if(!b){O().replaceSync(a),H(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));O().patchSync(()=>{let a=[],c=[];for(let c of d){let d=b.get(c.id),e=O().get(c.id);if(void 0!==d&&e&&JSON.stringify(e)!==d){let b=L(function a(b,c,d){if(Y(c,b))return structuredClone(d);if(Y(d,b))return structuredClone(c);if(Z(b)&&Z(c)&&Z(d)){let e={};for(let f of new Set([...Object.keys(b),...Object.keys(c),...Object.keys(d)]))e[f]=a(b[f],c[f],d[f]);return e}return Array.isArray(b)&&Array.isArray(c)&&Array.isArray(d)?Array.from({length:Math.max(b.length,c.length,d.length)},(e,f)=>a(b[f],c[f],d[f])):structuredClone(d)}(JSON.parse(d),c,e));for(let a of Object.keys(c))delete c[a];Object.assign(c,b),JSON.stringify(b)!==JSON.stringify(e)&&a.push(b)}else a.push(c)}for(let a of e){let d=O().get(a);d&&JSON.stringify(d)===b.get(a)&&c.push(a)}return{records:a,deleteKeys:c}}),H(a)}async function _(a){return O().mutate(a)}function aa(){let a=function(a){try{return JSON.parse(e().readFileSync(a,"utf8"))}catch{return null}}(s()),b=Array.isArray(a?.templates)?a.templates.map(E).filter(a=>null!==a):[],c=ac(b);return JSON.stringify(c)!==JSON.stringify(b)&&ab(c),c}function ab(a){y(s(),{templates:a})}function ac(a,b=w()){let c=new Set(a.map(a=>a.name));return[...b.filter(a=>!c.has(a.name)),...a]}function ad(a){let b=g().basename(a.repoDir);return{id:a.id,name:a.name,task:a.task,project:a.project,repoDir:a.repoDir,worktreeDir:g().join(g().dirname(a.repoDir),`${b}-wf-${a.id}`),branch:`wf/${a.task.toLowerCase().replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,40).replace(/-+$/,"")||"task"}-${a.id}`,baseBranch:"",baseRef:"",template:JSON.parse(JSON.stringify(a.template)),stageRuns:a.template.stages.map((a,b)=>({index:b,agentPath:null,agentConversationId:null,paneId:null,startedAt:null,doneAt:null,doneNote:null})),stageIndex:0,flowId:null,fixerPath:null,fixerConversationId:null,state:"provisioning",pausedState:null,stateDetail:null,mode:a.mode,setupPid:null,srcPath:null,srcConversationId:null,prUrl:null,createdAt:a.now,closedAt:null}}function ae(a){return g().join((0,i.BQ)("workflows"),a)}function af(a){return g().join(ae(a),"setup-stdout.log")}function ag(a){return g().join(ae(a),"setup-stderr.log")}function ah(a){return g().join(ae(a),"setup-exit")}},79247:(a,b,c)=>{c.d(b,{y:()=>d});function d(a){return void 0!==a.default?a.default:"integer"===a.kind?a.min??1:"select"===a.kind?a.options?.[0]??"":""}},96826:(a,b,c)=>{c.d(b,{ML:()=>t,OF:()=>r,oT:()=>s});var d=c(31421),e=c(73024),f=c.n(e),g=c(48161),h=c.n(g),i=c(76760),j=c.n(i),k=c(25123);let l={homeDir:h().homedir,stat:f().statSync,access:f().accessSync,exec:(a,b,c)=>{if("git"!==a)return(0,k.Ix)(a,b,c);let e=(0,d.spawnSync)(a,b,{cwd:c,encoding:"utf8",timeout:4e3});return e.error?{code:null,stdout:"",stderr:"ETIMEDOUT"===e.error.code?`git ${b.join(" ")} timed out after 4000ms`:e.error.message}:{code:e.status,stdout:e.stdout??"",stderr:e.stderr??""}}},m=/not a (?:git )?repository/i;function n(a,b){return"not_git"===a.failCode?{ok:!1,code:"not_git",path:b}:{ok:!1,code:"probe_failed",path:b,detail:a.detail}}function o(a){let b=a.stdout.trim();if(0===a.code&&b)return{value:b};let c=(a.stderr||a.stdout||"").trim();return null!==a.code&&0!==a.code&&m.test(a.stderr)?{failCode:"not_git",detail:c||"not a git repository"}:{failCode:"probe_failed",detail:c||"the git repository probe failed"}}let p=new Map;function q(a,b,c){try{return a.access(b,c),!1}catch{return!0}}function r(a,b=l,c={}){var d,e;let g,h,i,k=(d=b.homeDir(),i="~"===(h=a.trim())||h.startsWith("~/")?j().join(d,h.slice(1)):h,j().resolve(i)),m=c.now??Date.now;if(c.cache){let a,b=(e=m(),(a=p.get(k))?e-a.at>5e3?(p.delete(k),null):a.result:null);if(b)return b}try{g=b.stat(k)}catch(a){return{ok:!1,code:"ENOENT"===a.code?"missing":"repo_untraversable",path:k}}if(!g.isDirectory())return{ok:!1,code:"not_directory",path:k};if(q(b,k,f().constants.R_OK))return{ok:!1,code:"repo_unreadable",path:k};if(q(b,k,f().constants.X_OK))return{ok:!1,code:"repo_untraversable",path:k};let s=o(b.exec("git",["rev-parse","--show-toplevel"],k));if("failCode"in s)return n(s,k);let t=j().resolve(s.value);if(t!==k){if(q(b,t,f().constants.R_OK))return{ok:!1,code:"repo_unreadable",path:t};if(q(b,t,f().constants.X_OK))return{ok:!1,code:"repo_untraversable",path:t}}let u=o(b.exec("git",["rev-parse","--path-format=absolute","--git-common-dir"],t));if("failCode"in u)return n(u,t);let v=j().resolve(t,u.value);if(q(b,v,f().constants.W_OK|f().constants.X_OK))return{ok:!1,code:"git_metadata_unwritable",path:v};let w=j().dirname(t);if(q(b,w,f().constants.W_OK|f().constants.X_OK))return{ok:!1,code:"worktree_parent_unwritable",path:w};let x={ok:!0,repoDir:t,gitCommonDir:v,worktreeParent:w};return c.cache&&function(a,b,c){for(let d of a)p.delete(d),p.set(d,{result:b,at:c});for(;p.size>32;){let a=p.keys().next().value;if(void 0===a)break;p.delete(a)}}([...new Set([k,t])],x,m()),x}function s(a){return"probe_failed"===a?503:"missing"===a||"not_directory"===a||"not_git"===a?400:403}function t(a){switch(a.code){case"missing":return`directory does not exist: ${a.path}`;case"not_directory":return`not a directory: ${a.path}`;case"repo_unreadable":return`repository is not readable: ${a.path}`;case"repo_untraversable":return`repository cannot be traversed: ${a.path}`;case"not_git":return`not a git repository: ${a.path}`;case"probe_failed":return`the git repository probe failed for ${a.path}${a.detail?`: ${a.detail}`:""}`;case"git_metadata_unwritable":return`Git metadata is not writable: ${a.path}`;case"worktree_parent_unwritable":return`pipeline worktree parent is not writable: ${a.path}`}}},98590:(a,b,c)=>{c.r(b),c.d(b,{FLOWS_SCHEMA_VERSION:()=>x,SEEDED_PRESETS:()=>w,atomicWriteText:()=>B,checkpointFlowRollbackMirrorForDemotion:()=>W,checkpointFlowRollbackMirrorForDemotionAsync:()=>X,configuredReviewerFallback:()=>v,findingsPathFor:()=>al,flowArtifactsDir:()=>ak,flowStateCollectionSeed:()=>P,loadFlow:()=>N,loadFlows:()=>M,loadFlowsForTick:()=>Q,loadPresets:()=>ai,mergeSeededPresets:()=>F,normalizeFindings:()=>ap,outputPathFor:()=>am,patchFlowRows:()=>af,planFlowStateMigration:()=>T,reconcileFlowConversationOwnership:()=>_,reconcileFlowConversationOwnershipCooperatively:()=>aa,saveFlowRows:()=>ae,saveFlows:()=>ad,savePresets:()=>aj,seededPresetsFromRoles:()=>u,stderrPathFor:()=>an,stdoutPathFor:()=>ao,withFlowMutation:()=>ag,withFlowSnapshot:()=>ah});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(10781),l=c(12770),m=c(13117),n=c(18797),o=c(89940),p=c(99411),q=c(89822);let r=()=>(0,j.BQ)("flows.json"),s=()=>(0,j.BQ)("review-loop-presets.json");function t(a,b,c={}){if("builder"!==b)return{...a.find(a=>a.id===b).config};let d=(0,p.fy)(b,c,{},a);return d.ok?{...d.value.config}:{...n.W.find(a=>a.id===b).config}}function u(){let a=(0,q.e3)(),b=t(a,"builder"),c=t(a,"builder",{mode:"apply-fixes",domain:"general"}),d=t(a,"reviewer"),e=t(a,"architect");return[{name:"Astra medium → Astra xhigh",implementer:b,reviewer:d},{name:"Terra low → Astra xhigh",implementer:c,reviewer:d},{name:"Astra medium → Opus 5",implementer:b,reviewer:e},{name:"Opus 5 → Astra xhigh",implementer:e,reviewer:d},{name:"Sonnet → Astra xhigh",implementer:{engine:"claude",model:"sonnet",effort:"high"},reviewer:d}].map(a=>({...a,managed:"role-registry"}))}function v(){return t((0,q.e3)(),"architect")}let w=u(),x=3,y=/^(?:claude|codex):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,z=/^(?:default|unknown|managed:[0-9a-f]{12})$/;function A(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 B(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,b,"utf8"),g().renameSync(c,a)}function C(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"implement-review-loop"===a.template&&"string"==typeof a.cwd&&"string"==typeof a.implementerPath&&"string"==typeof a.baseRef&&(void 0===a.headRef||null===a.headRef||"string"==typeof a.headRef)&&(void 0===a.requireRemoteHead||"boolean"==typeof a.requireRemoteHead)&&(void 0===a.targetSha||null===a.targetSha||"string"==typeof a.targetSha)&&(void 0===a.spec||"string"==typeof a.spec)&&(void 0===a.reviewerSandbox||"full"===a.reviewerSandbox||"restricted"===a.reviewerSandbox)&&(void 0===a.hostClaim||null===a.hostClaim||y.test(a.hostClaim.sessionKey)&&z.test(a.hostClaim.accountRef))&&Array.isArray(a.rounds)}function D(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.name&&E(a.implementer)&&E(a.reviewer)&&(void 0===a.managed||"role-registry"===a.managed)}function E(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&("claude"===a.engine||"codex"===a.engine)&&(null===a.model||"string"==typeof a.model)&&(null===a.effort||"string"==typeof a.effort)}function F(a,b=u()){let c=new Set(a.map(a=>a.name));return[...b.filter(a=>!c.has(a.name)),...a]}let G=null,H=new Map,I=new WeakMap;function J(a){return I.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function K(){return V().signature()}function L(a){return a.map(a=>({...a,hostClaim:a.hostClaim?{...a.hostClaim}:null,rounds:a.rounds.map(a=>({...a}))}))}function M(){let a=K();if(G?.signature===a)return J(L(G.flows));let b=V().snapshot(),c=K();return a===c&&(G={signature:c,flows:b}),J(L(b))}function N(a){return V().get(a)}function O(a){return!["approved","done_comment","needs_decision","closed"].includes(a.state)}function P(){return{collection:"flows",schemaVersion:x,migrationId:"flows-json-v1",loadRecords:S,key:a=>a.id,controllerActive:O}}function Q(){return V().snapshotForController()}function R(a){return a?{...a,resetKnown:a.resetKnown??!0}:null}function S(){let a=function(){let a;try{a=g().readFileSync(r(),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy flow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy flow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy flow state must be an object");if(!Array.isArray(a.flows)||!a.flows.every(C))throw Error("legacy flow state contains malformed records");return a.flows.map(a=>({...a,project:(0,o.G$)(a.project),revision:a.revision??0,targetSha:a.targetSha??null,implementerConversationId:a.implementerConversationId??null,reviewerFallback:void 0===a.reviewerFallback&&"codex"===a.roles.reviewer.engine?v():a.reviewerFallback??null,pausedState:a.pausedState??null,kickoffDelivery:a.kickoffDelivery??null,hostClaim:a.hostClaim??null,rounds:a.rounds.map(a=>({...a,reviewerConversationId:a.reviewerConversationId??null,reviewerRole:a.reviewerRole??null,attemptedAccounts:a.attemptedAccounts??[],autoRetryCount:a.autoRetryCount??0,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,reviewerIdentity:a.reviewerIdentity??null,reviewHeadSha:a.reviewHeadSha??null,spawnStartedAt:a.spawnStartedAt??null,launchId:a.launchId??null,launchLeaseUntil:a.launchLeaseUntil??null,relayStartedAt:a.relayStartedAt??null,relayRetryCount:a.relayRetryCount??0,relayDeliveryAttempt:a.relayDeliveryAttempt??0,relayDeliveryTransport:a.relayDeliveryTransport??null,relayRetryAt:a.relayRetryAt??null,relayRetryRequiresIdempotency:a.relayRetryRequiresIdempotency??!1,relayDelivery:a.relayDelivery??null,relayPendingSettlement:a.relayPendingSettlement??null,relayHold:R(a.relayHold),terminalAt:a.terminalAt??null,error:a.error??null}))}))}function T(){let a=S();return{records:a.length,keys:a.map(a=>a.id)}}function U(a){return C(a)?{...a,project:(0,o.G$)(a.project),revision:a.revision??0,targetSha:a.targetSha??null,implementerConversationId:a.implementerConversationId??null,reviewerFallback:void 0===a.reviewerFallback&&"codex"===a.roles.reviewer.engine?v():a.reviewerFallback??null,pausedState:a.pausedState??null,kickoffDelivery:a.kickoffDelivery??null,hostClaim:a.hostClaim??null,rounds:a.rounds.map(a=>({...a,reviewerConversationId:a.reviewerConversationId??null,reviewerRole:a.reviewerRole??null,attemptedAccounts:a.attemptedAccounts??[],autoRetryCount:a.autoRetryCount??0,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,reviewerIdentity:a.reviewerIdentity??null,reviewHeadSha:a.reviewHeadSha??null,spawnStartedAt:a.spawnStartedAt??null,launchId:a.launchId??null,launchLeaseUntil:a.launchLeaseUntil??null,relayStartedAt:a.relayStartedAt??null,relayRetryCount:a.relayRetryCount??0,relayDeliveryAttempt:a.relayDeliveryAttempt??0,relayDeliveryTransport:a.relayDeliveryTransport??null,relayRetryAt:a.relayRetryAt??null,relayRetryRequiresIdempotency:a.relayRetryRequiresIdempotency??!1,relayDelivery:a.relayDelivery??null,relayPendingSettlement:a.relayPendingSettlement??null,relayHold:R(a.relayHold),terminalAt:a.terminalAt??null,error:a.error??null}))}:null}function V(){let a=(0,j.BQ)("state.sqlite"),b=H.get(a);if(b)return b;(0,m.t0)(a,[P()]);let c=new m.UY(a,{collection:"flows",schemaVersion:x,busyMessage:"flow state is busy",key:a=>a.id,decode:U,clone:a=>L([a])[0],controllerActive:O,strictDecode:!0,decodeError:a=>Error("flow SQLite state contains a malformed row",{cause:a})});return H.set(a,c),c}function W(){return V().checkpointMirrorForDemotion((a,b)=>{A(r(),{schemaVersion:x,_sqliteRevision:b,flows:a})})}async function X(){return V().checkpointMirrorForDemotionAsync((a,b)=>{A(r(),{schemaVersion:x,_sqliteRevision:b,flows:a})})}function Y(a,b){if(a.implementerConversationId?.startsWith("conversation_")){let c=b.conversation(a.implementerConversationId)?.generations.at(-1)?.path;return!!c&&c!==a.implementerPath&&(a.implementerPath=c,!0)}let c=b.conversationForPath(a.implementerPath);if(!c)return!1;a.implementerConversationId=c.id;let d=c.generations.at(-1)?.path;return d&&(a.implementerPath=d),!0}function Z(a,b){if(a.reviewerConversationId?.startsWith("conversation_")){let c=b.conversation(a.reviewerConversationId)?.generations.at(-1)?.path;return!!c&&c!==a.reviewerPath&&(a.reviewerPath=c,!0)}if(!a.reviewerPath)return!1;let c=b.conversationForPath(a.reviewerPath);if(!c)return!1;a.reviewerConversationId=c.id;let d=c.generations.at(-1)?.path;return d&&(a.reviewerPath=d),!0}function $(a,b,c){return a===c.path&&(b??null)===c.conversationId}function _(a=(0,k.agentRegistry)()){let b=M(),c=!1;for(let d of b)for(let b of(c=Y(d,a)||c,d.rounds))c=Z(b,a)||c;c&&ad(b)}async function aa(a=(0,k.agentRegistry)()){let b=M(),c=[];await (0,l.pV)(b,async b=>{let d={path:b.implementerPath,conversationId:b.implementerConversationId??null},e=Y(b,a),f=[];await (0,l.pV)(b.rounds,b=>{let c={path:b.reviewerPath,conversationId:b.reviewerConversationId??null};Z(b,a)&&f.push({n:b.n,before:c,after:{path:b.reviewerPath,conversationId:b.reviewerConversationId??null}})}),(e||f.length>0)&&c.push({id:b.id,implementer:e?{before:d,after:{path:b.implementerPath,conversationId:b.implementerConversationId??null}}:null,rounds:f})}),function(a){if(0===a.length)return;let b=M(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.implementer&&$(a.implementerPath,a.implementerConversationId,b.implementer.before)&&(a.implementerPath=b.implementer.after.path,a.implementerConversationId=b.implementer.after.conversationId,d=!0),b.rounds)){let b=a.rounds.find(a=>a.n===c.n);b&&$(b.reviewerPath,b.reviewerConversationId,c.before)&&(b.reviewerPath=c.after.path,b.reviewerConversationId=c.after.conversationId,d=!0)}}d&&ad(b)}(c)}function ab(a){let b={...a};return delete b.revision,JSON.stringify(b)}function ac(a){for(let b of a){let a=V().get(b.id)??void 0;if(a&&void 0!==b.revision&&b.revision<(a.revision??0)){for(let a of Object.keys(b))delete b[a];Object.assign(b,structuredClone(a));continue}b.revision=a&&ab(a)===ab(b)?a.revision??0:(a?.revision??0)+1}}function ad(a){let b=I.get(a);if(!b){V().replaceSync(a,{beforePersist:ac}),J(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));V().patchSync(()=>(ac(d),{records:d,deleteKeys:e.filter(a=>{let c=V().get(a);return null!==c&&JSON.stringify(c)===b.get(a)})})),J(a)}function ae(a){0!==a.length&&V().replaceSync(a,{mergeOmitted:!0,beforePersist:ac})}function af(a,b){let c=[...new Set(a)];if(0===c.length)return;let d=V();d.patchSync(()=>{let a=b(c.flatMap(a=>{let b=d.get(a);return b?[b]:[]}));return ac(a),{records:a}})}async function ag(a){return await V().mutate(a,({dirtyRecords:a})=>ac(a))}function ah(a){return V().withSnapshotSync(a)}function ai(){let a=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(s()),b=Array.isArray(a?.presets)?a.presets.filter(D):[],c=F(b);return JSON.stringify(c)!==JSON.stringify(b)&&aj(c),c}function aj(a){A(s(),{presets:a})}function ak(a){return i().join((0,j.BQ)("flows"),a)}function al(a,b){return i().join(ak(a),`round-${b}-review.md`)}function am(a,b){return i().join(ak(a),`round-${b}-last-message.md`)}function an(a,b){return i().join(ak(a),`round-${b}-stderr.txt`)}function ao(a,b){return i().join(ak(a),`round-${b}-stdout.log`)}function ap(a,b){let c=b.replace(/^\s*VERDICT:\s*(APPROVE|REQUEST_CHANGES|COMMENT)\s*$/im,"").trim();return`VERDICT: ${a}
|
|
2
|
-
${c?"\n"+c+"\n":"\n"}`}},99411:(a,b,c)=>{c.d(b,{aW:()=>m,OH:()=>o,fy:()=>n,s8:()=>p,X2:()=>l,hB:()=>k,$d:()=>j});var d=c(58152),e=c(4837);let f={engine:"claude",model:"opus",effort:"high"},g={engine:"codex",model:"gpt-5.6-terra",effort:"low"};var h=c(79247),i=c(89822);function j(a,b,{requireRequired:c=!0}={}){if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return{ok:!1,error:"roleParams must be an object"};let d=b??{},e=new Map(a.parameters.map(a=>[a.key,a]));for(let b of Object.keys(d))if(!e.has(b)){let c=a.parameters.map(a=>a.key).join(", ")||"none";return{ok:!1,error:`unknown role parameter: ${b} (${a.id} accepts: ${c})`}}let f={};for(let b of a.parameters){let a=d[b.key];if(void 0===a||""===a){if(b.required&&c)return{ok:!1,error:`missing required role parameter: ${b.key}`};f[b.key]=(0,h.y)(b);continue}if("integer"===b.kind){if(!Number.isInteger(a)||"number"!=typeof a||void 0!==b.min&&a<b.min||void 0!==b.max&&a>b.max)return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=a;continue}let e=function(a){if("string"!=typeof a)return null;let b=a.trim();return b&&b.length<=2e3?b:null}(a);if(!e||"select"===b.kind&&!b.options?.includes(e))return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=e}return{ok:!0,value:f}}function k(a,b){var c;let d="builder"===a.id&&"frontend"===b.domain?"\n\nUI/frontend implementation guidance: follow the approved interaction and visual contract, preserve accessible semantics, responsive behavior, and English/Ukrainian parity.":"";return c=a.promptScaffold,c.replace(/\{\{([A-Za-z][A-Za-z0-9]*)\}\}/g,(a,c)=>String(b[c]??"")).replace(/^(Repository|Issue query|Urgent list):\s*\n/gm,"")+d}function l(a){return a.safetyFences.length?`
|
|
1
|
+
"use strict";exports.id=6826,exports.ids=[6826],exports.modules={25123:(a,b,c)=>{c.d(b,{Ix:()=>l,V8:()=>n,ae:()=>q,dA:()=>s,ot:()=>o});var d=c(31421),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(23921),j=c(92806),k=c(46825);let l=(a,b,c)=>{let e=(0,d.spawnSync)(a,b,{cwd:c,encoding:"utf8"});return e.error?{code:null,stdout:"",stderr:e.error.message}:{code:e.status,stdout:e.stdout??"",stderr:e.stderr??"",...e.signal?{signal:e.signal}:{}}};function m(a,b){let c=(b.stderr||b.stdout||"no output").trim();return{ok:!1,error:`${a}: ${c}`}}function n(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return m("resolving the repo branch",c);let d=c.stdout.trim();if(!d||"HEAD"===d)return{ok:!1,error:"the repo checkout is detached; a workflow needs a branch to target"};let e=b("git",["worktree","add","-b",a.branch,a.worktreeDir,"HEAD"],a.repoDir);if(0!==e.code){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.worktreeDir);if(0!==c.code||c.stdout.trim()!==a.branch)return m("git worktree add",e)}let f=b("git",["rev-parse","HEAD"],a.worktreeDir);if(0!==f.code)return m("resolving the workflow base ref",f);let g=f.stdout.trim();return g?{ok:!0,baseBranch:d,baseRef:g}:{ok:!1,error:"git returned an empty base ref"}}function o(a){let b=a.template.setup;if(!b)return{pid:null,error:"workflow has no setup command"};let c=(0,k.setupExitPath)(a.id);f().mkdirSync(h().dirname(c),{recursive:!0}),f().rmSync(c,{force:!0});let e=f().openSync((0,k.setupStdoutPath)(a.id),"w"),g=f().openSync((0,k.setupStderrPath)(a.id),"w");try{let f=(0,d.spawn)("sh",["-c",'sh -c "$LLV_SETUP_CMD"; printf \'%s\' "$?" > "$LLV_SETUP_EXIT"'],{cwd:a.worktreeDir,env:{...(0,j.Fd)(process.env),LLV_SETUP_CMD:b,LLV_SETUP_EXIT:c},detached:!0,stdio:["ignore",e,g]});return f.unref(),{pid:f.pid??null}}catch(a){return{pid:null,error:a instanceof Error?a.message:String(a)}}finally{f().closeSync(e),f().closeSync(g)}}function p(a){try{return f().readFileSync(a,"utf8")}catch{return""}}function q(a,b=Date.now()){let c=p((0,k.setupExitPath)(a.id)).trim();if(""!==c){if("0"===c)return{status:"done",detail:""};let b=p((0,k.setupStderrPath)(a.id)).trim().split("\n").slice(-3).join("\n");return{status:"failed",detail:`setup exited with code ${c}${b?`: ${b}`:""}`}}if(null!=a.setupPid&&(0,i.pl)(a.setupPid))return{status:"running",detail:""};let d=function(a,b){try{return b-f().statSync(a).mtimeMs}catch{return null}}((0,k.setupStdoutPath)(a.id),b);return null!==d&&d<3e3?{status:"running",detail:""}:{status:"failed",detail:"setup was interrupted before it finished"}}function r(a){let b=a.task.split("\n").map(a=>a.trim()).find(Boolean)??a.name;return b.length>72?b.slice(0,69)+"…":b}function s(a,b,c){let d=c("git",["status","--porcelain"],a.worktreeDir);if(0!==d.code)return m("checking the worktree state",d);let e=d.stdout.split("\n").filter(a=>a.trim());if(e.length){let a=e.slice(0,3).map(a=>a.slice(3).trim()||a.trim()),b=e.length>a.length?`, +${e.length-a.length} more`:"";return{ok:!1,error:`the worktree has uncommitted changes (${a.join(", ")}${b}) — commit them, then retry the finish`}}return"merge"===a.template.finish?function(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return m("resolving the repo branch",c);let d=c.stdout.trim();if(d!==a.baseBranch)return{ok:!1,error:`the repo checkout is on ${d}; check out ${a.baseBranch} before merging`};let e=b("git",["merge","--no-ff",a.branch,"-m",`Merge ${a.branch}: ${r(a)}`],a.repoDir);return 0!==e.code?(b("git",["merge","--abort"],a.repoDir),m("git merge",e)):{ok:!0,prUrl:null}}(a,c):function(a,b,c){let d=c("git",["push","-u","origin",a.branch],a.worktreeDir);if(0!==d.code)return m("git push",d);let e=c("gh",["pr","create","--title",r(a),"--body",b,"--base",a.baseBranch,"--head",a.branch],a.worktreeDir);if(0===e.code){var f;return{ok:!0,prUrl:(f=e.stdout,f.match(/https:\/\/\S+\/pull\/\d+/)?.[0]??null)}}if(/already exists/i.test(e.stderr)){let b=c("gh",["pr","view",a.branch,"--json","url","--jq",".url"],a.worktreeDir);if(0===b.code&&b.stdout.trim())return{ok:!0,prUrl:b.stdout.trim()}}return m("gh pr create",e)}(a,b,c)}},38840:(a,b,c)=>{c.d(b,{$d:()=>i,OH:()=>n,X2:()=>k,aW:()=>l,fy:()=>m,hB:()=>j,s8:()=>o});var d=c(58152),e=c(4837),f=c(37664),g=c(79247),h=c(89822);function i(a,b,{requireRequired:c=!0}={}){if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return{ok:!1,error:"roleParams must be an object"};let d=b??{},e=new Map(a.parameters.map(a=>[a.key,a]));for(let b of Object.keys(d))if(!e.has(b)){let c=a.parameters.map(a=>a.key).join(", ")||"none";return{ok:!1,error:`unknown role parameter: ${b} (${a.id} accepts: ${c})`}}let f={};for(let b of a.parameters){let a=d[b.key];if(void 0===a||""===a){if(b.required&&c)return{ok:!1,error:`missing required role parameter: ${b.key}`};f[b.key]=(0,g.y)(b);continue}if("integer"===b.kind){if(!Number.isInteger(a)||"number"!=typeof a||void 0!==b.min&&a<b.min||void 0!==b.max&&a>b.max)return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=a;continue}let e=function(a){if("string"!=typeof a)return null;let b=a.trim();return b&&b.length<=2e3?b:null}(a);if(!e||"select"===b.kind&&!b.options?.includes(e))return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=e}return{ok:!0,value:f}}function j(a,b){var c;let d="builder"===a.id&&"frontend"===b.domain?"\n\nUI/frontend implementation guidance: follow the approved interaction and visual contract, preserve accessible semantics, responsive behavior, and English/Ukrainian parity.":"";return c=a.promptScaffold,c.replace(/\{\{([A-Za-z][A-Za-z0-9]*)\}\}/g,(a,c)=>String(b[c]??"")).replace(/^(Repository|Issue query|Urgent list):\s*\n/gm,"")+d}function k(a){return a.safetyFences.length?`
|
|
3
2
|
|
|
4
3
|
Safety fences:
|
|
5
|
-
${a.safetyFences.map(a=>`- ${a}`).join("\n")}`:""}function m(a,b){return"builder"!==a.id?a.config:"frontend"===b.domain?f:"apply-fixes"===b.mode?g:a.config}function n(a,b={},c={},f=(0,i.pQ)()){let g=f.find(b=>b.id===a);if(!g)return{ok:!1,error:`unknown role: ${a} (allowed: ${f.map(a=>a.id).join(", ")})`};let h=j(g,b);if(!h.ok)return h;let o=function(a,b,c){let f={...m(a,b),...c};if("claude"!==f.engine&&"codex"!==f.engine)return{ok:!1,error:"engine must be claude or codex"};let g=(0,e.RC)(f.engine,f.model);if("error"in g)return{ok:!1,error:g.error};f.model=g.model;let h=(0,d.ve)(f.engine,f.model);return h.includes(f.effort)?{ok:!0,value:f}:{ok:!1,error:`effort for ${f.engine} must be one of: ${h.join(", ")}`}}(g,h.value,c);return o.ok?{ok:!0,value:{definition:g,config:o.value,params:h.value,prompt:k(g,h.value)+l(g),requiresDeploymentConfirmation:"deployer"===g.id}}:o}function o(){return(0,i.pQ)()}function p(a){if(void 0===a.role||null===a.role||""===a.role)return{ok:!0,value:null};if("string"!=typeof a.role)return{ok:!1,error:"role must be a string"};let b=n(a.role,a.roleParams);if(!b.ok)return b;let c={};if(void 0!==a.engine){if("claude"!==a.engine&&"codex"!==a.engine)return{ok:!1,error:"engine must be claude or codex"};if(a.engine!==b.value.config.engine&&void 0===a.model)return{ok:!1,error:"model is required when overriding a role engine"};c.engine=a.engine}"string"==typeof a.model&&a.model.trim()&&(c.model=a.model.trim()),"string"==typeof a.effort&&a.effort.trim()&&(c.effort=a.effort.trim());let d=n(a.role,a.roleParams,c);return d.ok?d.value.requiresDeploymentConfirmation&&"deploy"!==a.confirm?{ok:!1,error:"deployer requires confirm: deploy"}:{ok:!0,value:{config:d.value.config,scaffold:d.value.prompt,role:d.value.definition.id}}:d}}};
|
|
4
|
+
${a.safetyFences.map(a=>`- ${a}`).join("\n")}`:""}function l(a,b){return"builder"!==a.id?a.config:"frontend"===b.domain?a.variants?.frontend??f.C:"apply-fixes"===b.mode?a.variants?.["apply-fixes"]??f.i:a.config}function m(a,b={},c={},f=(0,h.pQ)()){let g=f.find(b=>b.id===a);if(!g)return{ok:!1,error:`unknown role: ${a} (allowed: ${f.map(a=>a.id).join(", ")})`};let n=i(g,b);if(!n.ok)return n;let o=function(a,b,c){let f={...l(a,b),...c};if("claude"!==f.engine&&"codex"!==f.engine)return{ok:!1,error:"engine must be claude or codex"};let g=(0,e.RC)(f.engine,f.model);if("error"in g)return{ok:!1,error:g.error};f.model=g.model;let h=(0,d.ve)(f.engine,f.model);return h.includes(f.effort)?{ok:!0,value:f}:{ok:!1,error:`effort for ${f.engine} must be one of: ${h.join(", ")}`}}(g,n.value,c);return o.ok?{ok:!0,value:{definition:g,config:o.value,params:n.value,prompt:j(g,n.value)+k(g),requiresDeploymentConfirmation:"deployer"===g.id}}:o}function n(){return(0,h.pQ)()}function o(a){if(void 0===a.role||null===a.role||""===a.role)return{ok:!0,value:null};if("string"!=typeof a.role)return{ok:!1,error:"role must be a string"};let b=m(a.role,a.roleParams);if(!b.ok)return b;let c={};if(void 0!==a.engine){if("claude"!==a.engine&&"codex"!==a.engine)return{ok:!1,error:"engine must be claude or codex"};if(a.engine!==b.value.config.engine&&void 0===a.model)return{ok:!1,error:"model is required when overriding a role engine"};c.engine=a.engine}"string"==typeof a.model&&a.model.trim()&&(c.model=a.model.trim()),"string"==typeof a.effort&&a.effort.trim()&&(c.effort=a.effort.trim());let d=m(a.role,a.roleParams,c);return d.ok?d.value.requiresDeploymentConfirmation&&"deploy"!==a.confirm?{ok:!1,error:"deployer requires confirm: deploy"}:{ok:!0,value:{config:d.value.config,scaffold:d.value.prompt,role:d.value.definition.id}}:d}},46825:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_FIXER:()=>v,SEEDED_TEMPLATES:()=>x,buildWorkflow:()=>ad,checkpointWorkflowRollbackMirrorForDemotion:()=>P,checkpointWorkflowRollbackMirrorForDemotionAsync:()=>Q,defaultFixerFromRoles:()=>u,loadTemplates:()=>aa,loadWorkflows:()=>I,mergeSeededTemplates:()=>ac,normalizeStage:()=>B,normalizeStages:()=>C,normalizeTemplate:()=>E,planWorkflowStateMigration:()=>K,reconcileWorkflowConversationOwnership:()=>W,reconcileWorkflowConversationOwnershipCooperatively:()=>X,roleConfigFromReference:()=>A,saveTemplates:()=>ab,saveWorkflows:()=>$,seededTemplatesFromRoles:()=>w,setupExitPath:()=>ah,setupStderrPath:()=>ag,setupStdoutPath:()=>af,validateWorkflowLaunchModels:()=>D,withWorkflowMutation:()=>_,workflowArtifactsDir:()=>ae,workflowStateCollectionSeed:()=>N});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(4837),i=c(91724),j=c(89940),k=c(10781),l=c(12770),m=c(98590),n=c(18797),o=c(38840),p=c(89822),q=c(13117);let r=()=>(0,i.BQ)("workflows.json"),s=()=>(0,i.BQ)("workflow-templates.json");function t(a,b={},c=(0,p.e3)()){if("builder"!==a)return{...c.find(b=>b.id===a).config};let d=(0,o.fy)(a,b,{},c);return d.ok?{...d.value.config}:{...n.W.find(b=>b.id===a).config}}function u(a){let b=t("cleaner",{},a);return{..."codex"===b.engine?b:{...n.W.find(a=>"cleaner"===a.id).config},effort:"low"}}let v=u();function w(){let a=(0,p.e3)(),b=t("builder",{},a),c=t("builder",{mode:"plain",domain:"frontend"},a),d=t("reviewer",{},a),e=u(a);return[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:c,scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]},{name:"Astra medium → Astra xhigh review",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Implement the requested change end to end, including focused tests and documentation updates."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]}].map(a=>({...a,managed:"role-registry"}))}let x=w();function y(a,b){(0,m.atomicWriteText)(a,JSON.stringify(b,null,2)+"\n")}function z(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}function A(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.role)return null;let b=a.overrides;if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return null;let c=b??{},d={..."claude"===c.engine||"codex"===c.engine?{engine:c.engine}:{},..."string"==typeof c.model?{model:c.model}:{},..."string"==typeof c.effort?{effort:c.effort}:{}},e=(0,o.fy)(a.role,a.roleParams,d);return e.ok?e.value.config:null}function B(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;if("implement"===b){let b;return(b=z(a.agent)??A(a))&&"string"==typeof a.scope&&a.scope.trim()?{kind:"implement",agent:b,scope:a.scope.trim()}:null}if("review-loop"===b){let b,c=z(a.reviewer)??A(a);return c?{kind:"review-loop",reviewer:c,fixer:(b=z(a.fixer))&&"codex"===b.engine?{engine:"codex",model:b.model,effort:"low"}:u(),roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>=0?Math.min(a.roundLimit,50):5,reviewerMode:"pane"===a.reviewerMode?"pane":"headless"}:null}return null}function C(a){if(!Array.isArray(a)||a.length<2)return{error:"a workflow needs at least one implement stage and a closing review-loop"};let b=[];for(let c of a){let a=B(c);if(!a)return{error:"invalid stage definition"};b.push(a)}return 1!==b.filter(a=>"review-loop"===a.kind).length||b.at(-1)?.kind!=="review-loop"?{error:"stages must be implement+ followed by exactly one review-loop last"}:{stages:b}}function D(a){for(let b of a)for(let a of"implement"===b.kind?[b.agent]:[b.reviewer,b.fixer]){if(!a.model)continue;let b=(0,h.RC)(a.engine,a.model);if("error"in b)return b;a.model=b.model}return{stages:a}}function E(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.name||!a.name.trim())return null;let b=C(a.stages);if("error"in b)return null;let c="merge"===a.finish?"merge":"pr";return{name:a.name.trim(),stages:b.stages,finish:c,..."role-registry"===a.managed?{managed:a.managed}:{},..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}function F(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.task&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&Array.isArray(a.stageRuns)&&"number"==typeof a.stageIndex&&null!==E(a.template)}let G=new WeakMap;function H(a){return G.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function I(){return H(O().snapshot())}function J(){let a=function(){let a;try{a=e().readFileSync(r(),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy workflow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy workflow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy workflow state must be an object");if(!Array.isArray(a.workflows)||!a.workflows.every(F))throw Error("legacy workflow state contains malformed records");return a.workflows.map(L)}function K(){let a=J();return{records:a.length,keys:a.map(a=>a.id)}}function L(a){return{...a,project:(0,j.G$)(a.project??""),pausedState:a.pausedState??null,setupPid:a.setupPid??null,srcPath:a.srcPath??null,srcConversationId:a.srcConversationId??null,flowId:a.flowId??null,fixerPath:a.fixerPath??null,fixerConversationId:a.fixerConversationId??null,stageRuns:a.stageRuns.map(a=>({...a,agentConversationId:a.agentConversationId??null})),prUrl:a.prUrl??null}}let M=new Map;function N(){return{collection:"workflows",schemaVersion:1,migrationId:"workflows-json-v1",loadRecords:J,key:a=>a.id}}function O(){let a=(0,i.BQ)("state.sqlite"),b=M.get(a);if(b)return b;(0,q.t0)(a,[N()]);let c=new q.UY(a,{collection:"workflows",schemaVersion:1,busyMessage:"workflow state is busy",key:a=>a.id,decode:a=>F(a)?L(a):null,clone:a=>L(structuredClone(a)),strictDecode:!0,decodeError:a=>Error("workflow SQLite state contains a malformed row",{cause:a}),validate:a=>{if(!F(a))throw Error("refusing to persist a malformed workflow record")}});return M.set(a,c),c}function P(){return O().checkpointMirrorForDemotion((a,b)=>{y(r(),{_sqliteRevision:b,workflows:a})})}async function Q(){return O().checkpointMirrorForDemotionAsync((a,b)=>{y(r(),{_sqliteRevision:b,workflows:a})})}function R(a,b){if(a.conversationId?.startsWith("conversation_")){let c=b.conversation(a.conversationId)?.generations.at(-1)?.path??a.path;return{path:c,conversationId:a.conversationId,changed:c!==a.path}}if(!a.path)return{path:a.path,conversationId:a.conversationId??null,changed:!1};let c=b.conversationForPath(a.path);return c?{path:a.path,conversationId:c.id,changed:!0}:{path:a.path,conversationId:a.conversationId??null,changed:!1}}function S(a,b){let c=R({path:a.agentPath,conversationId:a.agentConversationId},b);return a.agentPath=c.path,a.agentConversationId=c.conversationId,c.changed}function T(a,b){let c=R({path:a.srcPath??null,conversationId:a.srcConversationId},b);a.srcPath=c.path,a.srcConversationId=c.conversationId;let d=R({path:a.fixerPath,conversationId:a.fixerConversationId},b);return a.fixerPath=d.path,a.fixerConversationId=d.conversationId,c.changed||d.changed}function U(a,b,c){return a===c.path&&(b??null)===c.conversationId}function V(a,b){return a.path!==b.path||a.conversationId!==b.conversationId}function W(a=(0,k.agentRegistry)()){let b=I(),c=!1;for(let d of b)for(let b of(c=T(d,a)||c,d.stageRuns))c=S(b,a)||c;c&&$(b)}async function X(a=(0,k.agentRegistry)()){let b=I(),c=[];await (0,l.pV)(b,async b=>{let d={path:b.srcPath??null,conversationId:b.srcConversationId??null},e={path:b.fixerPath,conversationId:b.fixerConversationId??null};T(b,a);let f={path:b.srcPath??null,conversationId:b.srcConversationId??null},g={path:b.fixerPath,conversationId:b.fixerConversationId??null},h=[];await (0,l.pV)(b.stageRuns,b=>{let c={path:b.agentPath,conversationId:b.agentConversationId??null};S(b,a)&&h.push({index:b.index,before:c,after:{path:b.agentPath,conversationId:b.agentConversationId??null}})});let i=V(d,f),j=V(e,g);(i||j||h.length>0)&&c.push({id:b.id,source:i?{before:d,after:f}:null,fixer:j?{before:e,after:g}:null,runs:h})}),function(a){if(0===a.length)return;let b=I(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.source&&U(a.srcPath??null,a.srcConversationId,b.source.before)&&(a.srcPath=b.source.after.path,a.srcConversationId=b.source.after.conversationId,d=!0),b.fixer&&U(a.fixerPath,a.fixerConversationId,b.fixer.before)&&(a.fixerPath=b.fixer.after.path,a.fixerConversationId=b.fixer.after.conversationId,d=!0),b.runs)){let b=a.stageRuns.find(a=>a.index===c.index);b&&U(b.agentPath,b.agentConversationId,c.before)&&(b.agentPath=c.after.path,b.agentConversationId=c.after.conversationId,d=!0)}}d&&$(b)}(c)}function Y(a,b){return JSON.stringify(a)===JSON.stringify(b)}function Z(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function $(a){let b=G.get(a);if(!b){O().replaceSync(a),H(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));O().patchSync(()=>{let a=[],c=[];for(let c of d){let d=b.get(c.id),e=O().get(c.id);if(void 0!==d&&e&&JSON.stringify(e)!==d){let b=L(function a(b,c,d){if(Y(c,b))return structuredClone(d);if(Y(d,b))return structuredClone(c);if(Z(b)&&Z(c)&&Z(d)){let e={};for(let f of new Set([...Object.keys(b),...Object.keys(c),...Object.keys(d)]))e[f]=a(b[f],c[f],d[f]);return e}return Array.isArray(b)&&Array.isArray(c)&&Array.isArray(d)?Array.from({length:Math.max(b.length,c.length,d.length)},(e,f)=>a(b[f],c[f],d[f])):structuredClone(d)}(JSON.parse(d),c,e));for(let a of Object.keys(c))delete c[a];Object.assign(c,b),JSON.stringify(b)!==JSON.stringify(e)&&a.push(b)}else a.push(c)}for(let a of e){let d=O().get(a);d&&JSON.stringify(d)===b.get(a)&&c.push(a)}return{records:a,deleteKeys:c}}),H(a)}async function _(a){return O().mutate(a)}function aa(){let a=function(a){try{return JSON.parse(e().readFileSync(a,"utf8"))}catch{return null}}(s()),b=Array.isArray(a?.templates)?a.templates.map(E).filter(a=>null!==a):[],c=ac(b);return JSON.stringify(c)!==JSON.stringify(b)&&ab(c),c}function ab(a){y(s(),{templates:a})}function ac(a,b=w()){let c=new Set(a.map(a=>a.name));return[...b.filter(a=>!c.has(a.name)),...a]}function ad(a){let b=g().basename(a.repoDir);return{id:a.id,name:a.name,task:a.task,project:a.project,repoDir:a.repoDir,worktreeDir:g().join(g().dirname(a.repoDir),`${b}-wf-${a.id}`),branch:`wf/${a.task.toLowerCase().replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,40).replace(/-+$/,"")||"task"}-${a.id}`,baseBranch:"",baseRef:"",template:JSON.parse(JSON.stringify(a.template)),stageRuns:a.template.stages.map((a,b)=>({index:b,agentPath:null,agentConversationId:null,paneId:null,startedAt:null,doneAt:null,doneNote:null})),stageIndex:0,flowId:null,fixerPath:null,fixerConversationId:null,state:"provisioning",pausedState:null,stateDetail:null,mode:a.mode,setupPid:null,srcPath:null,srcConversationId:null,prUrl:null,createdAt:a.now,closedAt:null}}function ae(a){return g().join((0,i.BQ)("workflows"),a)}function af(a){return g().join(ae(a),"setup-stdout.log")}function ag(a){return g().join(ae(a),"setup-stderr.log")}function ah(a){return g().join(ae(a),"setup-exit")}},79247:(a,b,c)=>{c.d(b,{y:()=>d});function d(a){return void 0!==a.default?a.default:"integer"===a.kind?a.min??1:"select"===a.kind?a.options?.[0]??"":""}},96826:(a,b,c)=>{c.d(b,{ML:()=>t,OF:()=>r,oT:()=>s});var d=c(31421),e=c(73024),f=c.n(e),g=c(48161),h=c.n(g),i=c(76760),j=c.n(i),k=c(25123);let l={homeDir:h().homedir,stat:f().statSync,access:f().accessSync,exec:(a,b,c)=>{if("git"!==a)return(0,k.Ix)(a,b,c);let e=(0,d.spawnSync)(a,b,{cwd:c,encoding:"utf8",timeout:4e3});return e.error?{code:null,stdout:"",stderr:"ETIMEDOUT"===e.error.code?`git ${b.join(" ")} timed out after 4000ms`:e.error.message}:{code:e.status,stdout:e.stdout??"",stderr:e.stderr??""}}},m=/not a (?:git )?repository/i;function n(a,b){return"not_git"===a.failCode?{ok:!1,code:"not_git",path:b}:{ok:!1,code:"probe_failed",path:b,detail:a.detail}}function o(a){let b=a.stdout.trim();if(0===a.code&&b)return{value:b};let c=(a.stderr||a.stdout||"").trim();return null!==a.code&&0!==a.code&&m.test(a.stderr)?{failCode:"not_git",detail:c||"not a git repository"}:{failCode:"probe_failed",detail:c||"the git repository probe failed"}}let p=new Map;function q(a,b,c){try{return a.access(b,c),!1}catch{return!0}}function r(a,b=l,c={}){var d,e;let g,h,i,k=(d=b.homeDir(),i="~"===(h=a.trim())||h.startsWith("~/")?j().join(d,h.slice(1)):h,j().resolve(i)),m=c.now??Date.now;if(c.cache){let a,b=(e=m(),(a=p.get(k))?e-a.at>5e3?(p.delete(k),null):a.result:null);if(b)return b}try{g=b.stat(k)}catch(a){return{ok:!1,code:"ENOENT"===a.code?"missing":"repo_untraversable",path:k}}if(!g.isDirectory())return{ok:!1,code:"not_directory",path:k};if(q(b,k,f().constants.R_OK))return{ok:!1,code:"repo_unreadable",path:k};if(q(b,k,f().constants.X_OK))return{ok:!1,code:"repo_untraversable",path:k};let s=o(b.exec("git",["rev-parse","--show-toplevel"],k));if("failCode"in s)return n(s,k);let t=j().resolve(s.value);if(t!==k){if(q(b,t,f().constants.R_OK))return{ok:!1,code:"repo_unreadable",path:t};if(q(b,t,f().constants.X_OK))return{ok:!1,code:"repo_untraversable",path:t}}let u=o(b.exec("git",["rev-parse","--path-format=absolute","--git-common-dir"],t));if("failCode"in u)return n(u,t);let v=j().resolve(t,u.value);if(q(b,v,f().constants.W_OK|f().constants.X_OK))return{ok:!1,code:"git_metadata_unwritable",path:v};let w=j().dirname(t);if(q(b,w,f().constants.W_OK|f().constants.X_OK))return{ok:!1,code:"worktree_parent_unwritable",path:w};let x={ok:!0,repoDir:t,gitCommonDir:v,worktreeParent:w};return c.cache&&function(a,b,c){for(let d of a)p.delete(d),p.set(d,{result:b,at:c});for(;p.size>32;){let a=p.keys().next().value;if(void 0===a)break;p.delete(a)}}([...new Set([k,t])],x,m()),x}function s(a){return"probe_failed"===a?503:"missing"===a||"not_directory"===a||"not_git"===a?400:403}function t(a){switch(a.code){case"missing":return`directory does not exist: ${a.path}`;case"not_directory":return`not a directory: ${a.path}`;case"repo_unreadable":return`repository is not readable: ${a.path}`;case"repo_untraversable":return`repository cannot be traversed: ${a.path}`;case"not_git":return`not a git repository: ${a.path}`;case"probe_failed":return`the git repository probe failed for ${a.path}${a.detail?`: ${a.detail}`:""}`;case"git_metadata_unwritable":return`Git metadata is not writable: ${a.path}`;case"worktree_parent_unwritable":return`pipeline worktree parent is not writable: ${a.path}`}}},98590:(a,b,c)=>{c.r(b),c.d(b,{FLOWS_SCHEMA_VERSION:()=>w,atomicWriteText:()=>A,checkpointFlowRollbackMirrorForDemotion:()=>V,checkpointFlowRollbackMirrorForDemotionAsync:()=>W,configuredReviewerFallback:()=>v,findingsPathFor:()=>ak,flowArtifactsDir:()=>aj,flowStateCollectionSeed:()=>O,loadFlow:()=>M,loadFlows:()=>L,loadFlowsForTick:()=>P,loadPresets:()=>ah,mergeSeededPresets:()=>E,normalizeFindings:()=>ao,outputPathFor:()=>al,patchFlowRows:()=>ae,planFlowStateMigration:()=>S,reconcileFlowConversationOwnership:()=>$,reconcileFlowConversationOwnershipCooperatively:()=>_,saveFlowRows:()=>ad,saveFlows:()=>ac,savePresets:()=>ai,seededPresetsFromRoles:()=>u,stderrPathFor:()=>am,stdoutPathFor:()=>an,withFlowMutation:()=>af,withFlowSnapshot:()=>ag});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(10781),l=c(12770),m=c(13117),n=c(18797),o=c(89940),p=c(38840),q=c(89822);let r=()=>(0,j.BQ)("flows.json"),s=()=>(0,j.BQ)("review-loop-presets.json");function t(a,b,c={}){if("builder"!==b)return{...a.find(a=>a.id===b).config};let d=(0,p.fy)(b,c,{},a);return d.ok?{...d.value.config}:{...n.W.find(a=>a.id===b).config}}function u(){let a=(0,q.e3)(),b=t(a,"builder"),c=t(a,"builder",{mode:"apply-fixes",domain:"general"}),d=t(a,"reviewer"),e=t(a,"architect");return[{name:"Astra medium → Astra xhigh",implementer:b,reviewer:d},{name:"Terra low → Astra xhigh",implementer:c,reviewer:d},{name:"Astra medium → Opus 5",implementer:b,reviewer:e},{name:"Opus 5 → Astra xhigh",implementer:e,reviewer:d},{name:"Sonnet → Astra xhigh",implementer:{engine:"claude",model:"sonnet",effort:"high"},reviewer:d}].map(a=>({...a,managed:"role-registry"}))}function v(){return t((0,q.e3)(),"architect")}let w=3,x=/^(?:claude|codex):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,y=/^(?:default|unknown|managed:[0-9a-f]{12})$/;function z(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 A(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,b,"utf8"),g().renameSync(c,a)}function B(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"implement-review-loop"===a.template&&"string"==typeof a.cwd&&"string"==typeof a.implementerPath&&"string"==typeof a.baseRef&&(void 0===a.headRef||null===a.headRef||"string"==typeof a.headRef)&&(void 0===a.requireRemoteHead||"boolean"==typeof a.requireRemoteHead)&&(void 0===a.targetSha||null===a.targetSha||"string"==typeof a.targetSha)&&(void 0===a.spec||"string"==typeof a.spec)&&(void 0===a.reviewerSandbox||"full"===a.reviewerSandbox||"restricted"===a.reviewerSandbox)&&(void 0===a.hostClaim||null===a.hostClaim||x.test(a.hostClaim.sessionKey)&&y.test(a.hostClaim.accountRef))&&Array.isArray(a.rounds)}function C(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.name&&D(a.implementer)&&D(a.reviewer)&&(void 0===a.managed||"role-registry"===a.managed)}function D(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&("claude"===a.engine||"codex"===a.engine)&&(null===a.model||"string"==typeof a.model)&&(null===a.effort||"string"==typeof a.effort)}function E(a,b=u()){let c=new Set(a.map(a=>a.name));return[...b.filter(a=>!c.has(a.name)),...a]}let F=null,G=new Map,H=new WeakMap;function I(a){return H.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function J(){return U().signature()}function K(a){return a.map(a=>({...a,hostClaim:a.hostClaim?{...a.hostClaim}:null,rounds:a.rounds.map(a=>({...a}))}))}function L(){let a=J();if(F?.signature===a)return I(K(F.flows));let b=U().snapshot(),c=J();return a===c&&(F={signature:c,flows:b}),I(K(b))}function M(a){return U().get(a)}function N(a){return!["approved","done_comment","needs_decision","closed"].includes(a.state)}function O(){return{collection:"flows",schemaVersion:w,migrationId:"flows-json-v1",loadRecords:R,key:a=>a.id,controllerActive:N}}function P(){return U().snapshotForController()}function Q(a){return a?{...a,resetKnown:a.resetKnown??!0}:null}function R(){let a=function(){let a;try{a=g().readFileSync(r(),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy flow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy flow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy flow state must be an object");if(!Array.isArray(a.flows)||!a.flows.every(B))throw Error("legacy flow state contains malformed records");return a.flows.map(a=>({...a,project:(0,o.G$)(a.project),revision:a.revision??0,targetSha:a.targetSha??null,implementerConversationId:a.implementerConversationId??null,reviewerFallback:void 0===a.reviewerFallback&&"codex"===a.roles.reviewer.engine?v():a.reviewerFallback??null,pausedState:a.pausedState??null,kickoffDelivery:a.kickoffDelivery??null,hostClaim:a.hostClaim??null,rounds:a.rounds.map(a=>({...a,reviewerConversationId:a.reviewerConversationId??null,reviewerRole:a.reviewerRole??null,attemptedAccounts:a.attemptedAccounts??[],autoRetryCount:a.autoRetryCount??0,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,reviewerIdentity:a.reviewerIdentity??null,reviewHeadSha:a.reviewHeadSha??null,spawnStartedAt:a.spawnStartedAt??null,launchId:a.launchId??null,launchLeaseUntil:a.launchLeaseUntil??null,relayStartedAt:a.relayStartedAt??null,relayRetryCount:a.relayRetryCount??0,relayDeliveryAttempt:a.relayDeliveryAttempt??0,relayDeliveryTransport:a.relayDeliveryTransport??null,relayRetryAt:a.relayRetryAt??null,relayRetryRequiresIdempotency:a.relayRetryRequiresIdempotency??!1,relayDelivery:a.relayDelivery??null,relayPendingSettlement:a.relayPendingSettlement??null,relayHold:Q(a.relayHold),terminalAt:a.terminalAt??null,error:a.error??null}))}))}function S(){let a=R();return{records:a.length,keys:a.map(a=>a.id)}}function T(a){return B(a)?{...a,project:(0,o.G$)(a.project),revision:a.revision??0,targetSha:a.targetSha??null,implementerConversationId:a.implementerConversationId??null,reviewerFallback:void 0===a.reviewerFallback&&"codex"===a.roles.reviewer.engine?v():a.reviewerFallback??null,pausedState:a.pausedState??null,kickoffDelivery:a.kickoffDelivery??null,hostClaim:a.hostClaim??null,rounds:a.rounds.map(a=>({...a,reviewerConversationId:a.reviewerConversationId??null,reviewerRole:a.reviewerRole??null,attemptedAccounts:a.attemptedAccounts??[],autoRetryCount:a.autoRetryCount??0,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,reviewerIdentity:a.reviewerIdentity??null,reviewHeadSha:a.reviewHeadSha??null,spawnStartedAt:a.spawnStartedAt??null,launchId:a.launchId??null,launchLeaseUntil:a.launchLeaseUntil??null,relayStartedAt:a.relayStartedAt??null,relayRetryCount:a.relayRetryCount??0,relayDeliveryAttempt:a.relayDeliveryAttempt??0,relayDeliveryTransport:a.relayDeliveryTransport??null,relayRetryAt:a.relayRetryAt??null,relayRetryRequiresIdempotency:a.relayRetryRequiresIdempotency??!1,relayDelivery:a.relayDelivery??null,relayPendingSettlement:a.relayPendingSettlement??null,relayHold:Q(a.relayHold),terminalAt:a.terminalAt??null,error:a.error??null}))}:null}function U(){let a=(0,j.BQ)("state.sqlite"),b=G.get(a);if(b)return b;(0,m.t0)(a,[O()]);let c=new m.UY(a,{collection:"flows",schemaVersion:w,busyMessage:"flow state is busy",key:a=>a.id,decode:T,clone:a=>K([a])[0],controllerActive:N,strictDecode:!0,decodeError:a=>Error("flow SQLite state contains a malformed row",{cause:a})});return G.set(a,c),c}function V(){return U().checkpointMirrorForDemotion((a,b)=>{z(r(),{schemaVersion:w,_sqliteRevision:b,flows:a})})}async function W(){return U().checkpointMirrorForDemotionAsync((a,b)=>{z(r(),{schemaVersion:w,_sqliteRevision:b,flows:a})})}function X(a,b){if(a.implementerConversationId?.startsWith("conversation_")){let c=b.conversation(a.implementerConversationId)?.generations.at(-1)?.path;return!!c&&c!==a.implementerPath&&(a.implementerPath=c,!0)}let c=b.conversationForPath(a.implementerPath);if(!c)return!1;a.implementerConversationId=c.id;let d=c.generations.at(-1)?.path;return d&&(a.implementerPath=d),!0}function Y(a,b){if(a.reviewerConversationId?.startsWith("conversation_")){let c=b.conversation(a.reviewerConversationId)?.generations.at(-1)?.path;return!!c&&c!==a.reviewerPath&&(a.reviewerPath=c,!0)}if(!a.reviewerPath)return!1;let c=b.conversationForPath(a.reviewerPath);if(!c)return!1;a.reviewerConversationId=c.id;let d=c.generations.at(-1)?.path;return d&&(a.reviewerPath=d),!0}function Z(a,b,c){return a===c.path&&(b??null)===c.conversationId}function $(a=(0,k.agentRegistry)()){let b=L(),c=!1;for(let d of b)for(let b of(c=X(d,a)||c,d.rounds))c=Y(b,a)||c;c&&ac(b)}async function _(a=(0,k.agentRegistry)()){let b=L(),c=[];await (0,l.pV)(b,async b=>{let d={path:b.implementerPath,conversationId:b.implementerConversationId??null},e=X(b,a),f=[];await (0,l.pV)(b.rounds,b=>{let c={path:b.reviewerPath,conversationId:b.reviewerConversationId??null};Y(b,a)&&f.push({n:b.n,before:c,after:{path:b.reviewerPath,conversationId:b.reviewerConversationId??null}})}),(e||f.length>0)&&c.push({id:b.id,implementer:e?{before:d,after:{path:b.implementerPath,conversationId:b.implementerConversationId??null}}:null,rounds:f})}),function(a){if(0===a.length)return;let b=L(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.implementer&&Z(a.implementerPath,a.implementerConversationId,b.implementer.before)&&(a.implementerPath=b.implementer.after.path,a.implementerConversationId=b.implementer.after.conversationId,d=!0),b.rounds)){let b=a.rounds.find(a=>a.n===c.n);b&&Z(b.reviewerPath,b.reviewerConversationId,c.before)&&(b.reviewerPath=c.after.path,b.reviewerConversationId=c.after.conversationId,d=!0)}}d&&ac(b)}(c)}function aa(a){let b={...a};return delete b.revision,JSON.stringify(b)}function ab(a){for(let b of a){let a=U().get(b.id)??void 0;if(a&&void 0!==b.revision&&b.revision<(a.revision??0)){for(let a of Object.keys(b))delete b[a];Object.assign(b,structuredClone(a));continue}b.revision=a&&aa(a)===aa(b)?a.revision??0:(a?.revision??0)+1}}function ac(a){let b=H.get(a);if(!b){U().replaceSync(a,{beforePersist:ab}),I(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));U().patchSync(()=>(ab(d),{records:d,deleteKeys:e.filter(a=>{let c=U().get(a);return null!==c&&JSON.stringify(c)===b.get(a)})})),I(a)}function ad(a){0!==a.length&&U().replaceSync(a,{mergeOmitted:!0,beforePersist:ab})}function ae(a,b){let c=[...new Set(a)];if(0===c.length)return;let d=U();d.patchSync(()=>{let a=b(c.flatMap(a=>{let b=d.get(a);return b?[b]:[]}));return ab(a),{records:a}})}async function af(a){return await U().mutate(a,({dirtyRecords:a})=>ab(a))}function ag(a){return U().withSnapshotSync(a)}function ah(){let a=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(s()),b=Array.isArray(a?.presets)?a.presets.filter(C):[],c=E(b);return JSON.stringify(c)!==JSON.stringify(b)&&ai(c),c}function ai(a){z(s(),{presets:a})}function aj(a){return i().join((0,j.BQ)("flows"),a)}function ak(a,b){return i().join(aj(a),`round-${b}-review.md`)}function al(a,b){return i().join(aj(a),`round-${b}-last-message.md`)}function am(a,b){return i().join(aj(a),`round-${b}-stderr.txt`)}function an(a,b){return i().join(aj(a),`round-${b}-stdout.log`)}function ao(a,b){let c=b.replace(/^\s*VERDICT:\s*(APPROVE|REQUEST_CHANGES|COMMENT)\s*$/im,"").trim();return`VERDICT: ${a}
|
|
5
|
+
${c?"\n"+c+"\n":"\n"}`}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=6942,exports.ids=[6942],exports.modules={66942:(a,b,c)=>{c.d(b,{CP:()=>
|
|
1
|
+
"use strict";exports.id=6942,exports.ids=[6942],exports.modules={66942:(a,b,c)=>{c.d(b,{CP:()=>M,H2:()=>O,A9:()=>N,hA:()=>ao,PU:()=>B});var d=c(63657),e=c(9302),f=c(77598),g=c.n(f),h=c(73024),i=c(31421),j=c(76760),k=c.n(j),l=c(46193),m=c(1849);function n(a){if(a&&"object"==typeof a&&!Object.isFrozen(a))for(let b of(Object.freeze(a),Object.values(a)))n(b);return a}function o(a){let b=/(^|[^A-Z0-9_.-])((?:\\+)?["']?)([A-Z0-9_.-]*(?:TOKEN|SECRET|PASSWORD|PASSWD|API[_-]?KEY|AUTHORIZATION|COOKIE)[A-Z0-9_.-]*)\2\s*[:=]\s*(?!<redacted>(?:$|[\s,}\]]))(?:((?:\\+)?["'])|(?=[^"'\\\s]))/i.exec(a),c=/\b(Bearer)\s+(?:((?:\\+)?["'])|(?=\S))/i.exec(a),d=/\b(?:(?:sk|ghp|github_pat|xox[baprs])[-_A-Za-z0-9]{16,}|[A-Za-z0-9+/_=-]{48,})/i.exec(a),e=[];if(b){let a=b[4]??"",c=a.at(-1);e.push({index:b.index+b[1].length,length:b[0].length-b[1].length,replacement:`${b[3]}=<redacted>`,quote:'"'===c||"'"===c?c:null,quoteEscapeDepth:Math.max(0,a.length-1),quotedKey:b[2].endsWith('"')||b[2].endsWith("'"),authorization:/AUTHORIZATION/i.test(b[3]),bearer:!1})}if(c){let a=c[2]??"",b=a.at(-1);e.push({index:c.index,length:c[0].length,replacement:`${c[1]} <redacted>`,quote:'"'===b||"'"===b?b:null,quoteEscapeDepth:Math.max(0,a.length-1),quotedKey:!1,authorization:!1,bearer:!0})}return d&&e.push({index:d.index,length:d[0].length,replacement:"<redacted>",quote:null,quoteEscapeDepth:0,quotedKey:!1,authorization:!1,bearer:!1}),e.sort((a,b)=>a.index-b.index)[0]??null}function p(a,b,c=!1){return function(a,b,c=!1){let d=Buffer.from(a);if(d.length<=b)return a;if(c){let a=d.length-Math.max(0,b-Buffer.byteLength("..."));for(;a<d.length&&(192&d[a])==128;)a+=1;return"...".slice(0,b)+d.subarray(a).toString("utf8")}let e=b;for(;e>0&&(192&d[e])==128;)e-=1;return d.subarray(0,e).toString("utf8")}(function(a){let b="",c=a;for(;c;){let a=o(c);if(!a){b+=c;break}if(b+=c.slice(0,a.index)+a.replacement,c=c.slice(a.index+a.length),a.authorization&&!(a.quotedKey&&a.quote)){let a=c.search(/[\r\n]/);c=a<0?"":c.slice(a);continue}if(a.quote){let b=function(a,b,c,d=0){let e=0;for(let f=d;f<a.length;f+=1){let d=a[f];if("\\"===d){e+=1;continue}if(d===b&&e===c)return f+1;e=0}return -1}(c,a.quote,a.quoteEscapeDepth);c=b<0?"":c.slice(b);continue}if(a.bearer){let a=c.search(/[\r\n]/);c=a<0?"":c.slice(a);continue}if(!a.authorization){let a=c.search(/\s/);c=a<0?"":c.slice(a)}}return b.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g,"").trim()}(a),b,c)}function q(a,b,c,d={}){let e=void 0===d.stderr?void 0:p(d.stderr,2048,!0);return n({reason:a,diagnostic:{cause:b,message:p(c,512),causes:function(a,b=[]){let c=[];for(let d of[a,...b])for(let a of function(a){let b=[],c=a;for(let a=0;a<4&&void 0!==c;a+=1){if(c instanceof Error){let a=p(c.message,512);a&&b.push(a),c=c.cause;continue}let a=p(String(c),512);a&&b.push(a);break}return b}(d))if(c.push(a),4===c.length)return c;return c}(d.cause,d.secondaryCauses),...e?{stderr:e}:{}}})}class r extends Error{constructor(a,b,c,d={}){super(c,void 0===d.cause?void 0:{cause:d.cause}),this.name="ResourceCollectorFailureError",this.failure=q(a,b,c,d)}}var s=c(70547),t=c(23921),u=c(36177),v=c(64487),w=c(3743),x=c(91724),y=c(65154),z=c(92806),A=c(30096);function B(a){let b=JSON.stringify(a);if(void 0===b)throw TypeError("resource diagnostic cannot be serialized");return b.replace(/[\u007f-\uffff]/g,a=>`\\u${a.charCodeAt(0).toString(16).padStart(4,"0")}`)}function C(){return{systemMemory:0,readFiles:0,readHosts:0,ppidMap:0,processMemory:0,attach:0,serialization:0}}function D(a,b,c){let d=performance.now();try{return c()}finally{a[b]+=performance.now()-d}}async function E(a,b,c){let d=performance.now();try{return await c()}finally{a[b]+=performance.now()-d}}function F(a){return"number"==typeof a&&Number.isFinite(a)&&a>=0}function G(a=d.B){let b=a.systemMemory();return b?{...b,capturedAt:new Date().toISOString()}:null}function H(a){return"structured"===a.kind}let I=globalThis;function J(){let a=I.__llvLastResourceBuild;return a?{...a,phases:{...a.phases}}:null}function K(a){let b=new Map;for(let{target:c,ref:d}of a)b.set(c,d);I.__llvResourceTargets=b,L([...b].map(([a,b])=>({target:a,ref:b})))}function L(a){I.__llvLastResourceTargets=[...a].map(({target:a,ref:b})=>({target:a,ref:b}))}function M(a){if(""===a)return null;let b=I.__llvResourceTargets?.get(a)??null;return null===b||H(b)?null:b}function N(a){I.__llvResourceTargets?.delete(a)&&(I.__llvResourceTargetEpoch=(I.__llvResourceTargetEpoch??0)+1)}function O(a){if(""===a)return null;let b=I.__llvResourceTargets?.get(a)??null;return null!==b&&H(b)?b:null}function P(a){return new Date(1e3*a).toISOString()}async function Q(){return(await Promise.resolve().then(c.bind(c,9488))).readStructuredHostRecords()}let R={readFiles:async a=>{let b=await S(a);return(0,u.iD)(b),b},readHosts:(a,b,c)=>(0,v.oe)(a,b,c),proc:d.B,captureAttachReferences:w.yq,readStructuredHosts:Q,listAgentProcesses:t.Bj,directoryExists:a=>(0,h.existsSync)(a),processIdentity:a=>d.B.processIdentity(a),hostStamp:t.Tu};async function S(a){var b,c;return b=(a?await (0,m.vx)():await (0,m.Nm)({revalidate:!1})).snapshot.files,c=()=>null,b.map(a=>({path:a.path,parent:a.parent,title:a.title,project:a.project,activity:a.activity,mtime:a.mtime,engine:a.engine,pid:a.pid,proc:a.proc,conversationId:c(a.path)??a.conversationId??null}))}async function T(a,b,c){let f=await c.readStructuredHosts?.(a)??[],g=c.processIdentity??(a=>d.B.processIdentity(a)),h=(c.bootEpoch??e.h_)(),i=c.hostStamp??t.Tu,j=(0,t.TK)(),k=[],l=new Set;for(let a of f){if(!Number.isSafeInteger(a.pid)||a.pid<=1||l.has(a.pid))continue;let b=g(a.pid);if(null!==b&&(null===a.startIdentity||a.startIdentity===b)&&(null===a.bootEpoch||null===h||a.bootEpoch===h)&&(l.add(a.pid),k.push({...a,startIdentity:b}),k.length>=A.sb))break}for(let d of c.listAgentProcesses?.(a)??[]){if(k.length>=A.sb)break;if(l.has(d.pid)||(0,t.qM)(d.argv))continue;let a=(0,t.qP)(d.argv);if(null===a||i(d.pid)!==j)continue;let c=function(a,b,c,d){let e=a,f=new Set([a]);for(;;){let a=b.get(e);if(void 0===a||a<=1||f.has(a)||c(a)!==d)return e;f.add(a),e=a}}(d.pid,b,i,j);if(l.has(c))continue;let e=g(c);null!==e&&(l.add(d.pid),l.add(c),k.push({id:`pid:${c}`,engine:a,sessionId:null,pid:c,startIdentity:e,bootEpoch:h,cwd:d.cwd,path:null,conversationId:null,title:null,role:null,model:null,stage:null,seat:null,turnBusy:null,owned:!1}))}return k.map(a=>({record:a,tree:(0,s.mO)(a.pid,b)}))}async function U(a,b=R){let c=performance.now(),d=C();try{let e=D(d,"systemMemory",()=>G(b.proc)),f=await E(d,"readFiles",()=>b.readFiles(a)),g=D(d,"ppidMap",()=>b.proc.ppidMap()),h=await E(d,"readHosts",()=>b.readHosts(a,f,g)),i=await E(d,"readHosts",()=>T(a,g,b)),j=[],k=new Map(f.map(a=>[a.path,a])),l=new Map;for(let a of h.hosts){let b=l.get(a.paneId);b?b.push(a):l.set(a.paneId,[a])}let m=[],n=new Set;for(let a of l.values()){let b=a[0],c=(0,s.mO)(b.panePid,g);for(let d of(m.push({host:b,tree:c,paneHosts:a}),c))n.add(d)}let o=[];for(let a of i)if(!n.has(a.record.pid))for(let b of(o.push(a),a.tree))n.add(b);let p=D(d,"processMemory",()=>b.proc.processMemory(n)),q=a=>{let b=0,c=0;for(let d of a){let a=p.get(d);a&&(b+=a.rssBytes,c+=a.swapBytes)}return{rssBytes:b,swapBytes:c}},r=[];for(let{record:a,tree:c}of(D(d,"attach",()=>{let a=b.captureAttachReferences(m.map(({host:a})=>({tmuxServerPid:a.tmuxServerPid,panePid:a.panePid,paneId:a.paneId})));for(let{host:b,tree:c,paneHosts:d}of m){let e=function(a,b,c){for(let d of b){if(!d.primaryPath)continue;let b=a.canonicalFor(d.primaryPath);if(b?.paneId===d.paneId&&b.agentPid===d.agentPid)return c.get(d.primaryPath)??null}return null}(h,d,k);j.push({target:b.display,panePid:b.panePid,path:e?.path??null,engine:b.engine,hostConflict:function(a,b){return a.conflicts?.some(a=>a.paneIds.includes(b.paneId))??!1}(h,b),title:e?.title??null,project:e?.project||null,activity:e?.activity??null,lastActiveAt:e?P(e.mtime):null,cwd:b.cwd,...q(c),procCount:c.length});let f=a.get(b.paneId);f&&r.push({target:b.display,ref:f})}}),o)){let d=a.path?k.get(a.path)??null:null,e=d?P(d.mtime):null,f="structured:"+a.id;j.push({target:f,panePid:a.pid,kind:"structured",path:a.path,engine:a.engine,title:a.title??d?.title??null,project:d?.project||null,activity:d?.activity??null,lastActiveAt:e,cwd:a.cwd||null,...q(c),procCount:c.length,model:a.model,role:a.role,conversationId:a.conversationId,stage:a.stage,ownership:null===a.sessionId||a.cwd.length>0&&b.directoryExists?.(a.cwd)===!1?"orphaned":a.owned?"owned":"released",seat:a.seat,turnBusy:a.turnBusy}),r.push({target:f,ref:{kind:"structured",pid:a.pid,startIdentity:a.startIdentity,bootEpoch:a.bootEpoch,engine:a.engine,sessionId:a.sessionId,conversationId:a.conversationId,seat:a.seat,turnBusy:a.turnBusy,owned:a.owned,lastActiveAt:e}})}return j.sort((a,b)=>b.rssBytes+b.swapBytes-(a.rssBytes+a.swapBytes)),L(r),I.__llvLastResourceBuild={fresh:a,status:"complete",durationMs:performance.now()-c,phases:d},{system:e,sessions:j}}catch(b){throw I.__llvLastResourceBuild={fresh:a,status:"failed",durationMs:performance.now()-c,phases:d},b}}let V="resources-observation.json",W=`
|
|
2
2
|
const { spawn } = require("node:child_process");
|
|
3
3
|
const child = spawn(process.argv[1], process.argv.slice(2), { stdio: "inherit" });
|
|
4
4
|
let finished = false;
|
|
@@ -17,11 +17,11 @@ child.once("error", () => finish(127, null));
|
|
|
17
17
|
child.once("exit", finish);
|
|
18
18
|
process.on("SIGTERM", () => { terminationRequested = true; });
|
|
19
19
|
process.on("SIGINT", () => { terminationRequested = true; });
|
|
20
|
-
`,
|
|
20
|
+
`,X=`
|
|
21
21
|
token="$1"
|
|
22
22
|
shift
|
|
23
23
|
read host_pid _ < /proc/self/stat
|
|
24
24
|
printf '%s %s %s
|
|
25
25
|
' "$token" "$host_pid" "$(readlink /proc/self/ns/pid)"
|
|
26
26
|
exec "$@"
|
|
27
|
-
`;function X(a){try{let b=(0,h.statSync)(a);return b.isFile()&&(73&b.mode)!=0}catch{return!1}}function Y(a){try{let b=(0,h.readFileSync)(`/proc/${a}/stat`,"utf8"),c=b.lastIndexOf(")");if(c<0)return null;let d=Number(b.slice(c+2).trim().split(/\s+/)[2]);return Number.isInteger(d)&&d>0?d:null}catch{return null}}let Z="LLV_RESOURCE_COLLECTOR_OWNER",$={pidAlive:a=>d.B.pidAlive(a),processIdentity:a=>d.B.processIdentity(a),processExited:a=>"linux"===d.B.name&&function(a){try{let b=(0,h.readFileSync)(`/proc/${a}/stat`,"utf8"),c=b.slice(b.lastIndexOf(")")+2).trim().split(/\s+/,1)[0];return"Z"===c||"X"===c||"x"===c}catch{return!1}}(a),descendants:function(a){return"linux"===d.B.name?function(a){let b=[],c=new Set([a]),d=[a];for(;d.length>0;){let a,e=d.pop();b.push(e);try{a=(0,h.readFileSync)(`/proc/${e}/task/${e}/children`,"utf8")}catch{continue}for(let b of a.trim().split(/\s+/)){let a=Number(b);!Number.isInteger(a)||a<=0||c.has(a)||(c.add(a),d.push(a))}}return b}(a):(0,s.mO)(a,d.B.ppidMap())},processGroupId:a=>{let b,c;return"linux"===d.B.name?Y(a):Number.isInteger(c=Number(0===(b=(0,i.spawnSync)("ps",["-p",String(a),"-o","pgid="],{encoding:"utf8",timeout:1e3,windowsHide:!0})).status?b.stdout.trim():""))&&c>0?c:null},processGroupMembers:a=>"linux"===d.B.name?function(a){let b,c=[];try{b=(0,h.readdirSync)("/proc")}catch{return c}for(let d of b){let b=Number(d);Number.isInteger(b)&&!(b<=0)&&Y(b)===a&&c.push(b)}return c}(a):function(a){let b=(0,i.spawnSync)("ps",["-axo","pid=,pgid="],{encoding:"utf8",timeout:1e3,windowsHide:!0});if(0!==b.status)return[];let c=[];for(let d of b.stdout.split("\n")){let b=/^\s*(\d+)\s+(\d+)\s*$/.exec(d);b&&Number(b[2])===a&&c.push(Number(b[1]))}return c}(a),namespaceMembers:a=>"linux"===d.B.name?function(a){let b;try{b=(0,h.readdirSync)("/proc")}catch{return null}let c=`${Z}=${a}`,e=[];for(let a of b){let b,f=Number(a);if(!Number.isInteger(f)||f<=0)continue;try{b=(0,h.readFileSync)(`/proc/${f}/environ`,"utf8")}catch{continue}if(!b.split("\0").includes(c))continue;let g=d.B.processIdentity(f);if(null!==g){try{b=(0,h.readFileSync)(`/proc/${f}/environ`,"utf8")}catch{continue}b.split("\0").includes(c)&&d.B.processIdentity(f)===g&&e.push(f)}}return e}(a):function(a){let b=`${Z}=${a}`,c=(0,i.spawnSync)("ps",["eww","-axo","pid=,command="],{encoding:"utf8",timeout:1e3,windowsHide:!0,maxBuffer:0x1000000});if(0!==c.status)return null;let d=[];for(let a of c.stdout.split("\n")){let c=/^\s*(\d+)\s+/.exec(a);c&&a.includes(b)&&d.push(Number(c[1]))}return d}(a),processNamespaceId:a=>"linux"===d.B.name?function(a){try{let b=(0,h.readlinkSync)(`/proc/${a}/ns/pid`);return/^pid:\[\d+\]$/.test(b)?b:null}catch{return null}}(a):null,processNamespacePid:a=>"linux"===d.B.name?function(a){try{let b=(0,h.readFileSync)(`/proc/${a}/status`,"utf8").split("\n").find(a=>a.startsWith("NSpid:")),c=Number(b?.trim().split(/\s+/).at(-1));return Number.isInteger(c)&&c>0?c:null}catch{return null}}(a):null,openNamespaceReference:(a,b)=>"linux"===d.B.name?function(a,b){let c;try{c=(0,h.openSync)(`/proc/${a}/ns/pid`,"r")}catch{return null}try{if((0,h.readlinkSync)(`/proc/self/fd/${c}`)!==b)return(0,h.closeSync)(c),null;let a=(0,h.fstatSync)(c,{bigint:!0}),d=!1;return{members:()=>{let b;try{b=(0,h.readdirSync)("/proc")}catch{return null}let c=[];for(let d of b){let b=Number(d);if(Number.isInteger(b)&&!(b<=0))try{let d=(0,h.statSync)(`/proc/${b}/ns/pid`,{bigint:!0});d.dev===a.dev&&d.ino===a.ino&&c.push(b)}catch{}}return c},close:()=>{d||(d=!0,(0,h.closeSync)(c))}}}catch{return(0,h.closeSync)(c),null}}(a,b):null,signal:(a,b)=>process.kill(a,b)};function _(a,b,c=[],d=H.__llvResourceTargetEpoch??0){return{payload:a,diagnostic:b,hostCount:a.sessions.length,treeCount:a.sessions.reduce((a,b)=>a+b.procCount,0),targets:c,targetEpoch:d}}function aa(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ab(a,b,c=[]){let d=new Set([...b,...c]);return b.every(b=>Object.hasOwn(a,b))&&Object.keys(a).every(a=>d.has(a))}function ac(a){return null===a||"string"==typeof a}function ad(a){return null===a||"boolean"==typeof a}function ae(a){return!!aa(a)&&!!ab(a,["target","panePid","path","engine","title","project","activity","lastActiveAt","cwd","rssBytes","swapBytes","procCount"],["hostConflict","kind","model","role","conversationId","stage","ownership","seat","turnBusy"])&&(void 0===a.kind||"tmux"===a.kind||"structured"===a.kind)&&(void 0===a.ownership||"owned"===a.ownership||"released"===a.ownership||"orphaned"===a.ownership)&&(void 0===a.model||!!ac(a.model))&&(void 0===a.role||!!ac(a.role))&&(void 0===a.conversationId||!!ac(a.conversationId))&&(void 0===a.stage||!!ac(a.stage))&&(void 0===a.seat||!!ad(a.seat))&&(void 0===a.turnBusy||!!ad(a.turnBusy))&&"string"==typeof a.target&&a.target.length>0&&Number.isSafeInteger(a.panePid)&&a.panePid>0&&ac(a.path)&&("claude"===a.engine||"codex"===a.engine||null===a.engine)&&ac(a.title)&&ac(a.project)&&("live"===a.activity||"recent"===a.activity||"stalled"===a.activity||"idle"===a.activity||null===a.activity)&&ac(a.lastActiveAt)&&(null===a.lastActiveAt||Number.isFinite(Date.parse(a.lastActiveAt)))&&ac(a.cwd)&&E(a.rssBytes)&&E(a.swapBytes)&&Number.isSafeInteger(a.procCount)&&a.procCount>=0&&(void 0===a.hostConflict||"boolean"==typeof a.hostConflict)}function af(a){var b;return!!aa(a)&&!!ab(a,["system","sessions"])&&!!(null===(b=a.system)||aa(b)&&ab(b,["ramTotal","ramAvailable","swapTotal","swapUsed","capturedAt"])&&E(b.ramTotal)&&E(b.ramAvailable)&&E(b.swapTotal)&&E(b.swapUsed)&&"string"==typeof b.capturedAt&&Number.isFinite(Date.parse(b.capturedAt)))&&!!Array.isArray(a.sessions)&&a.sessions.length<=1e4&&a.sessions.every(ae)}function ag(a){if(!aa(a)||!ab(a,["fresh","status","durationMs","phases"])||!aa(a.phases))return!1;let b=a.phases,c=["systemMemory","readFiles","readHosts","ppidMap","processMemory","attach","serialization"];return"boolean"==typeof a.fresh&&("complete"===a.status||"failed"===a.status)&&E(a.durationMs)&&ab(b,c)&&c.every(a=>E(b[a]))}function ah(a){var b,c;return aa(a)&&ab(a,["target","ref"])&&"string"==typeof a.target&&a.target.length>0&&!!aa(b=a.ref)&&(void 0!==b.kind?!!aa(c=b)&&!!ab(c,["kind","pid","startIdentity","bootEpoch","engine","sessionId","conversationId","seat","turnBusy","owned","lastActiveAt"])&&"structured"===c.kind&&Number.isSafeInteger(c.pid)&&c.pid>1&&"string"==typeof c.startIdentity&&c.startIdentity.length>0&&ac(c.bootEpoch)&&("claude"===c.engine||"codex"===c.engine)&&ac(c.sessionId)&&ac(c.conversationId)&&ad(c.seat)&&ad(c.turnBusy)&&"boolean"==typeof c.owned&&ac(c.lastActiveAt)&&(null===c.lastActiveAt||Number.isFinite(Date.parse(c.lastActiveAt))):!!ab(b,["tmuxServerPid","tmuxServerStartIdentity","paneId","panePid","paneStartIdentity"])&&Number.isSafeInteger(b.tmuxServerPid)&&b.tmuxServerPid>0&&ac(b.tmuxServerStartIdentity)&&"string"==typeof b.paneId&&/^%\d+$/.test(b.paneId)&&Number.isSafeInteger(b.panePid)&&b.panePid>0&&ac(b.paneStartIdentity))}function ai(a,b){let c=new Map;for(let b of a.sessions){if(c.has(b.target))return!1;c.set(b.target,b)}let d=new Set;return b.every(({target:a,ref:b})=>{if(d.has(a))return!1;d.add(a);let e=c.get(a);return!!e&&(G(b)?"structured"===e.kind&&e.panePid===b.pid:"structured"!==e.kind&&e.panePid===b.panePid)})}function aj(a){let b,c=(0,x.BQ)(U);try{(0,h.mkdirSync)(k().dirname(c),{recursive:!0,mode:448}),b=k().join(k().dirname(c),`.${k().basename(c)}.${process.pid}.${g().randomUUID()}.tmp`);let d=JSON.stringify({version:1,observation:a})+"\n";if(Buffer.byteLength(d)>0x1000000)throw Error("resource observation exceeded durable size limit");return(0,h.writeFileSync)(b,d,{mode:384}),(0,h.renameSync)(b,c),(0,h.chmodSync)(c,384),!0}catch(a){if(b)try{(0,h.unlinkSync)(b)}catch{}return console.error(`[resources] observation persistence failed: ${a instanceof Error?a.message:String(a)}`),!1}}function ak(a){let b=JSON.stringify({version:1,observation:a})+"\n";if(Buffer.byteLength(b)>0x1000000)throw new r("collector-crash","observation-limit","resource observation exceeded durable size limit")}async function al(a,b=R,c={},d=H.__llvResourceTargetEpoch??0,f=$,j=P){let m,n,q=function(a={}){let b=a.cwd??process.cwd(),c=a.env??process.env,d=a.exists??h.existsSync,e=a.execPath??process.execPath,f=a.versions??process.versions,g=k().join(b,"src/lib/resourceCollector.worker.ts"),i=k().join(b,".next/server/resource-collector-worker.js"),j=d(g),l=d(i),m=j||!l?g:i;if(c.LLV_RESOURCE_COLLECTOR_EXECUTABLE)return{executable:c.LLV_RESOURCE_COLLECTOR_EXECUTABLE,workerPath:l?i:m};let n="/usr/local/bin/bun-container";return j&&d(n)?{executable:n,workerPath:g}:l?{executable:f.bun?e:c.LLV_BUN_EXECUTABLE||"bun",workerPath:i}:{executable:"bun",workerPath:g}}(),s=c.observeTimeoutMs??3e4,t=c.inputTimeoutMs??5e3,u=c.closeTimeoutMs??1e3,v=Math.max(0,Math.min(100,Math.floor(.75*u))),w=c.headroomMs??500,x=Math.min(25,Math.max(5,u)),z=Math.max(u+x+5,c.cleanupTimeoutMs??u+Math.floor(w/2)),A=Math.max(z,u+x+50),B=Math.max(Math.min(250,Math.ceil(.2*s)),50+x+Math.max(0,w-Math.max(0,A-u))),C=Math.max(0,s-t-A-B),D=Math.min(c.timeoutMs??23500,C),E=b(a),F=Promise.race([j(),new Promise(a=>{m=setTimeout(()=>a([]),t)})]).catch(a=>(console.error(`[resources] structured host inventory failed: ${a instanceof Error?a.message:String(a)}`),[])).finally(()=>{m&&clearTimeout(m)}),G=await Promise.race([E,new Promise((a,b)=>{n=setTimeout(()=>b(new r("timeout","file-handoff-timeout","resource collector file handoff timed out")),t)})]).finally(()=>{n&&clearTimeout(n)}),I=await F,J=JSON.stringify({type:"collect",fresh:a,files:G,identityEpoch:(0,e.h_)(),hosts:I})+"\n",K=c.outputMaxBytes??0x1010000;if(Buffer.byteLength(J)>0x1010000)throw new r("collector-crash","worker-input","resource collector input exceeded transport limit");let L=f===$&&X(q.executable),M=g().randomUUID(),N=L?process.execPath:q.executable,O=L?["-e",V,q.executable,q.workerPath]:[q.workerPath],Q=["/usr/bin/unshare","/bin/unshare"].find(h.existsSync),S=q.executable.includes(k().sep)&&!X(q.executable),T=f===$&&"linux"===process.platform&&void 0!==Q&&!S,U=g().randomUUID(),Y=(0,i.spawn)(T?Q:N,T?["--user","--map-root-user","--pid","--fork","/bin/sh","-c",W,"llv-resource-worker",U,N,...O]:O,{cwd:process.cwd(),detached:!0,stdio:["pipe","pipe","pipe"],env:{...(0,y.Fd)(process.env),[Z]:M}});return new Promise((b,c)=>{let e,g,h,i,j,k=Y.pid,m="number"==typeof k?f.processIdentity(k):null,n="number"==typeof k&&null!==m&&f.processGroupId(k)===k&&f.processIdentity(k)===m,q=null,s=null,t=0,w=function(a=2048){let b="",c="",d=null,e=0,f=0,g=null,h=c=>{let d=(b+=c).length-2*a;if(d<=0)return;let e=b.charCodeAt(d);e>=56320&&e<=57343&&(d+=1),b=b.slice(d)};return{append(a){c+=a,(()=>{let a=(a=!1)=>{let b=/^((?:\\+)?["'])/.exec(c)?.[1]??"",h=b.at(-1);'"'===h||"'"===h?(c=c.slice(b.length),d=h,e=b.length-1,f=0):d=a?"line":"unquoted",g=null};for(;c;){if("authorization"===g){d="line",g=null;continue}if("bearer"===g){let b=c.search(/\S/);if(b<0){c="";return}c=c.slice(b),a(!0);continue}if("value"===g){let b=c.search(/\S/);if(b<0){c="";return}c=c.slice(b),a(),g=null;continue}if("key"===g||"authorization-key"===g){let a="authorization-key"===g,b=/^[A-Z0-9_.-]*\s*[:=]\s*(?:((?:\\+)?["'])|(?=[^"'\\\s]))/i.exec(c);if(b){h("<redacted>"),c=c.slice(b[0].length);let i=b[1]??"",j=i.at(-1);d='"'===j||"'"===j?j:a?"line":"unquoted",e=i.length>0?i.length-1:0,f=0,g=null;continue}if(/^[A-Z0-9_.-]*\s*[:=]\s*$/i.exec(c)){h("<redacted>"),c="",g=a?"authorization":"value";return}if(/^[A-Z0-9_.-]*\s*$/i.test(c)){c=c.slice(-256);return}g=null}if(d){let a;if("line"===d)a=c.search(/[\r\n]/);else if("unquoted"===d)a=c.search(/\s/);else{a=-1;let b=f;for(let f=0;f<c.length;f+=1){let g=c[f];if("\\"===g){b+=1;continue}if(g===d&&b===e){a=f;break}b=0}f=b}if(a<0){c="";return}c=c.slice(a+ +("unquoted"!==d&&"line"!==d)),d=null,e=0,f=0;continue}let b=o(c);if(b){if(h(c.slice(0,b.index)+b.replacement),c=c.slice(b.index+b.length),b.authorization){d=b.quotedKey&&b.quote?b.quote:"line",e=b.quoteEscapeDepth;continue}if(b.bearer){d=b.quote??"line",e=b.quoteEscapeDepth;continue}d=b.quote??"unquoted",e=b.quoteEscapeDepth;continue}if(c.length<=256)return;let i=/(?:^|[^A-Z0-9_])(Bearer)(\s+)$/i.exec(c);if(i){let a=i.index+i[0].length-i[1].length-i[2].length;if(a<c.length-256){h(c.slice(0,a)+`${i[1]} <redacted>`),c="",g="bearer";return}}let j=/(^|[^A-Z0-9_.-])((?:\\+)?["']?)([A-Z0-9_.-]*(?:TOKEN|SECRET|PASSWORD|PASSWD|API[_-]?KEY|AUTHORIZATION|COOKIE)[A-Z0-9_.-]*)\2(\s*)(?:([:=])(\s*))?$/i.exec(c);if(j){let a=j.index+j[1].length;if(a<c.length-256){h(c.slice(0,a)),j[5]?(h("<redacted>"),c="",g=/AUTHORIZATION/i.test(j[3])?"authorization":"value"):(c=(j[3]+j[4]).slice(-256),g=/AUTHORIZATION/i.test(j[3])?"authorization-key":"key");return}}h(c.slice(0,-256)),c=c.slice(-256);return}})()},value:()=>p(b+(d?"":c),a,!0)}}(),y=new l.StringDecoder("utf8"),B=new Map;"number"==typeof k&&null!==m&&B.set(k,m);let C=[],E=null,F=!1,G=!1,H=null,I=!1,L=void 0===f.namespaceMembers,N=null,O=null,P=null,Q=null,R=!1,S=f!==$&&"unavailable"!==f.kernelContainment,V=S,W=S,X=S,Z=!1,ac=!1,ad=!1,ae=!1,aj=!1,ak=!1,al=!1,am=(a,b,c,d)=>new r(a,b,c,{cause:d,stderr:w.value(),secondaryCauses:H?[H]:[]}),an=a=>{j??=a},ao=a=>{I=!0,an(Error(a))},ap=(a,b)=>{let c=f.processIdentity(a);if(null===c)return!f.pidAlive(a);if(c!==b||!f.processExited?.(a))return!1;let d=f.processIdentity(a);return d===c||null===d&&!f.pidAlive(a)},aq=()=>{ak||(ak=!0,w.append(y.end()))},ar=()=>{for(let a of C)clearTimeout(a);C.length=0},as=()=>{let a;if(!X||null===N||null===Q)return!1;try{if(!R&&null!==O&&null!==P){let a=f.processIdentity(O);if(a===P)if(ap(O,P))R=!0;else{let b=f.processNamespaceId?.(O),c=f.processNamespacePid?.(O);f.processIdentity(O)!==a?R=!0:(b!==N||1!==c)&&ao("resource collector PID namespace root identity changed")}else null!==a?(R=!0,ao("resource collector PID namespace root identity was recycled")):f.pidAlive(O)||(R=!0)}a=Q.members()}catch(a){return V=!1,W=!1,an(a),!1}if(V=null!==a,W=a?.length===0,null===a)return an(Error("resource collector PID namespace could not be inspected")),!1;let b=!1;for(let c of a){let a=f.processIdentity(c);if(null===a||f.processNamespaceId?.(c)!==N||f.processIdentity(c)!==a)continue;let d=B.get(c);if(void 0!==d&&d!==a){ao("resource collector PID namespace member identity was recycled");continue}void 0===d&&(B.set(c,a),b=!0)}return b},at=(a=!0)=>{let b=!1,c=[...B.keys()],d=new Set;for(;c.length>0;){let a,e=c.pop();if(d.has(e))continue;d.add(e);let g=B.get(e);if(void 0!==g&&f.processIdentity(e)===g){try{a=f.descendants(e)}catch(a){an(a);continue}if(f.processIdentity(e)===g)for(let d of a){if(d===e)continue;let a=f.processIdentity(d);if(null===a||f.processIdentity(e)!==g||f.processIdentity(d)!==a)continue;let h=B.get(d);if(void 0!==h&&h!==a){ao("resource collector descendant identity was recycled");continue}void 0===h&&(B.set(d,a),b=!0),c.push(d)}}}(()=>{let a;if(null!==N||!n||Z||ac||ad||"number"!=typeof k||null===m)return;if(f.processIdentity(k)!==m){Z=!0,ao("resource collector worker group leader identity changed");return}try{a=f.processGroupMembers(k)}catch(a){Z=!0,ao("resource collector worker group membership could not be inspected"),an(a);return}if(!a.includes(k)){Z=!0,ao("resource collector worker group continuity was lost");return}let b=[];for(let c of a){let a=f.processIdentity(c);null!==a&&f.processGroupId(c)===k&&f.processIdentity(c)===a&&b.push([c,a])}if(f.processIdentity(k)!==m){Z=!0,ao("resource collector worker group leader identity changed");return}for(let[a,c]of b){let b=B.get(a);if(void 0!==b&&b!==c){Z=!0,ao("resource collector worker group member identity changed");return}B.set(a,c)}})();let e=as();return!!a&&null===N&&(()=>{let a;if(!f.namespaceMembers)return!1;try{a=f.namespaceMembers(M)}catch(a){return L=!1,an(a),!1}if(L=null!==a,null===a)return an(Error("resource collector worker namespace could not be inspected")),!1;let b=!1;for(let c of a){let a=f.processIdentity(c);if(null===a||f.processIdentity(c)!==a)continue;let d=B.get(c);if(void 0!==d&&d!==a){ao("resource collector namespace member identity was recycled");continue}void 0===d&&(B.set(c,a),b=!0)}return b})()||e||b},au=()=>{let a=[],b=!1;for(let[c,d]of B){let e=f.processIdentity(c);if(e===d){if(ap(c,d))continue;let e=f.processIdentity(c);e===d?a.push(c):null===e&&f.pidAlive(c)?b=!0:null!==e&&null!==N&&ao("resource collector contained process identity was recycled");continue}null===e&&f.pidAlive(c)?b=!0:null!==e&&null!==N&&ao("resource collector contained process identity was recycled")}return{active:a,uncertain:b}},av=()=>{if("number"!=typeof k)return"absent";try{return f.signal(-k,0),"present"}catch(b){let a=b.code;if("ESRCH"===a)return ac||(Z=!0),"absent";if("EPERM"===a)return"denied";return an(b),"unknown"}},aw=(a,b=!0,c="all")=>{if(at(b),null!==N&&null!==O&&null!==P){let b=au().active.filter(a=>a!==O&&f.processNamespaceId?.(a)===N),d=new Set(b),e="SIGTERM"===a?b:[];for(let g of("SIGTERM"===a&&"members"===c&&(e=b.filter(a=>{let b,c=B.get(a);if(void 0===c||f.processIdentity(a)!==c)return!1;try{b=f.descendants(a)}catch(a){return an(a),!1}return f.processIdentity(a)===c&&!b.some(b=>b!==a&&d.has(b))})),e)){let b=B.get(g);if(void 0===b)continue;let c=f.processIdentity(g);if(null!==c){if(c!==b||f.processNamespaceId?.(g)!==N||f.processIdentity(g)!==c){ao("resource collector PID namespace member identity changed before cleanup");continue}try{f.signal(g,a)}catch(a){"ESRCH"!==a.code&&an(a)}}}if("members"===c)return;let g=()=>{if("number"!=typeof k||null===m||k===O)return;let b=f.processIdentity(k);if(null!==b){if(b!==m||f.processIdentity(k)!==b)return void ao("resource collector worker wrapper identity changed before cleanup");if(!ap(k,m))try{f.signal(k,a)}catch(a){"ESRCH"!==a.code&&an(a)}}};if(R)return void g();let h=f.processIdentity(O);if(null===h){f.pidAlive(O)||(R=!0),g();return}if(ap(O,P)){R=!0,g();return}if(h!==P){R=!0,ao("resource collector PID namespace root identity changed before cleanup"),g();return}if(f.processNamespaceId?.(O)!==N||f.processNamespacePid?.(O)!==1||f.processIdentity(O)!==h){ao("resource collector PID namespace root identity changed before cleanup"),g();return}try{f.signal(O,a)}catch(a){"ESRCH"!==a.code&&an(a)}return void g()}let d=au();if("present"===av())if((()=>{if(!n||Z||"number"!=typeof k||null===m)return!1;for(let[a,b]of B)if(f.processIdentity(a)===b&&f.processGroupId(a)===k&&f.processIdentity(a)===b)return!0;return!1})())try{f.signal(-k,a),ac=!0}catch(a){"ESRCH"!==a.code&&an(a)}else ac?an(Error("resource collector worker group ownership could not be verified")):ao("resource collector worker group ownership could not be verified");for(let b of d.active){let c=B.get(b);if(void 0===c||f.processIdentity(b)!==c){ac||ao("resource collector worker identity changed before individual cleanup");continue}try{f.signal(b,a)}catch(a){"ESRCH"!==a.code&&an(a)}}},ax=()=>{let a=au(),b="number"==typeof k&&null!==m&&ap(k,m),c=av();null!==N&&W&&b&&"present"===c&&(c="absent");let d=L&&"absent"===c&&0===a.active.length&&!a.uncertain,e=d&&V&&W;return d&&!X&&null===H?(I=!0,H=Error("resource collector kernel containment could not be established"),!0):(e&&I&&null===H&&(H=Error("resource collector worker cleanup ownership verification failed",void 0===j?void 0:{cause:j})),e)},ay=()=>{if(!aj){aj=!0;try{Q?.close()}catch(a){an(a),H??=Error("resource collector PID namespace reference could not be closed",{cause:a})}for(let a of(Q=null,aq(),Y.removeAllListeners(),[Y.stdin,Y.stdout,Y.stderr]))a.removeAllListeners(),a.destroy(),a.unref?.();Y.unref()}},az=a=>{if(!T||!a.startsWith(`${U} `))return!1;let[b,c,d,...e]=a.split(" "),g=Number(c);if(a.length>512||b!==U||!Number.isInteger(g)||g<=0||!/^pid:\[\d+\]$/.test(d)||e.length>0||!f.openNamespaceReference||!f.processNamespaceId||!f.processNamespacePid)return ao("resource collector PID namespace handshake was invalid"),!0;let h=f.processIdentity(g),i=null!==h&&f.processNamespaceId(g)===d&&1===f.processNamespacePid(g)&&f.processIdentity(g)===h?f.openNamespaceReference(g,d):null;return null===i||f.processIdentity(g)!==h||f.processNamespaceId(g)!==d||1!==f.processNamespacePid(g)||f.processIdentity(g)!==h?(i?.close(),ao("resource collector PID namespace root could not be verified")):(N=d,O=g,P=h,Q=i,X=!0,V=!1,W=!1,L=!0,as()),!0};T||X||ao("resource collector kernel containment is unavailable");let aA=()=>{if(al||!q||!ae&&!aj||!G)return;al=!0;let a=q;(clearTimeout(aE),e&&clearTimeout(e),g&&clearTimeout(g),h&&clearTimeout(h),i&&clearTimeout(i),ar(),ay(),H)?"success"===a.type?c(am("collector-crash","worker-cleanup","resource collector worker cleanup failed")):c(am(a.reason,a.cause,a.message,a.error)):"success"===a.type?b(a.value):c(am(a.reason,a.cause,a.message,a.error))},aB=()=>{if(!F||G)return;at()&&(E=null);let a=ax();if(a?null===E&&(E=Date.now()):E=null,a&&Date.now()-E>=x){G=!0,g&&clearTimeout(g),i&&clearTimeout(i),aA();return}(i=setTimeout(aB,5)).unref()},aC=()=>{F||(F=!0,ar(),(h=setTimeout(()=>{if(at(),ax()&&void 0===j){G=!0,ay(),aA();return}!q&&s&&(q=s),H=Error("resource collector worker cleanup deadline expired",void 0===j?void 0:{cause:j}),G=!0,ay(),aA()},q?.type==="success"?A:z)).unref(),null===N?aw("SIGTERM",!1):(aw("SIGTERM",!1,"members"),(e=setTimeout(()=>{G||(aw("SIGTERM",!1,"root"),aB())},v)).unref()),(g=setTimeout(()=>{aw("SIGKILL"),aB()},u)).unref(),aB())},aD=a=>{if(q){"success"===q.type&&"failure"===a.type&&"worker-output-limit"===a.cause&&(q=a);return}q=a,clearTimeout(aE),aC()};for(let a of(at(),[0,5,20,40])){let b=setTimeout(()=>{F||ad||at()},a);b.unref(),C.push(b)}let aE=setTimeout(()=>aD({type:"failure",reason:"timeout",cause:"worker-timeout",message:"resource collector worker timed out"}),D);Y.once("error",a=>{"number"!=typeof k&&(X=!0,V=!0,W=!0,L=!0),aD({type:"failure",reason:"collector-crash",cause:"worker-spawn",message:"resource collector worker failed to start",error:a})}),Y.once("exit",(a,b)=>{ad=!0,ar(),clearTimeout(aE),s={type:"failure",reason:"collector-crash",cause:"worker-exit",message:`resource collector worker exited before observation (${b??a??"unknown"})`},aC()}),Y.once("close",(a,b)=>{clearTimeout(aE),aq(),ae=!0,q||(q=s??{type:"failure",reason:"collector-crash",cause:"worker-exit",message:`resource collector worker closed before observation (${b??a??"unknown"})`},aC()),aB(),aA()});let aF="";Y.stdout.setEncoding("utf8"),Y.stdout.on("data",b=>{if((t+=Buffer.byteLength(b))>K+(T&&!X?512:0))return void aD({type:"failure",reason:"collector-crash",cause:"worker-output-limit",message:"resource collector worker exceeded stdout limit"});if(!q)for(aF+=b;!q;){var c;let b,e=aF.indexOf("\n");if(e<0)return;let f=aF.slice(0,e);if(aF=aF.slice(e+1),az(f)){(t-=Buffer.byteLength(f)+1)>K&&aD({type:"failure",reason:"collector-crash",cause:"worker-output-limit",message:"resource collector worker exceeded stdout limit"});continue}if(t>K)return void aD({type:"failure",reason:"collector-crash",cause:"worker-output-limit",message:"resource collector worker exceeded stdout limit"});try{b=JSON.parse(f)}catch{aD({type:"failure",reason:"collector-crash",cause:"worker-output-invalid",message:"resource collector worker emitted invalid JSON"});return}let g=aa(c=b)?"failure"===c.type?ab(c,["type","error"])&&"string"==typeof c.error&&c.error.length<=4096?c:null:"observation"===c.type&&ab(c,["type","payload","diagnostic","targets"])&&af(c.payload)&&ag(c.diagnostic)&&Array.isArray(c.targets)&&!(c.targets.length>1e4)&&c.targets.every(ah)&&"complete"===c.diagnostic.status&&ai(c.payload,c.targets)?c:null:null;if(!g)return void aD({type:"failure",reason:"collector-crash",cause:"worker-output-invalid",message:"resource collector worker emitted an invalid message"});if("observation"===g.type&&g.diagnostic.fresh!==a)return void aD({type:"failure",reason:"collector-crash",cause:"worker-output-invalid",message:"resource collector worker returned mismatched freshness"});if("failure"===g.type)return void aD({type:"failure",reason:"collector-crash",cause:"worker-failure",message:"resource collector worker reported a failure",error:Error(g.error)});aD({type:"success",value:_(g.payload,g.diagnostic,g.targets,d)}),aF=""}}),Y.stderr.on("data",a=>{t+=a.length,w.append(y.write(a)),t>K+(T&&!X?512:0)&&aD({type:"failure",reason:"collector-crash",cause:"worker-output-limit",message:"resource collector worker exceeded output limit"})}),Y.stdin.once("error",a=>aD({type:"failure",reason:"collector-crash",cause:"worker-input",message:"resource collector worker input failed",error:a})),Y.stdin.end(J)})}function am(a,b,c,d=!1){var e,f;let{observation:g,failure:h}=a,i=(e=a.collectorId,f=d||void 0!==h,g&&f?{status:g.collectorId===e?"memory":"durable",collectorId:g.collectorId,generation:g.generation}:{status:"miss"});if(!g){if(!h)throw Error("resource collector returned no observation or failure");return{payload:{system:b(),sessions:[]},diagnostic:{fresh:c,status:"failed",durationMs:Math.max(0,a.completedAt-a.startedAt),phases:B(),generation:a.generation,startedAt:new Date(a.startedAt).toISOString(),completedAt:new Date(a.completedAt).toISOString(),collectorId:a.collectorId,cache:i,degradedReason:h.reason,failure:h.diagnostic}}}let{payload:j,diagnostic:k}=g.value;return(h||g.collectorId!==a.collectorId||void 0===g.value.targetEpoch||function(a,b,c=H.__llvResourceTargetEpoch??0){c!==(H.__llvResourceTargetEpoch??0)||a<=(H.__llvResourceTargetsGeneration??0)||(J(b),H.__llvResourceTargetsGeneration=a)}(g.generation,g.value.targets,g.value.targetEpoch),h)?{payload:c?j:{...j,system:b()},diagnostic:{fresh:c,status:"failed",durationMs:Math.max(0,a.completedAt-a.startedAt),phases:B(),generation:a.generation,startedAt:new Date(a.startedAt).toISOString(),completedAt:new Date(a.completedAt).toISOString(),collectorId:a.collectorId,cache:i,degradedReason:h.reason,failure:h.diagnostic}}:{payload:c?j:{...j,system:b()},diagnostic:{...k,fresh:c,generation:g.generation,startedAt:new Date(g.startedAt).toISOString(),completedAt:new Date(g.completedAt).toISOString(),collectorId:a.collectorId,cache:i}}}async function an(a=!1){let b,c=process.env.LLV_RESOURCES_FIXTURE;if(c){var d;let b;return J([]),d=function(a){let b;try{b=JSON.parse(a)}catch{throw Error("invalid resources fixture: expected JSON")}let c=b,d=c?.system,e=null===d||"object"==typeof d&&E(d.ramTotal)&&E(d.ramAvailable)&&E(d.swapTotal)&&E(d.swapUsed)&&"string"==typeof d.capturedAt&&Number.isFinite(Date.parse(d.capturedAt));if(!c||!e||!Array.isArray(c.sessions)||0!==c.sessions.length)throw Error("invalid resources fixture: expected system metrics and an empty sessions list");return{system:d??null,sessions:[]}}((0,h.readFileSync)(c,"utf8")),b=Date.now(),{payload:d,diagnostic:{fresh:a,status:"complete",durationMs:0,phases:B(),generation:0,startedAt:new Date(b).toISOString(),completedAt:new Date(b).toISOString(),collectorId:"fixture",cache:{status:"miss"}}}}return(b=H.__llvResourcesReader,(3!==H.__llvResourcesReaderVersion||!b)&&(H.__llvResourcesReaderVersion=3,b=function(a,b,c=Date.now,d=I,e={}){var f;let h,i,j,k,l,m=e.inProcess??"1"===process.env.LLV_RESOURCE_COLLECTOR_IN_PROCESS,o=e.collectorId??(m?`in-process:${process.pid}:${g().randomUUID()}`:`worker:${process.pid}:${g().randomUUID()}`),p=(h=(f={collectorId:o,now:c,initial:e.initial,validateObservation:ak,collect:m?async(b=!1)=>{let c=H.__llvResourceTargetEpoch??0,e=await a(b),f=d();if(!f)throw Error("resource build completed without diagnostics");return _(e,f,H.__llvLastResourceTargets?.map(({target:a,ref:b})=>({target:a,ref:{...b}}))??[],c)}:(a=!1)=>al(a,e.readFiles,e.workerLimits,H.__llvResourceTargetEpoch??0,e.workerProcessRuntime)}).now??Date.now,i=f.initial?.generation??0,j=f.initial??null,k=null,l=a=>{let b=++i,c=h(),d=Promise.resolve().then(()=>f.collect(a)).then(a=>{let d={generation:b,startedAt:c,completedAt:h(),collectorId:f.collectorId,value:n(a)};return f.validateObservation?.(d),n(d)}),e={generation:b,promise:d};return k=e,d.then(a=>{k===e&&(k=null),(!j||a.generation>j.generation)&&(j=a)},()=>{k===e&&(k=null)}),d},{latest:()=>j,fence:()=>i,async observe(a,b,c){let d,e,g=h(),m=(e=k)?e.generation>a?e.promise:e.promise.catch(()=>void 0).then(()=>{let b=k;return b&&b.generation>a?b.promise:l(c)}):l(c),o=(a,b)=>n({observation:a,generation:b?Math.max(i,a?.generation??0):a?.generation??i,startedAt:g,completedAt:h(),collectorId:f.collectorId,...b?{failure:b}:{}}),p=Math.max(0,b);if(0===p)return m.catch(()=>void 0),o(j,q("collector-busy","collection-active","resource collection is still active"));let s=Symbol("resource-observation-timeout");try{let a=await Promise.race([m,new Promise(a=>{d=setTimeout(()=>a(s),p)})]);if(a===s)return o(j,q("timeout","observation-timeout","resource collection observation timed out"));return o(a)}catch(a){return o(j,a instanceof r?a.failure:q("collector-crash","collector-error","resource collection failed",{cause:a}))}finally{d&&clearTimeout(d)}}}),s=e.initial?.generation??0,t=a=>{a.degradedReason||a.generation<=s||(e.persist?.(a)??!0)&&(s=a.generation)},u=null,v=null,w=null,x=e.workerLimits?.observeTimeoutMs??3e4,y=a=>{w&&a.generation>=w.generation&&(w=null)},z=async a=>{let d=p.latest();if(!a&&d)return(c()-d.completedAt>=6e5&&(a=>{if(v)return;let b=p.observe(a.generation,x,!1).then(a=>{if(a.failure){w=a;return}a.observation&&y(a.observation)}).finally(()=>{v===b&&(v=null)});v=b})(d),t(d),w)?am(w,b,!1,!0):am({observation:d,generation:d.generation,startedAt:d.startedAt,completedAt:d.completedAt,collectorId:o},b,!1,!0);let e=a?p.fence():-1,f=await p.observe(e,x,a);return f.observation&&!f.failure&&(t(f.observation),y(f.observation)),am(f,b,a)};return{async read(a=!1){if(!a)return z(!1);if(u)return u;let b=z(!0);u=b;try{return await b}finally{u===b&&(u=null)}}}}(T,()=>F(),Date.now,I,{initial:function(){try{let a=(0,x.BQ)(U),b=(0,h.statSync)(a).size;if(b<=0||b>0x1000000)return null;return function(a){if(0>=Buffer.byteLength(a)||Buffer.byteLength(a)>0x1000000)return null;try{var b;let c=JSON.parse(a);if(!aa(c)||!ab(c,["version","observation"])||1!==c.version||!aa(c.observation))return null;let d=c.observation;if(!ab(d,["generation","startedAt","completedAt","collectorId","value"],["degradedReason"])||!Number.isSafeInteger(d.generation)||d.generation<0||!E(d.startedAt)||!E(d.completedAt)||d.completedAt<d.startedAt||"string"!=typeof d.collectorId||0===d.collectorId.length||d.collectorId.length>256||void 0!==d.degradedReason&&"collector-busy"!==d.degradedReason&&"timeout"!==d.degradedReason&&"collector-crash"!==d.degradedReason||(b=d.value,!(aa(b)&&ab(b,["payload","diagnostic","hostCount","treeCount","targets"],["targetEpoch"])&&af(b.payload)&&ag(b.diagnostic)&&Number.isSafeInteger(b.hostCount)&&!(b.hostCount<0)&&Number.isSafeInteger(b.treeCount)&&!(b.treeCount<0)&&(void 0===b.targetEpoch||Number.isSafeInteger(b.targetEpoch)&&!(b.targetEpoch<0))&&Array.isArray(b.targets)&&!(b.targets.length>1e4)&&b.targets.every(ah)&&"complete"===b.diagnostic.status&&ai(b.payload,b.targets)&&b.hostCount===b.payload.sessions.length&&b.treeCount===b.payload.sessions.reduce((a,b)=>a+b.procCount,0))))return null;return d}catch{return null}}((0,h.readFileSync)(a,"utf8"))}catch{return null}}(),persist:aj}),H.__llvResourcesReader=b),b).read(a)}}};
|
|
27
|
+
`;function Y(a){try{let b=(0,h.statSync)(a);return b.isFile()&&(73&b.mode)!=0}catch{return!1}}function Z(a){try{let b=(0,h.readFileSync)(`/proc/${a}/stat`,"utf8"),c=b.lastIndexOf(")");if(c<0)return null;let d=Number(b.slice(c+2).trim().split(/\s+/)[2]);return Number.isInteger(d)&&d>0?d:null}catch{return null}}let $="LLV_RESOURCE_COLLECTOR_OWNER",_={pidAlive:a=>d.B.pidAlive(a),processIdentity:a=>d.B.processIdentity(a),processExited:a=>"linux"===d.B.name&&function(a){try{let b=(0,h.readFileSync)(`/proc/${a}/stat`,"utf8"),c=b.slice(b.lastIndexOf(")")+2).trim().split(/\s+/,1)[0];return"Z"===c||"X"===c||"x"===c}catch{return!1}}(a),descendants:function(a){return"linux"===d.B.name?function(a){let b=[],c=new Set([a]),d=[a];for(;d.length>0;){let a,e=d.pop();b.push(e);try{a=(0,h.readFileSync)(`/proc/${e}/task/${e}/children`,"utf8")}catch{continue}for(let b of a.trim().split(/\s+/)){let a=Number(b);!Number.isInteger(a)||a<=0||c.has(a)||(c.add(a),d.push(a))}}return b}(a):(0,s.mO)(a,d.B.ppidMap())},processGroupId:a=>{let b,c;return"linux"===d.B.name?Z(a):Number.isInteger(c=Number(0===(b=(0,i.spawnSync)("ps",["-p",String(a),"-o","pgid="],{encoding:"utf8",timeout:1e3,windowsHide:!0})).status?b.stdout.trim():""))&&c>0?c:null},processGroupMembers:a=>"linux"===d.B.name?function(a){let b,c=[];try{b=(0,h.readdirSync)("/proc")}catch{return c}for(let d of b){let b=Number(d);Number.isInteger(b)&&!(b<=0)&&Z(b)===a&&c.push(b)}return c}(a):function(a){let b=(0,i.spawnSync)("ps",["-axo","pid=,pgid="],{encoding:"utf8",timeout:1e3,windowsHide:!0});if(0!==b.status)return[];let c=[];for(let d of b.stdout.split("\n")){let b=/^\s*(\d+)\s+(\d+)\s*$/.exec(d);b&&Number(b[2])===a&&c.push(Number(b[1]))}return c}(a),namespaceMembers:a=>"linux"===d.B.name?function(a){let b;try{b=(0,h.readdirSync)("/proc")}catch{return null}let c=`${$}=${a}`,e=[];for(let a of b){let b,f=Number(a);if(!Number.isInteger(f)||f<=0)continue;try{b=(0,h.readFileSync)(`/proc/${f}/environ`,"utf8")}catch{continue}if(!b.split("\0").includes(c))continue;let g=d.B.processIdentity(f);if(null!==g){try{b=(0,h.readFileSync)(`/proc/${f}/environ`,"utf8")}catch{continue}b.split("\0").includes(c)&&d.B.processIdentity(f)===g&&e.push(f)}}return e}(a):function(a){let b=`${$}=${a}`,c=(0,i.spawnSync)("ps",["eww","-axo","pid=,command="],{encoding:"utf8",timeout:1e3,windowsHide:!0,maxBuffer:0x1000000});if(0!==c.status)return null;let d=[];for(let a of c.stdout.split("\n")){let c=/^\s*(\d+)\s+/.exec(a);c&&a.includes(b)&&d.push(Number(c[1]))}return d}(a),processNamespaceId:a=>"linux"===d.B.name?function(a){try{let b=(0,h.readlinkSync)(`/proc/${a}/ns/pid`);return/^pid:\[\d+\]$/.test(b)?b:null}catch{return null}}(a):null,processNamespacePid:a=>"linux"===d.B.name?function(a){try{let b=(0,h.readFileSync)(`/proc/${a}/status`,"utf8").split("\n").find(a=>a.startsWith("NSpid:")),c=Number(b?.trim().split(/\s+/).at(-1));return Number.isInteger(c)&&c>0?c:null}catch{return null}}(a):null,openNamespaceReference:(a,b)=>"linux"===d.B.name?function(a,b){let c;try{c=(0,h.openSync)(`/proc/${a}/ns/pid`,"r")}catch{return null}try{if((0,h.readlinkSync)(`/proc/self/fd/${c}`)!==b)return(0,h.closeSync)(c),null;let a=(0,h.fstatSync)(c,{bigint:!0}),d=!1;return{members:()=>{let b;try{b=(0,h.readdirSync)("/proc")}catch{return null}let c=[];for(let d of b){let b=Number(d);if(Number.isInteger(b)&&!(b<=0))try{let d=(0,h.statSync)(`/proc/${b}/ns/pid`,{bigint:!0});d.dev===a.dev&&d.ino===a.ino&&c.push(b)}catch{}}return c},close:()=>{d||(d=!0,(0,h.closeSync)(c))}}}catch{return(0,h.closeSync)(c),null}}(a,b):null,signal:(a,b)=>process.kill(a,b)};function aa(a,b,c=[],d=I.__llvResourceTargetEpoch??0){return{payload:a,diagnostic:b,hostCount:a.sessions.length,treeCount:a.sessions.reduce((a,b)=>a+b.procCount,0),targets:c,targetEpoch:d}}function ab(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ac(a,b,c=[]){let d=new Set([...b,...c]);return b.every(b=>Object.hasOwn(a,b))&&Object.keys(a).every(a=>d.has(a))}function ad(a){return null===a||"string"==typeof a}function ae(a){return null===a||"boolean"==typeof a}function af(a){return!!ab(a)&&!!ac(a,["target","panePid","path","engine","title","project","activity","lastActiveAt","cwd","rssBytes","swapBytes","procCount"],["hostConflict","kind","model","role","conversationId","stage","ownership","seat","turnBusy"])&&(void 0===a.kind||"tmux"===a.kind||"structured"===a.kind)&&(void 0===a.ownership||"owned"===a.ownership||"released"===a.ownership||"orphaned"===a.ownership)&&(void 0===a.model||!!ad(a.model))&&(void 0===a.role||!!ad(a.role))&&(void 0===a.conversationId||!!ad(a.conversationId))&&(void 0===a.stage||!!ad(a.stage))&&(void 0===a.seat||!!ae(a.seat))&&(void 0===a.turnBusy||!!ae(a.turnBusy))&&"string"==typeof a.target&&a.target.length>0&&Number.isSafeInteger(a.panePid)&&a.panePid>0&&ad(a.path)&&("claude"===a.engine||"codex"===a.engine||null===a.engine)&&ad(a.title)&&ad(a.project)&&("live"===a.activity||"recent"===a.activity||"stalled"===a.activity||"idle"===a.activity||null===a.activity)&&ad(a.lastActiveAt)&&(null===a.lastActiveAt||Number.isFinite(Date.parse(a.lastActiveAt)))&&ad(a.cwd)&&F(a.rssBytes)&&F(a.swapBytes)&&Number.isSafeInteger(a.procCount)&&a.procCount>=0&&(void 0===a.hostConflict||"boolean"==typeof a.hostConflict)}function ag(a){var b;return!!ab(a)&&!!ac(a,["system","sessions"])&&!!(null===(b=a.system)||ab(b)&&ac(b,["ramTotal","ramAvailable","swapTotal","swapUsed","capturedAt"])&&F(b.ramTotal)&&F(b.ramAvailable)&&F(b.swapTotal)&&F(b.swapUsed)&&"string"==typeof b.capturedAt&&Number.isFinite(Date.parse(b.capturedAt)))&&!!Array.isArray(a.sessions)&&a.sessions.length<=1e4&&a.sessions.every(af)}function ah(a){if(!ab(a)||!ac(a,["fresh","status","durationMs","phases"])||!ab(a.phases))return!1;let b=a.phases,c=["systemMemory","readFiles","readHosts","ppidMap","processMemory","attach","serialization"];return"boolean"==typeof a.fresh&&("complete"===a.status||"failed"===a.status)&&F(a.durationMs)&&ac(b,c)&&c.every(a=>F(b[a]))}function ai(a){var b,c;return ab(a)&&ac(a,["target","ref"])&&"string"==typeof a.target&&a.target.length>0&&!!ab(b=a.ref)&&(void 0!==b.kind?!!ab(c=b)&&!!ac(c,["kind","pid","startIdentity","bootEpoch","engine","sessionId","conversationId","seat","turnBusy","owned","lastActiveAt"])&&"structured"===c.kind&&Number.isSafeInteger(c.pid)&&c.pid>1&&"string"==typeof c.startIdentity&&c.startIdentity.length>0&&ad(c.bootEpoch)&&("claude"===c.engine||"codex"===c.engine)&&ad(c.sessionId)&&ad(c.conversationId)&&ae(c.seat)&&ae(c.turnBusy)&&"boolean"==typeof c.owned&&ad(c.lastActiveAt)&&(null===c.lastActiveAt||Number.isFinite(Date.parse(c.lastActiveAt))):!!ac(b,["tmuxServerPid","tmuxServerStartIdentity","paneId","panePid","paneStartIdentity"])&&Number.isSafeInteger(b.tmuxServerPid)&&b.tmuxServerPid>0&&ad(b.tmuxServerStartIdentity)&&"string"==typeof b.paneId&&/^%\d+$/.test(b.paneId)&&Number.isSafeInteger(b.panePid)&&b.panePid>0&&ad(b.paneStartIdentity))}function aj(a,b){let c=new Map;for(let b of a.sessions){if(c.has(b.target))return!1;c.set(b.target,b)}let d=new Set;return b.every(({target:a,ref:b})=>{if(d.has(a))return!1;d.add(a);let e=c.get(a);return!!e&&(H(b)?"structured"===e.kind&&e.panePid===b.pid:"structured"!==e.kind&&e.panePid===b.panePid)})}function ak(a){let b,c=(0,x.BQ)(V);try{(0,h.mkdirSync)(k().dirname(c),{recursive:!0,mode:448}),b=k().join(k().dirname(c),`.${k().basename(c)}.${process.pid}.${g().randomUUID()}.tmp`);let d=JSON.stringify({version:1,observation:a})+"\n";if(Buffer.byteLength(d)>0x1000000)throw Error("resource observation exceeded durable size limit");return(0,h.writeFileSync)(b,d,{mode:384}),(0,y.Hr)(b),(0,h.renameSync)(b,c),(0,h.chmodSync)(c,384),(0,y.Hr)(k().dirname(c)),!0}catch(a){if(b)try{(0,h.unlinkSync)(b)}catch{}return console.error(`[resources] observation persistence failed: ${a instanceof Error?a.message:String(a)}`),!1}}function al(a){let b=JSON.stringify({version:1,observation:a})+"\n";if(Buffer.byteLength(b)>0x1000000)throw new r("collector-crash","observation-limit","resource observation exceeded durable size limit")}async function am(a,b=S,c={},d=I.__llvResourceTargetEpoch??0,f=_,j=Q){let m,n,q=function(a={}){let b=a.cwd??process.cwd(),c=a.env??process.env,d=a.exists??h.existsSync,e=a.execPath??process.execPath,f=a.versions??process.versions,g=k().join(b,"src/lib/resourceCollector.worker.ts"),i=k().join(b,".next/server/resource-collector-worker.js"),j=d(g),l=d(i),m=j||!l?g:i;if(c.LLV_RESOURCE_COLLECTOR_EXECUTABLE)return{executable:c.LLV_RESOURCE_COLLECTOR_EXECUTABLE,workerPath:l?i:m};let n="/usr/local/bin/bun-container";return j&&d(n)?{executable:n,workerPath:g}:l?{executable:f.bun?e:c.LLV_BUN_EXECUTABLE||"bun",workerPath:i}:{executable:"bun",workerPath:g}}(),s=c.observeTimeoutMs??3e4,t=c.inputTimeoutMs??5e3,u=c.closeTimeoutMs??1e3,v=Math.max(0,Math.min(100,Math.floor(.75*u))),w=c.headroomMs??500,x=Math.min(25,Math.max(5,u)),y=Math.max(u+x+5,c.cleanupTimeoutMs??u+Math.floor(w/2)),A=Math.max(y,u+x+50),B=Math.max(Math.min(250,Math.ceil(.2*s)),50+x+Math.max(0,w-Math.max(0,A-u))),C=Math.max(0,s-t-A-B),D=Math.min(c.timeoutMs??23500,C),E=b(a),F=Promise.race([j(),new Promise(a=>{m=setTimeout(()=>a([]),t)})]).catch(a=>(console.error(`[resources] structured host inventory failed: ${a instanceof Error?a.message:String(a)}`),[])).finally(()=>{m&&clearTimeout(m)}),G=await Promise.race([E,new Promise((a,b)=>{n=setTimeout(()=>b(new r("timeout","file-handoff-timeout","resource collector file handoff timed out")),t)})]).finally(()=>{n&&clearTimeout(n)}),H=await F,J=JSON.stringify({type:"collect",fresh:a,files:G,identityEpoch:(0,e.h_)(),hosts:H})+"\n",K=c.outputMaxBytes??0x1010000;if(Buffer.byteLength(J)>0x1010000)throw new r("collector-crash","worker-input","resource collector input exceeded transport limit");let L=f===_&&Y(q.executable),M=g().randomUUID(),N=L?process.execPath:q.executable,O=L?["-e",W,q.executable,q.workerPath]:[q.workerPath],P=["/usr/bin/unshare","/bin/unshare"].find(h.existsSync),R=q.executable.includes(k().sep)&&!Y(q.executable),T=f===_&&"linux"===process.platform&&void 0!==P&&!R,U=g().randomUUID(),V=(0,i.spawn)(T?P:N,T?["--user","--map-root-user","--pid","--fork","/bin/sh","-c",X,"llv-resource-worker",U,N,...O]:O,{cwd:process.cwd(),detached:!0,stdio:["pipe","pipe","pipe"],env:{...(0,z.Fd)(process.env),[$]:M}});return new Promise((b,c)=>{let e,g,h,i,j,k=V.pid,m="number"==typeof k?f.processIdentity(k):null,n="number"==typeof k&&null!==m&&f.processGroupId(k)===k&&f.processIdentity(k)===m,q=null,s=null,t=0,w=function(a=2048){let b="",c="",d=null,e=0,f=0,g=null,h=c=>{let d=(b+=c).length-2*a;if(d<=0)return;let e=b.charCodeAt(d);e>=56320&&e<=57343&&(d+=1),b=b.slice(d)};return{append(a){c+=a,(()=>{let a=(a=!1)=>{let b=/^((?:\\+)?["'])/.exec(c)?.[1]??"",h=b.at(-1);'"'===h||"'"===h?(c=c.slice(b.length),d=h,e=b.length-1,f=0):d=a?"line":"unquoted",g=null};for(;c;){if("authorization"===g){d="line",g=null;continue}if("bearer"===g){let b=c.search(/\S/);if(b<0){c="";return}c=c.slice(b),a(!0);continue}if("value"===g){let b=c.search(/\S/);if(b<0){c="";return}c=c.slice(b),a(),g=null;continue}if("key"===g||"authorization-key"===g){let a="authorization-key"===g,b=/^[A-Z0-9_.-]*\s*[:=]\s*(?:((?:\\+)?["'])|(?=[^"'\\\s]))/i.exec(c);if(b){h("<redacted>"),c=c.slice(b[0].length);let i=b[1]??"",j=i.at(-1);d='"'===j||"'"===j?j:a?"line":"unquoted",e=i.length>0?i.length-1:0,f=0,g=null;continue}if(/^[A-Z0-9_.-]*\s*[:=]\s*$/i.exec(c)){h("<redacted>"),c="",g=a?"authorization":"value";return}if(/^[A-Z0-9_.-]*\s*$/i.test(c)){c=c.slice(-256);return}g=null}if(d){let a;if("line"===d)a=c.search(/[\r\n]/);else if("unquoted"===d)a=c.search(/\s/);else{a=-1;let b=f;for(let f=0;f<c.length;f+=1){let g=c[f];if("\\"===g){b+=1;continue}if(g===d&&b===e){a=f;break}b=0}f=b}if(a<0){c="";return}c=c.slice(a+ +("unquoted"!==d&&"line"!==d)),d=null,e=0,f=0;continue}let b=o(c);if(b){if(h(c.slice(0,b.index)+b.replacement),c=c.slice(b.index+b.length),b.authorization){d=b.quotedKey&&b.quote?b.quote:"line",e=b.quoteEscapeDepth;continue}if(b.bearer){d=b.quote??"line",e=b.quoteEscapeDepth;continue}d=b.quote??"unquoted",e=b.quoteEscapeDepth;continue}if(c.length<=256)return;let i=/(?:^|[^A-Z0-9_])(Bearer)(\s+)$/i.exec(c);if(i){let a=i.index+i[0].length-i[1].length-i[2].length;if(a<c.length-256){h(c.slice(0,a)+`${i[1]} <redacted>`),c="",g="bearer";return}}let j=/(^|[^A-Z0-9_.-])((?:\\+)?["']?)([A-Z0-9_.-]*(?:TOKEN|SECRET|PASSWORD|PASSWD|API[_-]?KEY|AUTHORIZATION|COOKIE)[A-Z0-9_.-]*)\2(\s*)(?:([:=])(\s*))?$/i.exec(c);if(j){let a=j.index+j[1].length;if(a<c.length-256){h(c.slice(0,a)),j[5]?(h("<redacted>"),c="",g=/AUTHORIZATION/i.test(j[3])?"authorization":"value"):(c=(j[3]+j[4]).slice(-256),g=/AUTHORIZATION/i.test(j[3])?"authorization-key":"key");return}}h(c.slice(0,-256)),c=c.slice(-256);return}})()},value:()=>p(b+(d?"":c),a,!0)}}(),z=new l.StringDecoder("utf8"),B=new Map;"number"==typeof k&&null!==m&&B.set(k,m);let C=[],E=null,F=!1,G=!1,H=null,I=!1,L=void 0===f.namespaceMembers,N=null,O=null,P=null,Q=null,R=!1,S=f!==_&&"unavailable"!==f.kernelContainment,W=S,X=S,Y=S,Z=!1,$=!1,ad=!1,ae=!1,af=!1,ak=!1,al=!1,am=(a,b,c,d)=>new r(a,b,c,{cause:d,stderr:w.value(),secondaryCauses:H?[H]:[]}),an=a=>{j??=a},ao=a=>{I=!0,an(Error(a))},ap=(a,b)=>{let c=f.processIdentity(a);if(null===c)return!f.pidAlive(a);if(c!==b||!f.processExited?.(a))return!1;let d=f.processIdentity(a);return d===c||null===d&&!f.pidAlive(a)},aq=()=>{ak||(ak=!0,w.append(z.end()))},ar=()=>{for(let a of C)clearTimeout(a);C.length=0},as=()=>{let a;if(!Y||null===N||null===Q)return!1;try{if(!R&&null!==O&&null!==P){let a=f.processIdentity(O);if(a===P)if(ap(O,P))R=!0;else{let b=f.processNamespaceId?.(O),c=f.processNamespacePid?.(O);f.processIdentity(O)!==a?R=!0:(b!==N||1!==c)&&ao("resource collector PID namespace root identity changed")}else null!==a?(R=!0,ao("resource collector PID namespace root identity was recycled")):f.pidAlive(O)||(R=!0)}a=Q.members()}catch(a){return W=!1,X=!1,an(a),!1}if(W=null!==a,X=a?.length===0,null===a)return an(Error("resource collector PID namespace could not be inspected")),!1;let b=!1;for(let c of a){let a=f.processIdentity(c);if(null===a||f.processNamespaceId?.(c)!==N||f.processIdentity(c)!==a)continue;let d=B.get(c);if(void 0!==d&&d!==a){ao("resource collector PID namespace member identity was recycled");continue}void 0===d&&(B.set(c,a),b=!0)}return b},at=(a=!0)=>{let b=!1,c=[...B.keys()],d=new Set;for(;c.length>0;){let a,e=c.pop();if(d.has(e))continue;d.add(e);let g=B.get(e);if(void 0!==g&&f.processIdentity(e)===g){try{a=f.descendants(e)}catch(a){an(a);continue}if(f.processIdentity(e)===g)for(let d of a){if(d===e)continue;let a=f.processIdentity(d);if(null===a||f.processIdentity(e)!==g||f.processIdentity(d)!==a)continue;let h=B.get(d);if(void 0!==h&&h!==a){ao("resource collector descendant identity was recycled");continue}void 0===h&&(B.set(d,a),b=!0),c.push(d)}}}(()=>{let a;if(null!==N||!n||Z||$||ad||"number"!=typeof k||null===m)return;if(f.processIdentity(k)!==m){Z=!0,ao("resource collector worker group leader identity changed");return}try{a=f.processGroupMembers(k)}catch(a){Z=!0,ao("resource collector worker group membership could not be inspected"),an(a);return}if(!a.includes(k)){Z=!0,ao("resource collector worker group continuity was lost");return}let b=[];for(let c of a){let a=f.processIdentity(c);null!==a&&f.processGroupId(c)===k&&f.processIdentity(c)===a&&b.push([c,a])}if(f.processIdentity(k)!==m){Z=!0,ao("resource collector worker group leader identity changed");return}for(let[a,c]of b){let b=B.get(a);if(void 0!==b&&b!==c){Z=!0,ao("resource collector worker group member identity changed");return}B.set(a,c)}})();let e=as();return!!a&&null===N&&(()=>{let a;if(!f.namespaceMembers)return!1;try{a=f.namespaceMembers(M)}catch(a){return L=!1,an(a),!1}if(L=null!==a,null===a)return an(Error("resource collector worker namespace could not be inspected")),!1;let b=!1;for(let c of a){let a=f.processIdentity(c);if(null===a||f.processIdentity(c)!==a)continue;let d=B.get(c);if(void 0!==d&&d!==a){ao("resource collector namespace member identity was recycled");continue}void 0===d&&(B.set(c,a),b=!0)}return b})()||e||b},au=()=>{let a=[],b=!1;for(let[c,d]of B){let e=f.processIdentity(c);if(e===d){if(ap(c,d))continue;let e=f.processIdentity(c);e===d?a.push(c):null===e&&f.pidAlive(c)?b=!0:null!==e&&null!==N&&ao("resource collector contained process identity was recycled");continue}null===e&&f.pidAlive(c)?b=!0:null!==e&&null!==N&&ao("resource collector contained process identity was recycled")}return{active:a,uncertain:b}},av=()=>{if("number"!=typeof k)return"absent";try{return f.signal(-k,0),"present"}catch(b){let a=b.code;if("ESRCH"===a)return $||(Z=!0),"absent";if("EPERM"===a)return"denied";return an(b),"unknown"}},aw=(a,b=!0,c="all")=>{if(at(b),null!==N&&null!==O&&null!==P){let b=au().active.filter(a=>a!==O&&f.processNamespaceId?.(a)===N),d=new Set(b),e="SIGTERM"===a?b:[];for(let g of("SIGTERM"===a&&"members"===c&&(e=b.filter(a=>{let b,c=B.get(a);if(void 0===c||f.processIdentity(a)!==c)return!1;try{b=f.descendants(a)}catch(a){return an(a),!1}return f.processIdentity(a)===c&&!b.some(b=>b!==a&&d.has(b))})),e)){let b=B.get(g);if(void 0===b)continue;let c=f.processIdentity(g);if(null!==c){if(c!==b||f.processNamespaceId?.(g)!==N||f.processIdentity(g)!==c){ao("resource collector PID namespace member identity changed before cleanup");continue}try{f.signal(g,a)}catch(a){"ESRCH"!==a.code&&an(a)}}}if("members"===c)return;let g=()=>{if("number"!=typeof k||null===m||k===O)return;let b=f.processIdentity(k);if(null!==b){if(b!==m||f.processIdentity(k)!==b)return void ao("resource collector worker wrapper identity changed before cleanup");if(!ap(k,m))try{f.signal(k,a)}catch(a){"ESRCH"!==a.code&&an(a)}}};if(R)return void g();let h=f.processIdentity(O);if(null===h){f.pidAlive(O)||(R=!0),g();return}if(ap(O,P)){R=!0,g();return}if(h!==P){R=!0,ao("resource collector PID namespace root identity changed before cleanup"),g();return}if(f.processNamespaceId?.(O)!==N||f.processNamespacePid?.(O)!==1||f.processIdentity(O)!==h){ao("resource collector PID namespace root identity changed before cleanup"),g();return}try{f.signal(O,a)}catch(a){"ESRCH"!==a.code&&an(a)}return void g()}let d=au();if("present"===av())if((()=>{if(!n||Z||"number"!=typeof k||null===m)return!1;for(let[a,b]of B)if(f.processIdentity(a)===b&&f.processGroupId(a)===k&&f.processIdentity(a)===b)return!0;return!1})())try{f.signal(-k,a),$=!0}catch(a){"ESRCH"!==a.code&&an(a)}else $?an(Error("resource collector worker group ownership could not be verified")):ao("resource collector worker group ownership could not be verified");for(let b of d.active){let c=B.get(b);if(void 0===c||f.processIdentity(b)!==c){$||ao("resource collector worker identity changed before individual cleanup");continue}try{f.signal(b,a)}catch(a){"ESRCH"!==a.code&&an(a)}}},ax=()=>{let a=au(),b="number"==typeof k&&null!==m&&ap(k,m),c=av();null!==N&&X&&b&&"present"===c&&(c="absent");let d=L&&"absent"===c&&0===a.active.length&&!a.uncertain,e=d&&W&&X;return d&&!Y&&null===H?(I=!0,H=Error("resource collector kernel containment could not be established"),!0):(e&&I&&null===H&&(H=Error("resource collector worker cleanup ownership verification failed",void 0===j?void 0:{cause:j})),e)},ay=()=>{if(!af){af=!0;try{Q?.close()}catch(a){an(a),H??=Error("resource collector PID namespace reference could not be closed",{cause:a})}for(let a of(Q=null,aq(),V.removeAllListeners(),[V.stdin,V.stdout,V.stderr]))a.removeAllListeners(),a.destroy(),a.unref?.();V.unref()}},az=a=>{if(!T||!a.startsWith(`${U} `))return!1;let[b,c,d,...e]=a.split(" "),g=Number(c);if(a.length>512||b!==U||!Number.isInteger(g)||g<=0||!/^pid:\[\d+\]$/.test(d)||e.length>0||!f.openNamespaceReference||!f.processNamespaceId||!f.processNamespacePid)return ao("resource collector PID namespace handshake was invalid"),!0;let h=f.processIdentity(g),i=null!==h&&f.processNamespaceId(g)===d&&1===f.processNamespacePid(g)&&f.processIdentity(g)===h?f.openNamespaceReference(g,d):null;return null===i||f.processIdentity(g)!==h||f.processNamespaceId(g)!==d||1!==f.processNamespacePid(g)||f.processIdentity(g)!==h?(i?.close(),ao("resource collector PID namespace root could not be verified")):(N=d,O=g,P=h,Q=i,Y=!0,W=!1,X=!1,L=!0,as()),!0};T||Y||ao("resource collector kernel containment is unavailable");let aA=()=>{if(al||!q||!ae&&!af||!G)return;al=!0;let a=q;(clearTimeout(aE),e&&clearTimeout(e),g&&clearTimeout(g),h&&clearTimeout(h),i&&clearTimeout(i),ar(),ay(),H)?"success"===a.type?c(am("collector-crash","worker-cleanup","resource collector worker cleanup failed")):c(am(a.reason,a.cause,a.message,a.error)):"success"===a.type?b(a.value):c(am(a.reason,a.cause,a.message,a.error))},aB=()=>{if(!F||G)return;at()&&(E=null);let a=ax();if(a?null===E&&(E=Date.now()):E=null,a&&Date.now()-E>=x){G=!0,g&&clearTimeout(g),i&&clearTimeout(i),aA();return}(i=setTimeout(aB,5)).unref()},aC=()=>{F||(F=!0,ar(),(h=setTimeout(()=>{if(at(),ax()&&void 0===j){G=!0,ay(),aA();return}!q&&s&&(q=s),H=Error("resource collector worker cleanup deadline expired",void 0===j?void 0:{cause:j}),G=!0,ay(),aA()},q?.type==="success"?A:y)).unref(),null===N?aw("SIGTERM",!1):(aw("SIGTERM",!1,"members"),(e=setTimeout(()=>{G||(aw("SIGTERM",!1,"root"),aB())},v)).unref()),(g=setTimeout(()=>{aw("SIGKILL"),aB()},u)).unref(),aB())},aD=a=>{if(q){"success"===q.type&&"failure"===a.type&&"worker-output-limit"===a.cause&&(q=a);return}q=a,clearTimeout(aE),aC()};for(let a of(at(),[0,5,20,40])){let b=setTimeout(()=>{F||ad||at()},a);b.unref(),C.push(b)}let aE=setTimeout(()=>aD({type:"failure",reason:"timeout",cause:"worker-timeout",message:"resource collector worker timed out"}),D);V.once("error",a=>{"number"!=typeof k&&(Y=!0,W=!0,X=!0,L=!0),aD({type:"failure",reason:"collector-crash",cause:"worker-spawn",message:"resource collector worker failed to start",error:a})}),V.once("exit",(a,b)=>{ad=!0,ar(),clearTimeout(aE),s={type:"failure",reason:"collector-crash",cause:"worker-exit",message:`resource collector worker exited before observation (${b??a??"unknown"})`},aC()}),V.once("close",(a,b)=>{clearTimeout(aE),aq(),ae=!0,q||(q=s??{type:"failure",reason:"collector-crash",cause:"worker-exit",message:`resource collector worker closed before observation (${b??a??"unknown"})`},aC()),aB(),aA()});let aF="";V.stdout.setEncoding("utf8"),V.stdout.on("data",b=>{if((t+=Buffer.byteLength(b))>K+(T&&!Y?512:0))return void aD({type:"failure",reason:"collector-crash",cause:"worker-output-limit",message:"resource collector worker exceeded stdout limit"});if(!q)for(aF+=b;!q;){var c;let b,e=aF.indexOf("\n");if(e<0)return;let f=aF.slice(0,e);if(aF=aF.slice(e+1),az(f)){(t-=Buffer.byteLength(f)+1)>K&&aD({type:"failure",reason:"collector-crash",cause:"worker-output-limit",message:"resource collector worker exceeded stdout limit"});continue}if(t>K)return void aD({type:"failure",reason:"collector-crash",cause:"worker-output-limit",message:"resource collector worker exceeded stdout limit"});try{b=JSON.parse(f)}catch{aD({type:"failure",reason:"collector-crash",cause:"worker-output-invalid",message:"resource collector worker emitted invalid JSON"});return}let g=ab(c=b)?"failure"===c.type?ac(c,["type","error"])&&"string"==typeof c.error&&c.error.length<=4096?c:null:"observation"===c.type&&ac(c,["type","payload","diagnostic","targets"])&&ag(c.payload)&&ah(c.diagnostic)&&Array.isArray(c.targets)&&!(c.targets.length>1e4)&&c.targets.every(ai)&&"complete"===c.diagnostic.status&&aj(c.payload,c.targets)?c:null:null;if(!g)return void aD({type:"failure",reason:"collector-crash",cause:"worker-output-invalid",message:"resource collector worker emitted an invalid message"});if("observation"===g.type&&g.diagnostic.fresh!==a)return void aD({type:"failure",reason:"collector-crash",cause:"worker-output-invalid",message:"resource collector worker returned mismatched freshness"});if("failure"===g.type)return void aD({type:"failure",reason:"collector-crash",cause:"worker-failure",message:"resource collector worker reported a failure",error:Error(g.error)});aD({type:"success",value:aa(g.payload,g.diagnostic,g.targets,d)}),aF=""}}),V.stderr.on("data",a=>{t+=a.length,w.append(z.write(a)),t>K+(T&&!Y?512:0)&&aD({type:"failure",reason:"collector-crash",cause:"worker-output-limit",message:"resource collector worker exceeded output limit"})}),V.stdin.once("error",a=>aD({type:"failure",reason:"collector-crash",cause:"worker-input",message:"resource collector worker input failed",error:a})),V.stdin.end(J)})}function an(a,b,c,d=!1){var e,f;let{observation:g,failure:h}=a,i=(e=a.collectorId,f=d||void 0!==h,g&&f?{status:g.collectorId===e?"memory":"durable",collectorId:g.collectorId,generation:g.generation}:{status:"miss"});if(!g){if(!h)throw Error("resource collector returned no observation or failure");return{payload:{system:b(),sessions:[]},diagnostic:{fresh:c,status:"failed",durationMs:Math.max(0,a.completedAt-a.startedAt),phases:C(),generation:a.generation,startedAt:new Date(a.startedAt).toISOString(),completedAt:new Date(a.completedAt).toISOString(),collectorId:a.collectorId,cache:i,degradedReason:h.reason,failure:h.diagnostic}}}let{payload:j,diagnostic:k}=g.value;return(h||g.collectorId!==a.collectorId||void 0===g.value.targetEpoch||function(a,b,c=I.__llvResourceTargetEpoch??0){c!==(I.__llvResourceTargetEpoch??0)||a<=(I.__llvResourceTargetsGeneration??0)||(K(b),I.__llvResourceTargetsGeneration=a)}(g.generation,g.value.targets,g.value.targetEpoch),h)?{payload:c?j:{...j,system:b()},diagnostic:{fresh:c,status:"failed",durationMs:Math.max(0,a.completedAt-a.startedAt),phases:C(),generation:a.generation,startedAt:new Date(a.startedAt).toISOString(),completedAt:new Date(a.completedAt).toISOString(),collectorId:a.collectorId,cache:i,degradedReason:h.reason,failure:h.diagnostic}}:{payload:c?j:{...j,system:b()},diagnostic:{...k,fresh:c,generation:g.generation,startedAt:new Date(g.startedAt).toISOString(),completedAt:new Date(g.completedAt).toISOString(),collectorId:a.collectorId,cache:i}}}async function ao(a=!1){let b,c=process.env.LLV_RESOURCES_FIXTURE;if(c){var d;let b;return K([]),d=function(a){let b;try{b=JSON.parse(a)}catch{throw Error("invalid resources fixture: expected JSON")}let c=b,d=c?.system,e=null===d||"object"==typeof d&&F(d.ramTotal)&&F(d.ramAvailable)&&F(d.swapTotal)&&F(d.swapUsed)&&"string"==typeof d.capturedAt&&Number.isFinite(Date.parse(d.capturedAt));if(!c||!e||!Array.isArray(c.sessions)||0!==c.sessions.length)throw Error("invalid resources fixture: expected system metrics and an empty sessions list");return{system:d??null,sessions:[]}}((0,h.readFileSync)(c,"utf8")),b=Date.now(),{payload:d,diagnostic:{fresh:a,status:"complete",durationMs:0,phases:C(),generation:0,startedAt:new Date(b).toISOString(),completedAt:new Date(b).toISOString(),collectorId:"fixture",cache:{status:"miss"}}}}return(b=I.__llvResourcesReader,(3!==I.__llvResourcesReaderVersion||!b)&&(I.__llvResourcesReaderVersion=3,b=function(a,b,c=Date.now,d=J,e={}){var f;let h,i,j,k,l,m=e.inProcess??"1"===process.env.LLV_RESOURCE_COLLECTOR_IN_PROCESS,o=e.collectorId??(m?`in-process:${process.pid}:${g().randomUUID()}`:`worker:${process.pid}:${g().randomUUID()}`),p=(h=(f={collectorId:o,now:c,initial:e.initial,validateObservation:al,collect:m?async(b=!1)=>{let c=I.__llvResourceTargetEpoch??0,e=await a(b),f=d();if(!f)throw Error("resource build completed without diagnostics");return aa(e,f,I.__llvLastResourceTargets?.map(({target:a,ref:b})=>({target:a,ref:{...b}}))??[],c)}:(a=!1)=>am(a,e.readFiles,e.workerLimits,I.__llvResourceTargetEpoch??0,e.workerProcessRuntime)}).now??Date.now,i=f.initial?.generation??0,j=f.initial??null,k=null,l=a=>{let b=++i,c=h(),d=Promise.resolve().then(()=>f.collect(a)).then(a=>{let d={generation:b,startedAt:c,completedAt:h(),collectorId:f.collectorId,value:n(a)};return f.validateObservation?.(d),n(d)}),e={generation:b,promise:d};return k=e,d.then(a=>{k===e&&(k=null),(!j||a.generation>j.generation)&&(j=a)},()=>{k===e&&(k=null)}),d},{latest:()=>j,fence:()=>i,async observe(a,b,c){let d,e,g=h(),m=(e=k)?e.generation>a?e.promise:e.promise.catch(()=>void 0).then(()=>{let b=k;return b&&b.generation>a?b.promise:l(c)}):l(c),o=(a,b)=>n({observation:a,generation:b?Math.max(i,a?.generation??0):a?.generation??i,startedAt:g,completedAt:h(),collectorId:f.collectorId,...b?{failure:b}:{}}),p=Math.max(0,b);if(0===p)return m.catch(()=>void 0),o(j,q("collector-busy","collection-active","resource collection is still active"));let s=Symbol("resource-observation-timeout");try{let a=await Promise.race([m,new Promise(a=>{d=setTimeout(()=>a(s),p)})]);if(a===s)return o(j,q("timeout","observation-timeout","resource collection observation timed out"));return o(a)}catch(a){return o(j,a instanceof r?a.failure:q("collector-crash","collector-error","resource collection failed",{cause:a}))}finally{d&&clearTimeout(d)}}}),s=e.initial?.generation??0,t=a=>{a.degradedReason||a.generation<=s||(e.persist?.(a)??!0)&&(s=a.generation)},u=null,v=null,w=null,x=e.workerLimits?.observeTimeoutMs??3e4,y=a=>{w&&a.generation>=w.generation&&(w=null)},z=async a=>{let d=p.latest();if(!a&&d)return(c()-d.completedAt>=6e5&&(a=>{if(v)return;let b=p.observe(a.generation,x,!1).then(a=>{if(a.failure){w=a;return}a.observation&&y(a.observation)}).finally(()=>{v===b&&(v=null)});v=b})(d),t(d),w)?an(w,b,!1,!0):an({observation:d,generation:d.generation,startedAt:d.startedAt,completedAt:d.completedAt,collectorId:o},b,!1,!0);let e=a?p.fence():-1,f=await p.observe(e,x,a);return f.observation&&!f.failure&&(t(f.observation),y(f.observation)),an(f,b,a)};return{async read(a=!1){if(!a)return z(!1);if(u)return u;let b=z(!0);u=b;try{return await b}finally{u===b&&(u=null)}}}}(U,()=>G(),Date.now,J,{initial:function(){try{let a=(0,x.BQ)(V),b=(0,h.statSync)(a).size;if(b<=0||b>0x1000000)return null;return function(a){if(0>=Buffer.byteLength(a)||Buffer.byteLength(a)>0x1000000)return null;try{var b;let c=JSON.parse(a);if(!ab(c)||!ac(c,["version","observation"])||1!==c.version||!ab(c.observation))return null;let d=c.observation;if(!ac(d,["generation","startedAt","completedAt","collectorId","value"],["degradedReason"])||!Number.isSafeInteger(d.generation)||d.generation<0||!F(d.startedAt)||!F(d.completedAt)||d.completedAt<d.startedAt||"string"!=typeof d.collectorId||0===d.collectorId.length||d.collectorId.length>256||void 0!==d.degradedReason&&"collector-busy"!==d.degradedReason&&"timeout"!==d.degradedReason&&"collector-crash"!==d.degradedReason||(b=d.value,!(ab(b)&&ac(b,["payload","diagnostic","hostCount","treeCount","targets"],["targetEpoch"])&&ag(b.payload)&&ah(b.diagnostic)&&Number.isSafeInteger(b.hostCount)&&!(b.hostCount<0)&&Number.isSafeInteger(b.treeCount)&&!(b.treeCount<0)&&(void 0===b.targetEpoch||Number.isSafeInteger(b.targetEpoch)&&!(b.targetEpoch<0))&&Array.isArray(b.targets)&&!(b.targets.length>1e4)&&b.targets.every(ai)&&"complete"===b.diagnostic.status&&aj(b.payload,b.targets)&&b.hostCount===b.payload.sessions.length&&b.treeCount===b.payload.sessions.reduce((a,b)=>a+b.procCount,0))))return null;return d}catch{return null}}((0,h.readFileSync)(a,"utf8"))}catch{return null}}(),persist:ak}),I.__llvResourcesReader=b),b).read(a)}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6978,exports.ids=[6978],exports.modules={6978:(a,b,c)=>{c.d(b,{O6:()=>D,Xb:()=>z,UT:()=>v,vq:()=>y,mQ:()=>w,fW:()=>C,yy:()=>B});var d=c(77598),e=c.n(d),f=c(49729),g=c(64859),h=c(60641),i=c(58396),j=c(36883),k=c(36522);let l=["coral","amber","lime","teal","sky","violet","pink","slate"];function m(a){return{ok:!1,error:'The board already shows 300 task bands for this project. Hide a band you no longer need, or keep this task off the board with board: "hidden".',status:409,code:"TASK_BOARD_FULL",field:a}}function n(a){return"string"!=typeof a?null:a.trim()||null}function o(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:null,c=b?"number"==typeof b.x&&Number.isFinite(b.x)?"pos.y":"pos.x":"pos";return{ok:!1,error:`${c} must be ${"pos"===c?"an object with finite x and y":"a finite number"}`,status:400,code:"TASK_INVALID_FIELD",field:c}}function p(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 q(a){return"shown"===a||"hidden"===a?a:null}function r(a){return"pinned"===a||"unplaced"===a?a:null}function s(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 t(){return{ok:!1,error:"Task text must be no longer than 6000 characters",status:400}}function u(a){if(null==a)return{ok:!0};if("string"!=typeof a)return{ok:!1,error:"details must be a string",status:400,code:"TASK_INVALID_FIELD",field:"details"};let b=a.trim();return b?b.length>2e4?{ok:!1,error:"Task details must be no longer than 20000 characters",status:400,code:"TASK_INVALID_FIELD",field:"details"}:{ok:!0,details:b}:{ok:!0}}function v(a,b,c=[],d={}){var g,j;let k="string"!=typeof(j=b.project)?null:j.trim()||null;if(!k)return{ok:!1,error:"project is required",status:400};let l=n(b.text);if(!l)return{ok:!1,error:"task text is required",status:400};if(l.length>6e3)return t();let w=u(b.details);if(!w.ok)return w;let x="string"==typeof b.clientRequestId&&b.clientRequestId.trim()?b.clientRequestId.trim():null;if(x){let b=c.find(a=>a.clientRequestId===x);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 y=p(b.pos);if(Object.hasOwn(b,"pos")&&!y)return o(b.pos);let z=r(b.placement)??(y?"pinned":null);if(void 0!==b.placement&&null===z)return{ok:!1,error:"invalid placement",status:400};if("pinned"===z&&!y)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};if("unplaced"===z&&y)return{ok:!1,error:"unplaced task must not carry a position",status:400,code:"TASK_INVALID_FIELD",field:"pos"};if(null===z)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};let A=s(b.dueAt,b.dueTz);if(!A.ok)return{ok:!1,error:A.error,status:400};let B=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(!B.ok)return B;let C=void 0===(g=b.source)?void 0:!g||"object"!=typeof g||Array.isArray(g)?null:"string"==typeof g.path&&g.path.trim()&&(null===g.ts||"string"==typeof g.ts)&&"string"==typeof g.text&&g.text.trim()&&"string"==typeof g.fingerprint&&g.fingerprint.trim()&&("claude"===g.engine||"codex"===g.engine)?{path:g.path,ts:g.ts,text:g.text,fingerprint:g.fingerprint,engine:g.engine}:null;if(null===C)return{ok:!1,error:"invalid task source",status:400};let D=Object.hasOwn(b,"board")?q(b.board):void 0;if(null===D)return{ok:!1,error:"invalid board visibility",status:400,code:"TASK_INVALID_FIELD",field:"board"};if("hidden"!==D&&(0,i.Qi)(a,k,d.hasBoardMembers??(()=>!1))>=300)return m("project");let E=d.now?.()??(0,h.Ec)(),F=d.id?.()??e().randomUUID(),G={id:F,project:k,status:"inbox",text:l,...w.details?{details:w.details}:{},placement:z,..."pinned"===z&&y?{pos:y}:{},...A.dueAt?{dueAt:A.dueAt,dueTz:A.dueTz}:{},...B.attachments?{attachments:B.attachments}:{},...C?{source:C}:{},...D?{board:D}:{},assignments:[],createdAt:E,updatedAt:E};return{ok:!0,tasks:[...a,G],task:G,recentCreates:x?[...c,{clientRequestId:x,taskId:F}].slice(-100):c,replay:!1}}function w(a,b,c,d=(0,h.Ec)(),e={}){var f,k;let v=a.findIndex(a=>a.id===b);if(v<0)return{ok:!1,error:"task not found",status:404};let x=a[v];if(e.requirePlacementGuards&&(Object.hasOwn(c,"pos")||Object.hasOwn(c,"placement"))||Object.hasOwn(c,"hide")||Object.hasOwn(c,"expectedProject")||Object.hasOwn(c,"expectedRevision")){for(let a of["expectedProject","expectedRevision"])if("string"!=typeof c[a]||!c[a].trim())return{ok:!1,status:400,code:"TASK_INVALID_FIELD",field:a,error:`${a} must be a non-empty string copied from the current task`};if(c.expectedProject!==x.project)return{ok:!1,status:409,code:"TASK_PROJECT_MISMATCH",field:"expectedProject",error:"expectedProject does not match the current task project; read the task and reconsider the request"};if(c.expectedRevision!==(0,g.d4)(x))return{ok:!1,status:409,code:"TASK_REVISION_MISMATCH",field:"expectedRevision",error:"expectedRevision is stale; read the task and reconsider the request"}}let y={};if(Object.hasOwn(c,"text")){let b=n(c.text);if(!b)return{ok:!1,error:"task text is required",status:400};if(b.length>6e3)return t();y.text=b,a[v].origin?.refinement==="pending"&&b!==a[v].text&&(y.origin={...a[v].origin,refinement:"titled"})}if(Object.hasOwn(c,"details")){let a=u(c.details);if(!a.ok)return a;y.details=a.details}if(Object.hasOwn(c,"status")){let a="inbox"===(f=c.status)||"assigned"===f||"blocked"===f||"done"===f?f:null;if(!a)return{ok:!1,error:"invalid task status",status:400};y.status=a}if(Object.hasOwn(c,"pos")){let a=p(c.pos);if(!a)return o(c.pos);y.pos=a,y.placement="pinned"}if(Object.hasOwn(c,"board")){let b=q(c.board);if(!b)return{ok:!1,error:"invalid board visibility",status:400,code:"TASK_INVALID_FIELD",field:"board"};let d=e.hasBoardMembers??(()=>!1);if("shown"===b&&!(0,i.d4)(x,d(x))&&(0,i.Qi)(a,x.project,d)>=300)return m("board");y.board=b}if(Object.hasOwn(c,"color")){let a="none"===(k=c.color)||"string"==typeof k&&l.includes(k)?k:null;if(!a)return{ok:!1,error:`color must be one of none, ${l.join(", ")}`,status:400,code:"TASK_INVALID_FIELD",field:"color"};y.color="none"===a?void 0:a}if(Object.hasOwn(c,"hide")){if(!0!==c.hide&&!1!==c.hide)return{ok:!1,error:"hide must be true or false",status:400,code:"TASK_INVALID_FIELD",field:"hide"};if(c.hide){let a=e.seatHolding?e.seatHolding(x):"unknown";if("holds"===a)return{ok:!1,status:409,code:"TASK_HIDE_PROTECTED",field:"hide",error:"this task holds the project's orchestrator seat conversation, which stays on the board; it cannot be hidden"};if("unknown"===a)return{ok:!1,status:503,code:"TASK_HIDE_UNVERIFIED",field:"hide",error:"the orchestrator seat record could not be read, so the hide was not applied; try again"};y.groupHidden={at:d,by:e.actor??"operator",admitted:(0,j.QE)(x.assignments)}}else y.groupHidden=void 0}if(Object.hasOwn(c,"placement")){let a=r(c.placement);if(!a)return{ok:!1,error:"invalid placement",status:400};if("pinned"===a&&!y.pos&&!x.pos)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};y.placement=a}if(Object.hasOwn(c,"dueAt")||Object.hasOwn(c,"dueTz"))if(null===c.dueAt&&void 0===c.dueTz)y.dueAt=void 0,y.dueTz=void 0;else{let a=s(c.dueAt,c.dueTz);if(!a.ok)return{ok:!1,error:a.error,status:400};y.dueAt=a.dueAt,y.dueTz=a.dueTz}let z=Object.keys(c).every(a=>"color"===a||"hide"===a||"expectedProject"===a||"expectedRevision"===a)&&(Object.hasOwn(c,"color")||Object.hasOwn(c,"hide")),A={...x,...y,updatedAt:z?x.updatedAt:d};Object.hasOwn(y,"dueAt")&&void 0===y.dueAt&&(delete A.dueAt,delete A.dueTz),"unplaced"===A.placement&&delete A.pos,Object.hasOwn(y,"details")&&void 0===y.details&&delete A.details,Object.hasOwn(y,"color")&&void 0===y.color&&delete A.color,Object.hasOwn(y,"groupHidden")&&void 0===y.groupHidden&&delete A.groupHidden;let B=a.slice();return B[v]=A,{ok:!0,tasks:B,task:A}}function x(a,b,c,d,e){let f=a,g=[];for(let a of c){if("failed"===a.state)continue;let c=(0,k.On)(a),h=(0,k.Z1)(a);if(!c||!h||(0,k.v1)(f,c))continue;let i=(0,k.IE)(f,{project:b,origin:h,identity:c},e);if(!i.ok)return i;if(d&&i.taskIds.includes(d))return{ok:!1,error:"this task is the conversation's own membership; link the conversation to another task first or delete the task",status:409};f=i.tasks,g.push(...i.created)}return{ok:!0,tasks:f,replacements:g}}function y(a,b,c={}){let d=a.find(a=>a.id===b);return d?x(a.filter(a=>a.id!==b),d.project,d.assignments,null,c):{ok:!1,error:"task not found",status:404}}function z(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 A(a,b){return null!=b.launchId?a.launchId===b.launchId:null!=b.conversationId?a.conversationId===b.conversationId:null!=b.path?a.path===b.path:null!=b.panePid&&a.panePid===b.panePid}function B(a,b,c,d=(0,h.Ec)(),e={}){let f=a.findIndex(a=>a.id===b);if(f<0)return{ok:!1,error:"task not found",status:404};let g="string"==typeof c?{path:c}:c,i=a[f],j=i.assignments.filter(a=>!A(a,g));if(j.length===i.assignments.length)return{ok:!0,tasks:a,task:i};let k=i.assignments.filter(a=>A(a,g)),l={...i,assignments:j,updatedAt:d},m=a.slice();m[f]=l;let n=x(m,i.project,k,b,{now:()=>d,...e});return n.ok?{ok:!0,tasks:n.tasks,task:l}:n}function C(a,b){return a.find(a=>a.engine===b&&"string"==typeof a.accountId)?.accountId??null}function D(a,b,c,d=(0,h.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],g=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=g.some(a=>"delivered"===a.state||"spawning"===a.state||"handoff"===a.state||"linked"===a.state),j=f.status;("inbox"===j||"assigned"===j)&&(j=i?"assigned":"inbox");let k={...f,status:j,assignments:g,updatedAt:d},l=a.slice();return l[e]=k,{ok:!0,tasks:l,task:k}}},36883:(a,b,c)=>{function d(a){let b=new Set;for(let c of a)if("failed"!==c.state){for(let a of[c.clientAttemptId,c.launchId,c.conversationId,c.path].filter(a=>"string"==typeof a&&a.length>0))b.add(a)}return[...b].sort()}function e(a,b){return b.conversationIds.length||b.paths.length?a.find(a=>a.conversationId&&b.conversationIds.includes(a.conversationId)||a.path&&b.paths.includes(a.path))??null:null}c.d(b,{QE:()=>d,VE:()=>e})},58396:(a,b,c)=>{c.d(b,{HR:()=>d,Qi:()=>f,d4:()=>e});let d="emptyTaskBandsHidden";function e(a,b){return"hidden"!==a.board||b}function f(a,b,c){let d=0;for(let f of a)f.project===b&&e(f,c(f))&&(d+=1);return d}}};
|
|
1
|
+
"use strict";exports.id=6978,exports.ids=[6978],exports.modules={6978:(a,b,c)=>{c.r(b),c.d(b,{BOARD_TASKS_PER_PROJECT_LIMIT:()=>o,RECENT_CREATES_CAP:()=>p,TASK_DETAILS_LIMIT:()=>m,TASK_TEXT_LIMIT:()=>l,applyAssignmentPatches:()=>I,assignmentRefFromBody:()=>D,createTask:()=>z,deleteTask:()=>C,mergeAssignments:()=>H,patchTask:()=>A,pinnedAccountId:()=>G,removeAssignment:()=>F});var d=c(77598),e=c.n(d),f=c(49729),g=c(64859),h=c(60641),i=c(58396),j=c(36883),k=c(36522);let l=6e3,m=2e4,n=["coral","amber","lime","teal","sky","violet","pink","slate"],o=300,p=100;function q(a){return{ok:!1,error:`The board already shows ${o} task bands for this project. Hide a band you no longer need, or keep this task off the board with board: "hidden".`,status:409,code:"TASK_BOARD_FULL",field:a}}function r(a){return"string"!=typeof a?null:a.trim()||null}function s(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:null,c=b?"number"==typeof b.x&&Number.isFinite(b.x)?"pos.y":"pos.x":"pos";return{ok:!1,error:`${c} must be ${"pos"===c?"an object with finite x and y":"a finite number"}`,status:400,code:"TASK_INVALID_FIELD",field:c}}function t(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 u(a){return"shown"===a||"hidden"===a?a:null}function v(a){return"pinned"===a||"unplaced"===a?a:null}function w(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 x(){return{ok:!1,error:`Task text must be no longer than ${l} characters`,status:400}}function y(a){if(null==a)return{ok:!0};if("string"!=typeof a)return{ok:!1,error:"details must be a string",status:400,code:"TASK_INVALID_FIELD",field:"details"};let b=a.trim();return b?b.length>m?{ok:!1,error:`Task details must be no longer than ${m} characters`,status:400,code:"TASK_INVALID_FIELD",field:"details"}:{ok:!0,details:b}:{ok:!0}}function z(a,b,c=[],d={}){var g,j;let k="string"!=typeof(j=b.project)?null:j.trim()||null;if(!k)return{ok:!1,error:"project is required",status:400};let m=r(b.text);if(!m)return{ok:!1,error:"task text is required",status:400};if(m.length>l)return x();let n=y(b.details);if(!n.ok)return n;let A="string"==typeof b.clientRequestId&&b.clientRequestId.trim()?b.clientRequestId.trim():null;if(A){let b=c.find(a=>a.clientRequestId===A);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 B=t(b.pos);if(Object.hasOwn(b,"pos")&&!B)return s(b.pos);let C=v(b.placement)??(B?"pinned":null);if(void 0!==b.placement&&null===C)return{ok:!1,error:"invalid placement",status:400};if("pinned"===C&&!B)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};if("unplaced"===C&&B)return{ok:!1,error:"unplaced task must not carry a position",status:400,code:"TASK_INVALID_FIELD",field:"pos"};if(null===C)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};let D=w(b.dueAt,b.dueTz);if(!D.ok)return{ok:!1,error:D.error,status:400};let E=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(!E.ok)return E;let F=void 0===(g=b.source)?void 0:!g||"object"!=typeof g||Array.isArray(g)?null:"string"==typeof g.path&&g.path.trim()&&(null===g.ts||"string"==typeof g.ts)&&"string"==typeof g.text&&g.text.trim()&&"string"==typeof g.fingerprint&&g.fingerprint.trim()&&("claude"===g.engine||"codex"===g.engine)?{path:g.path,ts:g.ts,text:g.text,fingerprint:g.fingerprint,engine:g.engine}:null;if(null===F)return{ok:!1,error:"invalid task source",status:400};let G=Object.hasOwn(b,"board")?u(b.board):void 0;if(null===G)return{ok:!1,error:"invalid board visibility",status:400,code:"TASK_INVALID_FIELD",field:"board"};if("hidden"!==G&&(0,i.Qi)(a,k,d.hasBoardMembers??(()=>!1))>=o)return q("project");let H=d.now?.()??(0,h.Ec)(),I=d.id?.()??e().randomUUID(),J={id:I,project:k,status:"inbox",text:m,...n.details?{details:n.details}:{},placement:C,..."pinned"===C&&B?{pos:B}:{},...D.dueAt?{dueAt:D.dueAt,dueTz:D.dueTz}:{},...E.attachments?{attachments:E.attachments}:{},...F?{source:F}:{},...G?{board:G}:{},assignments:[],createdAt:H,updatedAt:H};return{ok:!0,tasks:[...a,J],task:J,recentCreates:A?[...c.filter(a=>a.clientRequestId!==A),{clientRequestId:A,taskId:I}].slice(-p):c,replay:!1}}function A(a,b,c,d=(0,h.Ec)(),e={}){var f,k;let m=a.findIndex(a=>a.id===b);if(m<0)return{ok:!1,error:"task not found",status:404};let p=a[m];if(e.requirePlacementGuards&&(Object.hasOwn(c,"pos")||Object.hasOwn(c,"placement"))||Object.hasOwn(c,"hide")||Object.hasOwn(c,"expectedProject")||Object.hasOwn(c,"expectedRevision")){for(let a of["expectedProject","expectedRevision"])if("string"!=typeof c[a]||!c[a].trim())return{ok:!1,status:400,code:"TASK_INVALID_FIELD",field:a,error:`${a} must be a non-empty string copied from the current task`};if(c.expectedProject!==p.project)return{ok:!1,status:409,code:"TASK_PROJECT_MISMATCH",field:"expectedProject",error:"expectedProject does not match the current task project; read the task and reconsider the request"};if(c.expectedRevision!==(0,g.d4)(p))return{ok:!1,status:409,code:"TASK_REVISION_MISMATCH",field:"expectedRevision",error:"expectedRevision is stale; read the task and reconsider the request"}}let z={};if(Object.hasOwn(c,"text")){let b=r(c.text);if(!b)return{ok:!1,error:"task text is required",status:400};if(b.length>l)return x();z.text=b,a[m].origin?.refinement==="pending"&&b!==a[m].text&&(z.origin={...a[m].origin,refinement:"titled"})}if(Object.hasOwn(c,"details")){let a=y(c.details);if(!a.ok)return a;z.details=a.details}if(Object.hasOwn(c,"status")){let a="inbox"===(f=c.status)||"assigned"===f||"blocked"===f||"done"===f?f:null;if(!a)return{ok:!1,error:"invalid task status",status:400};z.status=a}if(Object.hasOwn(c,"pos")){let a=t(c.pos);if(!a)return s(c.pos);z.pos=a,z.placement="pinned"}if(Object.hasOwn(c,"board")){let b=u(c.board);if(!b)return{ok:!1,error:"invalid board visibility",status:400,code:"TASK_INVALID_FIELD",field:"board"};let d=e.hasBoardMembers??(()=>!1);if("shown"===b&&!(0,i.d4)(p,d(p))&&(0,i.Qi)(a,p.project,d)>=o)return q("board");z.board=b}if(Object.hasOwn(c,"color")){let a="none"===(k=c.color)||"string"==typeof k&&n.includes(k)?k:null;if(!a)return{ok:!1,error:`color must be one of none, ${n.join(", ")}`,status:400,code:"TASK_INVALID_FIELD",field:"color"};z.color="none"===a?void 0:a}if(Object.hasOwn(c,"hide")){if(!0!==c.hide&&!1!==c.hide)return{ok:!1,error:"hide must be true or false",status:400,code:"TASK_INVALID_FIELD",field:"hide"};if(c.hide){let a=e.seatHolding?e.seatHolding(p):"unknown";if("holds"===a)return{ok:!1,status:409,code:"TASK_HIDE_PROTECTED",field:"hide",error:"this task holds the project's orchestrator seat conversation, which stays on the board; it cannot be hidden"};if("unknown"===a)return{ok:!1,status:503,code:"TASK_HIDE_UNVERIFIED",field:"hide",error:"the orchestrator seat record could not be read, so the hide was not applied; try again"};z.groupHidden={at:d,by:e.actor??"operator",admitted:(0,j.QE)(p.assignments)}}else z.groupHidden=void 0}if(Object.hasOwn(c,"placement")){let a=v(c.placement);if(!a)return{ok:!1,error:"invalid placement",status:400};if("pinned"===a&&!z.pos&&!p.pos)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};z.placement=a}if(Object.hasOwn(c,"dueAt")||Object.hasOwn(c,"dueTz"))if(null===c.dueAt&&void 0===c.dueTz)z.dueAt=void 0,z.dueTz=void 0;else{let a=w(c.dueAt,c.dueTz);if(!a.ok)return{ok:!1,error:a.error,status:400};z.dueAt=a.dueAt,z.dueTz=a.dueTz}let B=Object.keys(c).every(a=>"color"===a||"hide"===a||"expectedProject"===a||"expectedRevision"===a)&&(Object.hasOwn(c,"color")||Object.hasOwn(c,"hide")),C={...p,...z,updatedAt:B?p.updatedAt:d};Object.hasOwn(z,"dueAt")&&void 0===z.dueAt&&(delete C.dueAt,delete C.dueTz),"unplaced"===C.placement&&delete C.pos,Object.hasOwn(z,"details")&&void 0===z.details&&delete C.details,Object.hasOwn(z,"color")&&void 0===z.color&&delete C.color,Object.hasOwn(z,"groupHidden")&&void 0===z.groupHidden&&delete C.groupHidden;let D=a.slice();return D[m]=C,{ok:!0,tasks:D,task:C}}function B(a,b,c,d,e){let f=a,g=[];for(let a of c){if("failed"===a.state)continue;let c=(0,k.On)(a),h=(0,k.Z1)(a);if(!c||!h||(0,k.v1)(f,c))continue;let i=(0,k.IE)(f,{project:b,origin:h,identity:c},e);if(!i.ok)return i;if(d&&i.taskIds.includes(d))return{ok:!1,error:"this task is the conversation's own membership; link the conversation to another task first or delete the task",status:409};f=i.tasks,g.push(...i.created)}return{ok:!0,tasks:f,replacements:g}}function C(a,b,c={}){let d=a.find(a=>a.id===b);return d?B(a.filter(a=>a.id!==b),d.project,d.assignments,null,c):{ok:!1,error:"task not found",status:404}}function D(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 E(a,b){return null!=b.launchId?a.launchId===b.launchId:null!=b.conversationId?a.conversationId===b.conversationId:null!=b.path?a.path===b.path:null!=b.panePid&&a.panePid===b.panePid}function F(a,b,c,d=(0,h.Ec)(),e={}){let f=a.findIndex(a=>a.id===b);if(f<0)return{ok:!1,error:"task not found",status:404};let g="string"==typeof c?{path:c}:c,i=a[f],j=i.assignments.filter(a=>!E(a,g));if(j.length===i.assignments.length)return{ok:!0,tasks:a,task:i};let k=i.assignments.filter(a=>E(a,g)),l={...i,assignments:j,updatedAt:d},m=a.slice();m[f]=l;let n=B(m,i.project,k,b,{now:()=>d,...e});return n.ok?{ok:!0,tasks:n.tasks,task:l}:n}function G(a,b){return a.find(a=>a.engine===b&&"string"==typeof a.accountId)?.accountId??null}function H(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}function I(a,b,c,d=(0,h.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],g=H(f.assignments,c),i=g.some(a=>"delivered"===a.state||"spawning"===a.state||"handoff"===a.state||"linked"===a.state),j=f.status;("inbox"===j||"assigned"===j)&&(j=i?"assigned":"inbox");let k={...f,status:j,assignments:g,updatedAt:d},l=a.slice();return l[e]=k,{ok:!0,tasks:l,task:k}}},36883:(a,b,c)=>{function d(a){let b=new Set;for(let c of a)if("failed"!==c.state){for(let a of[c.clientAttemptId,c.launchId,c.conversationId,c.path].filter(a=>"string"==typeof a&&a.length>0))b.add(a)}return[...b].sort()}function e(a,b){return b.conversationIds.length||b.paths.length?a.find(a=>a.conversationId&&b.conversationIds.includes(a.conversationId)||a.path&&b.paths.includes(a.path))??null:null}c.d(b,{QE:()=>d,VE:()=>e})},58396:(a,b,c)=>{c.d(b,{HR:()=>d,Qi:()=>f,d4:()=>e});let d="emptyTaskBandsHidden";function e(a,b){return"hidden"!==a.board||b}function f(a,b,c){let d=0;for(let f of a)f.project===b&&e(f,c(f))&&(d+=1);return d}}};
|