commandmate 0.22.2 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +383 -374
- package/.next/app-path-routes-manifest.json +16 -15
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +9 -9
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route.js +1 -1
- package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route.js +1 -1
- package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route.js +3 -3
- package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route.js +1 -1
- package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route.js +1 -1
- package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -0
- package/.next/server/app/api/push/escalation/route.js.nft.json +1 -0
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/push/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +1 -1
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route.js +1 -1
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -4
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -4
- package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js +1 -1
- package/.next/server/app/api/templates/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route.js +1 -1
- package/.next/server/app/api/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route.js +1 -1
- package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +6 -6
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -4
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +2 -2
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +2 -2
- package/.next/server/app/more/page.js.nft.json +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +2 -2
- package/.next/server/app/repositories/page.js.nft.json +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page.js.nft.json +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +2 -2
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +2 -2
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +1 -1
- package/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +6 -6
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +16 -15
- package/.next/server/chunks/1029.js +1 -1
- package/.next/server/chunks/1068.js +1 -1
- package/.next/server/chunks/1296.js +1 -1
- package/.next/server/chunks/1366.js +1 -1
- package/.next/server/chunks/1601.js +7 -0
- package/.next/server/chunks/1825.js +1 -1
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2546.js +1 -1
- package/.next/server/chunks/3241.js +1 -0
- package/.next/server/chunks/3417.js +1 -1
- package/.next/server/chunks/3451.js +1 -1
- package/.next/server/chunks/3480.js +1 -1
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/406.js +10 -6
- package/.next/server/chunks/4393.js +1 -0
- package/.next/server/chunks/4444.js +1 -1
- package/.next/server/chunks/4455.js +1 -0
- package/.next/server/chunks/5164.js +1 -0
- package/.next/server/chunks/5959.js +5 -6
- package/.next/server/chunks/5998.js +2 -13
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6159.js +1 -1
- package/.next/server/chunks/6274.js +3 -3
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6781.js +1 -0
- package/.next/server/chunks/7458.js +6 -0
- package/.next/server/chunks/{3753.js → 7970.js} +57 -32
- package/.next/server/chunks/8536.js +1 -1
- package/.next/server/chunks/880.js +21 -0
- package/.next/server/chunks/8807.js +250 -192
- package/.next/server/chunks/9058.js +1 -1
- package/.next/server/chunks/9067.js +1 -1
- package/.next/server/chunks/9123.js +8 -8
- package/.next/server/chunks/9358.js +1 -1
- package/.next/server/chunks/9360.js +1 -1
- package/.next/server/chunks/9373.js +3 -3
- package/.next/server/chunks/9687.js +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/chunks/4322-dfd5a7119b5ba4fc.js +1 -0
- package/.next/static/chunks/{4974-eaf66770bfa9dea0.js → 4974-35592ec312322124.js} +1 -1
- package/.next/static/chunks/5229-0610b4e3288e777d.js +1 -0
- package/.next/static/chunks/6381-18a6a02a94d00d76.js +1 -0
- package/.next/static/chunks/7229.7f0f5a7032b612b4.js +1 -0
- package/.next/static/chunks/{744-fa8c0ae444c8338c.js → 744-3ad06d8c8ca482fc.js} +1 -1
- package/.next/static/chunks/app/api/app/update/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
- package/.next/static/chunks/app/api/app/update-check/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
- package/.next/static/chunks/app/api/assistant/conversation/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
- package/.next/static/chunks/app/api/assistant/current-output/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
- package/.next/static/chunks/app/api/assistant/messages/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/skills/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/templates/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/todos/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/chat/page-15d13fc024d78f5d.js +1 -0
- package/.next/static/chunks/app/layout-6a26ea22d5cf03dc.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/more/page-b8ba537baeac8d5b.js +1 -0
- package/.next/static/chunks/app/page-afc64708362f31e5.js +1 -0
- package/.next/static/chunks/app/proxy/[...path]/route-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/repositories/page-3469dacb6be7842f.js +1 -0
- package/.next/static/chunks/app/review/page-2d9cb7e068f8f35a.js +1 -0
- package/.next/static/chunks/app/sessions/page-7470c2bfd89e0df9.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/page-5e24481162f7ea78.js +1 -0
- package/.next/static/chunks/app/skills/installed/page-efd2d710a27f9735.js +1 -0
- package/.next/static/chunks/app/skills/page-0498adfc6e48684b.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-9ddcb224594f620f.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/layout-fae89f8d4cc3ff97.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-e611d30e47989e5d.js +1 -0
- package/.next/static/chunks/{webpack-180bebdee221b6f4.js → webpack-3534d858912a6c92.js} +1 -1
- package/.next/static/css/3ac44cfc082d02ad.css +1 -0
- package/.next/static/smu4mnL7qMf8w38n9dQJE/_buildManifest.js +1 -0
- package/.next/trace +12 -12
- package/.next/types/app/api/push/escalation/route.ts +347 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +6 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +19 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +6 -0
- package/dist/cli/commands/verify.js +6 -1
- package/dist/cli/types/api-responses.d.ts +46 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.js +17 -1
- package/dist/server/locales/en/notifications.json +20 -1
- package/dist/server/locales/ja/notifications.json +20 -1
- package/dist/server/server.js +23 -0
- package/dist/server/src/config/log-config.js +10 -1
- package/dist/server/src/config/safe-directory.js +103 -0
- package/dist/server/src/config/system-directories.js +74 -9
- package/dist/server/src/lib/cli-tools/antigravity.js +19 -2
- package/dist/server/src/lib/cli-tools/codex.js +95 -1
- package/dist/server/src/lib/cli-tools/copilot.js +30 -1
- package/dist/server/src/lib/cli-tools/gemini.js +28 -2
- package/dist/server/src/lib/cli-tools/opencode.js +51 -2
- package/dist/server/src/lib/db/db.js +2 -1
- package/dist/server/src/lib/db/migrations/index.js +2 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v56-gate-result-source.js +58 -0
- package/dist/server/src/lib/db/verification-db.js +26 -6
- package/dist/server/src/lib/detection/model-info-extractor.js +384 -0
- package/dist/server/src/lib/git/git-default-branch.js +59 -0
- package/dist/server/src/lib/hooks/agent-event-service.js +205 -0
- package/dist/server/src/lib/hooks/agent-event-types.js +7 -86
- package/dist/server/src/lib/hooks/hook-settings-generator.js +26 -11
- package/dist/server/src/lib/hooks/permission-decision-service.js +269 -0
- package/dist/server/src/lib/hooks/sources/abstain.js +78 -0
- package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +372 -0
- package/dist/server/src/lib/hooks/sources/antigravity/source.js +229 -0
- package/dist/server/src/lib/hooks/sources/antigravity/tool-id.js +16 -0
- package/dist/server/src/lib/hooks/sources/claude/source.js +150 -0
- package/dist/server/src/lib/hooks/sources/claude/tool-id.js +18 -0
- package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +465 -0
- package/dist/server/src/lib/hooks/sources/codex/source.js +143 -0
- package/dist/server/src/lib/hooks/sources/codex/tool-id.js +15 -0
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +473 -0
- package/dist/server/src/lib/hooks/sources/copilot/source.js +210 -0
- package/dist/server/src/lib/hooks/sources/copilot/tool-id.js +15 -0
- package/dist/server/src/lib/hooks/sources/define-source.js +177 -0
- package/dist/server/src/lib/hooks/sources/event-mapper.js +177 -0
- package/dist/server/src/lib/hooks/sources/gemini/event-vocabulary.js +102 -0
- package/dist/server/src/lib/hooks/sources/gemini/settings-generator.js +315 -0
- package/dist/server/src/lib/hooks/sources/gemini/shared-config-tree.js +103 -0
- package/dist/server/src/lib/hooks/sources/gemini/source.js +151 -0
- package/dist/server/src/lib/hooks/sources/gemini/tool-id.js +17 -0
- package/dist/server/src/lib/hooks/sources/hook-event-vocabulary.js +111 -0
- package/dist/server/src/lib/hooks/sources/index.js +62 -0
- package/dist/server/src/lib/hooks/sources/legacy-relay.js +84 -0
- package/dist/server/src/lib/hooks/sources/opencode/client.js +299 -0
- package/dist/server/src/lib/hooks/sources/opencode/ingest.js +267 -0
- package/dist/server/src/lib/hooks/sources/opencode/mappers.js +176 -0
- package/dist/server/src/lib/hooks/sources/opencode/payloads.js +189 -0
- package/dist/server/src/lib/hooks/sources/opencode/ports.js +295 -0
- package/dist/server/src/lib/hooks/sources/opencode/runtime.js +159 -0
- package/dist/server/src/lib/hooks/sources/opencode/source.js +253 -0
- package/dist/server/src/lib/hooks/sources/opencode/subscription.js +422 -0
- package/dist/server/src/lib/hooks/sources/opencode/tool-id.js +14 -0
- package/dist/server/src/lib/hooks/sources/opencode/turn-gate.js +193 -0
- package/dist/server/src/lib/hooks/sources/pending-decisions.js +127 -0
- package/dist/server/src/lib/hooks/sources/registry.js +111 -0
- package/dist/server/src/lib/hooks/sources/types.js +46 -0
- package/dist/server/src/lib/polling/response-checker.js +47 -0
- package/dist/server/src/lib/push/escalation-settings.js +114 -0
- package/dist/server/src/lib/push/index.js +21 -1
- package/dist/server/src/lib/push/notification-dedup.js +35 -0
- package/dist/server/src/lib/push/push-sender.js +66 -7
- package/dist/server/src/lib/push/waiting-push-notifier.js +231 -0
- package/dist/server/src/lib/realtime/waiting-broadcast.js +93 -0
- package/dist/server/src/lib/session/agent-event-state.js +260 -0
- package/dist/server/src/lib/session/agent-session-lifecycle.js +82 -0
- package/dist/server/src/lib/session/claude-session.js +10 -3
- package/dist/server/src/lib/session/current-output-builder.js +24 -0
- package/dist/server/src/lib/session/next-action-helper.js +93 -0
- package/dist/server/src/lib/session/prompt-waiting-composition.js +38 -0
- package/dist/server/src/lib/session/waiting-episode-state.js +136 -0
- package/dist/server/src/lib/session/waiting-kind.js +59 -0
- package/dist/server/src/lib/tasks/contract-message.js +218 -0
- package/dist/server/src/lib/tasks/contract-parser.js +58 -12
- package/dist/server/src/lib/verification/env-clean-gate.js +320 -0
- package/dist/server/src/lib/verification/env-snapshot.js +474 -0
- package/dist/server/src/lib/verification/gate-runner.js +844 -0
- package/dist/server/src/lib/verification/scope-gate.js +402 -0
- package/dist/server/src/lib/verification/verify-config.js +314 -0
- package/dist/server/src/lib/ws-server.js +9 -0
- package/dist/server/src/types/sidebar.js +68 -0
- package/package.json +1 -1
- package/scripts/hooks/cmate-agent-event.sh +73 -3
- package/.next/server/chunks/6283.js +0 -1
- package/.next/server/chunks/646.js +0 -21
- package/.next/server/chunks/8856.js +0 -4
- package/.next/static/XpKfn5x6H-mtTaXI9yNmb/_buildManifest.js +0 -1
- package/.next/static/chunks/4560-0917ae2e6a0e5400.js +0 -1
- package/.next/static/chunks/6488-53a3e1d78e4fe8f7.js +0 -1
- package/.next/static/chunks/7229.edb331fb9fbafa27.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/skills/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/templates/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/todos/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/chat/page-83a2238ab453afaa.js +0 -1
- package/.next/static/chunks/app/layout-86574192bd3c0e6b.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/more/page-1619018cac999bbc.js +0 -1
- package/.next/static/chunks/app/page-a34d26812f085b6c.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/repositories/page-202680fe6ec169c8.js +0 -1
- package/.next/static/chunks/app/review/page-b559bfb11c46931b.js +0 -1
- package/.next/static/chunks/app/sessions/page-3fa7e767d0ab3889.js +0 -1
- package/.next/static/chunks/app/skills/[skillId]/page-10d6f983e5f06ffb.js +0 -1
- package/.next/static/chunks/app/skills/installed/page-6641f95e6a6e5f9d.js +0 -1
- package/.next/static/chunks/app/skills/page-184f8e23e31a3667.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-6041d3c3db326317.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-973ec48531555712.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-6dc0b8c4e808ea3e.js +0 -1
- package/.next/static/css/d3453a6876553d32.css +0 -1
- /package/.next/static/{XpKfn5x6H-mtTaXI9yNmb → smu4mnL7qMf8w38n9dQJE}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The hooks CommandMate writes into `~/.gemini/config/hooks.json`, and the
|
|
4
|
+
* command that launches `agy` against them (Issue #1762).
|
|
5
|
+
*
|
|
6
|
+
* ## One file, for the whole machine
|
|
7
|
+
*
|
|
8
|
+
* antigravity has no per-workspace hook configuration. #1757 §5.4.2 put a
|
|
9
|
+
* differently-sized `hooks.json` at each candidate path and read agy's own
|
|
10
|
+
* `loaded N named hooks from M hooks.json file(s)` log line to see which one it
|
|
11
|
+
* had picked: the documented `<workspace>/.agents/hooks.json` is **never read**,
|
|
12
|
+
* even in a trusted workspace with a `.git` in it, and `~/.gemini/config/hooks.json`
|
|
13
|
+
* is. Always exactly one file (`from 1 hooks.json file(s)`).
|
|
14
|
+
*
|
|
15
|
+
* So there is no per-worktree file to write and no per-instance one either, and
|
|
16
|
+
* the two obvious escapes are both closed:
|
|
17
|
+
*
|
|
18
|
+
* - **Swapping `HOME`** would move agy's own state — `~/.gemini/antigravity-cli/`
|
|
19
|
+
* holds its settings, its conversation database and its credentials — and
|
|
20
|
+
* hand every session a machine it has never seen.
|
|
21
|
+
* - **Rewriting the file per launch** would race two worktrees against each
|
|
22
|
+
* other, and the loser would be whichever session started first.
|
|
23
|
+
*
|
|
24
|
+
* **The resolution is that the file carries no correlation at all.** It says
|
|
25
|
+
* "post this event, for tool `antigravity`, to whatever `CM_HOOK_URL` names",
|
|
26
|
+
* and the worktree and instance travel in the environment of each launched
|
|
27
|
+
* session — see {@link buildAntigravityLaunchCommand}. One global file therefore
|
|
28
|
+
* serves any number of worktrees and instances at once, and a session started
|
|
29
|
+
* outside CommandMate posts to the default endpoint with a `cwd` of
|
|
30
|
+
* `~/.gemini/config`, which resolves to no worktree and is dropped. A dropped
|
|
31
|
+
* event is the correct outcome there; a misattributed one would not be.
|
|
32
|
+
*
|
|
33
|
+
* ## Which events are registered
|
|
34
|
+
*
|
|
35
|
+
* `SessionStart`, `PostToolUse` and `Stop` go to the fire-and-forget event
|
|
36
|
+
* receiver through the relay. `PreToolUse` goes somewhere else entirely, and
|
|
37
|
+
* that split is the single most important thing in this module.
|
|
38
|
+
*
|
|
39
|
+
* The other three are safe *and measured to be safe*, which is not the same
|
|
40
|
+
* claim twice:
|
|
41
|
+
*
|
|
42
|
+
* - `PostToolUse`'s documented reply is "an empty JSON object `{}`", and the
|
|
43
|
+
* spike ran it against a server that answered exactly that while tools kept
|
|
44
|
+
* executing.
|
|
45
|
+
* - `Stop`'s `decision` is also documented as required, but "**any value other
|
|
46
|
+
* than `continue` allows the agent to stop**" — and the spike's `Stop` hook
|
|
47
|
+
* answered `{}` throughout a session that ended normally.
|
|
48
|
+
* - `SessionStart` is undocumented, fires anyway, and has no reply contract.
|
|
49
|
+
*
|
|
50
|
+
* ## Why `PreToolUse` is not on the relay (Issue #1779)
|
|
51
|
+
*
|
|
52
|
+
* agy's `PreToolUse` reply contract has a *required* `decision` field, and
|
|
53
|
+
* #1757 P10 measured what "required" means: a hook that answers `{}` has every
|
|
54
|
+
* tool call denied. Re-measured live for #1779 against agy **1.1.12**, in an
|
|
55
|
+
* isolated `HOME`, in an interactive session — a hook answering `{}` prints
|
|
56
|
+
* `⚠ Tool call denied by pre-tool hook:` and the command does not run.
|
|
57
|
+
*
|
|
58
|
+
* `scripts/hooks/cmate-agent-event.sh` writes **nothing** to stdout (`curl …
|
|
59
|
+
* >/dev/null`). That is why #1762 registered no `PreToolUse` at all. #1779
|
|
60
|
+
* measured the third case the two Issues before it had not: a hook that exits 0
|
|
61
|
+
* having printed *nothing* is **not** treated as `{}` — agy 1.1.12 falls
|
|
62
|
+
* through to its ordinary approval flow, exactly as with no hook installed. So
|
|
63
|
+
* "empty reply" and "no reply" are opposites here, and only one of them is a
|
|
64
|
+
* denial.
|
|
65
|
+
*
|
|
66
|
+
* Either way the relay cannot *adjudicate*, because it discards the response
|
|
67
|
+
* body. So `PreToolUse` is built here as an inline `curl` whose stdout is the
|
|
68
|
+
* verdict — the same shape codex's `PermissionRequest` and copilot's
|
|
69
|
+
* `PreToolUse` already use ({@link buildAntigravityPermissionHookCommand}).
|
|
70
|
+
*
|
|
71
|
+
* @module lib/hooks/sources/antigravity/hooks-config
|
|
72
|
+
*/
|
|
73
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
74
|
+
exports.ANTIGRAVITY_ABSTAIN_BODY = exports.ANTIGRAVITY_PERMISSION_TIMEOUT_SECONDS = exports.ANTIGRAVITY_PERMISSION_CURL_TIMEOUT_SECONDS = exports.ANTIGRAVITY_PERMISSION_URL_ENV_VAR = exports.ANTIGRAVITY_PERMISSION_HOOK_EVENT = exports.ANTIGRAVITY_REGISTERED_HOOKS = exports.ANTIGRAVITY_TOOL_MATCHER = exports.ANTIGRAVITY_HOOK_NAME = void 0;
|
|
75
|
+
exports.getAntigravityHooksConfigPath = getAntigravityHooksConfigPath;
|
|
76
|
+
exports.buildAntigravityHookCommand = buildAntigravityHookCommand;
|
|
77
|
+
exports.buildAntigravityPermissionHookCommand = buildAntigravityPermissionHookCommand;
|
|
78
|
+
exports.buildAntigravityHookConfig = buildAntigravityHookConfig;
|
|
79
|
+
exports.mergeAntigravityHooksConfig = mergeAntigravityHooksConfig;
|
|
80
|
+
exports.writeAntigravityHooksConfig = writeAntigravityHooksConfig;
|
|
81
|
+
exports.buildAntigravityLaunchCommand = buildAntigravityLaunchCommand;
|
|
82
|
+
const os_1 = require("os");
|
|
83
|
+
const path_1 = require("path");
|
|
84
|
+
const types_1 = require("../../../../lib/cli-tools/types");
|
|
85
|
+
const hook_settings_generator_1 = require("../../../../lib/hooks/hook-settings-generator");
|
|
86
|
+
const logger_1 = require("../../../../lib/logger");
|
|
87
|
+
// The `~/.gemini` tree belongs to gemini; agy lives inside it. The merge that
|
|
88
|
+
// keeps the two from erasing each other is written once, there.
|
|
89
|
+
const shared_config_tree_1 = require("../gemini/shared-config-tree");
|
|
90
|
+
const tool_id_1 = require("./tool-id");
|
|
91
|
+
const logger = (0, logger_1.createLogger)('lib/hooks/sources/antigravity/hooks-config');
|
|
92
|
+
/**
|
|
93
|
+
* The top-level key CommandMate owns in agy's named-hook map.
|
|
94
|
+
*
|
|
95
|
+
* agy's `hooks.json` is `{ "<hook name>": { "<Event>": [...] } }` — two levels,
|
|
96
|
+
* unlike every other tool's `{ "hooks": { "<Event>": [...] } }` — and its own
|
|
97
|
+
* documentation says named hooks from different sources "are merged and executed
|
|
98
|
+
* sequentially". So occupying one key is the whole of co-existing with whatever
|
|
99
|
+
* the user has: their `lint-checker` and `safety-gate` keep running, in the same
|
|
100
|
+
* file, untouched.
|
|
101
|
+
*/
|
|
102
|
+
exports.ANTIGRAVITY_HOOK_NAME = 'commandmate';
|
|
103
|
+
/** Matcher for the grouped events. `*` is agy's spelling of "every tool". */
|
|
104
|
+
exports.ANTIGRAVITY_TOOL_MATCHER = '*';
|
|
105
|
+
/**
|
|
106
|
+
* The agy events CommandMate relays to the fire-and-forget event receiver.
|
|
107
|
+
*
|
|
108
|
+
* `PreToolUse` is deliberately absent from *this* list and registered
|
|
109
|
+
* separately: its stdout is a verdict, not an observation. See
|
|
110
|
+
* {@link ANTIGRAVITY_PERMISSION_HOOK_EVENT}.
|
|
111
|
+
*/
|
|
112
|
+
exports.ANTIGRAVITY_REGISTERED_HOOKS = [
|
|
113
|
+
['SessionStart', 'session_start'],
|
|
114
|
+
['PostToolUse', 'post_tool_use'],
|
|
115
|
+
['Stop', 'stop'],
|
|
116
|
+
];
|
|
117
|
+
/**
|
|
118
|
+
* agy's spelling of the event whose reply is a verdict (Issue #1779).
|
|
119
|
+
*
|
|
120
|
+
* agy has no `PermissionRequest`. `PreToolUse` is the approval gate, the same
|
|
121
|
+
* way it is for copilot, so this one event is pointed at
|
|
122
|
+
* `/api/hooks/permission-request` and never reaches the event store.
|
|
123
|
+
*/
|
|
124
|
+
exports.ANTIGRAVITY_PERMISSION_HOOK_EVENT = 'PreToolUse';
|
|
125
|
+
/** Auto-Yes v2 receiver URL, with the correlation keys already in its query. */
|
|
126
|
+
exports.ANTIGRAVITY_PERMISSION_URL_ENV_VAR = 'CM_PERMISSION_HOOK_URL';
|
|
127
|
+
/**
|
|
128
|
+
* `curl --max-time` for the adjudication hook, in seconds.
|
|
129
|
+
*
|
|
130
|
+
* Strictly under {@link PERMISSION_REQUEST_TIMEOUT_SECONDS}, which is the
|
|
131
|
+
* `timeout` written into the handler, so that **CommandMate decides what a slow
|
|
132
|
+
* server means rather than agy does**. If curl were allowed to outlive the
|
|
133
|
+
* handler, agy would kill the hook and the reply would be the empty string —
|
|
134
|
+
* which on this tool is the one output that must never be produced by accident.
|
|
135
|
+
*/
|
|
136
|
+
exports.ANTIGRAVITY_PERMISSION_CURL_TIMEOUT_SECONDS = 4;
|
|
137
|
+
/**
|
|
138
|
+
* The `timeout` written into the adjudication handler, in seconds.
|
|
139
|
+
*
|
|
140
|
+
* agy's own default is 30 (its bundled `hooks.md`), and the units really are
|
|
141
|
+
* seconds here — the same number in gemini's file means milliseconds. Shared
|
|
142
|
+
* with every other tool's permission hook so one number bounds how long a wedged
|
|
143
|
+
* server can hold up an approval anywhere.
|
|
144
|
+
*/
|
|
145
|
+
exports.ANTIGRAVITY_PERMISSION_TIMEOUT_SECONDS = hook_settings_generator_1.PERMISSION_REQUEST_TIMEOUT_SECONDS;
|
|
146
|
+
/**
|
|
147
|
+
* What the adjudication hook prints when it has no verdict to report.
|
|
148
|
+
*
|
|
149
|
+
* **The most important string in this module.** `ask` is agy's own word for
|
|
150
|
+
* "prompt the user for permission (respects the Always Allow cache)" — i.e. the
|
|
151
|
+
* behaviour of a machine with no hook installed — and it is what every failure
|
|
152
|
+
* path below falls back to: a server that is down, a server that is slow, a 4xx,
|
|
153
|
+
* a body that is not JSON, a body with no `decision`, and an agy session
|
|
154
|
+
* CommandMate did not start.
|
|
155
|
+
*
|
|
156
|
+
* It is emphatically **not** `{}`, which agy reads as a denial and which would
|
|
157
|
+
* stop every tool call on the machine (#1757 P10, re-measured on 1.1.12 for
|
|
158
|
+
* #1779). It is also emphatically **not** `allow`: this config file is global,
|
|
159
|
+
* so an `allow` fallback would mean that stopping CommandMate silently
|
|
160
|
+
* auto-approves every tool call in every agy session on the machine, including
|
|
161
|
+
* ones CommandMate never started. Measured live for #1779: an `ask` reply draws
|
|
162
|
+
* agy's ordinary `Do you want to proceed?` dialog.
|
|
163
|
+
*/
|
|
164
|
+
exports.ANTIGRAVITY_ABSTAIN_BODY = '{"decision":"ask"}';
|
|
165
|
+
/** Events agy wraps in a `matcher` + `hooks` group; the rest are flat handler lists. */
|
|
166
|
+
const ANTIGRAVITY_GROUPED_EVENTS = new Set(['PreToolUse', 'PostToolUse']);
|
|
167
|
+
/**
|
|
168
|
+
* The one file agy reads.
|
|
169
|
+
*
|
|
170
|
+
* Not overridable by an environment variable, deliberately: an override
|
|
171
|
+
* CommandMate honoured and agy did not would produce a config nothing reads,
|
|
172
|
+
* which is the failure this path is least able to notice. `options.path` exists
|
|
173
|
+
* for tests, which are the only caller that may point it elsewhere.
|
|
174
|
+
*/
|
|
175
|
+
function getAntigravityHooksConfigPath(options = {}) {
|
|
176
|
+
return options.path ?? (0, path_1.join)((0, os_1.homedir)(), '.gemini', 'config', 'hooks.json');
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* The relay invocation for one event.
|
|
180
|
+
*
|
|
181
|
+
* No `--worktree-id`, no `--instance-id` and no `--url`: this file is shared by
|
|
182
|
+
* every worktree on the machine, so a correlation key written into it would be
|
|
183
|
+
* wrong for every session but one. `--event` is mandatory rather than optional —
|
|
184
|
+
* agy's payloads carry no event-name field at all (#1757 R2), so this argument
|
|
185
|
+
* is the only thing that says which event arrived.
|
|
186
|
+
*
|
|
187
|
+
* @param relayPath - Absolute path to the relay script
|
|
188
|
+
* @param event - The word to report
|
|
189
|
+
*/
|
|
190
|
+
function buildAntigravityHookCommand(relayPath, event) {
|
|
191
|
+
return [
|
|
192
|
+
(0, hook_settings_generator_1.shellQuote)(relayPath),
|
|
193
|
+
'--tool',
|
|
194
|
+
tool_id_1.ANTIGRAVITY_CLI_TOOL_ID,
|
|
195
|
+
'--event',
|
|
196
|
+
event,
|
|
197
|
+
'--stdin-json',
|
|
198
|
+
].join(' ');
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* The `PreToolUse` command, whose stdout **is** the verdict (Issue #1779).
|
|
202
|
+
*
|
|
203
|
+
* Never the relay: that script writes its response body to `/dev/null`, and the
|
|
204
|
+
* body is the entire point here. The same reasoning — and very nearly the same
|
|
205
|
+
* one-liner — as `codex/hooks-config`'s `buildCodexPermissionHookCommand` and
|
|
206
|
+
* `copilot/hook-settings`'s `buildCopilotPermissionCommand`, with one
|
|
207
|
+
* difference that inverts all of it:
|
|
208
|
+
*
|
|
209
|
+
* **Those two may print nothing when things go wrong. This one may not.**
|
|
210
|
+
* codex and copilot read silence as "no opinion" and fall through to their own
|
|
211
|
+
* approval flow, so `… || true` with no output is their fail-safe. agy reads an
|
|
212
|
+
* *empty object* as a denial, and a hook that is killed mid-`curl` produces
|
|
213
|
+
* whatever partial bytes it had written. So every path through this command
|
|
214
|
+
* ends in a `printf` of either the server's verdict or
|
|
215
|
+
* {@link ANTIGRAVITY_ABSTAIN_BODY}, and `curl` is bounded well inside the
|
|
216
|
+
* handler's own timeout so that being killed is not one of the paths.
|
|
217
|
+
*
|
|
218
|
+
* Reading it in order:
|
|
219
|
+
*
|
|
220
|
+
* 1. **The guard.** `~/.gemini/config/hooks.json` is one file for the whole
|
|
221
|
+
* machine, so this command also runs in agy sessions CommandMate did not
|
|
222
|
+
* start. Those have no `CM_PERMISSION_HOOK_URL`, and the correct thing for
|
|
223
|
+
* them is to behave as though no hook existed — `cat >/dev/null` first, so
|
|
224
|
+
* the agent's write to the hook's stdin does not become an EPIPE, then the
|
|
225
|
+
* abstain body. This is also the whole of failure path 5.
|
|
226
|
+
* 2. **The bearer header**, assembled with `set --` rather than `${VAR:+-H …}`
|
|
227
|
+
* because that expansion word-splits and sends `Authorization:` alone. The
|
|
228
|
+
* relay script and copilot's command solve it the same way.
|
|
229
|
+
* 3. **`curl -f`**, so a 4xx or 5xx prints nothing and lands on the fallback:
|
|
230
|
+
* failure path 3. `2>/dev/null` keeps a connection error off the agent's
|
|
231
|
+
* stderr (path 1), and `-m` bounds the wait (path 2).
|
|
232
|
+
* 4. **The shape check.** A reply is passed through only when it looks like a
|
|
233
|
+
* JSON object carrying a `decision`. Anything else — an empty string from
|
|
234
|
+
* paths 1-3, an HTML error page from a proxy, a JSON object from some other
|
|
235
|
+
* service, a truncated body — is failure path 4 and becomes the abstain
|
|
236
|
+
* body. Deliberately a `case` glob rather than a parser: there is no `jq` to
|
|
237
|
+
* depend on here, and the failure mode of guessing wrong is bounded by the
|
|
238
|
+
* fact that the *only* alternative to passing the body through is abstaining.
|
|
239
|
+
*/
|
|
240
|
+
function buildAntigravityPermissionHookCommand() {
|
|
241
|
+
const url = `"$${exports.ANTIGRAVITY_PERMISSION_URL_ENV_VAR}"`;
|
|
242
|
+
const abstain = `printf '%s' ${(0, hook_settings_generator_1.shellQuote)(exports.ANTIGRAVITY_ABSTAIN_BODY)}`;
|
|
243
|
+
return (`if [ -z "\${${exports.ANTIGRAVITY_PERMISSION_URL_ENV_VAR}:-}" ]; then ` +
|
|
244
|
+
`cat >/dev/null; ${abstain}; exit 0; fi; ` +
|
|
245
|
+
`set -- -sS -f -m ${exports.ANTIGRAVITY_PERMISSION_CURL_TIMEOUT_SECONDS} -X POST ` +
|
|
246
|
+
`-H 'Content-Type: application/json'; ` +
|
|
247
|
+
`if [ -n "\${${hook_settings_generator_1.AUTH_TOKEN_ENV_VAR}:-}" ]; then ` +
|
|
248
|
+
`set -- "$@" -H "Authorization: Bearer $${hook_settings_generator_1.AUTH_TOKEN_ENV_VAR}"; fi; ` +
|
|
249
|
+
`out=$(curl "$@" --data-binary @- ${url} 2>/dev/null); ` +
|
|
250
|
+
`case "$out" in '{'*'"decision"'*) printf '%s' "$out" ;; *) ${abstain} ;; esac`);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* CommandMate's named hook, ready to be merged into agy's config.
|
|
254
|
+
*
|
|
255
|
+
* @param relayPath - Absolute path to the relay script
|
|
256
|
+
*/
|
|
257
|
+
function buildAntigravityHookConfig(relayPath) {
|
|
258
|
+
const config = {};
|
|
259
|
+
for (const [nativeName, event] of exports.ANTIGRAVITY_REGISTERED_HOOKS) {
|
|
260
|
+
const handler = {
|
|
261
|
+
type: 'command',
|
|
262
|
+
command: buildAntigravityHookCommand(relayPath, event),
|
|
263
|
+
timeout: hook_settings_generator_1.HOOK_TIMEOUT_SECONDS,
|
|
264
|
+
};
|
|
265
|
+
config[nativeName] = ANTIGRAVITY_GROUPED_EVENTS.has(nativeName)
|
|
266
|
+
? [{ matcher: exports.ANTIGRAVITY_TOOL_MATCHER, hooks: [handler] }]
|
|
267
|
+
: [handler];
|
|
268
|
+
}
|
|
269
|
+
// Issue #1779. Its own handler, its own receiver and its own timeout: this is
|
|
270
|
+
// the only entry in the file whose stdout agy obeys.
|
|
271
|
+
config[exports.ANTIGRAVITY_PERMISSION_HOOK_EVENT] = [
|
|
272
|
+
{
|
|
273
|
+
matcher: exports.ANTIGRAVITY_TOOL_MATCHER,
|
|
274
|
+
hooks: [
|
|
275
|
+
{
|
|
276
|
+
type: 'command',
|
|
277
|
+
command: buildAntigravityPermissionHookCommand(),
|
|
278
|
+
timeout: hook_settings_generator_1.PERMISSION_REQUEST_TIMEOUT_SECONDS,
|
|
279
|
+
},
|
|
280
|
+
],
|
|
281
|
+
},
|
|
282
|
+
];
|
|
283
|
+
return config;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Put CommandMate's named hook into an existing config without disturbing the
|
|
287
|
+
* rest of it.
|
|
288
|
+
*
|
|
289
|
+
* Pure. One key is replaced; every other named hook is passed through by
|
|
290
|
+
* identity, in its original position — including a previous `commandmate` key,
|
|
291
|
+
* which is replaced rather than appended to, so relaunching does not accumulate
|
|
292
|
+
* handlers.
|
|
293
|
+
*
|
|
294
|
+
* @param existing - The parsed `hooks.json`, or null when there is none
|
|
295
|
+
* @param config - What {@link buildAntigravityHookConfig} produced
|
|
296
|
+
*/
|
|
297
|
+
function mergeAntigravityHooksConfig(existing, config) {
|
|
298
|
+
return { ...existing, [exports.ANTIGRAVITY_HOOK_NAME]: config };
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Write `~/.gemini/config/hooks.json`.
|
|
302
|
+
*
|
|
303
|
+
* @returns The path written, or null when injection is off or not possible
|
|
304
|
+
*/
|
|
305
|
+
function writeAntigravityHooksConfig(options = {}) {
|
|
306
|
+
if (!(0, hook_settings_generator_1.isHookInjectionEnabled)())
|
|
307
|
+
return null;
|
|
308
|
+
const relayPath = (0, hook_settings_generator_1.resolveRelayScriptPath)();
|
|
309
|
+
if (!relayPath) {
|
|
310
|
+
logger.warn('antigravity-hook-relay-missing');
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
const configPath = getAntigravityHooksConfigPath(options);
|
|
314
|
+
try {
|
|
315
|
+
const existing = (0, shared_config_tree_1.readJsonObjectFile)(configPath);
|
|
316
|
+
(0, shared_config_tree_1.writeJsonObjectFile)(configPath, mergeAntigravityHooksConfig(existing, buildAntigravityHookConfig(relayPath)));
|
|
317
|
+
return configPath;
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
// Fail-open. A session that starts without hooks is the pre-#1762 status
|
|
321
|
+
// quo; a session that fails to start because a config file could not be
|
|
322
|
+
// written is not.
|
|
323
|
+
logger.warn('antigravity-hooks-config-write-failed', {
|
|
324
|
+
error: error instanceof Error ? error.message : String(error),
|
|
325
|
+
});
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* The command that launches `agy` for one instance.
|
|
331
|
+
*
|
|
332
|
+
* `CM_HOOK_URL` is not a convenience here the way it is for gemini — it is the
|
|
333
|
+
* *only* correlation channel agy has. Its payloads carry no `cwd` and an empty
|
|
334
|
+
* `workspacePaths` (#1757 R6), its hooks run with a working directory of
|
|
335
|
+
* `~/.gemini/config`, and its config file is one per machine. The environment of
|
|
336
|
+
* the process CommandMate started is the one thing that differs between two
|
|
337
|
+
* concurrent agy sessions, so that is where the worktree and instance go. The
|
|
338
|
+
* relay reads `CM_HOOK_URL` itself, so no shell expansion inside the hook
|
|
339
|
+
* command is relied on.
|
|
340
|
+
*
|
|
341
|
+
* Two variables, not one, since Issue #1779: the observation events and the
|
|
342
|
+
* adjudication go to different receivers with opposite contracts, and the
|
|
343
|
+
* adjudication hook treats an absent
|
|
344
|
+
* {@link ANTIGRAVITY_PERMISSION_URL_ENV_VAR} as "this session is not
|
|
345
|
+
* CommandMate's, abstain". That guard is the only thing standing between the
|
|
346
|
+
* machine-global config file and an agy the operator started in their own
|
|
347
|
+
* terminal, so the variable is set here and nowhere else.
|
|
348
|
+
*
|
|
349
|
+
* The executable is quoted but not otherwise touched, so a caller may append its
|
|
350
|
+
* own flags — `AntigravityTool.startSession` adds `--model` — after the value
|
|
351
|
+
* this returns.
|
|
352
|
+
*
|
|
353
|
+
* Never throws, and returns the executable unchanged when injection is off.
|
|
354
|
+
*
|
|
355
|
+
* @param executablePath - `agy`, or a resolved path to it
|
|
356
|
+
* @param target - The instance being started
|
|
357
|
+
* @returns The command line to type into the pane
|
|
358
|
+
*/
|
|
359
|
+
function buildAntigravityLaunchCommand(executablePath, target, options = {}) {
|
|
360
|
+
if (!(0, hook_settings_generator_1.isHookInjectionEnabled)())
|
|
361
|
+
return executablePath;
|
|
362
|
+
if (!(0, types_1.isValidInstanceId)((0, hook_settings_generator_1.resolveTargetInstanceId)(target))) {
|
|
363
|
+
logger.warn('antigravity-hook-invalid-instance-id', { worktreeId: target.worktreeId });
|
|
364
|
+
return executablePath;
|
|
365
|
+
}
|
|
366
|
+
const scoped = { ...target, cliToolId: tool_id_1.ANTIGRAVITY_CLI_TOOL_ID };
|
|
367
|
+
const url = (0, hook_settings_generator_1.buildAgentEventUrl)(scoped, options);
|
|
368
|
+
const permissionUrl = (0, hook_settings_generator_1.buildPermissionRequestUrl)(scoped, options);
|
|
369
|
+
return (`CM_HOOK_URL=${(0, hook_settings_generator_1.shellQuote)(url)} ` +
|
|
370
|
+
`${exports.ANTIGRAVITY_PERMISSION_URL_ENV_VAR}=${(0, hook_settings_generator_1.shellQuote)(permissionUrl)} ` +
|
|
371
|
+
`${(0, hook_settings_generator_1.shellQuote)(executablePath)}`);
|
|
372
|
+
}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Antigravity's {@link AgentEventSource} (Issue #1762, Phase 4-4 of Epic #1720;
|
|
4
|
+
* adjudication added by Issue #1779).
|
|
5
|
+
*
|
|
6
|
+
* The tool that does not fit. Four things about agy are different in kind from
|
|
7
|
+
* the other push sources rather than different in spelling, and every one of
|
|
8
|
+
* them is a thing that fails without an error message:
|
|
9
|
+
*
|
|
10
|
+
* 1. **An empty object is a denial.** Everywhere else `{}` means "CommandMate
|
|
11
|
+
* has no opinion". On agy's `PreToolUse` it means *deny*, and the agent
|
|
12
|
+
* loses every tool it has (#1757 P10; re-measured on 1.1.12 for #1779, where
|
|
13
|
+
* it prints `⚠ Tool call denied by pre-tool hook:`). A *timeout* is
|
|
14
|
+
* fail-open, and so — #1779's correction to #1762 — is a hook that exits 0
|
|
15
|
+
* having **printed nothing at all**: measured on 1.1.12, that is
|
|
16
|
+
* indistinguishable from having no hook. "No reply" and "an empty reply" are
|
|
17
|
+
* opposites here, which is not true of any other tool.
|
|
18
|
+
* 2. **The payload cannot say what it is.** No event-name field, no `cwd`, and
|
|
19
|
+
* `workspacePaths` is `[]` in CLI mode (#1757 R2/R6). The event word arrives
|
|
20
|
+
* as a relay argument and the correlation keys as an environment variable;
|
|
21
|
+
* see `./hooks-config`.
|
|
22
|
+
* 3. **One config file for the machine.** `~/.gemini/config/hooks.json`, and
|
|
23
|
+
* the documented workspace-local file is never read.
|
|
24
|
+
* 4. **`Stop` is not an observation.** Answering `{"decision":"continue"}`
|
|
25
|
+
* restarts the agent's loop, so the event CommandMate uses for "the turn is
|
|
26
|
+
* over" is one whose reply can prevent the turn from being over.
|
|
27
|
+
*
|
|
28
|
+
* ## How abstention is spelled, and why `noDecision` says `proceeds` (#1779)
|
|
29
|
+
*
|
|
30
|
+
* #1762 shipped this source with `noDecision: { kind: 'blocks' }` and no
|
|
31
|
+
* `PreToolUse` hook, on the reasoning that abstaining *would* stop the agent if
|
|
32
|
+
* a hook existed, and that `blocks` was the closest member of
|
|
33
|
+
* {@link NoDecisionBehavior} to "it refuses". Both halves of that are now
|
|
34
|
+
* obsolete, because #1779 registered the hook and measured the missing case.
|
|
35
|
+
*
|
|
36
|
+
* agy's own `decision` vocabulary has four words — `allow`, `deny`, `ask`,
|
|
37
|
+
* `force_ask` — and `ask` means *"prompt the user for permission (respects the
|
|
38
|
+
* Always Allow cache)"*, i.e. precisely what abstaining means. Measured live for
|
|
39
|
+
* #1779 against agy 1.1.12 in an isolated `HOME`: a `PreToolUse` hook answering
|
|
40
|
+
* `{"decision":"ask"}` draws agy's ordinary `Do you want to proceed? / 1. Yes …`
|
|
41
|
+
* dialog, the same dialog a hooks-free control run drew.
|
|
42
|
+
*
|
|
43
|
+
* So abstaining on agy costs a dialog and nothing else — `proceeds`, the same
|
|
44
|
+
* value Claude, codex and copilot carry — **provided abstention is spelled
|
|
45
|
+
* `{"decision":"ask"}` and never `{}`.** The declaration and
|
|
46
|
+
* {@link AgentEventSource.encodeVerdict} have to be read together: this field is
|
|
47
|
+
* true *because* of how the verdict below is encoded, and flipping the encoding
|
|
48
|
+
* back to `{}` would make it a lie without changing a character of it.
|
|
49
|
+
*
|
|
50
|
+
* ## What `allow` does and does not buy on this tool
|
|
51
|
+
*
|
|
52
|
+
* Measured for #1779 on agy 1.1.12, interactively: a `PreToolUse` hook
|
|
53
|
+
* answering `{"decision":"allow"}` **does not suppress the approval dialog** —
|
|
54
|
+
* neither on its own nor with `permissionOverrides: ["command(*)"]`. The
|
|
55
|
+
* verdict is encoded honestly all the same, because it is agy's documented
|
|
56
|
+
* spelling of the thing CommandMate means and because `--print` (headless) does
|
|
57
|
+
* honour it (#1757 §5.4.4). Auto-Yes over an interactive agy therefore still
|
|
58
|
+
* lands on the TUI responder, which has answered that dialog since #988. What
|
|
59
|
+
* this source adds is that abstaining is finally *safe*, and that a verdict can
|
|
60
|
+
* be expressed at all.
|
|
61
|
+
*
|
|
62
|
+
* @module lib/hooks/sources/antigravity/source
|
|
63
|
+
*/
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
exports.antigravityAgentEventSource = void 0;
|
|
66
|
+
exports.parseAntigravityPermissionRequest = parseAntigravityPermissionRequest;
|
|
67
|
+
exports.encodeAntigravityVerdict = encodeAntigravityVerdict;
|
|
68
|
+
const permission_request_payload_1 = require("../../../../lib/hooks/permission-request-payload");
|
|
69
|
+
const define_source_1 = require("../define-source");
|
|
70
|
+
const event_mapper_1 = require("../event-mapper");
|
|
71
|
+
const hooks_config_1 = require("./hooks-config");
|
|
72
|
+
const tool_id_1 = require("./tool-id");
|
|
73
|
+
/**
|
|
74
|
+
* agy's spelling of "no opinion" (Issue #1779).
|
|
75
|
+
*
|
|
76
|
+
* `ask` is documented as *"Prompt the user for permission (respects the Always
|
|
77
|
+
* Allow cache)"*, and measured on 1.1.12 to draw exactly the dialog a hooks-free
|
|
78
|
+
* run draws. **Never `{}`** — see {@link ANTIGRAVITY_ABSTAIN_BODY} in
|
|
79
|
+
* `./hooks-config`, whose string form is this object and must stay in step with
|
|
80
|
+
* it; `encodesTheSameAbstention` in the tests pins the two together.
|
|
81
|
+
*/
|
|
82
|
+
const ABSTAIN_BODY = { decision: 'ask' };
|
|
83
|
+
/**
|
|
84
|
+
* Read agy's `PreToolUse` payload as a permission request (S7).
|
|
85
|
+
*
|
|
86
|
+
* Was `() => null` until #1779, which was correct while no `PreToolUse` hook
|
|
87
|
+
* existed and is a silent Auto-Yes-is-off switch now that one does: a null
|
|
88
|
+
* payload makes `decidePermissionRequest` answer `unknown-payload`, which is
|
|
89
|
+
* indistinguishable from a working feature with nothing to approve.
|
|
90
|
+
*
|
|
91
|
+
* Nothing here is Claude-shaped. agy's payload is protojson camelCase with the
|
|
92
|
+
* call nested under `toolCall`, has no `hook_event_name` to key off (#1757 R2)
|
|
93
|
+
* and no `prompt_id` of any spelling (R5) — `stepIdx` identifies a step within a
|
|
94
|
+
* conversation and is deliberately not passed off as a prompt id, since the
|
|
95
|
+
* route uses that field to correlate and mints its own when it is absent.
|
|
96
|
+
*
|
|
97
|
+
* Strict for the same reason Claude's and copilot's parsers are: anything
|
|
98
|
+
* unvouchable becomes null, null becomes no-decision, and no-decision on this
|
|
99
|
+
* tool is now a dialog rather than a denial.
|
|
100
|
+
*
|
|
101
|
+
* @param body - Whatever was posted to `/api/hooks/permission-request`
|
|
102
|
+
*/
|
|
103
|
+
function parseAntigravityPermissionRequest(body) {
|
|
104
|
+
if (!(0, event_mapper_1.isPlainObject)(body))
|
|
105
|
+
return null;
|
|
106
|
+
const toolCall = body.toolCall;
|
|
107
|
+
if (!(0, event_mapper_1.isPlainObject)(toolCall))
|
|
108
|
+
return null;
|
|
109
|
+
const toolName = (0, event_mapper_1.readStringField)(toolCall, 'name');
|
|
110
|
+
if (!toolName || toolName.length > permission_request_payload_1.MAX_TOOL_NAME_LENGTH)
|
|
111
|
+
return null;
|
|
112
|
+
// No arguments means nothing for the deny patterns to be judged against,
|
|
113
|
+
// which makes the request unadjudicatable rather than harmless.
|
|
114
|
+
if (!(0, event_mapper_1.isPlainObject)(toolCall.args))
|
|
115
|
+
return null;
|
|
116
|
+
return {
|
|
117
|
+
toolName,
|
|
118
|
+
toolInput: toolCall.args,
|
|
119
|
+
promptId: null,
|
|
120
|
+
sessionId: (0, event_mapper_1.readStringField)(body, 'conversationId'),
|
|
121
|
+
permissionMode: null,
|
|
122
|
+
permissionSuggestions: null,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Encode a verdict in agy's wire form (S6, #1757 R15).
|
|
127
|
+
*
|
|
128
|
+
* A top-level `decision`, not Claude's `hookSpecificOutput.decision.behavior`
|
|
129
|
+
* and not copilot's `hookSpecificOutput.permissionDecision`. The three
|
|
130
|
+
* measurements this rests on, all taken against 1.1.12 in an isolated `HOME`:
|
|
131
|
+
*
|
|
132
|
+
* - `{}` → `⚠ Tool call denied by pre-tool hook:`, the tool does not run.
|
|
133
|
+
* **This is why abstention may never be the empty object.**
|
|
134
|
+
* - `{"decision":"ask"}` → the ordinary `Do you want to proceed?` dialog.
|
|
135
|
+
* - `{"decision":"allow"}` → *also* the ordinary dialog, interactively. agy
|
|
136
|
+
* honours it in `--print` (#1757 §5.4.4) and treats it as "the hook does not
|
|
137
|
+
* object" in the TUI, where the user is still asked. It is encoded anyway:
|
|
138
|
+
* it is agy's documented word for what CommandMate means, and a source that
|
|
139
|
+
* lied about its intent to match one version's behaviour would be wrong the
|
|
140
|
+
* moment that behaviour changed.
|
|
141
|
+
*
|
|
142
|
+
* `allowAlways` and `answer` collapse to abstention, as they do on copilot:
|
|
143
|
+
* agy's `permissionOverrides` is the only standing-grant form it has, and
|
|
144
|
+
* approving one call is not the same promise as writing a standing rule.
|
|
145
|
+
*/
|
|
146
|
+
function encodeAntigravityVerdict(verdict) {
|
|
147
|
+
if (verdict.kind === 'allowOnce')
|
|
148
|
+
return { decision: 'allow' };
|
|
149
|
+
// `reason` is shown to the agent, which is how a refusal becomes something an
|
|
150
|
+
// operator can act on rather than a mystery.
|
|
151
|
+
if (verdict.kind === 'deny')
|
|
152
|
+
return { decision: 'deny', reason: verdict.message ?? '' };
|
|
153
|
+
return { ...ABSTAIN_BODY };
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Antigravity as an event source.
|
|
157
|
+
*
|
|
158
|
+
* Registered in `../registry`. Nothing outside this directory imports it by
|
|
159
|
+
* name; callers ask the registry for the tool they are holding.
|
|
160
|
+
*/
|
|
161
|
+
exports.antigravityAgentEventSource = (0, define_source_1.definePushHookSource)({
|
|
162
|
+
cliToolId: tool_id_1.ANTIGRAVITY_CLI_TOOL_ID,
|
|
163
|
+
// #1779, measured. Read this together with `encodeVerdict`: abstaining is
|
|
164
|
+
// safe here *because* it is spelled `{"decision":"ask"}`, and would stop every
|
|
165
|
+
// tool call on the machine if it were spelled `{}` (#1757 P10). See the module
|
|
166
|
+
// comment for the measurement that replaced #1762's `{ kind: 'blocks' }`.
|
|
167
|
+
noDecision: { kind: 'proceeds' },
|
|
168
|
+
capabilities: {
|
|
169
|
+
// agy has no `SessionEnd`, no `Notification` and no `UserPromptSubmit` — not
|
|
170
|
+
// "undocumented", *absent*: configuring all three produced zero events
|
|
171
|
+
// across the whole spike.
|
|
172
|
+
//
|
|
173
|
+
// `pre_tool_use` is missing for a different reason again, and it is the same
|
|
174
|
+
// reason copilot omits it (`copilot/source.ts`): the event fires and is
|
|
175
|
+
// registered, but it is pointed at `/api/hooks/permission-request`, which
|
|
176
|
+
// adjudicates and does not record. Nothing ever files a `pre_tool_use`
|
|
177
|
+
// NormalizedAgentEvent for agy, and this list is a promise about what does —
|
|
178
|
+
// a caller waiting for a word it names waits for good.
|
|
179
|
+
supportedEvents: ['session_start', 'post_tool_use', 'stop'],
|
|
180
|
+
configScope: 'global-singleton',
|
|
181
|
+
// What the adjudication hook actually gets: agy's own default is 30s, the
|
|
182
|
+
// handler is written with a 5s `timeout`, and the `curl` inside it gives up
|
|
183
|
+
// at 4s so that CommandMate rather than agy decides what a slow server
|
|
184
|
+
// means. The number a caller budgeting a verdict needs is the outer one.
|
|
185
|
+
decisionTimeoutSeconds: hooks_config_1.ANTIGRAVITY_PERMISSION_TIMEOUT_SECONDS,
|
|
186
|
+
},
|
|
187
|
+
// Empty on purpose, and the only empty mapper list in the codebase. There is
|
|
188
|
+
// nothing in an agy payload to map *from*: no `hook_event_name`, no `type`,
|
|
189
|
+
// no discriminator that is not a guess. `PreToolUse` and `PostToolUse` differ
|
|
190
|
+
// only by a `error` key that is an empty string on success, so inferring the
|
|
191
|
+
// event from field presence would file one as the other and do it silently.
|
|
192
|
+
// The word comes from the relay's `--event`, which reaches `normalizeEvent`
|
|
193
|
+
// as `RawAgentEvent.event` and bypasses this list entirely.
|
|
194
|
+
mappers: [],
|
|
195
|
+
// Nothing to read. An empty list is what makes `definePushHookSource` skip the
|
|
196
|
+
// payload lookup rather than search for a field that is never there.
|
|
197
|
+
nativeEventNameFields: [],
|
|
198
|
+
// protojson camelCase, one tool out of six. `session_id` does not exist here.
|
|
199
|
+
conversationIdFields: ['conversationId'],
|
|
200
|
+
toolCallIdFields: [],
|
|
201
|
+
// Issue #1783. protojson camelCase again: `modelName`, not `model`. Present on
|
|
202
|
+
// all six captured fixtures, so agy is the one tool whose model survives every
|
|
203
|
+
// kind of event — including the ones that carry no session id at all.
|
|
204
|
+
modelFields: ['modelName'],
|
|
205
|
+
// The tool name is nested under `toolCall`, and it is present on both
|
|
206
|
+
// `PreToolUse` and `PostToolUse` payloads (checked against both fixtures).
|
|
207
|
+
extractDetail: (event, payload) => event === 'pre_tool_use' || event === 'post_tool_use'
|
|
208
|
+
? (0, event_mapper_1.boundDetail)((0, event_mapper_1.readNestedString)(payload, ['toolCall', 'name']))
|
|
209
|
+
: null,
|
|
210
|
+
// agy has no `PermissionRequest` event; its approvals ride on `PreToolUse`,
|
|
211
|
+
// which #1779 registers against its own receiver.
|
|
212
|
+
parsePermissionRequest: parseAntigravityPermissionRequest,
|
|
213
|
+
// No `AskUserQuestion` tool and nothing shaped like one.
|
|
214
|
+
parseQuestion: () => null,
|
|
215
|
+
encodeVerdict: encodeAntigravityVerdict,
|
|
216
|
+
// Unlike gemini, the whole config is reachable from here: the file is global,
|
|
217
|
+
// so no worktree path is needed and `prepareLaunch` really does write it.
|
|
218
|
+
prepareLaunch: (target, executablePath) => {
|
|
219
|
+
const settingsPath = (0, hooks_config_1.writeAntigravityHooksConfig)();
|
|
220
|
+
return {
|
|
221
|
+
command: (0, hooks_config_1.buildAntigravityLaunchCommand)(executablePath, {
|
|
222
|
+
worktreeId: target.worktreeId,
|
|
223
|
+
instanceId: target.instanceId,
|
|
224
|
+
cliToolId: tool_id_1.ANTIGRAVITY_CLI_TOOL_ID,
|
|
225
|
+
}),
|
|
226
|
+
settingsPath,
|
|
227
|
+
};
|
|
228
|
+
},
|
|
229
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Antigravity's {@link CLIToolType} id, as a constant.
|
|
4
|
+
*
|
|
5
|
+
* The id is `antigravity`; **the binary is `agy`**. There is no executable
|
|
6
|
+
* called `antigravity` on any machine (#1757 §1), so the two names are not
|
|
7
|
+
* interchangeable and the split is deliberate: this constant is CommandMate's
|
|
8
|
+
* tool id — the thing that keys the registry, the receiver's `tool` field and
|
|
9
|
+
* the instance triple — while `src/lib/cli-tools/antigravity.ts` owns the
|
|
10
|
+
* command that actually runs.
|
|
11
|
+
*
|
|
12
|
+
* @module lib/hooks/sources/antigravity/tool-id
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ANTIGRAVITY_CLI_TOOL_ID = void 0;
|
|
16
|
+
exports.ANTIGRAVITY_CLI_TOOL_ID = 'antigravity';
|