commandmate 0.29.1 → 0.29.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +458 -414
- package/.next/app-path-routes-manifest.json +32 -26
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +15 -15
- package/.next/react-loadable-manifest.json +3 -3
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +17 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route.js +2 -0
- package/.next/server/app/api/agents/update/route.js.nft.json +1 -0
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agents/versions/route.js +1 -0
- package/.next/server/app/api/agents/versions/route.js.nft.json +1 -0
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -0
- 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 +2 -2
- 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 +1 -1
- 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 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route.js +1 -1
- package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route.js +1 -7
- package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js +1 -7
- 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 +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js +2 -2
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +7 -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.js.nft.json +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +7 -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/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -0
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -0
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sidebar/group-order/route.js +1 -7
- package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +2 -2
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route.js +2 -2
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js +1 -1
- package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js +2 -2
- package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js +2 -2
- package/.next/server/app/api/templates/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route.js +1 -1
- package/.next/server/app/api/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route.js +1 -1
- package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -2
- 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 +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/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 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -7
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +2 -0
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -0
- 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]/cancel/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route.js +1 -0
- package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -0
- 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.js.nft.json +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +2 -2
- package/.next/server/app/repositories/page.js.nft.json +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page.js.nft.json +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +2 -2
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +2 -2
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +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 +12 -12
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +32 -26
- package/.next/server/chunks/1058.js +1 -1
- package/.next/server/chunks/1068.js +1 -1
- package/.next/server/chunks/1341.js +1 -0
- package/.next/server/chunks/1501.js +5 -0
- package/.next/server/chunks/1886.js +3 -4
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2198.js +1 -0
- package/.next/server/chunks/221.js +7 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2759.js +1 -1
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3558.js +1 -1
- package/.next/server/chunks/3707.js +15 -0
- package/.next/server/chunks/3722.js +25 -1
- package/.next/server/chunks/3869.js +1 -0
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/4299.js +1 -1
- package/.next/server/chunks/4390.js +1 -0
- package/.next/server/chunks/4393.js +1 -1
- package/.next/server/chunks/5017.js +1 -1
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/7366.js +5 -0
- package/.next/server/chunks/7824.js +1 -1
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8118.js +1 -0
- package/.next/server/chunks/848.js +1 -1
- package/.next/server/chunks/880.js +3 -3
- package/.next/server/chunks/8800.js +3 -0
- package/.next/server/chunks/9123.js +2 -2
- package/.next/server/chunks/9508.js +1 -1
- package/.next/server/chunks/9627.js +30 -24
- 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/0YoRrahue4Vchxg1z83IQ/_buildManifest.js +1 -0
- package/.next/static/chunks/1379-af7af9e08f47c979.js +1 -0
- package/.next/static/chunks/{2053-c0e931eb4391baa1.js → 2053-3f299a7a2c7d6767.js} +1 -1
- package/.next/static/chunks/3922.9c1ec01fff819c88.js +1 -0
- package/.next/static/chunks/{3968-8d8ca15657748bfb.js → 4882-388e94fe0a03c2ba.js} +1 -1
- package/.next/static/chunks/5229-b2a81bb8fb5c19e9.js +1 -0
- package/.next/static/chunks/6381-9ba5198c0a6ff197.js +1 -0
- package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +1 -0
- package/.next/static/chunks/{1188-8567ee5ecfef02ee.js → 8593-fa0eb2802e0ce68a.js} +1 -1
- package/.next/static/chunks/app/api/agents/update/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/agents/versions/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/assistant/conversation/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/assistant/current-output/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/assistant/messages/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/skills/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/templates/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/todos/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/chat/{page-231df45127e876c2.js → page-9aa2011410895b0d.js} +1 -1
- package/.next/static/chunks/app/login/{page-03659dded846ef1d.js → page-af7241bb4c4a8e59.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/more/page-75d3783da0d49a25.js +1 -0
- package/.next/static/chunks/app/{page-0305431f43195431.js → page-214f7ffa13a0cf10.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/repositories/{page-ae8fa55749976f79.js → page-4951cac905e50224.js} +1 -1
- package/.next/static/chunks/app/review/page-a0899b2d285318c3.js +1 -0
- package/.next/static/chunks/app/sessions/page-fb36145ec732092a.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/{page-aaf0bcb1dfb558b9.js → page-9099e26b60442873.js} +1 -1
- package/.next/static/chunks/app/skills/installed/{page-dafc486410e839b7.js → page-182e32368696d824.js} +1 -1
- package/.next/static/chunks/app/skills/{page-9e3c91da31514893.js → page-d3fdc88239ebe0ab.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-90f96977c741bbf8.js → page-f3361237420719b4.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-1c30fb8d4d6fa6ef.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-ce6279d581d1df95.js +1 -0
- package/.next/static/chunks/{webpack-7e79064bfce988d7.js → webpack-9f75198882fdaf08.js} +1 -1
- package/.next/static/css/b326c8a734e1928e.css +1 -0
- package/.next/trace +13 -13
- package/.next/types/app/api/agents/update/route.ts +347 -0
- package/.next/types/app/api/agents/versions/route.ts +347 -0
- package/.next/types/app/api/settings/default-agents/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/verify/config/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.ts +347 -0
- package/.next/types/app/api/worktrees/apply-default-agents/route.ts +347 -0
- package/.next/types/routes.d.ts +7 -1
- package/.next/types/validator.ts +54 -0
- package/dist/cli/commands/agents.d.ts +35 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +212 -0
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +18 -0
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +111 -0
- package/dist/cli/config/cli-dependencies.d.ts.map +1 -1
- package/dist/cli/config/cli-dependencies.js +11 -0
- package/dist/cli/docs/agent-operations.d.ts +1 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +30 -0
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +6 -0
- package/dist/cli/types/api-responses.d.ts +58 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +8 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/utils/preflight.d.ts.map +1 -1
- package/dist/cli/utils/preflight.js +6 -0
- package/dist/config/system-directories.d.ts +101 -0
- package/dist/config/system-directories.d.ts.map +1 -0
- package/dist/config/system-directories.js +211 -0
- package/dist/lib/cli-tools/types.d.ts +15 -1
- package/dist/lib/cli-tools/types.d.ts.map +1 -1
- package/dist/lib/detection/status-reason.d.ts +92 -0
- package/dist/lib/detection/status-reason.d.ts.map +1 -0
- package/dist/lib/detection/status-reason.js +94 -0
- package/dist/lib/updates/agent-updater.d.ts +247 -0
- package/dist/lib/updates/agent-updater.d.ts.map +1 -0
- package/dist/lib/updates/agent-updater.js +373 -0
- package/dist/lib/updates/agent-versions.d.ts +77 -0
- package/dist/lib/updates/agent-versions.d.ts.map +1 -0
- package/dist/lib/updates/agent-versions.js +138 -0
- package/dist/lib/updates/codex-version.d.ts +184 -0
- package/dist/lib/updates/codex-version.d.ts.map +1 -0
- package/dist/lib/updates/codex-version.js +215 -0
- package/dist/lib/verification/verify-config.d.ts +202 -0
- package/dist/lib/verification/verify-config.d.ts.map +1 -0
- package/dist/lib/verification/verify-config.js +429 -0
- package/dist/lib/verification/verify-draft.d.ts +182 -0
- package/dist/lib/verification/verify-draft.d.ts.map +1 -0
- package/dist/lib/verification/verify-draft.js +570 -0
- package/dist/server/src/cli/types/api-responses.js +9 -0
- package/dist/server/src/config/cli-tool-timing-config.js +15 -1
- package/dist/server/src/config/codex-update-dialog-config.js +154 -0
- package/dist/server/src/config/default-agents.js +138 -0
- package/dist/server/src/lib/cli-tools/antigravity.js +36 -12
- package/dist/server/src/lib/cli-tools/base.js +131 -0
- package/dist/server/src/lib/cli-tools/codex.js +350 -100
- package/dist/server/src/lib/cli-tools/copilot.js +34 -10
- package/dist/server/src/lib/cli-tools/gemini.js +34 -10
- package/dist/server/src/lib/cli-tools/liveness-spec.js +214 -0
- package/dist/server/src/lib/cli-tools/opencode.js +72 -19
- package/dist/server/src/lib/cli-tools/session-liveness.js +64 -0
- package/dist/server/src/lib/cli-tools/vibe-local.js +30 -10
- package/dist/server/src/lib/db/app-settings-db.js +142 -0
- package/dist/server/src/lib/db/worktree-db.js +178 -3
- package/dist/server/src/lib/detection/status-reason.js +17 -0
- package/dist/server/src/lib/detection/tool-liveness.js +233 -0
- package/dist/server/src/lib/detection/version-probes.js +290 -0
- package/dist/server/src/lib/git/worktrees.js +10 -0
- package/dist/server/src/lib/repo-config/agents-config.js +298 -0
- package/dist/server/src/lib/selected-agents-validator.js +93 -23
- package/dist/server/src/lib/session/claude-session.js +39 -108
- package/dist/server/src/lib/tmux/tmux.js +29 -0
- package/dist/server/src/lib/updates/agent-updater.js +373 -0
- package/dist/server/src/lib/updates/agent-versions.js +138 -0
- package/dist/server/src/lib/updates/codex-version.js +215 -0
- package/dist/server/src/lib/updates/index.js +42 -0
- package/dist/server/src/lib/verification/gate-runner.js +298 -37
- package/dist/server/src/lib/verification/machine-lock.js +11 -0
- package/dist/server/src/lib/verification/run-verdict-vocabulary.js +151 -0
- package/dist/server/src/lib/verification/verify-config.js +33 -0
- package/dist/server/src/types/sidebar.js +40 -9
- package/dist/types/cli-tool-contracts.d.ts +119 -0
- package/dist/types/cli-tool-contracts.d.ts.map +1 -1
- package/package.json +1 -1
- package/.next/server/chunks/1601.js +0 -7
- package/.next/server/chunks/222.js +0 -1
- package/.next/server/chunks/2366.js +0 -1
- package/.next/server/chunks/4689.js +0 -25
- package/.next/server/chunks/5089.js +0 -1
- package/.next/server/chunks/6274.js +0 -14
- package/.next/server/chunks/9067.js +0 -1
- package/.next/server/chunks/9373.js +0 -9
- package/.next/static/Dvfs4ZThl5vBhJGP-ZQuJ/_buildManifest.js +0 -1
- package/.next/static/chunks/3361-aa1b6e7c1d7eeeb4.js +0 -1
- package/.next/static/chunks/3922.0d2e64daf9f187da.js +0 -1
- package/.next/static/chunks/5229-580b581fce5aeb52.js +0 -1
- package/.next/static/chunks/6381-9a929249196a0e77.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/assistant/conversation/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/assistant/current-output/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/skills/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/templates/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/todos/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/more/page-03867ab635d197c7.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/review/page-9a6d18ddcccbb63c.js +0 -1
- package/.next/static/chunks/app/sessions/page-4d5382b257077c14.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-e3626364434d521b.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-817378dd7c580774.js +0 -1
- package/.next/static/css/6266bde3bce465a2.css +0 -1
- /package/.next/static/{Dvfs4ZThl5vBhJGP-ZQuJ → 0YoRrahue4Vchxg1z83IQ}/_ssgManifest.js +0 -0
|
@@ -18,6 +18,8 @@ exports.updateFavorite = updateFavorite;
|
|
|
18
18
|
exports.updateStatus = updateStatus;
|
|
19
19
|
exports.updateCliToolId = updateCliToolId;
|
|
20
20
|
exports.updateSelectedAgents = updateSelectedAgents;
|
|
21
|
+
exports.findUnchangedAgentWorktrees = findUnchangedAgentWorktrees;
|
|
22
|
+
exports.applySelectedAgentsToUnchanged = applySelectedAgentsToUnchanged;
|
|
21
23
|
exports.updateVibeLocalModel = updateVibeLocalModel;
|
|
22
24
|
exports.updateVibeLocalContextWindow = updateVibeLocalContextWindow;
|
|
23
25
|
exports.saveInitialBranch = saveInitialBranch;
|
|
@@ -29,6 +31,8 @@ exports.getWorktreesByRepository = getWorktreesByRepository;
|
|
|
29
31
|
exports.deleteRepositoryWorktrees = deleteRepositoryWorktrees;
|
|
30
32
|
exports.deleteWorktreesByIds = deleteWorktreesByIds;
|
|
31
33
|
const selected_agents_validator_1 = require("../../lib/selected-agents-validator");
|
|
34
|
+
const agents_config_1 = require("../../lib/repo-config/agents-config");
|
|
35
|
+
const app_settings_db_1 = require("./app-settings-db");
|
|
32
36
|
const chat_db_1 = require("./chat-db");
|
|
33
37
|
const worktree_id_rename_1 = require("./migrations/worktree-id-rename");
|
|
34
38
|
/**
|
|
@@ -82,6 +86,38 @@ function getLastMessagesByCliBatch(db, worktreeIds) {
|
|
|
82
86
|
}
|
|
83
87
|
return result;
|
|
84
88
|
}
|
|
89
|
+
/** Shared empty set, so the common "no repository declares anything" path allocates nothing. */
|
|
90
|
+
const EMPTY_ID_SET = new Set();
|
|
91
|
+
/**
|
|
92
|
+
* IDs of every worktree that already owns an `agent_instances` roster.
|
|
93
|
+
*
|
|
94
|
+
* One query for the whole list rather than one per row (Issue #2066): the
|
|
95
|
+
* sidebar poll must not grow N point queries. `agent_instances` holds a handful
|
|
96
|
+
* of rows per registered worktree, and only the distinct worktree ids are read.
|
|
97
|
+
*/
|
|
98
|
+
function worktreeIdsWithAgentInstances(db) {
|
|
99
|
+
const rows = db
|
|
100
|
+
.prepare('SELECT DISTINCT worktree_id FROM agent_instances')
|
|
101
|
+
.all();
|
|
102
|
+
return new Set(rows.map((row) => row.worktree_id));
|
|
103
|
+
}
|
|
104
|
+
/** Whether one worktree already owns an `agent_instances` roster (Issue #2066). */
|
|
105
|
+
function hasAgentInstances(db, worktreeId) {
|
|
106
|
+
return (db.prepare('SELECT 1 FROM agent_instances WHERE worktree_id = ? LIMIT 1').get(worktreeId) !==
|
|
107
|
+
undefined);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The repository layer for ONE worktree, withheld when that worktree already
|
|
111
|
+
* owns a roster (Issue #2066). The single-row twin of the batch logic in
|
|
112
|
+
* `getWorktrees()`; see the long comment there for why the withholding exists
|
|
113
|
+
* and why it is narrowed to this layer.
|
|
114
|
+
*/
|
|
115
|
+
function repoDefaultWithheldFromRoster(db, worktreeId, repositoryPath) {
|
|
116
|
+
const declared = (0, agents_config_1.getRepoDefaultSelectedAgents)(repositoryPath);
|
|
117
|
+
if (declared === null)
|
|
118
|
+
return null;
|
|
119
|
+
return hasAgentInstances(db, worktreeId) ? null : declared;
|
|
120
|
+
}
|
|
85
121
|
/**
|
|
86
122
|
* Get all worktrees sorted by updated_at (desc)
|
|
87
123
|
* Optionally filter by repository path
|
|
@@ -111,6 +147,52 @@ function getWorktrees(db, repositoryPath) {
|
|
|
111
147
|
// Batch fetch last messages for all worktrees (N+1 optimization)
|
|
112
148
|
const worktreeIds = rows.map(row => row.id);
|
|
113
149
|
const lastMessagesByCliMap = getLastMessagesByCliBatch(db, worktreeIds);
|
|
150
|
+
// Issue #2065: read the server-wide default ONCE. `upsertWorktree` never
|
|
151
|
+
// writes `selected_agents`, so on a scan/sync-populated install every row
|
|
152
|
+
// below takes the fallback path — resolving it per row would turn one point
|
|
153
|
+
// query into one per worktree on the sidebar's poll.
|
|
154
|
+
const appSettingsDefault = (0, app_settings_db_1.getDefaultSelectedAgents)(db);
|
|
155
|
+
// Issue #2066: the repository layer, resolved ONCE per distinct
|
|
156
|
+
// `repository_path` rather than per row. `getRepoDefaultSelectedAgents()` is
|
|
157
|
+
// itself served from a process-wide cache filled at sync — see its module
|
|
158
|
+
// header for why the read does not belong on this (polled) path.
|
|
159
|
+
const repoDefaults = new Map();
|
|
160
|
+
for (const repositoryPath of new Set(rows.map((row) => row.repository_path))) {
|
|
161
|
+
if (!repositoryPath)
|
|
162
|
+
continue;
|
|
163
|
+
repoDefaults.set(repositoryPath, (0, agents_config_1.getRepoDefaultSelectedAgents)(repositoryPath));
|
|
164
|
+
}
|
|
165
|
+
// Issue #2066: a worktree that ALREADY has an `agent_instances` roster is not
|
|
166
|
+
// offered the repository declaration.
|
|
167
|
+
//
|
|
168
|
+
// `resolveAgentInstances()` protects the roster itself with an early return,
|
|
169
|
+
// but `selectedAgents` is a SECOND channel: `/sessions` and the Review tab
|
|
170
|
+
// render `wt.selectedAgents ?? clientDefault` and never look at
|
|
171
|
+
// `agentInstances`. Without this, committing an `agents.yaml` would repaint
|
|
172
|
+
// the chips of a branch whose tabs it cannot and must not change — and the
|
|
173
|
+
// running agent would drop out of "active agents" because it is not in the
|
|
174
|
+
// declared list. `PATCH /api/worktrees/[id]` writes `agentInstances` and
|
|
175
|
+
// `selectedAgents` from independent branches, so "has a roster, column still
|
|
176
|
+
// NULL" is a state the product produces routinely, not an edge case.
|
|
177
|
+
//
|
|
178
|
+
// Deliberately narrowed to the repository layer. The `app_settings` layer has
|
|
179
|
+
// the same shape (#2065) and the same gap, but changing it is a change to
|
|
180
|
+
// #2065's behaviour; what #2066 has to answer for is that it widened the gap
|
|
181
|
+
// from "an admin who can reach server settings" to "anyone who can commit to
|
|
182
|
+
// the repository". See docs/design/repo-agents-config.md §2.
|
|
183
|
+
//
|
|
184
|
+
// The roster query runs only when some repository actually declares
|
|
185
|
+
// something, so an install with no `agents.yaml` anywhere issues exactly the
|
|
186
|
+
// queries it issued before this Issue.
|
|
187
|
+
const anyRepoDeclares = [...repoDefaults.values()].some((value) => value !== null);
|
|
188
|
+
const withRoster = anyRepoDeclares ? worktreeIdsWithAgentInstances(db) : EMPTY_ID_SET;
|
|
189
|
+
const repoDefaultFor = (row) => {
|
|
190
|
+
if (!row.repository_path)
|
|
191
|
+
return null;
|
|
192
|
+
if (withRoster.has(row.id))
|
|
193
|
+
return null;
|
|
194
|
+
return repoDefaults.get(row.repository_path) ?? null;
|
|
195
|
+
};
|
|
114
196
|
return rows.map((row) => {
|
|
115
197
|
const lastMessagesByCli = lastMessagesByCliMap.get(row.id) || {};
|
|
116
198
|
return {
|
|
@@ -133,7 +215,7 @@ function getWorktrees(db, repositoryPath) {
|
|
|
133
215
|
status: row.status || null,
|
|
134
216
|
link: row.link || undefined,
|
|
135
217
|
cliToolId: row.cli_tool_id ?? 'claude',
|
|
136
|
-
selectedAgents: (0, selected_agents_validator_1.parseSelectedAgents)(row.selected_agents),
|
|
218
|
+
selectedAgents: (0, selected_agents_validator_1.parseSelectedAgents)(row.selected_agents, appSettingsDefault, repoDefaultFor(row)),
|
|
137
219
|
vibeLocalModel: row.vibe_local_model ?? null,
|
|
138
220
|
vibeLocalContextWindow: row.vibe_local_context_window ?? null,
|
|
139
221
|
};
|
|
@@ -216,7 +298,10 @@ function getWorktreeById(db, id) {
|
|
|
216
298
|
status: row.status || null,
|
|
217
299
|
link: row.link || undefined,
|
|
218
300
|
cliToolId: row.cli_tool_id ?? 'claude',
|
|
219
|
-
|
|
301
|
+
// Issue #2066: same layers, and the same withholding, as getWorktrees().
|
|
302
|
+
// The roster probe runs only when this repository actually declares
|
|
303
|
+
// something, so a tree with no `agents.yaml` issues no extra query.
|
|
304
|
+
selectedAgents: (0, selected_agents_validator_1.parseSelectedAgents)(row.selected_agents, (0, app_settings_db_1.getDefaultSelectedAgents)(db), repoDefaultWithheldFromRoster(db, row.id, row.repository_path)),
|
|
220
305
|
vibeLocalModel: row.vibe_local_model ?? null,
|
|
221
306
|
vibeLocalContextWindow: row.vibe_local_context_window ?? null,
|
|
222
307
|
};
|
|
@@ -359,7 +444,7 @@ function updateCliToolId(db, id, cliToolId) {
|
|
|
359
444
|
*
|
|
360
445
|
* @param db - Database instance
|
|
361
446
|
* @param id - Worktree ID
|
|
362
|
-
* @param selectedAgents - Array of 2-
|
|
447
|
+
* @param selectedAgents - Array of 2-6 CLIToolType values (MIN/MAX_SELECTED_AGENTS)
|
|
363
448
|
*/
|
|
364
449
|
function updateSelectedAgents(db, id, selectedAgents) {
|
|
365
450
|
const stmt = db.prepare(`
|
|
@@ -369,6 +454,96 @@ function updateSelectedAgents(db, id, selectedAgents) {
|
|
|
369
454
|
`);
|
|
370
455
|
stmt.run(JSON.stringify(selectedAgents), id);
|
|
371
456
|
}
|
|
457
|
+
/**
|
|
458
|
+
* The worktrees of ONE repository whose agent list is still UNCHANGED by its
|
|
459
|
+
* user (Issue #2067).
|
|
460
|
+
*
|
|
461
|
+
* ## The repository argument is not optional, and that is the point
|
|
462
|
+
*
|
|
463
|
+
* The action this serves lives in the agent pane of ONE worktree, so its blast
|
|
464
|
+
* radius has to be the repository that worktree belongs to. An earlier revision
|
|
465
|
+
* of this function took no repository and scanned `worktrees` whole: pressing
|
|
466
|
+
* "apply to unchanged branches" from a worktree of repository B rewrote the
|
|
467
|
+
* unchanged worktrees of repository A as well. Requiring the argument is what
|
|
468
|
+
* makes that impossible to reintroduce by omission.
|
|
469
|
+
*
|
|
470
|
+
* ## "Unchanged"
|
|
471
|
+
*
|
|
472
|
+
* `selected_agents IS NULL` **and** no `agent_instances` row — deliberately the
|
|
473
|
+
* same two facts #2066 checks before it lets a repository declaration reach a
|
|
474
|
+
* worktree, checked with the same helper (`worktreeIdsWithAgentInstances`)
|
|
475
|
+
* rather than a second query that says the same thing. The two channels are
|
|
476
|
+
* independent: `PATCH /api/worktrees/[id]` writes `agentInstances` and
|
|
477
|
+
* `selectedAgents` from separate branches, so "has a roster, column still NULL"
|
|
478
|
+
* and "column set, no roster" are both states the product produces routinely,
|
|
479
|
+
* and a worktree in EITHER of them has been touched by a human.
|
|
480
|
+
*
|
|
481
|
+
* ## Why a declaring repository yields nothing
|
|
482
|
+
*
|
|
483
|
+
* `SELECTED_AGENTS_LAYERS` puts the `worktree` column ABOVE the repository file,
|
|
484
|
+
* so writing `selected_agents` onto a worktree of a repository that ships
|
|
485
|
+
* `.commandmate/agents.yaml` does not merely win once — it retires the
|
|
486
|
+
* declaration for that branch permanently, and editing the file afterwards has
|
|
487
|
+
* no effect and no explanation. A committed declaration is a more deliberate
|
|
488
|
+
* answer to "which agents does this branch open with" than a button press in one
|
|
489
|
+
* branch's settings pane, so the declaration wins and the caller is told why
|
|
490
|
+
* (`repoDeclares`) instead of being handed a count of zero it cannot explain.
|
|
491
|
+
*
|
|
492
|
+
* @param db - Database instance
|
|
493
|
+
* @param repositoryPath - The repository to scope to (`worktrees.repository_path`)
|
|
494
|
+
* @returns The scope, whether the repository declares, and the eligible IDs
|
|
495
|
+
*/
|
|
496
|
+
function findUnchangedAgentWorktrees(db, repositoryPath) {
|
|
497
|
+
// Served from #2066's process-wide cache; see `agents-config.ts` for why this
|
|
498
|
+
// is not a filesystem probe on a hot path.
|
|
499
|
+
const repoDeclares = (0, agents_config_1.getRepoDefaultSelectedAgents)(repositoryPath) !== null;
|
|
500
|
+
if (repoDeclares) {
|
|
501
|
+
return { repositoryPath, repoDeclares, ids: [] };
|
|
502
|
+
}
|
|
503
|
+
const withRoster = worktreeIdsWithAgentInstances(db);
|
|
504
|
+
const rows = db
|
|
505
|
+
.prepare('SELECT id FROM worktrees WHERE repository_path = ? AND selected_agents IS NULL ORDER BY id ASC')
|
|
506
|
+
.all(repositoryPath);
|
|
507
|
+
return {
|
|
508
|
+
repositoryPath,
|
|
509
|
+
repoDeclares,
|
|
510
|
+
ids: rows.map((row) => row.id).filter((id) => !withRoster.has(id)),
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Write `selectedAgents` onto every worktree {@link findUnchangedAgentWorktrees}
|
|
515
|
+
* reports for `repositoryPath`, in ONE transaction (Issue #2067).
|
|
516
|
+
*
|
|
517
|
+
* The eligible set is recomputed INSIDE the transaction rather than taken as an
|
|
518
|
+
* argument: the UI shows a count before it asks for confirmation, and the number
|
|
519
|
+
* it shows has to be the number of rows this actually writes. Passing the ids in
|
|
520
|
+
* would make the caller's snapshot authoritative and turn a worktree created
|
|
521
|
+
* between the count and the confirmation into a silent miss.
|
|
522
|
+
*
|
|
523
|
+
* The transaction is not decoration. Without it, a write that fails partway —
|
|
524
|
+
* a locked database, a constraint, a trigger — leaves a repository split between
|
|
525
|
+
* branches that took the new order and branches that did not, with nothing on
|
|
526
|
+
* screen saying which. `tests/unit/db/apply-default-agents-2067.test.ts` pins
|
|
527
|
+
* this by aborting a middle row and asserting the earlier ones rolled back.
|
|
528
|
+
*
|
|
529
|
+
* Rows are written through `updateSelectedAgents()` so the column's one writer
|
|
530
|
+
* stays its one writer.
|
|
531
|
+
*
|
|
532
|
+
* @param db - Database instance
|
|
533
|
+
* @param repositoryPath - The repository to scope to; never server-wide
|
|
534
|
+
* @param selectedAgents - Ordered, already-validated agents; `[0]` is the primary
|
|
535
|
+
* @returns The IDs that were written, in the order they were written
|
|
536
|
+
*/
|
|
537
|
+
function applySelectedAgentsToUnchanged(db, repositoryPath, selectedAgents) {
|
|
538
|
+
const apply = db.transaction(() => {
|
|
539
|
+
const { ids } = findUnchangedAgentWorktrees(db, repositoryPath);
|
|
540
|
+
for (const id of ids) {
|
|
541
|
+
updateSelectedAgents(db, id, selectedAgents);
|
|
542
|
+
}
|
|
543
|
+
return ids;
|
|
544
|
+
});
|
|
545
|
+
return apply();
|
|
546
|
+
}
|
|
372
547
|
/**
|
|
373
548
|
* Update vibe_local_model for a worktree
|
|
374
549
|
* Issue #368: Persists the user's Ollama model selection for vibe-local
|
|
@@ -56,6 +56,23 @@ exports.STATUS_REASON = {
|
|
|
56
56
|
OPENCODE_RESPONSE_COMPLETE: 'opencode_response_complete',
|
|
57
57
|
INPUT_PROMPT: 'input_prompt',
|
|
58
58
|
NO_RECENT_OUTPUT: 'no_recent_output',
|
|
59
|
+
/**
|
|
60
|
+
* Issue #2070: the tmux session is there, and the TOOL is not.
|
|
61
|
+
*
|
|
62
|
+
* Published by `worktree-status-helper` when the liveness probe reads a bare
|
|
63
|
+
* shell prompt at the bottom of a pane whose agent quit, updated itself or
|
|
64
|
+
* crashed (`judgeToolLiveness`). It is the ONE reason on this list that
|
|
65
|
+
* accompanies `isRunning: false` — every other one describes a frame a live
|
|
66
|
+
* agent drew — which is exactly why it is worth a token of its own: without
|
|
67
|
+
* it the sidebar and `commandmate ls` render such a session as plain `idle`,
|
|
68
|
+
* indistinguishable from one that was never started, and the operator has no
|
|
69
|
+
* way to tell "start it" from "it died under you".
|
|
70
|
+
*
|
|
71
|
+
* ADDITIVE, in the strict sense: no existing reason's value or meaning
|
|
72
|
+
* changes, and no surface that does not know the token behaves differently —
|
|
73
|
+
* a reader that does not recognise it sees the same `idle` it saw before.
|
|
74
|
+
*/
|
|
75
|
+
EXITED: 'exited',
|
|
59
76
|
/**
|
|
60
77
|
* A tool's own detector looked at this frame and recognised nothing
|
|
61
78
|
* (Issue #1927, §6.1).
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* "Did the TOOL exit and leave a bare shell behind?" — the shared rule
|
|
4
|
+
* (Issue #2070).
|
|
5
|
+
*
|
|
6
|
+
* A tmux session outlives the process it was created for more often than the
|
|
7
|
+
* code used to admit. codex's own update dialog replaces codex with `npm
|
|
8
|
+
* install` and exits; `Ctrl+C` twice quits it; a crash does the same thing
|
|
9
|
+
* without asking. In each case `has-session` keeps answering yes, so `isRunning`
|
|
10
|
+
* stayed true, the sidebar kept its dot, and the next `send` sat in
|
|
11
|
+
* `waitForPrompt` until it timed out — recoverable only by killing the session
|
|
12
|
+
* by hand.
|
|
13
|
+
*
|
|
14
|
+
* CommandMate already had the answer to this, written for claude and reachable
|
|
15
|
+
* from exactly one `cliToolId === 'claude'` branch (`isSessionHealthy`). What
|
|
16
|
+
* was claude-specific about it was not the rule but the two patterns it was
|
|
17
|
+
* spelled in terms of. This module is that rule with the patterns lifted out
|
|
18
|
+
* into {@link ToolLivenessSpec}; `lib/cli-tools/liveness-spec` is where each
|
|
19
|
+
* tool fills them in.
|
|
20
|
+
*
|
|
21
|
+
* Pure and synchronous on purpose: no tmux, no capture, nothing to mock. The
|
|
22
|
+
* probe that feeds it a frame is `probeSessionLiveness` in
|
|
23
|
+
* `lib/cli-tools/session-liveness`, which is where the tmux round trip belongs
|
|
24
|
+
* (§4 D4 keeps `src/lib/detection/**` off the transport).
|
|
25
|
+
*
|
|
26
|
+
* @module lib/detection/tool-liveness
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.FATAL_PATTERN_TAIL_LINES = exports.SHELL_PROMPT_LINE_PATTERNS = exports.MAX_SHELL_PROMPT_LENGTH = exports.SHELL_PROMPT_ENDINGS = void 0;
|
|
30
|
+
exports.findFatalPattern = findFatalPattern;
|
|
31
|
+
exports.findShellPromptTail = findShellPromptTail;
|
|
32
|
+
exports.judgeToolLiveness = judgeToolLiveness;
|
|
33
|
+
const ansi_1 = require("./ansi");
|
|
34
|
+
/**
|
|
35
|
+
* Trailing characters that make a short last row a shell prompt.
|
|
36
|
+
*
|
|
37
|
+
* `$` bash/sh, `%` zsh, `#` root. Verbatim the list `claude-session.ts` has
|
|
38
|
+
* carried as its private `SHELL_PROMPT_ENDINGS` since the health check was
|
|
39
|
+
* written — moved, not redesigned.
|
|
40
|
+
*/
|
|
41
|
+
exports.SHELL_PROMPT_ENDINGS = ['$', '%', '#'];
|
|
42
|
+
/**
|
|
43
|
+
* Longest a last row may be and still be read as a shell prompt by the endings
|
|
44
|
+
* rule alone.
|
|
45
|
+
*
|
|
46
|
+
* claude's number, kept as claude's default (`MAX_SHELL_PROMPT_LENGTH`, "40 is
|
|
47
|
+
* an empirical threshold with safety margin"). Issue #2070 measured why it
|
|
48
|
+
* cannot be the whole rule: the zsh default prompt of the machine the Issue was
|
|
49
|
+
* reproduced on renders as `maenokota@MAENOnoMac-Studio work-codex %` — forty
|
|
50
|
+
* characters exactly, i.e. one past this gate — so a codex session that had
|
|
51
|
+
* genuinely fallen back to the shell read as alive. See
|
|
52
|
+
* {@link SHELL_PROMPT_LINE_PATTERNS}.
|
|
53
|
+
*/
|
|
54
|
+
exports.MAX_SHELL_PROMPT_LENGTH = 40;
|
|
55
|
+
/**
|
|
56
|
+
* Whole-line forms that positively identify a shell prompt, independent of
|
|
57
|
+
* length (Issue #2070).
|
|
58
|
+
*
|
|
59
|
+
* Checked BEFORE the length gate, so a long-but-real prompt is still a prompt.
|
|
60
|
+
* Both are anchored at both ends and require a `user@host` head, which is what
|
|
61
|
+
* keeps them off TUI content: an agent's transcript row that happens to end in
|
|
62
|
+
* `$` does not begin with `name@host`.
|
|
63
|
+
*
|
|
64
|
+
* Deliberately NOT extended to the bare `❯` / `>` prompts starship, pure and
|
|
65
|
+
* agnoster draw. Those glyphs are the composer of claude, copilot and gemini —
|
|
66
|
+
* `COPILOT_PROMPT_PATTERN` matching a starship prompt is a measured hazard
|
|
67
|
+
* (#1907) — so a rule that read them as "shell" would relaunch a tool into its
|
|
68
|
+
* own live pane. The cost is a false NEGATIVE on those prompts (the exit is not
|
|
69
|
+
* noticed), which is the direction this rule is allowed to be wrong in.
|
|
70
|
+
*/
|
|
71
|
+
exports.SHELL_PROMPT_LINE_PATTERNS = [
|
|
72
|
+
// zsh / bash defaults: `user@host dir %`, `user@host:~/dir$`
|
|
73
|
+
/^[\w.-]+@[\w.-]+[\s:].*[$%#]$/,
|
|
74
|
+
// RHEL-style bash: `[user@host dir]$`
|
|
75
|
+
/^\[[\w.-]+@[\w.-]+[^\]]*\][$#]$/,
|
|
76
|
+
];
|
|
77
|
+
/**
|
|
78
|
+
* How many content rows from the bottom a fatal-pattern search may read.
|
|
79
|
+
*
|
|
80
|
+
* claude's `HEALTH_CHECK_ERROR_TAIL_LINES`, unchanged: an error that has already
|
|
81
|
+
* scrolled up describes a session that recovered, and must not condemn it.
|
|
82
|
+
*/
|
|
83
|
+
exports.FATAL_PATTERN_TAIL_LINES = 10;
|
|
84
|
+
/** `cleanOutput` split into rows, blank ones dropped. */
|
|
85
|
+
function contentRows(cleanTrimmedOutput) {
|
|
86
|
+
return cleanTrimmedOutput.split('\n').filter((line) => line.trim() !== '');
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The fatal pattern visible in the tail of `cleanOutput`, or null.
|
|
90
|
+
*
|
|
91
|
+
* Only the last {@link FATAL_PATTERN_TAIL_LINES} content rows are searched.
|
|
92
|
+
* Exported because claude's launch loop applies the same judgement while it is
|
|
93
|
+
* still waiting for the prompt (Issue #1637) — a session already showing
|
|
94
|
+
* "Claude Code cannot be launched inside another Claude Code session" must not
|
|
95
|
+
* burn the whole 60 s budget before saying so.
|
|
96
|
+
*
|
|
97
|
+
* @param cleanOutput - ANSI-stripped pane output
|
|
98
|
+
* @param spec - The tool's liveness declaration
|
|
99
|
+
* @returns The matched pattern (or regex source) for the log, or null
|
|
100
|
+
*/
|
|
101
|
+
function findFatalPattern(cleanOutput, spec) {
|
|
102
|
+
const tailText = contentRows(cleanOutput.trim())
|
|
103
|
+
.slice(-exports.FATAL_PATTERN_TAIL_LINES)
|
|
104
|
+
.join('\n');
|
|
105
|
+
for (const pattern of spec.fatalPatterns) {
|
|
106
|
+
if (tailText.includes(pattern))
|
|
107
|
+
return pattern;
|
|
108
|
+
}
|
|
109
|
+
for (const regex of spec.fatalRegexPatterns) {
|
|
110
|
+
if (regex.test(tailText))
|
|
111
|
+
return regex.source;
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Whether `line` ends in one of `endings`, applying claude's own exclusion.
|
|
117
|
+
*
|
|
118
|
+
* `Context left until auto-compact: 7%` ends in `%` and is not a prompt; the
|
|
119
|
+
* `\d+%$` carve-out is the one claude has always had, and it is kept here
|
|
120
|
+
* character for character because claude's verdicts must not move (Issue #2070
|
|
121
|
+
* 受入条件).
|
|
122
|
+
*/
|
|
123
|
+
function endsWithShellPromptChar(line, endings) {
|
|
124
|
+
return endings.some((ending) => {
|
|
125
|
+
if (!line.endsWith(ending))
|
|
126
|
+
return false;
|
|
127
|
+
if (ending === '%' && /\d+%$/.test(line))
|
|
128
|
+
return false;
|
|
129
|
+
return true;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* The bottom row of `cleanOutput`, when it reads as a shell prompt.
|
|
134
|
+
*
|
|
135
|
+
* Steps 4-6 of {@link judgeToolLiveness}, lifted out verbatim so there is one
|
|
136
|
+
* definition of "this pane is a bare shell" rather than two. Note what is NOT
|
|
137
|
+
* here: the alive-pattern window of step 2. That is the difference between the
|
|
138
|
+
* two questions, and it is why this is exported (Issue #2068).
|
|
139
|
+
*
|
|
140
|
+
* `judgeToolLiveness` asks **"is the tool gone?"** and answers conservatively —
|
|
141
|
+
* any alive pattern anywhere in the bottom window vetoes the exit, because a
|
|
142
|
+
* relaunch hangs off its verdict. That veto is right for the general case and
|
|
143
|
+
* wrong for exactly one measured frame: the pane codex leaves behind after its
|
|
144
|
+
* own `1. Update now`. codex-cli 0.149.1 exits into `npm install -g
|
|
145
|
+
* @openai/codex`, which prints three rows and returns to the shell — so the
|
|
146
|
+
* dead `› 1. Update now` option row is still SEVEN content rows above the live
|
|
147
|
+
* shell prompt, inside `LIVENESS_ALIVE_TAIL_LINES`, and `CODEX_PROMPT_PATTERN`
|
|
148
|
+
* reads it as codex still drawing the pane (measured 2026-08-31, private tmux
|
|
149
|
+
* socket, 200x1000, isolated `CODEX_HOME`).
|
|
150
|
+
*
|
|
151
|
+
* `CodexTool.waitForReady` therefore asks this narrower question instead, and
|
|
152
|
+
* only about a pane it has just watched answer the update dialog — where the
|
|
153
|
+
* scrollback above the prompt is known to be spent and position is the whole
|
|
154
|
+
* story, exactly as it is for every other codex classifier since Issue #892.
|
|
155
|
+
* Widening `judgeToolLiveness` itself to agree would be a change to the shared
|
|
156
|
+
* rule every tool is judged by, and it is not made here.
|
|
157
|
+
*
|
|
158
|
+
* @param cleanOutput - ANSI-stripped pane output
|
|
159
|
+
* @param spec - The tool's liveness declaration
|
|
160
|
+
* @returns The prompt row and how it was recognised, or null
|
|
161
|
+
*/
|
|
162
|
+
function findShellPromptTail(cleanOutput, spec) {
|
|
163
|
+
const rows = contentRows(cleanOutput.trim());
|
|
164
|
+
const lastLine = rows[rows.length - 1]?.trim() ?? '';
|
|
165
|
+
if (!/\d+%$/.test(lastLine) && spec.shellPromptPatterns.some((p) => p.test(lastLine))) {
|
|
166
|
+
return { line: lastLine, via: 'pattern' };
|
|
167
|
+
}
|
|
168
|
+
// The length gate is a NEGATIVE result, not a fall-through: a row this long is
|
|
169
|
+
// not a prompt, and the endings rule below must not get to claim it.
|
|
170
|
+
if (lastLine.length >= spec.maxShellPromptLength) {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
if (endsWithShellPromptChar(lastLine, spec.shellPromptEndings)) {
|
|
174
|
+
return { line: lastLine, via: 'ending' };
|
|
175
|
+
}
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Decide whether the tool this spec describes is still drawing the pane.
|
|
180
|
+
*
|
|
181
|
+
* The rule, in the order the branches run — which is claude's order, because
|
|
182
|
+
* claude's spec must produce claude's historical answers:
|
|
183
|
+
*
|
|
184
|
+
* 1. **nothing on the pane** → exited only if the spec says an unreadable
|
|
185
|
+
* frame counts (claude alone; see {@link ToolLivenessSpec.unreadableIsExited});
|
|
186
|
+
* 2. **an alive pattern matches the bottom window** → alive. This is the
|
|
187
|
+
* tool's prompt-ready rule and its busy/dialog chrome, and it is checked
|
|
188
|
+
* against a WINDOW rather than the frame for every tool but claude: a tool's
|
|
189
|
+
* chrome does not vanish when it quits, it scrolls up;
|
|
190
|
+
* 3. **a fatal pattern in the tail** → exited;
|
|
191
|
+
* 4. **the last row positively reads as a shell prompt** → exited;
|
|
192
|
+
* 5. **the last row is too long to be a prompt** → alive;
|
|
193
|
+
* 6. **the last row ends in `$` / `%` / `#`** → exited;
|
|
194
|
+
* 7. otherwise **alive** — the honest answer when nothing said either way.
|
|
195
|
+
*
|
|
196
|
+
* Steps 4-6 are the positive half of the verdict and they are not optional.
|
|
197
|
+
* A frame that merely fails step 2 (a tool mid-launch, a screen nobody has
|
|
198
|
+
* measured) must come out ALIVE, because Issue #2070 puts a relaunch behind
|
|
199
|
+
* this answer and a relaunch into a live pane types the launch command into the
|
|
200
|
+
* agent's composer.
|
|
201
|
+
*
|
|
202
|
+
* @param rawOutput - Pane capture, ANSI intact (stripped here)
|
|
203
|
+
* @param spec - The tool's liveness declaration
|
|
204
|
+
* @returns Whether the tool is there, and — when it is not — why not
|
|
205
|
+
*/
|
|
206
|
+
function judgeToolLiveness(rawOutput, spec) {
|
|
207
|
+
const trimmed = (0, ansi_1.stripAnsi)(rawOutput).trim();
|
|
208
|
+
if (trimmed === '') {
|
|
209
|
+
return spec.unreadableIsExited
|
|
210
|
+
? { alive: false, reason: 'empty output' }
|
|
211
|
+
: { alive: true };
|
|
212
|
+
}
|
|
213
|
+
const rows = contentRows(trimmed);
|
|
214
|
+
const aliveWindow = spec.aliveTailLines === null ? trimmed : rows.slice(-spec.aliveTailLines).join('\n');
|
|
215
|
+
if (spec.alivePatterns.some((pattern) => pattern.test(aliveWindow))) {
|
|
216
|
+
return { alive: true };
|
|
217
|
+
}
|
|
218
|
+
const fatal = findFatalPattern(trimmed, spec);
|
|
219
|
+
if (fatal !== null) {
|
|
220
|
+
return { alive: false, reason: `error pattern: ${fatal}` };
|
|
221
|
+
}
|
|
222
|
+
// Steps 4-6, via the predicate they were lifted into (Issue #2068). The two
|
|
223
|
+
// reason strings are unchanged, and so is the verdict for every frame: a
|
|
224
|
+
// `null` here is the old "too long" and "nothing matched" branches, which both
|
|
225
|
+
// came out alive.
|
|
226
|
+
const shellTail = findShellPromptTail(trimmed, spec);
|
|
227
|
+
if (shellTail !== null) {
|
|
228
|
+
return shellTail.via === 'pattern'
|
|
229
|
+
? { alive: false, reason: `shell prompt detected: ${shellTail.line}` }
|
|
230
|
+
: { alive: false, reason: `shell prompt ending detected: ${shellTail.line}` };
|
|
231
|
+
}
|
|
232
|
+
return { alive: true };
|
|
233
|
+
}
|