commandmate 0.26.0 → 0.27.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 +431 -403
- package/.next/app-path-routes-manifest.json +26 -22
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +9 -9
- package/.next/react-loadable-manifest.json +6 -6
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +24 -0
- 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 +2 -2
- 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/capabilities/route.js +1 -0
- package/.next/server/app/api/capabilities/route.js.nft.json +1 -0
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route.js +2 -2
- 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 +2 -2
- 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 +19 -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_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 -1
- package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +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_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_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_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_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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +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_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_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_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]/clear-composer/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +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 +1 -1
- 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 +2 -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]/env/route.js +2 -0
- package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -0
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_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_client-reference-manifest.js +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_client-reference-manifest.js +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_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_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_client-reference-manifest.js +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_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_client-reference-manifest.js +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 +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_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_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_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]/resolve-target/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -0
- 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 +1 -5
- 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 +2 -6
- 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 +3 -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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_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_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 +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +3 -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_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_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 -1
- 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_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_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_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.js +2 -2
- package/.next/server/app/login/page.js.nft.json +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_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 +2 -2
- 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 +2 -2
- 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 +9 -7
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +26 -22
- package/.next/server/chunks/1029.js +1 -1
- package/.next/server/chunks/1068.js +3 -1
- package/.next/server/chunks/1296.js +1 -1
- package/.next/server/chunks/1538.js +7 -0
- package/.next/server/chunks/1601.js +2 -2
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +3 -2
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2546.js +1 -1
- package/.next/server/chunks/2689.js +13 -0
- package/.next/server/chunks/2759.js +8 -0
- package/.next/server/chunks/2839.js +1 -0
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3292.js +1 -0
- package/.next/server/chunks/3417.js +1 -1
- package/.next/server/chunks/3480.js +1 -17
- package/.next/server/chunks/4393.js +1 -1
- package/.next/server/chunks/4423.js +1 -0
- package/.next/server/chunks/4444.js +22 -8
- package/.next/server/chunks/4565.js +3 -0
- package/.next/server/chunks/467.js +1 -0
- package/.next/server/chunks/4905.js +5 -0
- package/.next/server/chunks/5017.js +1 -0
- package/.next/server/chunks/5089.js +1 -0
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/5220.js +1 -0
- package/.next/server/chunks/5354.js +1 -0
- package/.next/server/chunks/552.js +19 -0
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/5998.js +3 -3
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6274.js +11 -11
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/7472.js +1 -0
- package/.next/server/chunks/7506.js +1 -0
- package/.next/server/chunks/848.js +1 -1
- package/.next/server/chunks/8536.js +1 -1
- package/.next/server/chunks/880.js +1 -1
- package/.next/server/chunks/8807.js +5 -5
- package/.next/server/chunks/9067.js +1 -1
- package/.next/server/chunks/9284.js +1 -0
- package/.next/server/chunks/9358.js +1 -1
- package/.next/server/chunks/9508.js +1 -0
- package/.next/server/chunks/9938.js +1 -0
- 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/static/chunks/{2053-dfac2d49227cc942.js → 2053-c0e931eb4391baa1.js} +1 -1
- package/.next/static/chunks/3361-5d6e93fba8a92bc1.js +1 -0
- package/.next/static/chunks/3922.0d2e64daf9f187da.js +1 -0
- package/.next/static/chunks/{5229-35f9acab97a553c5.js → 5229-1f5f19740a8d6c11.js} +1 -1
- package/.next/static/chunks/{6381-9303430933084b56.js → 6381-b7250e8ca7a44c6c.js} +1 -1
- package/.next/static/chunks/{8649-f551b0010dba4986.js → 8521-c43994fb58501d13.js} +1 -1
- package/.next/static/chunks/app/api/app/update/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/conversation/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/current-output/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/messages/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/templates/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/todos/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/chat/{page-439b35c9cb90dbe0.js → page-231df45127e876c2.js} +1 -1
- package/.next/static/chunks/app/login/{page-eefd515d8c37e5ee.js → page-adc51f0f7cbb7ac6.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/more/{page-889b7546a8a553dc.js → page-3266dfa945972649.js} +1 -1
- package/.next/static/chunks/app/{page-a8d04ac0e3e4c9fc.js → page-0305431f43195431.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/repositories/{page-f3c4d8839b1ca203.js → page-ae8fa55749976f79.js} +1 -1
- package/.next/static/chunks/app/review/{page-6dc88649fe88ac16.js → page-8f63aff862fee421.js} +1 -1
- package/.next/static/chunks/app/sessions/{page-2c9ed9e969097688.js → page-4d5382b257077c14.js} +1 -1
- package/.next/static/chunks/app/skills/[skillId]/{page-19beef6121c4c982.js → page-aaf0bcb1dfb558b9.js} +1 -1
- package/.next/static/chunks/app/skills/installed/{page-d5b9cef6d21fabda.js → page-dafc486410e839b7.js} +1 -1
- package/.next/static/chunks/app/skills/{page-06ef637e07dd9377.js → page-9e3c91da31514893.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-5fed3984fafcd910.js → page-90f96977c741bbf8.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-e4f28966b4fc0ce1.js +1 -0
- package/.next/static/chunks/{webpack-9d892a9ff07c289d.js → webpack-6a9668cf54a26eba.js} +1 -1
- package/.next/static/css/928e5a8830fbf997.css +1 -0
- package/.next/static/t0BoV4H46ZgKmTjSi7GIz/_buildManifest.js +1 -0
- package/.next/trace +13 -12
- package/.next/types/app/api/capabilities/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/clear-composer/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/env/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/resolve-target/route.ts +347 -0
- package/.next/types/routes.d.ts +5 -1
- package/.next/types/validator.ts +36 -0
- package/dist/cli/commands/auto-yes.d.ts.map +1 -1
- package/dist/cli/commands/auto-yes.js +40 -2
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +28 -13
- package/dist/cli/commands/instances.d.ts +30 -18
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +32 -36
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +73 -1
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +18 -1
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +21 -15
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +38 -0
- package/dist/cli/commands/wait.d.ts +26 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +390 -43
- package/dist/cli/config/cli-dependencies.d.ts.map +1 -1
- package/dist/cli/config/cli-dependencies.js +16 -0
- package/dist/cli/config/cli-tool-ids.d.ts +11 -0
- package/dist/cli/config/cli-tool-ids.d.ts.map +1 -1
- package/dist/cli/config/cli-tool-ids.js +12 -1
- package/dist/cli/types/api-responses.d.ts +443 -2
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/api-client.d.ts +18 -0
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +22 -0
- package/dist/cli/utils/server-capabilities.d.ts +56 -0
- package/dist/cli/utils/server-capabilities.d.ts.map +1 -0
- package/dist/cli/utils/server-capabilities.js +166 -0
- package/dist/cli/utils/session-target.d.ts +70 -0
- package/dist/cli/utils/session-target.d.ts.map +1 -0
- package/dist/cli/utils/session-target.js +118 -0
- package/dist/lib/cli-tools/copilot-executable.d.ts +79 -0
- package/dist/lib/cli-tools/copilot-executable.d.ts.map +1 -0
- package/dist/lib/cli-tools/copilot-executable.js +155 -0
- package/dist/lib/cli-tools/types.d.ts +61 -0
- package/dist/lib/cli-tools/types.d.ts.map +1 -1
- package/dist/lib/cli-tools/types.js +41 -0
- package/dist/lib/detection/ansi.d.ts +2 -1
- package/dist/lib/detection/ansi.d.ts.map +1 -1
- package/dist/lib/detection/ansi.js +3 -2
- package/dist/lib/detection/tools/verified-against.d.ts +84 -0
- package/dist/lib/detection/tools/verified-against.d.ts.map +1 -0
- package/dist/lib/detection/tools/verified-against.js +88 -0
- package/dist/lib/detection/version-probes.d.ts +207 -0
- package/dist/lib/detection/version-probes.d.ts.map +1 -0
- package/dist/lib/detection/version-probes.js +290 -0
- package/dist/lib/security/env-sanitizer.d.ts +198 -0
- package/dist/lib/security/env-sanitizer.d.ts.map +1 -0
- package/dist/lib/security/env-sanitizer.js +232 -0
- package/dist/server/locales/en/notifications.json +17 -6
- package/dist/server/locales/ja/notifications.json +17 -6
- package/dist/server/src/config/activity-bar-config.js +4 -0
- package/dist/server/src/config/cli-tool-timing-config.js +59 -2
- package/dist/server/src/config/copilot-constants.js +11 -1
- package/dist/server/src/config/detection-evidence-config.js +129 -0
- package/dist/server/src/config/schedule-config.js +56 -7
- package/dist/server/src/config/tmux-pane-config.js +18 -1
- package/dist/server/src/lib/auto-yes-poller.js +36 -0
- package/dist/server/src/lib/cli-tools/antigravity.js +4 -2
- package/dist/server/src/lib/cli-tools/base.js +131 -10
- package/dist/server/src/lib/cli-tools/capture-spec.js +56 -0
- package/dist/server/src/lib/cli-tools/claude.js +1 -1
- package/dist/server/src/lib/cli-tools/codex.js +6 -2
- package/dist/server/src/lib/cli-tools/composer-spec.js +96 -0
- package/dist/server/src/lib/cli-tools/copilot-executable.js +155 -0
- package/dist/server/src/lib/cli-tools/copilot.js +307 -81
- package/dist/server/src/lib/cli-tools/gemini.js +8 -6
- package/dist/server/src/lib/cli-tools/graceful-exit.js +181 -0
- package/dist/server/src/lib/cli-tools/index.js +11 -1
- package/dist/server/src/lib/cli-tools/manager.js +56 -4
- package/dist/server/src/lib/cli-tools/opencode-config.js +195 -24
- package/dist/server/src/lib/cli-tools/opencode.js +233 -30
- package/dist/server/src/lib/cli-tools/session-name.js +57 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +213 -30
- package/dist/server/src/lib/cli-tools/types.js +41 -0
- package/dist/server/src/lib/cli-tools/vibe-local.js +7 -3
- package/dist/server/src/lib/cmate-cli-tool-parser.js +29 -1
- package/dist/server/src/lib/cmate-parser.js +12 -4
- package/dist/server/src/lib/db/db.js +5 -1
- package/dist/server/src/lib/db/migrations/v41-push-subscriptions.js +11 -0
- package/dist/server/src/lib/db/push-subscriptions-db.js +60 -3
- package/dist/server/src/lib/detection/ansi.js +3 -2
- package/dist/server/src/lib/detection/cli-patterns.js +901 -67
- package/dist/server/src/lib/detection/composer-text.js +455 -0
- package/dist/server/src/lib/detection/idle-evidence-observation.js +51 -0
- package/dist/server/src/lib/detection/model-info-extractor.js +195 -4
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +19 -0
- package/dist/server/src/lib/detection/status-detector.js +76 -675
- package/dist/server/src/lib/detection/status-reason.js +57 -0
- package/dist/server/src/lib/detection/tools/antigravity/detect.js +75 -0
- package/dist/server/src/lib/detection/tools/claude/detect.js +144 -0
- package/dist/server/src/lib/detection/tools/claude/patterns.js +98 -0
- package/dist/server/src/lib/detection/tools/claude/prompt.js +124 -0
- package/dist/server/src/lib/detection/tools/codex/detect.js +343 -0
- package/dist/server/src/lib/detection/tools/codex/prompt.js +104 -0
- package/dist/server/src/lib/detection/tools/copilot/detect.js +185 -0
- package/dist/server/src/lib/detection/tools/copilot/prompt.js +89 -0
- package/dist/server/src/lib/detection/tools/dialog-block.js +159 -0
- package/dist/server/src/lib/detection/tools/frame.js +47 -0
- package/dist/server/src/lib/detection/tools/opencode/detect.js +242 -0
- package/dist/server/src/lib/detection/tools/opencode/prompt.js +85 -0
- package/dist/server/src/lib/detection/tools/registry.js +58 -0
- package/dist/server/src/lib/detection/tools/run-detection.js +202 -0
- package/dist/server/src/lib/detection/tools/types.js +34 -0
- package/dist/server/src/lib/detection/tools/verified-against.js +88 -0
- package/dist/server/src/lib/hooks/agent-event-types.js +19 -1
- package/dist/server/src/lib/hooks/permission-adjudication.js +160 -0
- package/dist/server/src/lib/hooks/permission-decision-service.js +81 -14
- package/dist/server/src/lib/hooks/permission-decision-state.js +62 -0
- package/dist/server/src/lib/hooks/permission-request-payload.js +18 -1
- package/dist/server/src/lib/hooks/sources/antigravity/source.js +10 -0
- package/dist/server/src/lib/hooks/sources/claude/source.js +20 -0
- package/dist/server/src/lib/hooks/sources/codex/source.js +10 -0
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +403 -50
- package/dist/server/src/lib/hooks/sources/copilot/source.js +40 -4
- package/dist/server/src/lib/hooks/sources/define-source.js +23 -1
- package/dist/server/src/lib/hooks/sources/event-mapper.js +29 -1
- package/dist/server/src/lib/hooks/sources/gemini/source.js +10 -0
- package/dist/server/src/lib/hooks/sources/index.js +3 -1
- package/dist/server/src/lib/hooks/sources/launch-command.js +96 -1
- package/dist/server/src/lib/hooks/sources/legacy-relay.js +12 -0
- package/dist/server/src/lib/hooks/sources/opencode/client.js +295 -32
- package/dist/server/src/lib/hooks/sources/opencode/ingest.js +120 -42
- package/dist/server/src/lib/hooks/sources/opencode/mappers.js +95 -3
- package/dist/server/src/lib/hooks/sources/opencode/ports.js +70 -9
- package/dist/server/src/lib/hooks/sources/opencode/runtime.js +62 -4
- package/dist/server/src/lib/hooks/sources/opencode/source.js +54 -3
- package/dist/server/src/lib/hooks/sources/opencode/subscription.js +254 -26
- package/dist/server/src/lib/hooks/sources/opencode/turn-gate.js +119 -4
- package/dist/server/src/lib/hooks/sources/pending-decisions.js +40 -2
- package/dist/server/src/lib/hooks/tool-input-normalization-state.js +67 -0
- package/dist/server/src/lib/hooks/tool-input-normalization.js +157 -0
- package/dist/server/src/lib/job-executor.js +16 -4
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +184 -0
- package/dist/server/src/lib/polling/response-checker.js +243 -26
- package/dist/server/src/lib/push/failure-episode-state.js +127 -0
- package/dist/server/src/lib/push/failure-push-notifier.js +344 -0
- package/dist/server/src/lib/push/index.js +35 -1
- package/dist/server/src/lib/push/prompt-card-state.js +93 -0
- package/dist/server/src/lib/push/prompt-push-gate.js +130 -0
- package/dist/server/src/lib/push/push-sender.js +82 -7
- package/dist/server/src/lib/push/resolution-push-notifier.js +193 -0
- package/dist/server/src/lib/push/waiting-push-notifier.js +42 -0
- package/dist/server/src/lib/response-cleaner.js +93 -20
- package/dist/server/src/lib/response-extractor.js +98 -5
- package/dist/server/src/lib/security/env-sanitizer.js +179 -5
- package/dist/server/src/lib/session/agent-event-state.js +1038 -189
- package/dist/server/src/lib/session/agent-session-lifecycle.js +8 -0
- package/dist/server/src/lib/session/claude-executor.js +23 -3
- package/dist/server/src/lib/session/claude-session.js +11 -1
- package/dist/server/src/lib/session/composer-clear.js +95 -0
- package/dist/server/src/lib/session/current-output-builder.js +267 -25
- package/dist/server/src/lib/session/provisional-turn.js +310 -0
- package/dist/server/src/lib/session/resolve-session-target.js +156 -0
- package/dist/server/src/lib/session/send-user-message.js +14 -18
- package/dist/server/src/lib/session/session-start-error.js +53 -1
- package/dist/server/src/lib/session/status-evidence.js +217 -0
- package/dist/server/src/lib/session/structured-prompt.js +46 -4
- package/dist/server/src/lib/session/waiting-episode-state.js +24 -0
- package/dist/server/src/lib/tmux/key-sequence.js +120 -0
- package/dist/server/src/lib/tmux/tmux.js +91 -19
- package/dist/server/src/lib/tui-accumulator.js +68 -1
- package/dist/server/src/lib/verification/gate-runner.js +84 -1
- package/dist/server/src/lib/ws-server.js +8 -5
- package/dist/server/src/types/cli-tool-contracts.js +75 -0
- package/dist/server/src/types/terminal-keys.js +37 -0
- package/dist/types/cli-tool-contracts.d.ts +235 -0
- package/dist/types/cli-tool-contracts.d.ts.map +1 -0
- package/dist/types/cli-tool-contracts.js +75 -0
- package/package.json +3 -2
- package/public/sw.js +65 -2
- package/.next/server/chunks/1841.js +0 -1
- package/.next/server/chunks/233.js +0 -1
- package/.next/server/chunks/3022.js +0 -1
- package/.next/server/chunks/3270.js +0 -1
- package/.next/server/chunks/4455.js +0 -1
- package/.next/server/chunks/5959.js +0 -27
- package/.next/server/chunks/7458.js +0 -6
- package/.next/server/chunks/8730.js +0 -1
- package/.next/server/chunks/9058.js +0 -1
- package/.next/server/chunks/9687.js +0 -3
- package/.next/static/chunks/3898-ef488bfa804507d9.js +0 -1
- package/.next/static/chunks/9263.f2034ec525abcf72.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/conversation/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/current-output/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/templates/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/todos/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-fbdf4621a2911ac1.js +0 -1
- package/.next/static/css/e865c4979a41aa03.css +0 -1
- package/.next/static/hNdNiFes2xLls68SWhAU9/_buildManifest.js +0 -1
- /package/.next/static/{hNdNiFes2xLls68SWhAU9 → t0BoV4H46ZgKmTjSi7GIz}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Per-tool rollout of the D1 idle-evidence rule, and its kill switch
|
|
4
|
+
* (Issue #1927, 方針書 §4 D1 決定 1 / §13.1 DR3-016).
|
|
5
|
+
*
|
|
6
|
+
* §4 D1 forbids declaring a turn finished on the absence of a busy marker. The
|
|
7
|
+
* fix has to land **one tool at a time**: a tool whose idle rule is not yet
|
|
8
|
+
* measured must keep the pre-#1927 reading, because flipping it early publishes
|
|
9
|
+
* `evidence: 'none'` for ordinary idle frames (DR2-002).
|
|
10
|
+
*
|
|
11
|
+
* Issue #2011 is the incident this warning predicted, and it also narrowed what
|
|
12
|
+
* an early flip actually costs. `TerminalEscapeHatch` and `wait`'s completion
|
|
13
|
+
* rule are gated on `isUnclassifiedActive`, which #1927 had derived from
|
|
14
|
+
* `evidence` — so an early flip took both of them out. #2011 gave the flag its
|
|
15
|
+
* own expression again (`isUnclassifiedFrame`, in `status-evidence.ts`), so a
|
|
16
|
+
* premature `enforce` now degrades only what `statusEvidence` itself feeds:
|
|
17
|
+
* §7's "last confirmed status" row and the `unclassified_frames` tally that
|
|
18
|
+
* measures the rollout. That is a smaller blast radius, not a licence to skip
|
|
19
|
+
* the `observe` step below.
|
|
20
|
+
*
|
|
21
|
+
* That makes three things necessary, and all three live here:
|
|
22
|
+
*
|
|
23
|
+
* - **a table**, so "which tools have a measured rule" is one list rather than
|
|
24
|
+
* a property scattered across seven modules;
|
|
25
|
+
* - **a kill switch**, so an operator who sees the rollout misfire in
|
|
26
|
+
* production can put one tool back to the old reading without a redeploy;
|
|
27
|
+
* - **an observe mode**, so the rollout can be measured BEFORE it is turned on
|
|
28
|
+
* — §11's live row makes "`unclassified_frames` の記録件数が倒す前後で有意に
|
|
29
|
+
* 増えない" an acceptance condition, and you cannot check that without a run
|
|
30
|
+
* that computes the new verdict while still publishing the old one.
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.IDLE_EVIDENCE_ENV_VAR = exports.IDLE_EVIDENCE_DEFAULT_MODE = exports.IDLE_EVIDENCE_MODES = void 0;
|
|
34
|
+
exports.resolveIdleEvidenceMode = resolveIdleEvidenceMode;
|
|
35
|
+
/** Every accepted value of {@link IdleEvidenceMode}, for parsing and tests. */
|
|
36
|
+
exports.IDLE_EVIDENCE_MODES = ['enforce', 'observe', 'legacy'];
|
|
37
|
+
/**
|
|
38
|
+
* The rollout state each tool ships in.
|
|
39
|
+
*
|
|
40
|
+
* `enforce` is set only for a tool whose rule was measured from its own live
|
|
41
|
+
* frames at production pane geometry, with a positive fixture and a mutation
|
|
42
|
+
* fixture each, AND whose `observe` run has shown that enforcing it does not
|
|
43
|
+
* move the `unclassified_frames` rate (§11's live row):
|
|
44
|
+
*
|
|
45
|
+
* | tool | rule | Issue |
|
|
46
|
+
* |----------|-------------------------------------------------------------|-------|
|
|
47
|
+
* | claude | turn-completion marker `✻ <Verb> for <N>s` at the transcript tail, or the startup banner with no user turn under it | #1927 |
|
|
48
|
+
* | copilot | the pane's bottom status bar reads idle (`readCopilotStatusBar`) | #1885 |
|
|
49
|
+
* | opencode | the gutter-anchored idle composer, or `▣ … · <duration>` | #1883 / #1893 |
|
|
50
|
+
*
|
|
51
|
+
* **claude is `observe`, not `enforce` (Issue #2011).** It shipped straight to
|
|
52
|
+
* `enforce` in #1927 without the measurement above, and the live rate was
|
|
53
|
+
* measured afterwards instead: on 2026-08-24, 7 of 8 idle Claude panes answered
|
|
54
|
+
* `'none'`. The rule is not wrong about those frames — a `/model` result row, a
|
|
55
|
+
* `⎿ Tip:` row, `✔ Update installed` and `new task? /clear to save …` really do
|
|
56
|
+
* carry no completion marker — it is simply not yet complete enough to be the
|
|
57
|
+
* authority, because a legitimately idle Claude pane has no marker at all after
|
|
58
|
+
* `/model`, after `/clear`, at startup, or after an Esc interrupt. Building the
|
|
59
|
+
* rule that covers those is deliberately a separate Issue; what `observe` buys
|
|
60
|
+
* meanwhile is the tally that says when it is done.
|
|
61
|
+
*
|
|
62
|
+
* The rest are `legacy` because no rule has been read off their frames yet, and
|
|
63
|
+
* D1 決定 1 says in as many words that a tool without a rule must not be
|
|
64
|
+
* flipped. Giving them `enforce` here would not tighten anything either — their
|
|
65
|
+
* modules declare no `readIdleEvidence`, so the chain answers `'positive'`
|
|
66
|
+
* regardless. The row is kept so the table states the rollout rather than
|
|
67
|
+
* hiding it in an omission.
|
|
68
|
+
*/
|
|
69
|
+
exports.IDLE_EVIDENCE_DEFAULT_MODE = {
|
|
70
|
+
claude: 'observe',
|
|
71
|
+
copilot: 'enforce',
|
|
72
|
+
opencode: 'enforce',
|
|
73
|
+
codex: 'legacy',
|
|
74
|
+
gemini: 'legacy',
|
|
75
|
+
antigravity: 'legacy',
|
|
76
|
+
'vibe-local': 'legacy',
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* The kill switch.
|
|
80
|
+
*
|
|
81
|
+
* A comma-separated list of `<tool>=<mode>` pairs, with `*` for "every tool":
|
|
82
|
+
*
|
|
83
|
+
* ```
|
|
84
|
+
* CM_DETECTION_IDLE_EVIDENCE=claude=legacy # one tool back to the old reading
|
|
85
|
+
* CM_DETECTION_IDLE_EVIDENCE=*=observe # measure the whole rollout first
|
|
86
|
+
* CM_DETECTION_IDLE_EVIDENCE=*=observe,opencode=enforce
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* Read on every call rather than at module load: the value has to be flippable
|
|
90
|
+
* without a rebuild, and a cached read would make the switch a restart away
|
|
91
|
+
* from the incident it exists for.
|
|
92
|
+
*/
|
|
93
|
+
exports.IDLE_EVIDENCE_ENV_VAR = 'CM_DETECTION_IDLE_EVIDENCE';
|
|
94
|
+
function isMode(value) {
|
|
95
|
+
return exports.IDLE_EVIDENCE_MODES.includes(value);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resolve one tool's rollout mode.
|
|
99
|
+
*
|
|
100
|
+
* Later entries win over earlier ones, and a tool-specific entry wins over `*`
|
|
101
|
+
* whatever the order — so `*=observe,claude=enforce` and
|
|
102
|
+
* `claude=enforce,*=observe` mean the same thing. An unparseable entry is
|
|
103
|
+
* ignored rather than throwing: this is read on the status polling path, and a
|
|
104
|
+
* typo in an env var must not take the detector down.
|
|
105
|
+
*
|
|
106
|
+
* @param tool - CLI tool to resolve for
|
|
107
|
+
* @param env - Environment to read; injectable for tests
|
|
108
|
+
*/
|
|
109
|
+
function resolveIdleEvidenceMode(tool, env = process.env) {
|
|
110
|
+
const raw = env[exports.IDLE_EVIDENCE_ENV_VAR];
|
|
111
|
+
let wildcard = null;
|
|
112
|
+
let specific = null;
|
|
113
|
+
if (typeof raw === 'string' && raw.trim() !== '') {
|
|
114
|
+
for (const entry of raw.split(',')) {
|
|
115
|
+
const [rawKey, rawValue] = entry.split('=');
|
|
116
|
+
if (rawValue === undefined)
|
|
117
|
+
continue;
|
|
118
|
+
const key = rawKey.trim();
|
|
119
|
+
const value = rawValue.trim();
|
|
120
|
+
if (!isMode(value))
|
|
121
|
+
continue;
|
|
122
|
+
if (key === '*')
|
|
123
|
+
wildcard = value;
|
|
124
|
+
else if (key === tool)
|
|
125
|
+
specific = value;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return specific ?? wildcard ?? exports.IDLE_EVIDENCE_DEFAULT_MODE[tool] ?? 'legacy';
|
|
129
|
+
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* [S4-014] UUID v4 format validation
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.UUID_V4_PATTERN = exports.DEFAULT_PERMISSIONS = exports.VIBE_LOCAL_PERMISSIONS = exports.GEMINI_PERMISSIONS = exports.ANTIGRAVITY_PERMISSIONS = exports.COPILOT_PERMISSIONS = exports.CODEX_SANDBOXES = exports.CLAUDE_PERMISSIONS = exports.MAX_SCHEDULE_CRON_LENGTH = exports.MAX_SCHEDULE_MESSAGE_LENGTH = exports.MAX_SCHEDULE_NAME_LENGTH = void 0;
|
|
13
|
+
exports.UUID_V4_PATTERN = exports.DEFAULT_PERMISSIONS = exports.NO_PERMISSION_FLAGS = exports.OPENCODE_PERMISSIONS = exports.VIBE_LOCAL_PERMISSIONS = exports.GEMINI_PERMISSIONS = exports.ANTIGRAVITY_PERMISSIONS = exports.COPILOT_PERMISSIONS = exports.CODEX_SANDBOXES = exports.CLAUDE_PERMISSIONS = exports.MAX_SCHEDULE_CRON_LENGTH = exports.MAX_SCHEDULE_MESSAGE_LENGTH = exports.MAX_SCHEDULE_NAME_LENGTH = void 0;
|
|
14
14
|
exports.getPermissionOptionsForTool = getPermissionOptionsForTool;
|
|
15
15
|
exports.isValidUuidV4 = isValidUuidV4;
|
|
16
16
|
// =============================================================================
|
|
@@ -42,12 +42,46 @@ exports.ANTIGRAVITY_PERMISSIONS = [
|
|
|
42
42
|
exports.GEMINI_PERMISSIONS = [];
|
|
43
43
|
/** Allowed permission values for vibe-local CLI (no permission flags) */
|
|
44
44
|
exports.VIBE_LOCAL_PERMISSIONS = [];
|
|
45
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Allowed permission values for opencode CLI (Issue #1914).
|
|
47
|
+
*
|
|
48
|
+
* Empty, like gemini's and vibe-local's, but a **separate** constant on purpose:
|
|
49
|
+
* before this Issue `getPermissionOptionsForTool('opencode')` resolved through
|
|
50
|
+
* `default: return GEMINI_PERMISSIONS`, so the value was right for a reason that
|
|
51
|
+
* was not. Object identity is what lets a test tell "opencode has its own case"
|
|
52
|
+
* apart from "opencode falls through to gemini's".
|
|
53
|
+
*
|
|
54
|
+
* opencode has no permission *level* to choose from. `opencode run` does carry a
|
|
55
|
+
* single boolean `--auto` ("auto-approve permissions that are not explicitly
|
|
56
|
+
* denied", measured on 1.18.21), but that is a different axis from the
|
|
57
|
+
* `--permission-mode` / `--sandbox` vocabularies this list models, and
|
|
58
|
+
* CommandMate does not pass it. Wiring it up is a separate decision.
|
|
59
|
+
*/
|
|
60
|
+
exports.OPENCODE_PERMISSIONS = [];
|
|
61
|
+
/**
|
|
62
|
+
* What a CLI tool with no permission flag at all resolves to (Issue #1914).
|
|
63
|
+
*
|
|
64
|
+
* The `default:` branch of {@link getPermissionOptionsForTool} returns this
|
|
65
|
+
* rather than any one tool's constant. A tool added to `CLI_TOOL_IDS` without a
|
|
66
|
+
* case below then inherits "no flags", which is the safe answer — inheriting
|
|
67
|
+
* Claude's `--permission-mode` vocabulary is what let `acceptEdits` through on
|
|
68
|
+
* an opencode schedule (`cmate-parser.ts` / `cmate-validator.ts` carry the same
|
|
69
|
+
* decision).
|
|
70
|
+
*/
|
|
71
|
+
exports.NO_PERMISSION_FLAGS = [];
|
|
72
|
+
/**
|
|
73
|
+
* Default permission per CLI tool.
|
|
74
|
+
*
|
|
75
|
+
* Issue #1914 added the `opencode` entry: it was the one id in `CLI_TOOL_IDS`
|
|
76
|
+
* with no key here, so every reader fell back to its own `?? ''` and the
|
|
77
|
+
* omission read as an oversight rather than as "this tool takes no flag".
|
|
78
|
+
*/
|
|
46
79
|
exports.DEFAULT_PERMISSIONS = {
|
|
47
80
|
claude: 'acceptEdits',
|
|
48
81
|
codex: 'workspace-write',
|
|
49
82
|
gemini: '',
|
|
50
83
|
'vibe-local': '',
|
|
84
|
+
opencode: '',
|
|
51
85
|
copilot: 'allow-all-tools',
|
|
52
86
|
antigravity: '--dangerously-skip-permissions',
|
|
53
87
|
};
|
|
@@ -59,24 +93,39 @@ exports.DEFAULT_PERMISSIONS = {
|
|
|
59
93
|
* cmate-parser.ts / cmate-validator.ts enforce on read, so any value the dialog
|
|
60
94
|
* writes round-trips through the parser without being silently discarded.
|
|
61
95
|
*
|
|
62
|
-
*
|
|
63
|
-
* the
|
|
96
|
+
* gemini, vibe-local and opencode have no permission flags, so the dialog hides
|
|
97
|
+
* the Permission field and an empty permission is written.
|
|
98
|
+
*
|
|
99
|
+
* Issue #1914: every id in `CLI_TOOL_IDS` now has its own `case`, and `default:`
|
|
100
|
+
* returns {@link NO_PERMISSION_FLAGS} instead of `GEMINI_PERMISSIONS`. The
|
|
101
|
+
* returned *value* is unchanged for every tool that exists today — all three
|
|
102
|
+
* empty lists are `[]` — but the old spelling said "a tool I do not recognise
|
|
103
|
+
* gets gemini's rules", which is not a sentence anyone meant. It is also the
|
|
104
|
+
* shape that hid the real bug in the two switches this function mirrors, where
|
|
105
|
+
* the same fallback resolved to CLAUDE_PERMISSIONS and let `acceptEdits` onto an
|
|
106
|
+
* opencode schedule.
|
|
64
107
|
*
|
|
65
108
|
* @param cliToolId - CLI tool identifier
|
|
66
109
|
* @returns Readonly array of allowed permission values (empty = no permission flags)
|
|
67
110
|
*/
|
|
68
111
|
function getPermissionOptionsForTool(cliToolId) {
|
|
69
112
|
switch (cliToolId) {
|
|
113
|
+
case 'claude':
|
|
114
|
+
return exports.CLAUDE_PERMISSIONS;
|
|
70
115
|
case 'codex':
|
|
71
116
|
return exports.CODEX_SANDBOXES;
|
|
72
117
|
case 'copilot':
|
|
73
118
|
return exports.COPILOT_PERMISSIONS;
|
|
74
119
|
case 'antigravity':
|
|
75
120
|
return exports.ANTIGRAVITY_PERMISSIONS;
|
|
76
|
-
case '
|
|
77
|
-
return exports.CLAUDE_PERMISSIONS;
|
|
78
|
-
default:
|
|
121
|
+
case 'gemini':
|
|
79
122
|
return exports.GEMINI_PERMISSIONS;
|
|
123
|
+
case 'vibe-local':
|
|
124
|
+
return exports.VIBE_LOCAL_PERMISSIONS;
|
|
125
|
+
case 'opencode':
|
|
126
|
+
return exports.OPENCODE_PERMISSIONS;
|
|
127
|
+
default:
|
|
128
|
+
return exports.NO_PERMISSION_FLAGS;
|
|
80
129
|
}
|
|
81
130
|
}
|
|
82
131
|
// =============================================================================
|
|
@@ -17,11 +17,28 @@
|
|
|
17
17
|
* so `capture-pane` cost / render load stays reasonable.
|
|
18
18
|
*/
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.TMUX_HISTORY_LIMIT = exports.TUI_PANE_WIDTH = exports.TUI_PANE_HEIGHT = void 0;
|
|
20
|
+
exports.TMUX_HISTORY_LIMIT = exports.OPENCODE_PANE_HEIGHT = exports.TUI_PANE_WIDTH = exports.TUI_PANE_HEIGHT = void 0;
|
|
21
21
|
/** Fixed pane height (rows) for TUI sessions. Large enough to retain useful history. */
|
|
22
22
|
exports.TUI_PANE_HEIGHT = 1000;
|
|
23
23
|
/** Fixed pane width (columns) for TUI sessions. Matches the historical default. */
|
|
24
24
|
exports.TUI_PANE_WIDTH = 200;
|
|
25
|
+
/**
|
|
26
|
+
* OpenCode tmux pane height (rows).
|
|
27
|
+
*
|
|
28
|
+
* Set to 200 to expand the TUI content area (~190 visible lines), allowing most
|
|
29
|
+
* responses to be captured in a single tmux capture-pane. OpenCode runs in
|
|
30
|
+
* alternate screen mode with no scrollback buffer, so only visible rows are
|
|
31
|
+
* capturable — which makes this both the session's height and the most a
|
|
32
|
+
* `capture-pane` can ever return for it.
|
|
33
|
+
*
|
|
34
|
+
* Issue #1906 moved it here from `lib/cli-tools/opencode.ts` (which re-exports
|
|
35
|
+
* it, so every existing importer is unchanged). `submit-verified-sender.ts` now
|
|
36
|
+
* needs the number to size its read-back window, and it is imported BY
|
|
37
|
+
* `opencode.ts` — taking the constant from there would have created an import
|
|
38
|
+
* cycle and pulled opencode's `child_process` use into every consumer of the
|
|
39
|
+
* sender. This module has no imports at all, so it costs nothing to depend on.
|
|
40
|
+
*/
|
|
41
|
+
exports.OPENCODE_PANE_HEIGHT = 200;
|
|
25
42
|
/**
|
|
26
43
|
* Scrollback lines retained per pane (`history-limit`), Issue #1624.
|
|
27
44
|
*
|
|
@@ -63,6 +63,7 @@ const prompt_detector_1 = require("./detection/prompt-detector");
|
|
|
63
63
|
const auto_yes_resolver_1 = require("./polling/auto-yes-resolver");
|
|
64
64
|
const auto_yes_policy_1 = require("./polling/auto-yes-policy");
|
|
65
65
|
const auto_yes_suppression_state_1 = require("./polling/auto-yes-suppression-state");
|
|
66
|
+
const auto_yes_dialog_gate_1 = require("./polling/auto-yes-dialog-gate");
|
|
66
67
|
const task_transition_service_1 = require("./tasks/task-transition-service");
|
|
67
68
|
const db_instance_1 = require("./db/db-instance");
|
|
68
69
|
const chat_db_1 = require("./db/chat-db");
|
|
@@ -332,6 +333,41 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
332
333
|
});
|
|
333
334
|
return 'no_answer';
|
|
334
335
|
}
|
|
336
|
+
// 3.5. Issue #1928 (§4 D1 decision 4): the generic numbered-list inference is
|
|
337
|
+
// not enough to send an answer. `detectPrompt` above judges the ROWS, and the
|
|
338
|
+
// rows of an agent's own reply can be indistinguishable from a dialog's --
|
|
339
|
+
// opencode 1.18 answering "list three options and ask which one" is the
|
|
340
|
+
// reported case (#1896), and the `1` this poller sent in reply was not
|
|
341
|
+
// answering anything, it was SENT AS A USER UTTERANCE. What separates the two
|
|
342
|
+
// is position and chrome, which only the tool's own module knows, so the
|
|
343
|
+
// decision is delegated to `detectDialog` (the seam #1927 declared).
|
|
344
|
+
//
|
|
345
|
+
// Per tool, and only for tools whose dialogs were measured from their own
|
|
346
|
+
// live captures -- see AUTO_YES_DIALOG_GATE_DEFAULT_MODE. An ungated tool
|
|
347
|
+
// reaches `allowed: true` without being judged, which is the pre-#1928
|
|
348
|
+
// behaviour and the right one where nobody has measured anything.
|
|
349
|
+
//
|
|
350
|
+
// Recorded through the #1684 channel with the reason code #1924 landed for
|
|
351
|
+
// exactly this position, so `capture --json` and `cmate wait` can name the
|
|
352
|
+
// gap instead of showing a worker that silently went quiet.
|
|
353
|
+
const dialogGate = (0, auto_yes_dialog_gate_1.evaluateAutoYesDialogGate)(cliToolId, promptDetection.promptData.type, cleanOutput);
|
|
354
|
+
if (!dialogGate.allowed) {
|
|
355
|
+
(0, auto_yes_suppression_state_1.recordPolicySuppression)(worktreeId, cliToolId, instanceId, {
|
|
356
|
+
reason: 'unclassified-frame',
|
|
357
|
+
mode: null,
|
|
358
|
+
promptType: promptDetection.promptData.type,
|
|
359
|
+
});
|
|
360
|
+
logger.warn('poller:auto-yes-skipped-unclassified-frame', {
|
|
361
|
+
worktreeId,
|
|
362
|
+
cliToolId,
|
|
363
|
+
instanceId,
|
|
364
|
+
promptType: promptDetection.promptData.type,
|
|
365
|
+
dialogKind: dialogGate.dialog?.kind ?? null,
|
|
366
|
+
answerMode: dialogGate.dialog?.answerMode ?? null,
|
|
367
|
+
gateMode: dialogGate.mode,
|
|
368
|
+
});
|
|
369
|
+
return 'no_answer';
|
|
370
|
+
}
|
|
335
371
|
// 4. Resolve auto answer under the execution contract's policy (Issue #1547).
|
|
336
372
|
// Auto-Yes calls detectPrompt directly instead of going through
|
|
337
373
|
// status-detector, so this is the only place the policy can gate an
|
|
@@ -20,6 +20,7 @@ const sources_1 = require("../../lib/hooks/sources");
|
|
|
20
20
|
const agent_session_lifecycle_1 = require("../../lib/session/agent-session-lifecycle");
|
|
21
21
|
const logger_1 = require("../../lib/logger");
|
|
22
22
|
const cli_tool_timing_config_1 = require("../../config/cli-tool-timing-config");
|
|
23
|
+
const session_start_error_1 = require("../session/session-start-error");
|
|
23
24
|
const logger = (0, logger_1.createLogger)('cli-tools/antigravity');
|
|
24
25
|
/**
|
|
25
26
|
* Extract error message from unknown error type (DRY).
|
|
@@ -104,11 +105,11 @@ class AntigravityTool extends base_1.BaseCLITool {
|
|
|
104
105
|
* when starting a brand-new session; the caller must not pass a model
|
|
105
106
|
* for a session that is already running.
|
|
106
107
|
*/
|
|
107
|
-
async
|
|
108
|
+
async launchSession(worktreeId, worktreePath, instanceId, model) {
|
|
108
109
|
// Check if agy is installed
|
|
109
110
|
const available = await this.isInstalled();
|
|
110
111
|
if (!available) {
|
|
111
|
-
throw new
|
|
112
|
+
throw new session_start_error_1.SessionStartUnavailableError(this.name, 'Antigravity CLI (agy) is not installed or not in PATH');
|
|
112
113
|
}
|
|
113
114
|
const sessionName = this.getSessionName(worktreeId, instanceId);
|
|
114
115
|
// Check if session already exists
|
|
@@ -245,6 +246,7 @@ class AntigravityTool extends base_1.BaseCLITool {
|
|
|
245
246
|
sessionName,
|
|
246
247
|
message,
|
|
247
248
|
cliToolId: 'antigravity',
|
|
249
|
+
composer: this.describeComposer(),
|
|
248
250
|
});
|
|
249
251
|
// Invalidate cache after sending message (required so the poller re-reads)
|
|
250
252
|
(0, tmux_capture_cache_1.invalidateCache)(sessionName);
|
|
@@ -3,13 +3,48 @@
|
|
|
3
3
|
* Base implementation for CLI tools
|
|
4
4
|
* Provides common functionality for all CLI tool implementations
|
|
5
5
|
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
6
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
40
|
exports.BaseCLITool = void 0;
|
|
8
41
|
const child_process_1 = require("child_process");
|
|
9
42
|
const util_1 = require("util");
|
|
10
|
-
const
|
|
11
|
-
const validation_1 = require("./validation");
|
|
43
|
+
const session_name_1 = require("./session-name");
|
|
12
44
|
const tmux_1 = require("../tmux/tmux");
|
|
45
|
+
const composer_spec_1 = require("./composer-spec");
|
|
46
|
+
const capture_spec_1 = require("./capture-spec");
|
|
47
|
+
const graceful_exit_1 = require("./graceful-exit");
|
|
13
48
|
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
14
49
|
/**
|
|
15
50
|
* Abstract base class for CLI tools
|
|
@@ -39,21 +74,71 @@ class BaseCLITool {
|
|
|
39
74
|
*
|
|
40
75
|
* T2.3: Added validation to prevent command injection (MF4-001)
|
|
41
76
|
*
|
|
77
|
+
* Issue #1984: 規則の本体は `./session-name` に移した。名前だけが欲しい呼び出し側
|
|
78
|
+
* (`ws-server.ts` など)が、7 ツールの実装グラフごと import せずに済むようにするため。
|
|
79
|
+
* ここは委譲だけを行い、規則は 1 箇所に保つ。
|
|
80
|
+
*
|
|
42
81
|
* @param worktreeId - Worktree ID
|
|
43
82
|
* @param instanceId - Agent instance ID (defaults to the primary instance)
|
|
44
83
|
* @returns Session name
|
|
45
84
|
* @throws Error if the resulting session name is invalid
|
|
46
85
|
*/
|
|
47
86
|
getSessionName(worktreeId, instanceId) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
87
|
+
return (0, session_name_1.resolveSessionName)(this.id, worktreeId, instanceId);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Start this tool's session, reporting a failure exactly once (Issue #2009).
|
|
91
|
+
*
|
|
92
|
+
* ## Why the seam is here and not at the seven throw sites
|
|
93
|
+
*
|
|
94
|
+
* #2000 made "the session refused to start" reach a phone, and wired it at the
|
|
95
|
+
* single place that established the fact: `claude-session`'s
|
|
96
|
+
* `SessionStartFailedError`. Measured on this tree that was also the ONLY
|
|
97
|
+
* place — the other six tools detect their own start failures and throw a bare
|
|
98
|
+
* `Error`, so six of seven agents failed silently. Copying the #2000 call into
|
|
99
|
+
* the other six would have made the eighth tool a new silent one, which is the
|
|
100
|
+
* failure mode the Issue names ("片方だけ直る改修").
|
|
101
|
+
*
|
|
102
|
+
* So the call moved up one level, to the one method every tool inherits and
|
|
103
|
+
* every caller goes through — the two API routes that start sessions, and
|
|
104
|
+
* anything added later. A tool author cannot forget it, because there is
|
|
105
|
+
* nothing left to remember: implement {@link launchSession} and the reporting
|
|
106
|
+
* is already wired.
|
|
107
|
+
*
|
|
108
|
+
* ## Fire-and-forget, and a deferred import
|
|
109
|
+
*
|
|
110
|
+
* The notification is NOT awaited. Web push fans out to every registered
|
|
111
|
+
* device, and holding a 503 open for that would make a failed start slower to
|
|
112
|
+
* report than a successful one. `notifySessionStartFailurePush` contains its
|
|
113
|
+
* own failures, and the `.catch` here is the belt for the import itself.
|
|
114
|
+
*
|
|
115
|
+
* `await import()` rather than a static import, for the reason Issue #1984
|
|
116
|
+
* gives on `CLIToolManager.stopPollers`: `push/failure-push-notifier` pulls
|
|
117
|
+
* the database and `web-push` behind it, and every one of the seven tool
|
|
118
|
+
* modules loads THIS file. Deferring it to the failure path keeps the
|
|
119
|
+
* cli-tools graph the size #1984 cut it down to.
|
|
120
|
+
*
|
|
121
|
+
* @param worktreeId - Worktree ID
|
|
122
|
+
* @param worktreePath - Worktree path
|
|
123
|
+
* @param instanceId - Agent instance ID (defaults to the primary instance)
|
|
124
|
+
* @param model - Model to launch with; only antigravity honours it (#989)
|
|
125
|
+
* @throws Whatever {@link launchSession} threw — unchanged, after reporting
|
|
126
|
+
*/
|
|
127
|
+
async startSession(worktreeId, worktreePath, instanceId, model) {
|
|
128
|
+
try {
|
|
129
|
+
await this.launchSession(worktreeId, worktreePath, instanceId, model);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
void Promise.resolve().then(() => __importStar(require('../push/failure-push-notifier'))).then(({ notifySessionStartFailurePush }) => notifySessionStartFailurePush({
|
|
133
|
+
worktreeId,
|
|
134
|
+
cliToolId: this.id,
|
|
135
|
+
instanceId,
|
|
136
|
+
toolName: this.name,
|
|
137
|
+
error,
|
|
138
|
+
}))
|
|
139
|
+
.catch(() => { });
|
|
140
|
+
throw error;
|
|
52
141
|
}
|
|
53
|
-
const suffix = (0, types_1.deriveSessionSuffix)(instanceId, this.id);
|
|
54
|
-
const sessionName = suffix ? `${base}-${suffix}` : base;
|
|
55
|
-
(0, validation_1.validateSessionName)(sessionName);
|
|
56
|
-
return sessionName;
|
|
57
142
|
}
|
|
58
143
|
/** Repair geometry when reusing a tmux session that predates the current defaults. */
|
|
59
144
|
async reconcileExistingSession(sessionName, options) {
|
|
@@ -70,5 +155,41 @@ class BaseCLITool {
|
|
|
70
155
|
const sessionName = this.getSessionName(worktreeId, instanceId);
|
|
71
156
|
await (0, tmux_1.sendSpecialKey)(sessionName, 'Escape');
|
|
72
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Describe this tool's input box (Issue #1933, §6.3).
|
|
160
|
+
*
|
|
161
|
+
* The default is claude's — a marked input line at the bottom of the pane, a
|
|
162
|
+
* twelve-row read-back, one Enter, and the composer emptied before the body
|
|
163
|
+
* is typed. Every tool's answer is resolved from `./composer-spec`, which is
|
|
164
|
+
* where the values that used to be three module-level tables inside
|
|
165
|
+
* `submit-verified-sender.ts` now live; a tool overrides this method when its
|
|
166
|
+
* box is not describable that way.
|
|
167
|
+
*
|
|
168
|
+
* @returns This tool's {@link ComposerSpec}
|
|
169
|
+
*/
|
|
170
|
+
describeComposer() {
|
|
171
|
+
return (0, composer_spec_1.resolveComposerSpec)(this.id);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Describe how this tool is asked to quit (Issue #1933, §13.2).
|
|
175
|
+
*
|
|
176
|
+
* The default is claude's: one Ctrl-D, then the generic TUI shutdown window.
|
|
177
|
+
* The sequence is a DESCRIPTION — `killSession()` still sends its own
|
|
178
|
+
* measured keystrokes, and the conformance suite pins that the two agree.
|
|
179
|
+
*
|
|
180
|
+
* @returns This tool's {@link GracefulExitSpec}
|
|
181
|
+
*/
|
|
182
|
+
gracefulExitSequence() {
|
|
183
|
+
return (0, graceful_exit_1.resolveGracefulExitSpec)(this.id);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Describe what a status capture of this tool must ask tmux for
|
|
187
|
+
* (Issue #1933, §10.12).
|
|
188
|
+
*
|
|
189
|
+
* @returns This tool's {@link CaptureSpec}
|
|
190
|
+
*/
|
|
191
|
+
captureSpec() {
|
|
192
|
+
return (0, capture_spec_1.resolveCaptureSpec)(this.id);
|
|
193
|
+
}
|
|
73
194
|
}
|
|
74
195
|
exports.BaseCLITool = BaseCLITool;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* How many rows a status probe asks tmux for, per tool (Issue #1933, §10.12).
|
|
4
|
+
*
|
|
5
|
+
* The ladder this replaces lived in `src/lib/session/worktree-status-helper.ts`
|
|
6
|
+
* as a private `getStatusCaptureLines()`, which meant a module outside
|
|
7
|
+
* `src/lib/cli-tools/**` had to import `@/lib/cli-tools/opencode` and
|
|
8
|
+
* `@/lib/cli-tools/gemini` for two numbers — dragging opencode's
|
|
9
|
+
* `child_process` use and gemini's whole graph into the sidebar's status poll,
|
|
10
|
+
* and forcing four unrelated test files to mock both tool modules just to reach
|
|
11
|
+
* a capture count.
|
|
12
|
+
*
|
|
13
|
+
* @module lib/cli-tools/capture-spec
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.GEMINI_PANE_HEIGHT = void 0;
|
|
17
|
+
exports.resolveCaptureSpec = resolveCaptureSpec;
|
|
18
|
+
const tmux_pane_config_1 = require("../../config/tmux-pane-config");
|
|
19
|
+
const status_capture_config_1 = require("../../config/status-capture-config");
|
|
20
|
+
const types_1 = require("./types");
|
|
21
|
+
/**
|
|
22
|
+
* Gemini tmux pane height (rows).
|
|
23
|
+
*
|
|
24
|
+
* Declared here since Issue #1933 and re-exported from `./gemini`, so existing
|
|
25
|
+
* importers are unchanged. It moved for the same reason `OPENCODE_PANE_HEIGHT`
|
|
26
|
+
* moved to `@/config/tmux-pane-config` in #1906: the module that needs the
|
|
27
|
+
* number must not have to import the tool.
|
|
28
|
+
*/
|
|
29
|
+
exports.GEMINI_PANE_HEIGHT = 200;
|
|
30
|
+
/**
|
|
31
|
+
* The capture description for a CLI tool.
|
|
32
|
+
*
|
|
33
|
+
* A tool with a fixed pane height asks for exactly that height, because it
|
|
34
|
+
* renders in the alternate screen and `capture-pane` can return nothing else.
|
|
35
|
+
* Everything else asks for {@link STATUS_DETECTION_CAPTURE_LINES}: detection
|
|
36
|
+
* trims trailing blank padding before windowing, so it only needs the captured
|
|
37
|
+
* slice to reach past that padding to the real content, and asking for the
|
|
38
|
+
* display path's 10000 rows on every sidebar poll was measurably wasteful
|
|
39
|
+
* (#965).
|
|
40
|
+
*
|
|
41
|
+
* @param cliToolId - CLI tool identifier
|
|
42
|
+
* @returns That tool's {@link CaptureSpec}
|
|
43
|
+
*/
|
|
44
|
+
function resolveCaptureSpec(cliToolId) {
|
|
45
|
+
return {
|
|
46
|
+
statusLines: resolveStatusCaptureLines(cliToolId),
|
|
47
|
+
usesAlternateScreen: (0, types_1.usesAlternateScreen)(cliToolId),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function resolveStatusCaptureLines(cliToolId) {
|
|
51
|
+
if (cliToolId === 'opencode')
|
|
52
|
+
return tmux_pane_config_1.OPENCODE_PANE_HEIGHT;
|
|
53
|
+
if (cliToolId === 'gemini')
|
|
54
|
+
return exports.GEMINI_PANE_HEIGHT;
|
|
55
|
+
return status_capture_config_1.STATUS_DETECTION_CAPTURE_LINES;
|
|
56
|
+
}
|
|
@@ -38,7 +38,7 @@ class ClaudeTool extends base_1.BaseCLITool {
|
|
|
38
38
|
* @param worktreePath - Worktree path
|
|
39
39
|
* @param instanceId - Optional agent instance ID (defaults to primary)
|
|
40
40
|
*/
|
|
41
|
-
async
|
|
41
|
+
async launchSession(worktreeId, worktreePath, instanceId) {
|
|
42
42
|
const options = {
|
|
43
43
|
worktreeId,
|
|
44
44
|
worktreePath,
|
|
@@ -15,6 +15,7 @@ const logger_1 = require("../../lib/logger");
|
|
|
15
15
|
const sources_1 = require("../../lib/hooks/sources");
|
|
16
16
|
const agent_session_lifecycle_1 = require("../../lib/session/agent-session-lifecycle");
|
|
17
17
|
const cli_tool_timing_config_1 = require("../../config/cli-tool-timing-config");
|
|
18
|
+
const session_start_error_1 = require("../session/session-start-error");
|
|
18
19
|
const logger = (0, logger_1.createLogger)('cli-tools/codex');
|
|
19
20
|
/**
|
|
20
21
|
* Extract error message from unknown error type (DRY)
|
|
@@ -121,11 +122,11 @@ class CodexTool extends base_1.BaseCLITool {
|
|
|
121
122
|
* @param worktreeId - Worktree ID
|
|
122
123
|
* @param worktreePath - Worktree path
|
|
123
124
|
*/
|
|
124
|
-
async
|
|
125
|
+
async launchSession(worktreeId, worktreePath, instanceId) {
|
|
125
126
|
// Check if Codex is installed
|
|
126
127
|
const codexAvailable = await this.isInstalled();
|
|
127
128
|
if (!codexAvailable) {
|
|
128
|
-
throw new
|
|
129
|
+
throw new session_start_error_1.SessionStartUnavailableError(this.name, 'Codex CLI is not installed or not in PATH');
|
|
129
130
|
}
|
|
130
131
|
const sessionName = this.getSessionName(worktreeId, instanceId);
|
|
131
132
|
// Check if session already exists
|
|
@@ -343,6 +344,9 @@ class CodexTool extends base_1.BaseCLITool {
|
|
|
343
344
|
sessionName,
|
|
344
345
|
message,
|
|
345
346
|
cliToolId: 'codex',
|
|
347
|
+
// Issue #1933: the tool describes its own composer; the sender no
|
|
348
|
+
// longer keys three module-level tables on the id.
|
|
349
|
+
composer: this.describeComposer(),
|
|
346
350
|
});
|
|
347
351
|
// Issue #405: Invalidate cache after sending message
|
|
348
352
|
(0, tmux_capture_cache_1.invalidateCache)(sessionName);
|