commandmate 0.22.2 → 0.24.0
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/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +383 -374
- package/.next/app-path-routes-manifest.json +16 -15
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +9 -9
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route.js +1 -1
- package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route.js +1 -1
- package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route.js +3 -3
- package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route.js +1 -1
- package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route.js +1 -1
- package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -0
- package/.next/server/app/api/push/escalation/route.js.nft.json +1 -0
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/push/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +1 -1
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route.js +1 -1
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -4
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -4
- package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js +1 -1
- package/.next/server/app/api/templates/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route.js +1 -1
- package/.next/server/app/api/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route.js +1 -1
- package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +6 -6
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -4
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +2 -2
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +2 -2
- package/.next/server/app/more/page.js.nft.json +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +2 -2
- package/.next/server/app/repositories/page.js.nft.json +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page.js.nft.json +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +2 -2
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +2 -2
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +1 -1
- package/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +6 -6
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +16 -15
- package/.next/server/chunks/1029.js +1 -1
- package/.next/server/chunks/1068.js +1 -1
- package/.next/server/chunks/1296.js +1 -1
- package/.next/server/chunks/1366.js +1 -1
- package/.next/server/chunks/1601.js +7 -0
- package/.next/server/chunks/1825.js +1 -1
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2546.js +1 -1
- package/.next/server/chunks/3241.js +1 -0
- package/.next/server/chunks/3417.js +1 -1
- package/.next/server/chunks/3451.js +1 -1
- package/.next/server/chunks/3480.js +1 -1
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/406.js +10 -6
- package/.next/server/chunks/4393.js +1 -0
- package/.next/server/chunks/4444.js +1 -1
- package/.next/server/chunks/4455.js +1 -0
- package/.next/server/chunks/5164.js +1 -0
- package/.next/server/chunks/5959.js +5 -6
- package/.next/server/chunks/5998.js +2 -13
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6159.js +1 -1
- package/.next/server/chunks/6274.js +3 -3
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6781.js +1 -0
- package/.next/server/chunks/7458.js +6 -0
- package/.next/server/chunks/{3753.js → 7970.js} +57 -32
- package/.next/server/chunks/8536.js +1 -1
- package/.next/server/chunks/880.js +21 -0
- package/.next/server/chunks/8807.js +250 -192
- package/.next/server/chunks/9058.js +1 -1
- package/.next/server/chunks/9067.js +1 -1
- package/.next/server/chunks/9123.js +8 -8
- package/.next/server/chunks/9358.js +1 -1
- package/.next/server/chunks/9360.js +1 -1
- package/.next/server/chunks/9373.js +3 -3
- package/.next/server/chunks/9687.js +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/chunks/4322-dfd5a7119b5ba4fc.js +1 -0
- package/.next/static/chunks/{4974-eaf66770bfa9dea0.js → 4974-35592ec312322124.js} +1 -1
- package/.next/static/chunks/5229-0610b4e3288e777d.js +1 -0
- package/.next/static/chunks/6381-18a6a02a94d00d76.js +1 -0
- package/.next/static/chunks/7229.7f0f5a7032b612b4.js +1 -0
- package/.next/static/chunks/{744-fa8c0ae444c8338c.js → 744-3ad06d8c8ca482fc.js} +1 -1
- package/.next/static/chunks/app/api/app/update/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
- package/.next/static/chunks/app/api/app/update-check/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
- package/.next/static/chunks/app/api/assistant/conversation/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
- package/.next/static/chunks/app/api/assistant/current-output/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
- package/.next/static/chunks/app/api/assistant/messages/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/templates/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/todos/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/chat/page-15d13fc024d78f5d.js +1 -0
- package/.next/static/chunks/app/layout-6a26ea22d5cf03dc.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/more/page-b8ba537baeac8d5b.js +1 -0
- package/.next/static/chunks/app/page-afc64708362f31e5.js +1 -0
- package/.next/static/chunks/app/proxy/[...path]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/repositories/page-3469dacb6be7842f.js +1 -0
- package/.next/static/chunks/app/review/page-2d9cb7e068f8f35a.js +1 -0
- package/.next/static/chunks/app/sessions/page-7470c2bfd89e0df9.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/page-5e24481162f7ea78.js +1 -0
- package/.next/static/chunks/app/skills/installed/page-efd2d710a27f9735.js +1 -0
- package/.next/static/chunks/app/skills/page-0498adfc6e48684b.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-9ddcb224594f620f.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/layout-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-e611d30e47989e5d.js +1 -0
- package/.next/static/chunks/{webpack-180bebdee221b6f4.js → webpack-3534d858912a6c92.js} +1 -1
- package/.next/static/css/3ac44cfc082d02ad.css +1 -0
- package/.next/static/smu4mnL7qMf8w38n9dQJE/_buildManifest.js +1 -0
- package/.next/trace +12 -12
- package/.next/types/app/api/push/escalation/route.ts +347 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +6 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +19 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +6 -0
- package/dist/cli/commands/verify.js +6 -1
- package/dist/cli/types/api-responses.d.ts +46 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.js +17 -1
- package/dist/server/locales/en/notifications.json +20 -1
- package/dist/server/locales/ja/notifications.json +20 -1
- package/dist/server/server.js +23 -0
- package/dist/server/src/config/log-config.js +10 -1
- package/dist/server/src/config/safe-directory.js +103 -0
- package/dist/server/src/config/system-directories.js +74 -9
- package/dist/server/src/lib/cli-tools/antigravity.js +19 -2
- package/dist/server/src/lib/cli-tools/codex.js +95 -1
- package/dist/server/src/lib/cli-tools/copilot.js +30 -1
- package/dist/server/src/lib/cli-tools/gemini.js +28 -2
- package/dist/server/src/lib/cli-tools/opencode.js +51 -2
- package/dist/server/src/lib/db/db.js +2 -1
- package/dist/server/src/lib/db/migrations/index.js +2 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v56-gate-result-source.js +58 -0
- package/dist/server/src/lib/db/verification-db.js +26 -6
- package/dist/server/src/lib/detection/model-info-extractor.js +384 -0
- package/dist/server/src/lib/git/git-default-branch.js +59 -0
- package/dist/server/src/lib/hooks/agent-event-service.js +205 -0
- package/dist/server/src/lib/hooks/agent-event-types.js +7 -86
- package/dist/server/src/lib/hooks/hook-settings-generator.js +26 -11
- package/dist/server/src/lib/hooks/permission-decision-service.js +269 -0
- package/dist/server/src/lib/hooks/sources/abstain.js +78 -0
- package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +372 -0
- package/dist/server/src/lib/hooks/sources/antigravity/source.js +229 -0
- package/dist/server/src/lib/hooks/sources/antigravity/tool-id.js +16 -0
- package/dist/server/src/lib/hooks/sources/claude/source.js +150 -0
- package/dist/server/src/lib/hooks/sources/claude/tool-id.js +18 -0
- package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +465 -0
- package/dist/server/src/lib/hooks/sources/codex/source.js +143 -0
- package/dist/server/src/lib/hooks/sources/codex/tool-id.js +15 -0
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +473 -0
- package/dist/server/src/lib/hooks/sources/copilot/source.js +210 -0
- package/dist/server/src/lib/hooks/sources/copilot/tool-id.js +15 -0
- package/dist/server/src/lib/hooks/sources/define-source.js +177 -0
- package/dist/server/src/lib/hooks/sources/event-mapper.js +177 -0
- package/dist/server/src/lib/hooks/sources/gemini/event-vocabulary.js +102 -0
- package/dist/server/src/lib/hooks/sources/gemini/settings-generator.js +315 -0
- package/dist/server/src/lib/hooks/sources/gemini/shared-config-tree.js +103 -0
- package/dist/server/src/lib/hooks/sources/gemini/source.js +151 -0
- package/dist/server/src/lib/hooks/sources/gemini/tool-id.js +17 -0
- package/dist/server/src/lib/hooks/sources/hook-event-vocabulary.js +111 -0
- package/dist/server/src/lib/hooks/sources/index.js +62 -0
- package/dist/server/src/lib/hooks/sources/legacy-relay.js +84 -0
- package/dist/server/src/lib/hooks/sources/opencode/client.js +299 -0
- package/dist/server/src/lib/hooks/sources/opencode/ingest.js +267 -0
- package/dist/server/src/lib/hooks/sources/opencode/mappers.js +176 -0
- package/dist/server/src/lib/hooks/sources/opencode/payloads.js +189 -0
- package/dist/server/src/lib/hooks/sources/opencode/ports.js +295 -0
- package/dist/server/src/lib/hooks/sources/opencode/runtime.js +159 -0
- package/dist/server/src/lib/hooks/sources/opencode/source.js +253 -0
- package/dist/server/src/lib/hooks/sources/opencode/subscription.js +422 -0
- package/dist/server/src/lib/hooks/sources/opencode/tool-id.js +14 -0
- package/dist/server/src/lib/hooks/sources/opencode/turn-gate.js +193 -0
- package/dist/server/src/lib/hooks/sources/pending-decisions.js +127 -0
- package/dist/server/src/lib/hooks/sources/registry.js +111 -0
- package/dist/server/src/lib/hooks/sources/types.js +46 -0
- package/dist/server/src/lib/polling/response-checker.js +47 -0
- package/dist/server/src/lib/push/escalation-settings.js +114 -0
- package/dist/server/src/lib/push/index.js +21 -1
- package/dist/server/src/lib/push/notification-dedup.js +35 -0
- package/dist/server/src/lib/push/push-sender.js +66 -7
- package/dist/server/src/lib/push/waiting-push-notifier.js +231 -0
- package/dist/server/src/lib/realtime/waiting-broadcast.js +93 -0
- package/dist/server/src/lib/session/agent-event-state.js +260 -0
- package/dist/server/src/lib/session/agent-session-lifecycle.js +82 -0
- package/dist/server/src/lib/session/claude-session.js +10 -3
- package/dist/server/src/lib/session/current-output-builder.js +24 -0
- package/dist/server/src/lib/session/next-action-helper.js +93 -0
- package/dist/server/src/lib/session/prompt-waiting-composition.js +38 -0
- package/dist/server/src/lib/session/waiting-episode-state.js +136 -0
- package/dist/server/src/lib/session/waiting-kind.js +59 -0
- package/dist/server/src/lib/tasks/contract-message.js +218 -0
- package/dist/server/src/lib/tasks/contract-parser.js +58 -12
- package/dist/server/src/lib/verification/env-clean-gate.js +320 -0
- package/dist/server/src/lib/verification/env-snapshot.js +474 -0
- package/dist/server/src/lib/verification/gate-runner.js +844 -0
- package/dist/server/src/lib/verification/scope-gate.js +402 -0
- package/dist/server/src/lib/verification/verify-config.js +314 -0
- package/dist/server/src/lib/ws-server.js +9 -0
- package/dist/server/src/types/sidebar.js +68 -0
- package/package.json +1 -1
- package/scripts/hooks/cmate-agent-event.sh +73 -3
- package/.next/server/chunks/6283.js +0 -1
- package/.next/server/chunks/646.js +0 -21
- package/.next/server/chunks/8856.js +0 -4
- package/.next/static/XpKfn5x6H-mtTaXI9yNmb/_buildManifest.js +0 -1
- package/.next/static/chunks/4560-0917ae2e6a0e5400.js +0 -1
- package/.next/static/chunks/6488-53a3e1d78e4fe8f7.js +0 -1
- package/.next/static/chunks/7229.edb331fb9fbafa27.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/templates/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/todos/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/chat/page-83a2238ab453afaa.js +0 -1
- package/.next/static/chunks/app/layout-86574192bd3c0e6b.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/more/page-1619018cac999bbc.js +0 -1
- package/.next/static/chunks/app/page-a34d26812f085b6c.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/repositories/page-202680fe6ec169c8.js +0 -1
- package/.next/static/chunks/app/review/page-b559bfb11c46931b.js +0 -1
- package/.next/static/chunks/app/sessions/page-3fa7e767d0ab3889.js +0 -1
- package/.next/static/chunks/app/skills/[skillId]/page-10d6f983e5f06ffb.js +0 -1
- package/.next/static/chunks/app/skills/installed/page-6641f95e6a6e5f9d.js +0 -1
- package/.next/static/chunks/app/skills/page-184f8e23e31a3667.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-6041d3c3db326317.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-6dc0b8c4e808ea3e.js +0 -1
- package/.next/static/css/d3453a6876553d32.css +0 -1
- /package/.next/static/{XpKfn5x6H-mtTaXI9yNmb → smu4mnL7qMf8w38n9dQJE}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Loader and validator for `.commandmate/verify.yaml`.
|
|
4
|
+
*
|
|
5
|
+
* Canonical spec: docs/design/verification-config.md
|
|
6
|
+
* Phase 0 reference implementation: .claude/skills/cmate-verify/scripts/verify-run.sh
|
|
7
|
+
*
|
|
8
|
+
* Server-only: reads from disk, so import this from API routes / CLI only.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.VerifyConfigError = exports.GATE_ID_PATTERN = exports.DEFAULT_MAX_LOG_TAIL_BYTES = exports.DEFAULT_TIMEOUT_SEC = exports.VERIFY_CONFIG_RELATIVE_PATH = exports.RESERVED_GATE_IDS = exports.ENV_CLEAN_GATE_ID = exports.SCOPE_GATE_ID = exports.WORK_EVIDENCE_GATE_ID = void 0;
|
|
12
|
+
exports.validateGateEntries = validateGateEntries;
|
|
13
|
+
exports.loadVerifyConfig = loadVerifyConfig;
|
|
14
|
+
const fs_1 = require("fs");
|
|
15
|
+
const path_1 = require("path");
|
|
16
|
+
const yaml_1 = require("yaml");
|
|
17
|
+
/**
|
|
18
|
+
* Built-in gate that answers "is there any work here to verify?".
|
|
19
|
+
*
|
|
20
|
+
* Declared here rather than in the runner so modules that only reason *about*
|
|
21
|
+
* gate selection (task contracts) can name it without importing the engine.
|
|
22
|
+
*/
|
|
23
|
+
exports.WORK_EVIDENCE_GATE_ID = 'work-evidence';
|
|
24
|
+
/**
|
|
25
|
+
* Built-in gate that reconciles the changed files against the contract's
|
|
26
|
+
* `scope.allow` / `scope.deny` (#1546). Declared alongside work-evidence for the
|
|
27
|
+
* same reason: `lib/tasks/contract-message.ts` has to name it while resolving a
|
|
28
|
+
* contract's gate list, and must not pull the engine in to do so.
|
|
29
|
+
*/
|
|
30
|
+
exports.SCOPE_GATE_ID = 'scope';
|
|
31
|
+
/**
|
|
32
|
+
* Built-in gate that reconciles the *machine* against the snapshot taken when
|
|
33
|
+
* the task was created (#1740): listening CommandMate servers, `mcbd-*` tmux
|
|
34
|
+
* sessions, `$HOME` and `~/.commandmate`. `scope` answers what a delegation
|
|
35
|
+
* changed inside the repository; this answers what it changed outside one.
|
|
36
|
+
*/
|
|
37
|
+
exports.ENV_CLEAN_GATE_ID = 'env-clean';
|
|
38
|
+
/** Gate IDs reserved for built-in gates; using one in `gates` is a config error. */
|
|
39
|
+
exports.RESERVED_GATE_IDS = [
|
|
40
|
+
exports.WORK_EVIDENCE_GATE_ID,
|
|
41
|
+
exports.SCOPE_GATE_ID,
|
|
42
|
+
exports.ENV_CLEAN_GATE_ID,
|
|
43
|
+
];
|
|
44
|
+
exports.VERIFY_CONFIG_RELATIVE_PATH = '.commandmate/verify.yaml';
|
|
45
|
+
exports.DEFAULT_TIMEOUT_SEC = 600;
|
|
46
|
+
exports.DEFAULT_MAX_LOG_TAIL_BYTES = 8192;
|
|
47
|
+
const MIN_TIMEOUT_SEC = 1;
|
|
48
|
+
const MAX_TIMEOUT_SEC = 7200;
|
|
49
|
+
const MAX_LOG_TAIL_BYTES = 1048576;
|
|
50
|
+
/**
|
|
51
|
+
* Shape a gate id may take, wherever a gate is declared.
|
|
52
|
+
*
|
|
53
|
+
* Exported because the task contract declares gates too (#1791) and names them
|
|
54
|
+
* in `verify.gates`. A second copy of this expression would let the two
|
|
55
|
+
* declaration sites drift into accepting different ids, and a contract gate the
|
|
56
|
+
* runner refuses to resolve is a completion criterion nothing can evaluate.
|
|
57
|
+
*/
|
|
58
|
+
exports.GATE_ID_PATTERN = /^[a-z0-9][a-z0-9-]{0,31}$/;
|
|
59
|
+
const TOP_LEVEL_KEYS = ['version', 'gates', 'options'];
|
|
60
|
+
const GATE_KEYS = ['id', 'command', 'timeoutSec'];
|
|
61
|
+
const OPTION_KEYS = [
|
|
62
|
+
'baseRef',
|
|
63
|
+
'skipInPrimaryCheckout',
|
|
64
|
+
'maxLogTailBytes',
|
|
65
|
+
'requireCommit',
|
|
66
|
+
'requireEnvClean',
|
|
67
|
+
];
|
|
68
|
+
class VerifyConfigError extends Error {
|
|
69
|
+
issues;
|
|
70
|
+
constructor(issues) {
|
|
71
|
+
super(`invalid verify config:\n${issues.map((issue) => ` - ${issue}`).join('\n')}`);
|
|
72
|
+
this.name = 'VerifyConfigError';
|
|
73
|
+
this.issues = issues;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.VerifyConfigError = VerifyConfigError;
|
|
77
|
+
function isMapping(value) {
|
|
78
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The bash reference parser strips outer quotes before comparing, so `timeoutSec: "900"`
|
|
82
|
+
* means 900 there. Accept the same spelling, but only an exact decimal literal.
|
|
83
|
+
*/
|
|
84
|
+
function asInteger(value) {
|
|
85
|
+
if (typeof value === 'number')
|
|
86
|
+
return Number.isInteger(value) ? value : null;
|
|
87
|
+
if (typeof value === 'string' && /^-?\d+$/.test(value))
|
|
88
|
+
return Number(value);
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
function asBoolean(value) {
|
|
92
|
+
if (typeof value === 'boolean')
|
|
93
|
+
return value;
|
|
94
|
+
if (value === 'true')
|
|
95
|
+
return true;
|
|
96
|
+
if (value === 'false')
|
|
97
|
+
return false;
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
function describe(value) {
|
|
101
|
+
if (value === undefined)
|
|
102
|
+
return 'nothing';
|
|
103
|
+
if (value === null)
|
|
104
|
+
return 'null';
|
|
105
|
+
if (typeof value === 'string')
|
|
106
|
+
return JSON.stringify(value);
|
|
107
|
+
if (Array.isArray(value))
|
|
108
|
+
return 'a list';
|
|
109
|
+
if (typeof value === 'object')
|
|
110
|
+
return 'a mapping';
|
|
111
|
+
return String(value);
|
|
112
|
+
}
|
|
113
|
+
function collectUnknownKeys(mapping, allowed, at, issues) {
|
|
114
|
+
for (const key of Object.keys(mapping)) {
|
|
115
|
+
if (!allowed.includes(key)) {
|
|
116
|
+
issues.push(`${at}: unknown key "${key}" (v1 is a closed set)`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Validate a list of `{ id, command, timeoutSec }` entries.
|
|
122
|
+
*
|
|
123
|
+
* Shared with the task contract's `verify.gateDefinitions` (#1791), which
|
|
124
|
+
* declares gates in the same shape and must be held to the same constraints —
|
|
125
|
+
* id pattern, reserved ids, duplicates, integer timeout in range. Calling this
|
|
126
|
+
* is what makes "the same constraints" a fact rather than a comment: a contract
|
|
127
|
+
* gate accepted here is one the runner can execute and the report can name.
|
|
128
|
+
*
|
|
129
|
+
* Deliberately does *not* decide whether the list may be absent or empty. That
|
|
130
|
+
* is the caller's rule: verify.yaml requires at least one gate, a contract that
|
|
131
|
+
* declares none is the normal case.
|
|
132
|
+
*
|
|
133
|
+
* @param at path prefix for issue messages (`gates`, `verify.gateDefinitions`)
|
|
134
|
+
* @returns the accepted entries; an entry that produced an issue is dropped so
|
|
135
|
+
* the result never carries a value that failed validation
|
|
136
|
+
*/
|
|
137
|
+
function validateGateEntries(value, at, issues) {
|
|
138
|
+
if (!Array.isArray(value)) {
|
|
139
|
+
issues.push(`${at}: must be a list (got ${describe(value)})`);
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
const gates = [];
|
|
143
|
+
const seenIds = new Set();
|
|
144
|
+
value.forEach((entry, index) => {
|
|
145
|
+
const entryAt = `${at}[${index}]`;
|
|
146
|
+
validateGateEntry(entry, entryAt, seenIds, gates, issues);
|
|
147
|
+
});
|
|
148
|
+
return gates;
|
|
149
|
+
}
|
|
150
|
+
/** One gate entry; accepted entries are appended to `gates`. */
|
|
151
|
+
function validateGateEntry(entry, at, seenIds, gates, issues) {
|
|
152
|
+
const issuesBefore = issues.length;
|
|
153
|
+
if (!isMapping(entry)) {
|
|
154
|
+
issues.push(`${at}: must be a mapping (got ${describe(entry)})`);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
collectUnknownKeys(entry, GATE_KEYS, at, issues);
|
|
158
|
+
if (typeof entry.id !== 'string' || entry.id === '') {
|
|
159
|
+
issues.push(`${at}.id: required, must be a non-empty string (got ${describe(entry.id)})`);
|
|
160
|
+
}
|
|
161
|
+
else if (!exports.GATE_ID_PATTERN.test(entry.id)) {
|
|
162
|
+
issues.push(`${at}.id: "${entry.id}" must match ${exports.GATE_ID_PATTERN.source}`);
|
|
163
|
+
}
|
|
164
|
+
else if (exports.RESERVED_GATE_IDS.includes(entry.id)) {
|
|
165
|
+
issues.push(`${at}.id: "${entry.id}" is reserved for a built-in gate`);
|
|
166
|
+
}
|
|
167
|
+
else if (seenIds.has(entry.id)) {
|
|
168
|
+
issues.push(`${at}.id: duplicate gate id "${entry.id}"`);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
seenIds.add(entry.id);
|
|
172
|
+
}
|
|
173
|
+
if (typeof entry.command !== 'string' || entry.command.trim() === '') {
|
|
174
|
+
issues.push(`${at}.command: required, must be a non-empty string (got ${describe(entry.command)})`);
|
|
175
|
+
}
|
|
176
|
+
let timeoutSec = exports.DEFAULT_TIMEOUT_SEC;
|
|
177
|
+
if (entry.timeoutSec !== undefined) {
|
|
178
|
+
const parsed = asInteger(entry.timeoutSec);
|
|
179
|
+
if (parsed === null) {
|
|
180
|
+
issues.push(`${at}.timeoutSec: must be an integer (got ${describe(entry.timeoutSec)})`);
|
|
181
|
+
}
|
|
182
|
+
else if (parsed < MIN_TIMEOUT_SEC || parsed > MAX_TIMEOUT_SEC) {
|
|
183
|
+
issues.push(`${at}.timeoutSec: must be ${MIN_TIMEOUT_SEC}..${MAX_TIMEOUT_SEC} (got ${parsed})`);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
timeoutSec = parsed;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (issues.length === issuesBefore) {
|
|
190
|
+
gates.push({ id: entry.id, command: entry.command, timeoutSec });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function validateGates(value, issues) {
|
|
194
|
+
if (value === undefined || value === null) {
|
|
195
|
+
issues.push('gates: required, at least one gate must be defined');
|
|
196
|
+
return [];
|
|
197
|
+
}
|
|
198
|
+
if (Array.isArray(value) && value.length === 0) {
|
|
199
|
+
issues.push('gates: at least one gate must be defined');
|
|
200
|
+
return [];
|
|
201
|
+
}
|
|
202
|
+
return validateGateEntries(value, 'gates', issues);
|
|
203
|
+
}
|
|
204
|
+
function validateOptions(value, issues) {
|
|
205
|
+
const options = {
|
|
206
|
+
baseRef: null,
|
|
207
|
+
skipInPrimaryCheckout: true,
|
|
208
|
+
maxLogTailBytes: exports.DEFAULT_MAX_LOG_TAIL_BYTES,
|
|
209
|
+
requireCommit: false,
|
|
210
|
+
requireEnvClean: false,
|
|
211
|
+
};
|
|
212
|
+
// A childless `options:` key parses as null and means "all defaults".
|
|
213
|
+
if (value === undefined || value === null)
|
|
214
|
+
return options;
|
|
215
|
+
if (!isMapping(value)) {
|
|
216
|
+
issues.push(`options: must be a mapping (got ${describe(value)})`);
|
|
217
|
+
return options;
|
|
218
|
+
}
|
|
219
|
+
collectUnknownKeys(value, OPTION_KEYS, 'options', issues);
|
|
220
|
+
if (value.baseRef !== undefined) {
|
|
221
|
+
if (typeof value.baseRef !== 'string' || value.baseRef.trim() === '') {
|
|
222
|
+
issues.push(`options.baseRef: must be a non-empty string (got ${describe(value.baseRef)})`);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
options.baseRef = value.baseRef;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (value.skipInPrimaryCheckout !== undefined) {
|
|
229
|
+
const parsed = asBoolean(value.skipInPrimaryCheckout);
|
|
230
|
+
if (parsed === null) {
|
|
231
|
+
issues.push(`options.skipInPrimaryCheckout: must be true or false (got ${describe(value.skipInPrimaryCheckout)})`);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
options.skipInPrimaryCheckout = parsed;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (value.requireCommit !== undefined) {
|
|
238
|
+
const parsed = asBoolean(value.requireCommit);
|
|
239
|
+
if (parsed === null) {
|
|
240
|
+
issues.push(`options.requireCommit: must be true or false (got ${describe(value.requireCommit)})`);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
options.requireCommit = parsed;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (value.requireEnvClean !== undefined) {
|
|
247
|
+
const parsed = asBoolean(value.requireEnvClean);
|
|
248
|
+
if (parsed === null) {
|
|
249
|
+
issues.push(`options.requireEnvClean: must be true or false (got ${describe(value.requireEnvClean)})`);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
options.requireEnvClean = parsed;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (value.maxLogTailBytes !== undefined) {
|
|
256
|
+
const parsed = asInteger(value.maxLogTailBytes);
|
|
257
|
+
if (parsed === null) {
|
|
258
|
+
issues.push(`options.maxLogTailBytes: must be an integer (got ${describe(value.maxLogTailBytes)})`);
|
|
259
|
+
}
|
|
260
|
+
else if (parsed < 0 || parsed > MAX_LOG_TAIL_BYTES) {
|
|
261
|
+
issues.push(`options.maxLogTailBytes: must be 0..${MAX_LOG_TAIL_BYTES} (got ${parsed})`);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
options.maxLogTailBytes = parsed;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return options;
|
|
268
|
+
}
|
|
269
|
+
function parseVerifyConfig(raw, configPath) {
|
|
270
|
+
let document;
|
|
271
|
+
try {
|
|
272
|
+
document = (0, yaml_1.parse)(raw);
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
throw new VerifyConfigError([`${configPath}: YAML parse error: ${error.message}`]);
|
|
276
|
+
}
|
|
277
|
+
if (!isMapping(document)) {
|
|
278
|
+
throw new VerifyConfigError([
|
|
279
|
+
`${configPath}: expected a YAML mapping at the top level (got ${describe(document)})`,
|
|
280
|
+
]);
|
|
281
|
+
}
|
|
282
|
+
const issues = [];
|
|
283
|
+
collectUnknownKeys(document, TOP_LEVEL_KEYS, 'top level', issues);
|
|
284
|
+
if (!('version' in document)) {
|
|
285
|
+
issues.push('version: required, v1 configs must declare "version: 1"');
|
|
286
|
+
}
|
|
287
|
+
else if (asInteger(document.version) !== 1) {
|
|
288
|
+
issues.push(`version: must be 1 (got ${describe(document.version)})`);
|
|
289
|
+
}
|
|
290
|
+
const gates = validateGates(document.gates, issues);
|
|
291
|
+
const options = validateOptions(document.options, issues);
|
|
292
|
+
if (issues.length > 0)
|
|
293
|
+
throw new VerifyConfigError(issues);
|
|
294
|
+
return { version: 1, gates, options };
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Read and validate `<repoPath>/.commandmate/verify.yaml`.
|
|
298
|
+
*
|
|
299
|
+
* @returns the validated config, or null when the file does not exist
|
|
300
|
+
* @throws VerifyConfigError with every violation collected in `issues`
|
|
301
|
+
*/
|
|
302
|
+
function loadVerifyConfig(repoPath) {
|
|
303
|
+
const configPath = (0, path_1.join)(repoPath, exports.VERIFY_CONFIG_RELATIVE_PATH);
|
|
304
|
+
let raw;
|
|
305
|
+
try {
|
|
306
|
+
raw = (0, fs_1.readFileSync)(configPath, 'utf8');
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
if (error.code === 'ENOENT')
|
|
310
|
+
return null;
|
|
311
|
+
throw new VerifyConfigError([`${configPath}: ${error.message}`]);
|
|
312
|
+
}
|
|
313
|
+
return parseVerifyConfig(raw, configPath);
|
|
314
|
+
}
|
|
@@ -28,6 +28,7 @@ const tmux_control_mode_flags_1 = require("./tmux/tmux-control-mode-flags");
|
|
|
28
28
|
const cache_1 = require("./external-apps/cache");
|
|
29
29
|
const version_checker_1 = require("../lib/version-checker");
|
|
30
30
|
const types_2 = require("../lib/realtime/types");
|
|
31
|
+
const waiting_broadcast_1 = require("../lib/realtime/waiting-broadcast");
|
|
31
32
|
const logger_1 = require("../lib/logger");
|
|
32
33
|
const logger = (0, logger_1.createLogger)('ws-server');
|
|
33
34
|
// Global state
|
|
@@ -231,6 +232,11 @@ function isExpectedWebSocketError(error) {
|
|
|
231
232
|
*/
|
|
232
233
|
function setupWebSocket(server) {
|
|
233
234
|
wss = new ws_1.WebSocketServer({ noServer: true });
|
|
235
|
+
// Issue #1788: publish the waiting edge to the worktree room. Started here
|
|
236
|
+
// rather than at module scope so the listener's lifetime matches the server's
|
|
237
|
+
// — and so the closure it registers is the one holding *this* bundle's `rooms`
|
|
238
|
+
// map, which is what a broadcast has to reach.
|
|
239
|
+
(0, waiting_broadcast_1.startWaitingStatusBroadcast)(handleBroadcast);
|
|
234
240
|
// Handle upgrade requests - only accept app WebSocket connections, not Next.js HMR
|
|
235
241
|
server.on('upgrade', (request, socket, head) => {
|
|
236
242
|
const pathname = request.url || '/';
|
|
@@ -881,6 +887,9 @@ function cleanupRooms(worktreeIds) {
|
|
|
881
887
|
* Used for testing and graceful shutdown
|
|
882
888
|
*/
|
|
883
889
|
function closeWebSocket() {
|
|
890
|
+
// Issue #1788: drop the waiting-edge subscription first — it outlives `wss`
|
|
891
|
+
// otherwise, and CI shares one process across the whole suite.
|
|
892
|
+
(0, waiting_broadcast_1.stopWaitingStatusBroadcast)();
|
|
884
893
|
if (wss) {
|
|
885
894
|
// Close all client connections
|
|
886
895
|
clients.forEach((clientInfo) => {
|
|
@@ -8,12 +8,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.deriveCliStatus = void 0;
|
|
9
9
|
exports.aggregateCliStatus = aggregateCliStatus;
|
|
10
10
|
exports.formatCliStatusBreakdown = formatCliStatusBreakdown;
|
|
11
|
+
exports.deriveWorktreeWaitingDetail = deriveWorktreeWaitingDetail;
|
|
11
12
|
exports.calculateHasUnread = calculateHasUnread;
|
|
12
13
|
exports.toBranchItem = toBranchItem;
|
|
13
14
|
const types_1 = require("../lib/cli-tools/types");
|
|
14
15
|
const selected_agents_validator_1 = require("../lib/selected-agents-validator");
|
|
15
16
|
const status_mapping_1 = require("../lib/session/status-mapping");
|
|
16
17
|
Object.defineProperty(exports, "deriveCliStatus", { enumerable: true, get: function () { return status_mapping_1.deriveCliStatus; } });
|
|
18
|
+
const next_action_helper_1 = require("../lib/session/next-action-helper");
|
|
19
|
+
/**
|
|
20
|
+
* `BranchStatus` → `SessionStatus`, so the sidebar can reuse `getNextAction`
|
|
21
|
+
* (Issue #1787) instead of growing a second next-action table.
|
|
22
|
+
*
|
|
23
|
+
* `generating` folds into `running`: `SessionStatus` has no fifth value, and the
|
|
24
|
+
* next action is identical for both ("it is working, leave it alone").
|
|
25
|
+
* `idle` maps to `null` — `getNextAction` distinguishes "no session" from
|
|
26
|
+
* "session sitting idle" only through null, and both mean "start it".
|
|
27
|
+
*/
|
|
28
|
+
const BRANCH_STATUS_TO_SESSION_STATUS = {
|
|
29
|
+
idle: null,
|
|
30
|
+
ready: 'ready',
|
|
31
|
+
running: 'running',
|
|
32
|
+
generating: 'running',
|
|
33
|
+
waiting: 'waiting',
|
|
34
|
+
};
|
|
17
35
|
/**
|
|
18
36
|
* Aggregate per-agent CLI statuses into a single representative BranchStatus
|
|
19
37
|
* for the sidebar's single status indicator (Issue #867).
|
|
@@ -65,6 +83,42 @@ function formatCliStatusBreakdown(cliStatus, labels) {
|
|
|
65
83
|
.map(([instanceId, status]) => `${labels?.[instanceId] ?? (0, types_1.getCliToolDisplayNameSafe)(instanceId, instanceId)}: ${status ?? 'idle'}`)
|
|
66
84
|
.join(', ');
|
|
67
85
|
}
|
|
86
|
+
/** Precedence for folding per-instance kinds: answerable-now wins (Issue #1786). */
|
|
87
|
+
const WAITING_KIND_PRECEDENCE = [
|
|
88
|
+
'prompt',
|
|
89
|
+
'menu',
|
|
90
|
+
'unclassified',
|
|
91
|
+
];
|
|
92
|
+
/**
|
|
93
|
+
* Fold every instance's {@link SessionWaitingDetail} into one worktree-level
|
|
94
|
+
* verdict (Issue #1787).
|
|
95
|
+
*
|
|
96
|
+
* Reads `sessionStatusByInstance` when present and falls back to
|
|
97
|
+
* `sessionStatusByCli`, matching how `deriveSidebarCliStatus` picks its source
|
|
98
|
+
* — the two must not disagree about which map is authoritative, or the dot and
|
|
99
|
+
* its emphasis would come from different snapshots.
|
|
100
|
+
*
|
|
101
|
+
* The kind fold uses `prompt > menu > unclassified` (the same precedence the
|
|
102
|
+
* server uses per CLI tool): with two agents waiting, the one the user can
|
|
103
|
+
* answer from the app is the one worth shouting about.
|
|
104
|
+
*
|
|
105
|
+
* @param worktree - Source worktree data (any vintage of the payload)
|
|
106
|
+
* @returns The folded waiting detail; `{ waitingKind: null, awaitingInstruction: false }`
|
|
107
|
+
* when nothing in the payload carries the #1786 fields
|
|
108
|
+
*/
|
|
109
|
+
function deriveWorktreeWaitingDetail(worktree) {
|
|
110
|
+
const entries = Object.values(worktree.sessionStatusByInstance ?? worktree.sessionStatusByCli ?? {}).filter((entry) => entry !== undefined);
|
|
111
|
+
let awaitingInstruction = false;
|
|
112
|
+
const kinds = new Set();
|
|
113
|
+
for (const entry of entries) {
|
|
114
|
+
if (entry.awaitingInstruction)
|
|
115
|
+
awaitingInstruction = true;
|
|
116
|
+
if (entry.waitingKind)
|
|
117
|
+
kinds.add(entry.waitingKind);
|
|
118
|
+
}
|
|
119
|
+
const waitingKind = WAITING_KIND_PRECEDENCE.find((kind) => kinds.has(kind)) ?? null;
|
|
120
|
+
return { waitingKind, awaitingInstruction };
|
|
121
|
+
}
|
|
68
122
|
/**
|
|
69
123
|
* Calculate whether a worktree has unread messages
|
|
70
124
|
*
|
|
@@ -178,6 +232,10 @@ function toBranchItem(worktree) {
|
|
|
178
232
|
// reflected. Falls back to the legacy selectedAgents path when no per-instance
|
|
179
233
|
// data is present.
|
|
180
234
|
const { cliStatus, cliStatusLabels } = deriveSidebarCliStatus(worktree);
|
|
235
|
+
// Issue #1787: the row's emphasis and its "what do I do next" label both come
|
|
236
|
+
// from the AGGREGATED status, matching the single dot the row renders.
|
|
237
|
+
const aggregated = aggregateCliStatus(cliStatus);
|
|
238
|
+
const { waitingKind, awaitingInstruction } = deriveWorktreeWaitingDetail(worktree);
|
|
181
239
|
return {
|
|
182
240
|
id: worktree.id,
|
|
183
241
|
name: worktree.name,
|
|
@@ -189,5 +247,15 @@ function toBranchItem(worktree) {
|
|
|
189
247
|
cliStatus,
|
|
190
248
|
cliStatusLabels,
|
|
191
249
|
worktreePath: worktree.path,
|
|
250
|
+
waitingKind,
|
|
251
|
+
awaitingInstruction,
|
|
252
|
+
// `promptType` mirrors what `/api/worktrees` does with the same data
|
|
253
|
+
// (`isWaitingForResponse ? 'approval' : null`) rather than branching on
|
|
254
|
+
// `waitingKind`: the card and the sidebar row show the same worktree, and
|
|
255
|
+
// one saying "Approve / Reject" while the other says "Reply to prompt"
|
|
256
|
+
// would be a bug the user cannot explain. `isStalled` is server-only
|
|
257
|
+
// (`isWorktreeStalled` needs the detector's timers), so the sidebar never
|
|
258
|
+
// claims "Check stalled".
|
|
259
|
+
nextActionKey: (0, next_action_helper_1.getNextAction)(BRANCH_STATUS_TO_SESSION_STATUS[aggregated], aggregated === 'waiting' ? 'approval' : null, false),
|
|
192
260
|
};
|
|
193
261
|
}
|
package/package.json
CHANGED
|
@@ -6,6 +6,21 @@
|
|
|
6
6
|
# `notify`) so the server learns that a turn ended from the agent itself rather
|
|
7
7
|
# than by reading the terminal. See docs/user-guide/agent-event-hooks.md.
|
|
8
8
|
#
|
|
9
|
+
# **This script is on the critical path for every tool except Claude Code.**
|
|
10
|
+
# Issue #1757 measured `type:"http"` handlers against codex, copilot, gemini and
|
|
11
|
+
# antigravity and none of the four accept them — codex is the worst case, where
|
|
12
|
+
# a single `"type":"http"` entry makes it discard the whole hooks.json and every
|
|
13
|
+
# event dies with one line on stderr. So `type:"command"` running this script is
|
|
14
|
+
# the only delivery mechanism those tools have, and a word this script refuses
|
|
15
|
+
# is a word that tool can never report.
|
|
16
|
+
#
|
|
17
|
+
# Which is what Issue #1759 fixed here. Before it, `--event` accepted five words
|
|
18
|
+
# while the API accepted seven: `pre_tool_use` and `post_tool_use`, added to
|
|
19
|
+
# `AGENT_EVENT_TYPES` by #1726, exited 2 rather than posting. `map_event_name`
|
|
20
|
+
# also knew only Claude's spellings, so gemini's `BeforeTool` / `AfterAgent`
|
|
21
|
+
# family died as "unrecognized hook event name". Both are now complete: seven
|
|
22
|
+
# words, and the native spellings of all five push-mode tools.
|
|
23
|
+
#
|
|
9
24
|
# Written for bash 3.2 — the version macOS still ships — so no associative
|
|
10
25
|
# arrays, `mapfile`, or `${var^^}`.
|
|
11
26
|
#
|
|
@@ -24,11 +39,12 @@ Usage: cmate-agent-event.sh [options] [JSON]
|
|
|
24
39
|
Options:
|
|
25
40
|
--tool ID Agent CLI id (default: $CM_AGENT_TOOL, else "claude")
|
|
26
41
|
--event EVENT stop | notification | session_start | user_prompt_submit |
|
|
27
|
-
session_end (default: "stop")
|
|
42
|
+
session_end | pre_tool_use | post_tool_use (default: "stop")
|
|
28
43
|
--cwd PATH Agent working directory (default: $CLAUDE_PROJECT_DIR, else $PWD)
|
|
29
44
|
--session-id ID Opaque agent session id
|
|
30
45
|
--worktree-id ID CommandMate worktree id; skips cwd-based resolution
|
|
31
46
|
--instance-id ID Agent instance id; without it the event lands on the primary
|
|
47
|
+
--detail TEXT Event subtype; without it, read from the payload
|
|
32
48
|
--json JSON Hook payload to read cwd/session/event from
|
|
33
49
|
--stdin-json Read that payload from stdin instead
|
|
34
50
|
--url URL Endpoint (default: http://$CM_HOST:$CM_PORT/api/hooks/agent-event)
|
|
@@ -61,13 +77,37 @@ json_escape() {
|
|
|
61
77
|
}
|
|
62
78
|
|
|
63
79
|
# Map an agent's own event name onto the API vocabulary.
|
|
80
|
+
#
|
|
81
|
+
# The spellings come from Issue #1757's live capture of all four tools
|
|
82
|
+
# (docs/design/agent-hooks-phase4-live-verification.md §8.1) and #1721's of
|
|
83
|
+
# Claude. Three dialects share this function because a single relay serves every
|
|
84
|
+
# tool; a name that is not below is refused rather than guessed at, so a tool
|
|
85
|
+
# whose vocabulary grows fails loudly instead of filing an unknown event under
|
|
86
|
+
# something adjacent.
|
|
87
|
+
#
|
|
88
|
+
# Deliberately absent: `PreInvocation` / `PostInvocation` (antigravity),
|
|
89
|
+
# `BeforeModel` / `AfterModel` / `PreCompress` (gemini), `PreCompact` /
|
|
90
|
+
# `PostCompact` / `SubagentStart` (codex). They are real events with no word in
|
|
91
|
+
# AGENT_EVENT_TYPES, and inventing one for them here would put a meaning in the
|
|
92
|
+
# API that no consumer agreed to.
|
|
64
93
|
map_event_name() {
|
|
65
94
|
case "$1" in
|
|
95
|
+
# Claude Code / codex / copilot / antigravity — the CamelCase dialect.
|
|
96
|
+
# (antigravity never reaches this function from a payload: its payloads carry
|
|
97
|
+
# no event name at all, so its hooks must pass --event. #1757 R2.)
|
|
66
98
|
Stop|SubagentStop|agent-turn-complete) printf 'stop' ;;
|
|
67
99
|
Notification) printf 'notification' ;;
|
|
68
100
|
SessionStart) printf 'session_start' ;;
|
|
69
101
|
SessionEnd) printf 'session_end' ;;
|
|
70
102
|
UserPromptSubmit) printf 'user_prompt_submit' ;;
|
|
103
|
+
PreToolUse) printf 'pre_tool_use' ;;
|
|
104
|
+
PostToolUse) printf 'post_tool_use' ;;
|
|
105
|
+
# gemini renames four of the seven. The table is the CLI's own, read out of
|
|
106
|
+
# `gemini hooks migrate --from-claude` rather than guessed (#1757 §5.3.1).
|
|
107
|
+
BeforeAgent) printf 'user_prompt_submit' ;;
|
|
108
|
+
AfterAgent) printf 'stop' ;;
|
|
109
|
+
BeforeTool) printf 'pre_tool_use' ;;
|
|
110
|
+
AfterTool) printf 'post_tool_use' ;;
|
|
71
111
|
*) printf '' ;;
|
|
72
112
|
esac
|
|
73
113
|
}
|
|
@@ -75,11 +115,15 @@ map_event_name() {
|
|
|
75
115
|
# The event's subtype, where it has one. Each event spells it differently and
|
|
76
116
|
# none of them share a field. Notification is judged on notification_type, never
|
|
77
117
|
# on the human-facing "message" (Issue #1721, D3).
|
|
118
|
+
#
|
|
119
|
+
# pre_tool_use / post_tool_use carry `tool_name`, which is what the receiver
|
|
120
|
+
# stores as the detail and what a matcher is tested against (Issue #1726).
|
|
78
121
|
detail_field_for_event() {
|
|
79
122
|
case "$1" in
|
|
80
123
|
notification) printf 'notification_type' ;;
|
|
81
124
|
session_end) printf 'reason' ;;
|
|
82
125
|
session_start) printf 'source' ;;
|
|
126
|
+
pre_tool_use|post_tool_use) printf 'tool_name' ;;
|
|
83
127
|
*) printf '' ;;
|
|
84
128
|
esac
|
|
85
129
|
}
|
|
@@ -104,6 +148,7 @@ while [ $# -gt 0 ]; do
|
|
|
104
148
|
--session-id) [ $# -ge 2 ] || die "--session-id requires a value"; SESSION_ID="$2"; shift 2 ;;
|
|
105
149
|
--worktree-id) [ $# -ge 2 ] || die "--worktree-id requires a value"; WORKTREE_ID="$2"; shift 2 ;;
|
|
106
150
|
--instance-id) [ $# -ge 2 ] || die "--instance-id requires a value"; INSTANCE_ID="$2"; shift 2 ;;
|
|
151
|
+
--detail) [ $# -ge 2 ] || die "--detail requires a value"; DETAIL="$2"; shift 2 ;;
|
|
107
152
|
--json) [ $# -ge 2 ] || die "--json requires a value"; HOOK_JSON="$2"; shift 2 ;;
|
|
108
153
|
--url) [ $# -ge 2 ] || die "--url requires a value"; URL="$2"; shift 2 ;;
|
|
109
154
|
--stdin-json) READ_STDIN=1; shift ;;
|
|
@@ -131,9 +176,21 @@ if [ -n "$HOOK_JSON" ]; then
|
|
|
131
176
|
[ -n "$EVENT" ] || die "unrecognized hook event name: $JSON_EVENT"
|
|
132
177
|
fi
|
|
133
178
|
fi
|
|
179
|
+
# Session id spellings, in preference order. `session_id` covers Claude,
|
|
180
|
+
# codex, copilot and gemini; `conversationId` is antigravity's protojson name
|
|
181
|
+
# for the same thing (#1757 R4). The two turn-ids are last because they
|
|
182
|
+
# identify a turn rather than a session and are only worth sending when
|
|
183
|
+
# nothing better exists: `turn_id` is codex's, `turn-id` predates #1757 and is
|
|
184
|
+
# kept so a hook configured against an older release keeps working.
|
|
134
185
|
if [ -z "$SESSION_ID" ]; then
|
|
135
186
|
SESSION_ID="$(json_string_field "$HOOK_JSON" 'session_id')"
|
|
136
187
|
fi
|
|
188
|
+
if [ -z "$SESSION_ID" ]; then
|
|
189
|
+
SESSION_ID="$(json_string_field "$HOOK_JSON" 'conversationId')"
|
|
190
|
+
fi
|
|
191
|
+
if [ -z "$SESSION_ID" ]; then
|
|
192
|
+
SESSION_ID="$(json_string_field "$HOOK_JSON" 'turn_id')"
|
|
193
|
+
fi
|
|
137
194
|
if [ -z "$SESSION_ID" ]; then
|
|
138
195
|
SESSION_ID="$(json_string_field "$HOOK_JSON" 'turn-id')"
|
|
139
196
|
fi
|
|
@@ -141,9 +198,12 @@ fi
|
|
|
141
198
|
|
|
142
199
|
[ -n "$EVENT" ] || EVENT="stop"
|
|
143
200
|
|
|
201
|
+
# All seven words of AGENT_EVENT_TYPES. Kept in the same order as
|
|
202
|
+
# src/lib/hooks/agent-event-types.ts so the two are read side by side; a word
|
|
203
|
+
# missing here is a word the API accepts and the relay silently cannot send.
|
|
144
204
|
case "$EVENT" in
|
|
145
|
-
stop|notification|session_start|user_prompt_submit|session_end) ;;
|
|
146
|
-
*) die "--event must be one of: stop, notification, session_start, user_prompt_submit, session_end (got \"$EVENT\")" ;;
|
|
205
|
+
stop|notification|session_start|user_prompt_submit|session_end|pre_tool_use|post_tool_use) ;;
|
|
206
|
+
*) die "--event must be one of: stop, notification, session_start, user_prompt_submit, session_end, pre_tool_use, post_tool_use (got \"$EVENT\")" ;;
|
|
147
207
|
esac
|
|
148
208
|
|
|
149
209
|
if [ -z "$DETAIL" ] && [ -n "$HOOK_JSON" ]; then
|
|
@@ -153,6 +213,16 @@ if [ -z "$DETAIL" ] && [ -n "$HOOK_JSON" ]; then
|
|
|
153
213
|
fi
|
|
154
214
|
fi
|
|
155
215
|
|
|
216
|
+
# antigravity nests the tool name under `toolCall.name` and has no `tool_name`
|
|
217
|
+
# at all (#1757 R3: its payload is camelCase protojson throughout). Only
|
|
218
|
+
# consulted when the flat field produced nothing, so no other tool's payload can
|
|
219
|
+
# reach it.
|
|
220
|
+
if [ -z "$DETAIL" ] && [ -n "$HOOK_JSON" ]; then
|
|
221
|
+
case "$EVENT" in
|
|
222
|
+
pre_tool_use|post_tool_use) DETAIL="$(json_string_field "$HOOK_JSON" 'name')" ;;
|
|
223
|
+
esac
|
|
224
|
+
fi
|
|
225
|
+
|
|
156
226
|
[ -n "$TOOL" ] || die "--tool must not be empty"
|
|
157
227
|
|
|
158
228
|
if [ -z "$CWD" ]; then
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=6283,exports.ids=[6283],exports.modules={26283:(a,b,c)=>{c.d(b,{kT:()=>Y,aU:()=>j,l8:()=>K,hx:()=>n,XY:()=>L,F0:()=>aa,Fw:()=>ab,CX:()=>q,Dd:()=>y,pn:()=>z,gm:()=>r,Jn:()=>x,aW:()=>A,Du:()=>O,Mi:()=>R,J7:()=>S,wN:()=>C,kD:()=>I,uA:()=>F,sy:()=>E,Md:()=>H,LO:()=>J,sx:()=>N,fW:()=>B,KO:()=>ac,ut:()=>$,GT:()=>p,_X:()=>function a(b){switch(b){case"claude":return{promptPattern:n,separatorPattern:o,thinkingPattern:i,skipPatterns:[/^─{10,}$/,/^[>❯]\s*$/,i,/^\s*[⎿⏋]\s+Tip:/,/^\s*Tip:/,/^\s*\?\s*for shortcuts/,/to interrupt\)/,B]};case"codex":return{promptPattern:r,separatorPattern:w,thinkingPattern:k,skipPatterns:[/^─.*─+$/,/^›\s*$/,/^›\s+(Implement|Find and fix|Type)/,k,/^\s*\d+%\s+context left/,/^\s*for shortcuts$/,/╭─+╮/,/╰─+╯/,/•\s*Ran\s+/,/^\s*└/,/^\s*│/,/\(.*esc to interrupt\)/,B]};case"gemini":return{promptPattern:C,separatorPattern:/^[─━]{3,}$/m,thinkingPattern:D,skipPatterns:[C,D,/^\s*$/,/Gemini\s+\d+\.\d+/,B]};case"vibe-local":return{promptPattern:T,separatorPattern:/^[·]{10,}$/m,thinkingPattern:U,skipPatterns:[T,U,/^\s*$/,/vibe-local|vibe-coder/,/ctx:\s*\d+%/,/Model\s+\w/,/Engine\s+\w/,/Mode\s+/,/RAM\s+/,/CWD\s+/,/^[·]{10,}$/,/✦\s*Ready/,/ESC:\s*stop/,B]};case"opencode":return{promptPattern:E,separatorPattern:M,thinkingPattern:G,skipPatterns:[...N]};case"copilot":return{promptPattern:O,separatorPattern:Q,thinkingPattern:P,skipPatterns:[...S]};case"antigravity":return{promptPattern:V,separatorPattern:X,thinkingPattern:W,skipPatterns:[...Z]};default:return a("claude")}},Qh:()=>v,zZ:()=>u,DR:()=>m,aJ:()=>f,_A:()=>_});var d=c(72626);let e=/\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\[[0-9;]*m/g;function f(a){return a.replace(e,"")}var g=c(46423);let h=(0,d.h)("cli-patterns"),i=RegExp(`[✻✽⏺\xb7∴✢✳✶⦿◉●○◌◎⊙⊚⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]\\s+.+…|esc to interrupt`,"m"),j=/esc to interrupt/,k=/•\s*(Planning|Searching|Exploring|Running|Thinking|Working|Reading|Writing|Analyzing|Ran|Deciding)/m,l=/esc to interrupt/;function m(a,b){let c=f(a.slice(Math.max(0,a.length-b)).join("\n"));if(l.test(c))return!0;let d=-1;for(let b=a.length-1;b>=Math.max(0,a.length-8);b--)if(r.test(f(a[b]))){d=b;break}if(d<0)return k.test(c);let e=Math.max(0,d-g.$+1),h=f(a.slice(e,d+1).join("\n"));return k.test(h)}let n=/^[>❯](\s*$|\s+\S)/m,o=/^─{10,}$/m;function p(a){let b=a=>/^─{10,}$/.test(f(a).trimEnd()),c=a.length-1;for(;c>=0&&""===a[c].trim();)c--;if(c<0)return -1;let d=-1;for(let e=c;e>=Math.max(0,c-4);e--)if(b(a[e])){d=e;break}if(d<0)return -1;let e=-1;for(let c=d-1;c>=Math.max(0,d-40);c--)if(b(a[c])){e=c;break}return e<0||!/^[>❯]/.test(f(a[e+1]??""))?-1:Math.max(0,e-1)}let q=/Yes, I trust this folder/m,r=/^›\s*/m,s=/Skip until next version|Do you trust|Press enter to continue|^\s*›\s*\d+\.\s/m,t=/^\s*›(?!\s*\d+\.)/;function u(a){let b=a.split("\n"),c=-1,d=-1;for(let a=0;a<b.length;a++){let e=b[a];if(s.test(e)){c=a;continue}t.test(e)&&(d=a)}return d>=0&&d>c}function v(a){let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a--)if(t.test(b[a])){c=a;break}let d=b.slice(c+1).join("\n");return""===d?null:d.includes("Skip until next version")||d.includes("Update")&&d.includes("Skip")?"update":d.includes("Do you trust")?"trust":d.includes("Press enter to continue")?"press-enter":null}let w=/^─.*Worked for.*─+$/m,x=/press\s+enter\s+to\s+(?:confirm|select)/i,y=/esc\s+to\s+cancel/i,z=/(?:↑\/↓|pgup\/pgdn|home\/end)\s+to\s+(?:scroll|page|jump)|to\s+edit\s+(?:prev|next|message)/i,A=/^\s*\S.*·\s*~?\/\S*\s*$/,B=/\[Pasted text #\d+/,C=/^[>❯]\s*$|^\s*[>❯]\s+Type your message.*$/m,D=/[\u2800-\u28FF]|Thinking\.\.\./,E=/Ask anything\.\.\./,F=/tab agents\s+ctrl\+p commands/,G=/Thinking:/,H=/\u25A3\s+\w+\s+\u00b7\s+\S+(?:\s+\u00b7\s+(?:[\d]+h\s*)?(?:[\d]+m\s*)?[\d.]+s)?/,I=/esc interrupt/,J=/^\s*(Select\s+(model|provider)|Connect\s+a\s+provider)/m,K=/Enter\s+to\s+set\s+as\s+default\b/i,L=/Enter\s+to\s+(?:select\s+.*to\s+navigate|confirm\s+·\s+Esc|set\s+as\s+default)/,M=/^[\u2503\u2579\u25A3\u2580\u2500\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C]+$/,N=[M,/\u2B1D{4,}/,/^Build\s+/,F,I,E,B],O=/^[>❯]\s|^\?\s+/m,P=/[\u2800-\u28FF]|\(Esc to cancel|Reasoning\s+[■▪▮]|\.\.\.\s+Thinking|Generating|Processing/,Q=/^─{10,}$/m,R=/Search\s+\w+\.\.\.|Select\s+Model|to (?:navigate|select).*Enter to (?:select|confirm)/m,S=[B,Q,P,R,/^GitHub Copilot\s+v/,/[█▘▝▖▗▔▄▌▐]/,/[╭╮╰╯│]/,/\[⎇\s+\w[^\]]*\]/,/^shift\+tab\s/,/^\?\s+for\s+shortcuts/,/^ctrl\+[a-z]\s+\w/,/^[❯>]\s*(Type\s+@|$)/,/^Tip:\s+\//,/^Describe a task to get started/,/^Copilot uses AI, so always check for mistakes\.$/,/^● 💡/,/^● Environment loaded:/],T=/ctx:\d+%\s*[>❯]/m,U=/[\u2800-\u28FF]|Thinking|⠋|⠙|⠹|⠸|⠼|⠴|⠦|⠧|⠇|⠏|Running|Executing/,V=/^>\s*$/m,W=/[\u2800-\u28FF]|Generating|esc to cancel/,X=/^─{3,}$/m,Y=/Switch Model|↑\/↓\s*Navigate/m,Z=[X,/^>\s*$/,/^\?\s+for\s+shortcuts/,W,/[▄▀█▌▐]/,B];function $(a,b){let c,d=h.withContext({cliToolId:a});switch(d.debug("detectThinking:check",{contentLength:b.length}),a){case"claude":default:c=i.test(b);break;case"codex":c=k.test(b);break;case"gemini":c=D.test(b);break;case"vibe-local":c=U.test(b);break;case"opencode":c=G.test(b);break;case"copilot":c=P.test(b);break;case"antigravity":c=W.test(b)}return d.debug("detectThinking:result",{isThinking:c}),c}function _(a){return a.split("\n").map(a=>/^[\u2502\u2503\u256D\u256E\u256F\u2570\u2500\u2579\u2580\u2588\s]+$/.test(a)?"":a.replace(/^\s*[\u2502\u2503]\s?/,"").replace(/\s*[\u2502\u2503\u2588]$/,"")).join("\n")}let aa=["Claude Code cannot be launched inside another Claude Code session"],ab=[/^Error:.*Claude Code/];function ac(a){if("claude"===a||"opencode"===a||"copilot"===a||"antigravity"===a)return{requireDefaultIndicator:!1}}},46423:(a,b,c)=>{c.d(b,{$:()=>d});let d=5}};
|