commandmate 0.47.0 → 0.48.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 +501 -501
- package/.next/app-path-routes-manifest.json +34 -34
- package/.next/build-manifest.json +8 -8
- package/.next/diagnostics/framework.json +1 -1
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +12 -12
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route.js +2 -2
- package/.next/server/app/api/agents/update/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route.js +1 -1
- package/.next/server/app/api/agents/versions/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route.js +1 -1
- package/.next/server/app/api/app/release-notes/route.js.nft.json +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route.js +5 -5
- package/.next/server/app/api/app/update/route.js.nft.json +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.js.nft.json +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route.js +1 -1
- package/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route.js +1 -1
- package/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route.js +1 -1
- package/.next/server/app/api/auth/status/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route.js +1 -1
- package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route.js +1 -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 +2 -2
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js +2 -2
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route.js +1 -1
- package/.next/server/app/api/ollama/models/route.js.nft.json +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.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/relays/[relayId]/cancel/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js +1 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route.js +2 -2
- package/.next/server/app/api/remote/pair/route.js.nft.json +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-surface-mode/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.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +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 +2 -2
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js +1 -1
- package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js +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/verification/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route.js +1 -1
- package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/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 +7 -7
- 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]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +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 +3 -3
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +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 +5 -5
- 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]/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 -103
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/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/apply-default-agents/route.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/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/apple-icon.png/route.js +1 -1
- package/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
- package/.next/server/app/apple-icon.png.meta +1 -1
- package/.next/server/app/icon.png/route.js +1 -1
- package/.next/server/app/icon.png/route.js.nft.json +1 -1
- package/.next/server/app/icon.png.meta +1 -1
- package/.next/server/app/icon1.png/route.js +1 -1
- package/.next/server/app/icon1.png/route.js.nft.json +1 -1
- package/.next/server/app/icon1.png.meta +1 -1
- package/.next/server/app/icon2.png/route.js +1 -1
- package/.next/server/app/icon2.png/route.js.nft.json +1 -1
- package/.next/server/app/icon2.png.meta +1 -1
- package/.next/server/app/login/page.js +2 -2
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest.meta +1 -1
- package/.next/server/app/more/page.js +2 -2
- package/.next/server/app/more/page.js.nft.json +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page.js +2 -2
- package/.next/server/app/offline/page.js.nft.json +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- 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 +2 -2
- 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 +2 -2
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +2 -2
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +2 -2
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +2 -2
- package/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +12 -12
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +34 -34
- package/.next/server/chunks/{5048.js → 1185.js} +1 -1
- package/.next/server/chunks/1191.js +11 -4
- package/.next/server/chunks/1501.js +1 -1
- package/.next/server/chunks/1601.js +2 -2
- package/.next/server/chunks/1656.js +19 -0
- package/.next/server/chunks/1945.js +3 -3
- package/.next/server/chunks/1990.js +103 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2422.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2534.js +1 -1
- package/.next/server/chunks/255.js +1 -0
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3505.js +7 -0
- package/.next/server/chunks/3897.js +22 -0
- package/.next/server/chunks/4072.js +5 -5
- package/.next/server/chunks/4248.js +1 -1
- package/.next/server/chunks/4280.js +1 -0
- package/.next/server/chunks/463.js +1 -0
- package/.next/server/chunks/5209.js +1 -1
- package/.next/server/chunks/5611.js +1 -1
- package/.next/server/chunks/6119.js +1 -0
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6345.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6486.js +9 -8
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6784.js +1 -0
- package/.next/server/chunks/720.js +103 -0
- package/.next/server/chunks/7604.js +2 -0
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +7 -7
- package/.next/server/chunks/8728.js +3 -3
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8807.js +19 -18
- package/.next/server/chunks/8918.js +2 -104
- package/.next/server/chunks/9130.js +1 -1
- package/.next/server/chunks/936.js +1 -1
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9540.js +1 -1
- package/.next/server/chunks/9627.js +4 -4
- package/.next/server/chunks/9731.js +3 -3
- 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/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +3 -3
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/chunks/{1111.5ab4f0ffb0d944e5.js → 1111.1b653d4a9816a0a7.js} +8 -8
- package/.next/static/chunks/{1255-7e5873f06b25e129.js → 1255-a85690d352f4f8fd.js} +1 -1
- package/.next/static/chunks/2099-c3e0ab70a1b95dd3.js +1 -0
- package/.next/static/chunks/{2407-b2f524f99f7fc353.js → 2407-26139a8a2f1adbe8.js} +1 -1
- package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
- package/.next/static/chunks/{2863-6a07ec82fb52f4dd.js → 2863-f0121af1cbbedb3b.js} +1 -1
- package/.next/static/chunks/{8165-263172c17ae8e8c3.js → 8165-c68b3dc844210e6a.js} +1 -1
- package/.next/static/chunks/8407-35bbfc84793d7004.js +1 -0
- package/.next/static/chunks/9079-406b84d3cc891a87.js +1 -0
- package/.next/static/chunks/9465-b59bb255b376c813.js +1 -0
- package/.next/static/chunks/app/{layout-419eaf7de340f4ab.js → layout-46b4cbf07520d9b6.js} +1 -1
- package/.next/static/chunks/app/sessions/page-fb241bed579c67aa.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-cbc7749a33450cc5.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
- package/.next/static/chunks/main-37ca13e38030fe8b.js +1 -0
- package/.next/static/chunks/{webpack-468b7b33030234b3.js → webpack-838df0273b03af19.js} +1 -1
- package/.next/trace +13 -13
- package/dist/cli/commands/auto-yes.d.ts +24 -0
- package/dist/cli/commands/auto-yes.d.ts.map +1 -1
- package/dist/cli/commands/auto-yes.js +73 -3
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +10 -1
- package/dist/cli/commands/prompt.d.ts.map +1 -1
- package/dist/cli/commands/prompt.js +28 -14
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +15 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +108 -14
- package/dist/cli/docs/agent-operations.d.ts +2 -2
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +27 -0
- package/dist/cli/types/api-responses.d.ts +131 -4
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +4 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/utils/resource-resolvers.d.ts +0 -18
- package/dist/cli/utils/resource-resolvers.d.ts.map +1 -1
- package/dist/cli/utils/resource-resolvers.js +1 -51
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts +65 -2
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
- package/dist/lib/polling/auto-yes-suppression-reason.js +36 -2
- package/dist/lib/prompt-observation/types.d.ts +13 -0
- package/dist/lib/prompt-observation/types.d.ts.map +1 -1
- package/dist/server/locales/en/worktree.json +2 -1
- package/dist/server/locales/ja/worktree.json +2 -1
- package/dist/server/src/lib/auto-yes-poller-answer-target.js +38 -0
- package/dist/server/src/lib/auto-yes-poller-keys.js +35 -0
- package/dist/server/src/lib/auto-yes-poller-session-presence.js +26 -0
- package/dist/server/src/lib/auto-yes-poller-tick.js +233 -0
- package/dist/server/src/lib/auto-yes-poller.js +468 -792
- package/dist/server/src/lib/auto-yes-state.js +50 -2
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +107 -14
- package/dist/server/src/lib/db/chat-db.js +5 -1
- package/dist/server/src/lib/db/verification-db.js +23 -2
- package/dist/server/src/lib/detection/option-recommendation.js +120 -0
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice-approval-context.js +290 -0
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +396 -268
- package/dist/server/src/lib/detection/prompt-detector.js +92 -21
- package/dist/server/src/lib/detection/prompt-screen-key.js +60 -0
- package/dist/server/src/lib/detection/tools/antigravity/dialog.js +158 -35
- package/dist/server/src/lib/detection/tools/claude/detect.js +111 -10
- package/dist/server/src/lib/detection/tools/command-code/dialog.js +67 -0
- package/dist/server/src/lib/detection/tools/dialog-block.js +16 -0
- package/dist/server/src/lib/detection/waiting-screen-reading.js +98 -0
- package/dist/server/src/lib/hooks/permission-adjudication.js +26 -0
- package/dist/server/src/lib/hooks/permission-decision-service.js +49 -4
- package/dist/server/src/lib/hooks/permission-request-payload.js +20 -0
- package/dist/server/src/lib/hooks/sources/antigravity/source.js +21 -0
- package/dist/server/src/lib/hooks/sources/claude/source.js +3 -0
- package/dist/server/src/lib/hooks/sources/codex/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/command-code/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/copilot/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/gemini/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/legacy-relay.js +2 -0
- package/dist/server/src/lib/hooks/sources/opencode/ingest.js +6 -0
- package/dist/server/src/lib/hooks/sources/opencode/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/ingest.js +6 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/pending-decisions.js +14 -2
- package/dist/server/src/lib/polling/antigravity-permission-receipts.js +14 -3
- package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +21 -1
- package/dist/server/src/lib/polling/auto-yes-confirm-page.js +2 -2
- package/dist/server/src/lib/polling/auto-yes-confirmation-ledger-types.js +117 -0
- package/dist/server/src/lib/polling/auto-yes-confirmation-ledger.js +1091 -0
- package/dist/server/src/lib/polling/auto-yes-decision-state.js +195 -0
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +139 -10
- package/dist/server/src/lib/polling/auto-yes-enter-fallback.js +14 -0
- package/dist/server/src/lib/polling/auto-yes-ledger-records.js +143 -0
- package/dist/server/src/lib/polling/auto-yes-manual-answer.js +122 -0
- package/dist/server/src/lib/polling/auto-yes-option-effect.js +157 -0
- package/dist/server/src/lib/polling/auto-yes-policy.js +46 -11
- package/dist/server/src/lib/polling/auto-yes-poller-capture.js +63 -0
- package/dist/server/src/lib/polling/auto-yes-poller-enter-fallback.js +37 -0
- package/dist/server/src/lib/polling/auto-yes-poller-generation.js +192 -0
- package/dist/server/src/lib/polling/auto-yes-poller-receipt-log.js +324 -0
- package/dist/server/src/lib/polling/auto-yes-poller-state.js +193 -26
- package/dist/server/src/lib/polling/auto-yes-poller-steps.js +279 -0
- package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +13 -2
- package/dist/server/src/lib/polling/auto-yes-question-choice.js +57 -0
- package/dist/server/src/lib/polling/auto-yes-resolver.js +117 -22
- package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +36 -2
- package/dist/server/src/lib/polling/auto-yes-suppression-state.js +25 -1
- package/dist/server/src/lib/polling/prompt-screen-reading.js +232 -0
- package/dist/server/src/lib/polling/response-checker-blank-response.js +30 -0
- package/dist/server/src/lib/polling/response-checker-dialog-gate.js +39 -0
- package/dist/server/src/lib/polling/response-checker.js +138 -53
- package/dist/server/src/lib/prompt-answer-sender.js +104 -10
- package/dist/server/src/lib/prompt-observation/appearance.js +165 -0
- package/dist/server/src/lib/push/notification-dedup.js +15 -2
- package/dist/server/src/lib/push/prompt-card-state.js +140 -19
- package/dist/server/src/lib/push/prompt-push-gate.js +158 -12
- package/dist/server/src/lib/push/push-sender.js +23 -3
- package/dist/server/src/lib/push/resolution-push-notifier.js +14 -0
- package/dist/server/src/lib/push/waiting-push-notifier.js +139 -17
- package/dist/server/src/lib/realtime/terminal-broadcast.js +16 -0
- package/dist/server/src/lib/session/agent-event-state.js +25 -5
- package/dist/server/src/lib/session/agent-event-turn.js +140 -46
- package/dist/server/src/lib/session/cli-session.js +21 -2
- package/dist/server/src/lib/session/current-output-builder.js +64 -11
- package/dist/server/src/lib/session/send-attempt-state.js +23 -7
- package/dist/server/src/lib/session/waiting-episode-binding-observation.js +289 -0
- package/dist/server/src/lib/session/waiting-episode-binding-resolve.js +38 -0
- package/dist/server/src/lib/session/waiting-episode-binding.js +276 -0
- package/dist/server/src/lib/session/waiting-episode-state.js +307 -17
- package/dist/server/src/lib/session/waiting-episode-verdict.js +174 -0
- package/dist/server/src/lib/tmux/tmux-capture-cache.js +76 -11
- package/dist/server/src/lib/tmux/tmux.js +54 -9
- package/dist/server/src/lib/verification/gate-runner.js +162 -13
- package/dist/server/src/lib/verification/machine-lock.js +5 -0
- package/dist/server/src/lib/ws-server.js +18 -3
- package/dist/server/src/types/auto-yes-answer-mode.js +38 -0
- package/dist/server/src/types/auto-yes-decision.js +61 -0
- package/dist/server/src/types/auto-yes.js +6 -0
- package/dist/server/src/types/prompt-reading.js +32 -0
- package/dist/types/auto-yes-answer-mode.d.ts +35 -0
- package/dist/types/auto-yes-answer-mode.d.ts.map +1 -0
- package/dist/types/auto-yes-answer-mode.js +38 -0
- package/docs/en/user-guide/webapp-guide.md +33 -4
- package/package.json +2 -2
- package/public/sw.js +76 -4
- package/release-notes/0.47.1.json +20 -0
- package/release-notes/0.47.2.json +20 -0
- package/release-notes/0.48.0.json +57 -0
- package/scripts/hooks/cmate-agent-event.sh +22 -0
- package/.next/server/chunks/1331.js +0 -22
- package/.next/server/chunks/1559.js +0 -2
- package/.next/server/chunks/1836.js +0 -1
- package/.next/server/chunks/1944.js +0 -1
- package/.next/server/chunks/2328.js +0 -1
- package/.next/server/chunks/2460.js +0 -1
- package/.next/server/chunks/5292.js +0 -7
- package/.next/server/chunks/5595.js +0 -1
- package/.next/server/chunks/7166.js +0 -19
- package/.next/server/chunks/9051.js +0 -1
- package/.next/server/chunks/9199.js +0 -1
- package/.next/static/chunks/602-1c1488959215e140.js +0 -1
- package/.next/static/chunks/8407-155f84e5ba05f1d5.js +0 -1
- package/.next/static/chunks/9079-24f9fa549ed298f1.js +0 -1
- package/.next/static/chunks/9465-e5a351baa941f31b.js +0 -1
- package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +0 -1
- package/.next/static/chunks/main-ac91ed6e71380841.js +0 -1
- /package/.next/static/{b5BiQC9F6r_XFPdA9cuSj → PTlAswXLq8PAe2vUJ8dVP}/_buildManifest.js +0 -0
- /package/.next/static/{b5BiQC9F6r_XFPdA9cuSj → PTlAswXLq8PAe2vUJ8dVP}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* How Auto-Yes answers a question the agent asks (Issue #3863).
|
|
4
|
+
*
|
|
5
|
+
* - `recommended` (おまかせ, the default) — a single-select question on the
|
|
6
|
+
* screen is answered too: the option whose title ends in a recommendation
|
|
7
|
+
* marker (`(Recommended)` / `(推奨)` / `(推奨)`), or the default (the
|
|
8
|
+
* cursor, else option 1) when none does. A question it cannot read that far
|
|
9
|
+
* (two markers, a marker on a free-text or multi-select row, a title it
|
|
10
|
+
* cannot tell from its description) is left to a human.
|
|
11
|
+
* - `careful` (慎重) — a question is never answered; it is left to a human
|
|
12
|
+
* (`question-left-to-human`).
|
|
13
|
+
*
|
|
14
|
+
* The two differ only there. Permissions are answered alike (the one "allow
|
|
15
|
+
* this call once" row, #3822), and what a contract's `autoYes` block withholds
|
|
16
|
+
* stays withheld under either (the contract is the ceiling; the answer mode is
|
|
17
|
+
* below it).
|
|
18
|
+
*
|
|
19
|
+
* Set each time Auto-Yes is turned on (worktree × instance). Turning it on
|
|
20
|
+
* from off — or after it ran out — starts at `recommended` unless a mode is
|
|
21
|
+
* given; turning it on again while it is on keeps the mode it has.
|
|
22
|
+
*
|
|
23
|
+
* Dependency-free so the CLI build (`tsconfig.cli.json`, no path aliases) can
|
|
24
|
+
* import it by a relative path.
|
|
25
|
+
*
|
|
26
|
+
* @module types/auto-yes-answer-mode
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.DEFAULT_AUTO_YES_ANSWER_MODE = exports.AUTO_YES_ANSWER_MODES = void 0;
|
|
30
|
+
exports.isAutoYesAnswerMode = isAutoYesAnswerMode;
|
|
31
|
+
/** Every {@link AutoYesAnswerMode}, the default first. */
|
|
32
|
+
exports.AUTO_YES_ANSWER_MODES = ['recommended', 'careful'];
|
|
33
|
+
/** The mode of a grant that names none: one turned on without a mode, or kept from before the field. */
|
|
34
|
+
exports.DEFAULT_AUTO_YES_ANSWER_MODE = 'recommended';
|
|
35
|
+
/** Type guard for a value read off a request body or the wire. */
|
|
36
|
+
function isAutoYesAnswerMode(value) {
|
|
37
|
+
return value === 'recommended' || value === 'careful';
|
|
38
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auto-Yes's decision about the confirmation on screen, as published
|
|
4
|
+
* (Issue #3821).
|
|
5
|
+
*
|
|
6
|
+
* The server's Auto-Yes poller is the only thing that answers a screen
|
|
7
|
+
* confirmation automatically (the browser no longer does, and the Enter on an
|
|
8
|
+
* unreadable screen is gone). What it decided for the confirmation it last
|
|
9
|
+
* judged is published next to the prompt it was judged for, so the answer
|
|
10
|
+
* surfaces know whether a human has to answer it:
|
|
11
|
+
*
|
|
12
|
+
* - `answering` — an automatic answer to this confirmation is under way (being
|
|
13
|
+
* sent, or sent and the screen not redrawn yet);
|
|
14
|
+
* - `withheld` — Auto-Yes has left this confirmation to a human, with a
|
|
15
|
+
* `reason` (the contract, a screen it cannot read, a question, no poller
|
|
16
|
+
* running for the instance, …);
|
|
17
|
+
* - `none` — no confirmation, or one not judged yet. Never read as answering.
|
|
18
|
+
*
|
|
19
|
+
* Client-safe: no imports but the dependency-free answer mode (Issue #3863),
|
|
20
|
+
* so the browser hooks and the server read one shape.
|
|
21
|
+
*
|
|
22
|
+
* @module types/auto-yes-decision
|
|
23
|
+
*/
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.NO_AUTO_ANSWER_DECISION_REASON = exports.SERVER_POLLER_INACTIVE_DECISION_REASON = void 0;
|
|
26
|
+
exports.isAutoYesAnswering = isAutoYesAnswering;
|
|
27
|
+
exports.laterAutoYesDecision = laterAutoYesDecision;
|
|
28
|
+
/** The reasons this record adds to the poller's suppression reasons. */
|
|
29
|
+
exports.SERVER_POLLER_INACTIVE_DECISION_REASON = 'server-poller-inactive';
|
|
30
|
+
exports.NO_AUTO_ANSWER_DECISION_REASON = 'no-auto-answer';
|
|
31
|
+
/**
|
|
32
|
+
* Whether the answer panel may stay hidden under Auto-Yes for a prompt with
|
|
33
|
+
* this decision: only while an automatic answer is under way. A missing
|
|
34
|
+
* decision (an older server, a delivery path that did not carry it) is not
|
|
35
|
+
* `answering`.
|
|
36
|
+
*/
|
|
37
|
+
function isAutoYesAnswering(decision) {
|
|
38
|
+
return decision?.state === 'answering';
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Of two decisions about the SAME prompt window, the one observed later
|
|
42
|
+
* (Issue #3821). The HTTP poll and the push deliver the same payload over two
|
|
43
|
+
* paths whose arrival order is not their build order; a decision observed
|
|
44
|
+
* before the one already applied is not applied over it.
|
|
45
|
+
*
|
|
46
|
+
* Only for the same confirmation (`confirmation`): a window with the same
|
|
47
|
+
* question and options may approve something else, and a decision about
|
|
48
|
+
* another confirmation — or one that does not say which (`confirmation`
|
|
49
|
+
* absent on one side only) — is dropped for the one this delivery carries,
|
|
50
|
+
* whatever their times. Two without the field are compared by time.
|
|
51
|
+
*
|
|
52
|
+
* @param previous - What is applied now for this window, if anything
|
|
53
|
+
* @param next - What this delivery carries
|
|
54
|
+
*/
|
|
55
|
+
function laterAutoYesDecision(previous, next) {
|
|
56
|
+
if (previous === undefined || next === undefined)
|
|
57
|
+
return next;
|
|
58
|
+
if ((previous.confirmation ?? null) !== (next.confirmation ?? null))
|
|
59
|
+
return next;
|
|
60
|
+
return next.observedAt < previous.observedAt ? previous : next;
|
|
61
|
+
}
|
|
@@ -10,3 +10,9 @@
|
|
|
10
10
|
* `AutoYesToggleParams` from the component keep working unchanged.
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.isAutoYesAnswerMode = exports.DEFAULT_AUTO_YES_ANSWER_MODE = exports.AUTO_YES_ANSWER_MODES = void 0;
|
|
14
|
+
// Issue #3863: the answer mode, declared dependency-free for the CLI build.
|
|
15
|
+
var auto_yes_answer_mode_1 = require("./auto-yes-answer-mode");
|
|
16
|
+
Object.defineProperty(exports, "AUTO_YES_ANSWER_MODES", { enumerable: true, get: function () { return auto_yes_answer_mode_1.AUTO_YES_ANSWER_MODES; } });
|
|
17
|
+
Object.defineProperty(exports, "DEFAULT_AUTO_YES_ANSWER_MODE", { enumerable: true, get: function () { return auto_yes_answer_mode_1.DEFAULT_AUTO_YES_ANSWER_MODE; } });
|
|
18
|
+
Object.defineProperty(exports, "isAutoYesAnswerMode", { enumerable: true, get: function () { return auto_yes_answer_mode_1.isAutoYesAnswerMode; } });
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* What a prompt screen was READ as, kept beside the prompt (Issue #3881).
|
|
4
|
+
*
|
|
5
|
+
* The detectors hand on `PromptData` — a question, options, and the deny
|
|
6
|
+
* surface — and drop what they knew about the screen while reading it: which
|
|
7
|
+
* kind of dialog it was, which rows were live, whether the approval target is
|
|
8
|
+
* the whole of what the panel asks about. Each later path then decided those
|
|
9
|
+
* again from the cut-down strings, and they disagreed: the chat transcript drew
|
|
10
|
+
* Claude's 16-column `Ready to submit your answers?` page — which the Auto-Yes
|
|
11
|
+
* poller leaves to a human as `question-confirm-page` — as a tool approval,
|
|
12
|
+
* because the stored options read `Submit` / `Cancel` and the review list was
|
|
13
|
+
* cut off the stored question.
|
|
14
|
+
*
|
|
15
|
+
* So the reading is decided once, where the frame is still in hand (the
|
|
16
|
+
* response poller's save, `polling/prompt-screen-reading`), and stored with
|
|
17
|
+
* the row. Readers take it as stated and never derive it again from the text;
|
|
18
|
+
* a row without one (written before #3881, or by a producer that has no frame)
|
|
19
|
+
* goes through each reader's own compatibility rules, explicitly.
|
|
20
|
+
*
|
|
21
|
+
* Types only: imported by `types/models` and by client code.
|
|
22
|
+
*
|
|
23
|
+
* @module types/prompt-reading
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.PROMPT_READING_VERSION = void 0;
|
|
27
|
+
/**
|
|
28
|
+
* The version of {@link PromptReading} a row carries. A reader that meets
|
|
29
|
+
* another version treats the row as having no reading (its compatibility
|
|
30
|
+
* rules), rather than guess at fields it does not know.
|
|
31
|
+
*/
|
|
32
|
+
exports.PROMPT_READING_VERSION = 1;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How Auto-Yes answers a question the agent asks (Issue #3863).
|
|
3
|
+
*
|
|
4
|
+
* - `recommended` (おまかせ, the default) — a single-select question on the
|
|
5
|
+
* screen is answered too: the option whose title ends in a recommendation
|
|
6
|
+
* marker (`(Recommended)` / `(推奨)` / `(推奨)`), or the default (the
|
|
7
|
+
* cursor, else option 1) when none does. A question it cannot read that far
|
|
8
|
+
* (two markers, a marker on a free-text or multi-select row, a title it
|
|
9
|
+
* cannot tell from its description) is left to a human.
|
|
10
|
+
* - `careful` (慎重) — a question is never answered; it is left to a human
|
|
11
|
+
* (`question-left-to-human`).
|
|
12
|
+
*
|
|
13
|
+
* The two differ only there. Permissions are answered alike (the one "allow
|
|
14
|
+
* this call once" row, #3822), and what a contract's `autoYes` block withholds
|
|
15
|
+
* stays withheld under either (the contract is the ceiling; the answer mode is
|
|
16
|
+
* below it).
|
|
17
|
+
*
|
|
18
|
+
* Set each time Auto-Yes is turned on (worktree × instance). Turning it on
|
|
19
|
+
* from off — or after it ran out — starts at `recommended` unless a mode is
|
|
20
|
+
* given; turning it on again while it is on keeps the mode it has.
|
|
21
|
+
*
|
|
22
|
+
* Dependency-free so the CLI build (`tsconfig.cli.json`, no path aliases) can
|
|
23
|
+
* import it by a relative path.
|
|
24
|
+
*
|
|
25
|
+
* @module types/auto-yes-answer-mode
|
|
26
|
+
*/
|
|
27
|
+
/** Auto-Yes's answer mode (Issue #3863). */
|
|
28
|
+
export type AutoYesAnswerMode = 'recommended' | 'careful';
|
|
29
|
+
/** Every {@link AutoYesAnswerMode}, the default first. */
|
|
30
|
+
export declare const AUTO_YES_ANSWER_MODES: readonly AutoYesAnswerMode[];
|
|
31
|
+
/** The mode of a grant that names none: one turned on without a mode, or kept from before the field. */
|
|
32
|
+
export declare const DEFAULT_AUTO_YES_ANSWER_MODE: AutoYesAnswerMode;
|
|
33
|
+
/** Type guard for a value read off a request body or the wire. */
|
|
34
|
+
export declare function isAutoYesAnswerMode(value: unknown): value is AutoYesAnswerMode;
|
|
35
|
+
//# sourceMappingURL=auto-yes-answer-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-yes-answer-mode.d.ts","sourceRoot":"","sources":["../../src/types/auto-yes-answer-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,4CAA4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,SAAS,CAAC;AAE1D,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,EAAE,SAAS,iBAAiB,EAA+B,CAAC;AAE9F,wGAAwG;AACxG,eAAO,MAAM,4BAA4B,EAAE,iBAAiC,CAAC;AAE7E,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* How Auto-Yes answers a question the agent asks (Issue #3863).
|
|
4
|
+
*
|
|
5
|
+
* - `recommended` (おまかせ, the default) — a single-select question on the
|
|
6
|
+
* screen is answered too: the option whose title ends in a recommendation
|
|
7
|
+
* marker (`(Recommended)` / `(推奨)` / `(推奨)`), or the default (the
|
|
8
|
+
* cursor, else option 1) when none does. A question it cannot read that far
|
|
9
|
+
* (two markers, a marker on a free-text or multi-select row, a title it
|
|
10
|
+
* cannot tell from its description) is left to a human.
|
|
11
|
+
* - `careful` (慎重) — a question is never answered; it is left to a human
|
|
12
|
+
* (`question-left-to-human`).
|
|
13
|
+
*
|
|
14
|
+
* The two differ only there. Permissions are answered alike (the one "allow
|
|
15
|
+
* this call once" row, #3822), and what a contract's `autoYes` block withholds
|
|
16
|
+
* stays withheld under either (the contract is the ceiling; the answer mode is
|
|
17
|
+
* below it).
|
|
18
|
+
*
|
|
19
|
+
* Set each time Auto-Yes is turned on (worktree × instance). Turning it on
|
|
20
|
+
* from off — or after it ran out — starts at `recommended` unless a mode is
|
|
21
|
+
* given; turning it on again while it is on keeps the mode it has.
|
|
22
|
+
*
|
|
23
|
+
* Dependency-free so the CLI build (`tsconfig.cli.json`, no path aliases) can
|
|
24
|
+
* import it by a relative path.
|
|
25
|
+
*
|
|
26
|
+
* @module types/auto-yes-answer-mode
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.DEFAULT_AUTO_YES_ANSWER_MODE = exports.AUTO_YES_ANSWER_MODES = void 0;
|
|
30
|
+
exports.isAutoYesAnswerMode = isAutoYesAnswerMode;
|
|
31
|
+
/** Every {@link AutoYesAnswerMode}, the default first. */
|
|
32
|
+
exports.AUTO_YES_ANSWER_MODES = ['recommended', 'careful'];
|
|
33
|
+
/** The mode of a grant that names none: one turned on without a mode, or kept from before the field. */
|
|
34
|
+
exports.DEFAULT_AUTO_YES_ANSWER_MODE = 'recommended';
|
|
35
|
+
/** Type guard for a value read off a request body or the wire. */
|
|
36
|
+
function isAutoYesAnswerMode(value) {
|
|
37
|
+
return value === 'recommended' || value === 'careful';
|
|
38
|
+
}
|
|
@@ -200,7 +200,24 @@ Useful when you want to run continuous processes without interruption.
|
|
|
200
200
|
- Default is **1 hour**
|
|
201
201
|
- Select the minimum time needed for your work
|
|
202
202
|
5. The description text changes dynamically based on your selection (e.g., "Will automatically turn OFF after 3 hours.")
|
|
203
|
-
6.
|
|
203
|
+
6. **Choose how questions are answered** ("Answer questions with the recommended option (Recommended)" / "Answer questions yourself (Careful)"; see "Answer Modes" below)
|
|
204
|
+
7. Click **"Agree and Enable"**
|
|
205
|
+
|
|
206
|
+
### Answer Modes (Issue #3863)
|
|
207
|
+
|
|
208
|
+
The dialog that turns Auto Yes on asks how a question from the agent (one that picks a single option) is answered. You choose each time you turn it on, and the dialog always opens with **Recommended** selected.
|
|
209
|
+
|
|
210
|
+
| Option | Questions | Permission confirmations |
|
|
211
|
+
|--------|-----------|--------------------------|
|
|
212
|
+
| **Answer questions with the recommended option (Recommended)** (default) | Answered with the option marked as recommended (a title ending in `(Recommended)` / `(推奨)`), or the default option (the cursor, else option 1) when none is. A question with two or more recommended options, or one it cannot read that far, is left for you to answer from the answer panel | Answered automatically ("allow this once" is chosen) |
|
|
213
|
+
| **Answer questions yourself (Careful)** | Not answered. Auto Yes stays ON and you answer from the answer panel | Answered automatically ("allow this once" is chosen) |
|
|
214
|
+
|
|
215
|
+
- While ON, the mode (**Recommended** / **Careful**; 「おまかせ」 / 「慎重」 in the Japanese UI) is shown beside the toggle — in each PC split, under the phone's composer, and after a change made from another tab, which the periodic re-read picks up
|
|
216
|
+
- Connected to an older server that does not report the mode, no mode is shown (it is not assumed to be Recommended)
|
|
217
|
+
- A tile on the Sessions screen offers the same dialog and, while ON, shows the mode beside its toggle (a reload or a change from another tab shows up on the next list read)
|
|
218
|
+
- In the new-task dialog, picking an Auto Yes duration brings up the same two options (Recommended by default); Auto Yes is turned on in the chosen mode before the message is sent
|
|
219
|
+
- A question's Submit / Cancel page and OpenCode's API questions are answered by you in either mode. Copilot's and codex's questions carry no question marker on screen, so under Careful a copilot / codex numbered list whose options do not read as permission wording (`Yes` / `Allow` and so on) is left to you as possibly a question (under Recommended it is answered as before)
|
|
220
|
+
- The CLI and the API can choose it too ([CLI Operations Guide](./cli-operations-guide.md#answer-modes-recommended-and-careful-issue-3863))
|
|
204
221
|
|
|
205
222
|
### Active Duration
|
|
206
223
|
|
|
@@ -223,7 +240,8 @@ POST /api/worktrees/:id/auto-yes
|
|
|
223
240
|
|
|
224
241
|
{
|
|
225
242
|
"enabled": true,
|
|
226
|
-
"duration": 3600000 | 10800000 | 28800000 // Optional (default: 3600000)
|
|
243
|
+
"duration": 3600000 | 10800000 | 28800000, // Optional (default: 3600000)
|
|
244
|
+
"answerMode": "recommended" | "careful" // Optional (Issue #3863; recommended for a new grant, the current mode for one that is on)
|
|
227
245
|
}
|
|
228
246
|
```
|
|
229
247
|
|
|
@@ -262,10 +280,21 @@ looks and what it depends on.
|
|
|
262
280
|
|
|
263
281
|
See [Agent event hooks](./agent-event-hooks.md) for the per-route technical detail.
|
|
264
282
|
|
|
283
|
+
### Confirmations Auto Yes Does Not Answer Are Yours to Answer (Issue #3821)
|
|
284
|
+
|
|
285
|
+
Only the **server** answers automatically (the poller that reads the screen, hooks approval, and the API adjudication). **The browser sends no automatic answers.**
|
|
286
|
+
|
|
287
|
+
- With Auto Yes on, a confirmation the server is not answering **shows its answer panel**: one the execution contract withholds, a screen CommandMate cannot read, a question from the agent, or a screen of an agent whose poller is not running (the concurrent poller limit was reached, for one). The panel stays hidden only while the server is answering that confirmation
|
|
288
|
+
- A question OpenCode asks over its API always shows its panel, Auto Yes or not. Command Code's Review page is still answered from its manual-action card
|
|
289
|
+
- Answering from the panel by hand leaves Auto Yes on. Once you start answering by hand, an automatic answer the server was in the middle of sends no further key, and for about 10 seconds after that the server does not answer that agent's confirmations (so your keys and its keys do not mix)
|
|
290
|
+
- Auto Yes does not answer the screen of an agent with no poller running (hooks approval and the API adjudication run apart from the poller)
|
|
291
|
+
- The single Enter Auto Yes used to send to an unreadable choice screen, and the "Auto responded" notice next to the toggle, are gone
|
|
292
|
+
- A tab opened before this release that still sends an automatic answer is refused by the server with 409. A tab on a bundle from before Auto Yes marked its answers with their origin (before Issue #3820), however, cannot be told from a person answering; reload old tabs
|
|
293
|
+
|
|
265
294
|
### Important Notes
|
|
266
295
|
|
|
267
|
-
- While Auto Yes is active,
|
|
268
|
-
-
|
|
296
|
+
- While Auto Yes is active, the server answers the agent's requests for permission to run a tool (editing, creating or deleting files, running commands, …). Important changes (file deletions, etc.) are also auto-approved, so use with caution
|
|
297
|
+
- It does not answer these, and leaves them to you (their answer panel shows): a confirmation the execution contract (`autoYes`) withholds, a question from the agent under the Careful mode (or one whose recommended option cannot be told under Recommended) and its Submit / Cancel page, a screen CommandMate cannot read, a confirmation that needs checkboxes or typed text, a CLI's launch confirmations, any confirmation of an agent whose poller is not running, and the few seconds after you answer from the panel by hand (see "Confirmations Auto Yes Does Not Answer Are Yours to Answer" above)
|
|
269
298
|
- You can disable it by turning off the toggle
|
|
270
299
|
- Auto Yes automatically turns OFF after the selected duration
|
|
271
300
|
- **When the server restarts (`/rebuild`, `commandmate stop`, etc.), an active Auto Yes is turned OFF and does not come back.** The affected instance shows **"Released by restart"** (「再起動で解除」 in the Japanese UI). The label stays until the original grant's deadline, and disappears when you turn the toggle on again or turn it off manually (it is not shown after SIGKILL or a crash). A manual OFF or an expiry does not show it
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "commandmate",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.48.0",
|
|
4
4
|
"description": "No long blocks of time? Run an AI team from your phone. Git worktree sessions, task contracts and verification gates for Claude Code, Codex, Gemini CLI, Copilot, OpenCode, Antigravity and Command Code.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-agents",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"jsdom": "^28.1.0",
|
|
100
100
|
"lucide-react": "^0.554.0",
|
|
101
101
|
"mermaid": "^11.12.2",
|
|
102
|
-
"next": "^15.5.
|
|
102
|
+
"next": "^15.5.28",
|
|
103
103
|
"next-intl": "^4.8.2",
|
|
104
104
|
"next-themes": "^0.4.6",
|
|
105
105
|
"postcss": "^8.5.6",
|
package/public/sw.js
CHANGED
|
@@ -181,30 +181,92 @@ self.addEventListener('message', function (event) {
|
|
|
181
181
|
// This is also why there is no "close and show nothing" branch: a resolution
|
|
182
182
|
// with nothing to close still shows its card. That is the contract, not an
|
|
183
183
|
// oversight.
|
|
184
|
-
|
|
184
|
+
//
|
|
185
|
+
// --- Issue #3798 (the resolution names its episode) -------------------------
|
|
186
|
+
// A resolution may carry `resolvedEpisodeId`: the waiting episode whose card it
|
|
187
|
+
// clears. It can arrive after the card of a NEWER wait in the same worktree
|
|
188
|
+
// (same tag) — the next prompt's push overtook it — and closing that card would
|
|
189
|
+
// hide a wait that is still open.
|
|
190
|
+
//
|
|
191
|
+
// A different id alone does NOT make a card newer. Delivery fails per device,
|
|
192
|
+
// and the server sends a resolution only once nothing in the worktree is still
|
|
193
|
+
// waiting, so a device that missed wait B's card can still be showing wait A's
|
|
194
|
+
// when B's resolution arrives — A is over too, and nothing would ever close it
|
|
195
|
+
// again (the server's mark is spent). Nor does the wait's start (`since`): a
|
|
196
|
+
// structured since is reused by the next wait and can be older than the
|
|
197
|
+
// observation, and two waits can start and end in one millisecond.
|
|
198
|
+
//
|
|
199
|
+
// Newer is proved by `order`: a per-worktree counter the server advances, in
|
|
200
|
+
// one database statement, for every episode-named card it sends and for every
|
|
201
|
+
// resolution it decides (`nextPromptOrder`). A wait open when the resolution
|
|
202
|
+
// was decided would have stopped it, so a card whose order is greater than the
|
|
203
|
+
// resolution's can only be a wait that opened later.
|
|
204
|
+
//
|
|
205
|
+
// So: a card of another episode with a greater order is closed and shown again
|
|
206
|
+
// with the same content, silently (`silent: true`, `renotify: false`), INSTEAD
|
|
207
|
+
// of the resolution; every other card — the resolved episode's, one naming no
|
|
208
|
+
// episode or carrying no order, one sent before the resolution — is closed and
|
|
209
|
+
// the resolution shown in its place, as before. Every branch still calls
|
|
210
|
+
// `showNotification` exactly once, so the `userVisibleOnly` contract above
|
|
211
|
+
// holds. A resolution without the id or the order (a server before #3798)
|
|
212
|
+
// clears the tag as it always has.
|
|
213
|
+
function isNewerThanResolution(card, resolvedEpisodeId, resolvedOrder) {
|
|
214
|
+
var data = card.data || {};
|
|
215
|
+
return (
|
|
216
|
+
typeof resolvedEpisodeId === 'string' &&
|
|
217
|
+
typeof resolvedOrder === 'number' &&
|
|
218
|
+
typeof data.episodeId === 'string' &&
|
|
219
|
+
data.episodeId !== resolvedEpisodeId &&
|
|
220
|
+
typeof data.order === 'number' &&
|
|
221
|
+
data.order > resolvedOrder
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function replaceStaleNotifications(title, options, resolvedEpisodeId, resolvedOrder) {
|
|
185
226
|
var registration = self.registration;
|
|
186
227
|
var tag = options.tag;
|
|
187
228
|
var closing;
|
|
188
229
|
|
|
189
230
|
if (!tag || typeof registration.getNotifications !== 'function') {
|
|
190
|
-
closing = Promise.resolve();
|
|
231
|
+
closing = Promise.resolve(null);
|
|
191
232
|
} else {
|
|
192
233
|
closing = registration
|
|
193
234
|
// Correct either way: whether an engine hands back every card carrying the tag or only the newest one, the loop closes exactly what it was handed (iOS is still unmeasured on this point — Issue #2155).
|
|
194
235
|
.getNotifications({ tag: tag })
|
|
195
236
|
.then(function (stale) {
|
|
237
|
+
var newer = null;
|
|
196
238
|
for (var i = 0; i < stale.length; i++) {
|
|
239
|
+
if (
|
|
240
|
+
isNewerThanResolution(stale[i], resolvedEpisodeId, resolvedOrder) &&
|
|
241
|
+
// Of several, the card the server sent last.
|
|
242
|
+
(newer === null || stale[i].data.order > newer.data.order)
|
|
243
|
+
) {
|
|
244
|
+
newer = stale[i];
|
|
245
|
+
}
|
|
197
246
|
stale[i].close();
|
|
198
247
|
}
|
|
248
|
+
return newer;
|
|
199
249
|
})
|
|
200
250
|
.catch(function (_err) {
|
|
201
251
|
// A registration that cannot enumerate its notifications still has to
|
|
202
252
|
// show one. Showing the replacement below is what keeps the promise;
|
|
203
253
|
// on this path the tag alone collapses the stale card on most engines.
|
|
254
|
+
return null;
|
|
204
255
|
});
|
|
205
256
|
}
|
|
206
257
|
|
|
207
|
-
return closing.then(function () {
|
|
258
|
+
return closing.then(function (newer) {
|
|
259
|
+
if (newer) {
|
|
260
|
+
return registration.showNotification(newer.title, {
|
|
261
|
+
body: newer.body,
|
|
262
|
+
tag: tag,
|
|
263
|
+
renotify: false,
|
|
264
|
+
silent: true,
|
|
265
|
+
icon: newer.icon || options.icon,
|
|
266
|
+
badge: newer.badge || options.badge,
|
|
267
|
+
data: newer.data,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
208
270
|
return registration.showNotification(title, options);
|
|
209
271
|
});
|
|
210
272
|
}
|
|
@@ -243,6 +305,16 @@ self.addEventListener('push', function (event) {
|
|
|
243
305
|
// different, louder instruction.
|
|
244
306
|
if (resolved) options.silent = true;
|
|
245
307
|
|
|
308
|
+
// Issue #3798: a waiting card remembers its episode, so a later resolution
|
|
309
|
+
// can tell it from the card it is clearing. Absent from older payloads.
|
|
310
|
+
if (typeof payload.episodeId === 'string') options.data.episodeId = payload.episodeId;
|
|
311
|
+
// ...and its place in the worktree's order, so a later resolution can tell
|
|
312
|
+
// whether the card was sent after the resolution was decided.
|
|
313
|
+
if (typeof payload.order === 'number') options.data.order = payload.order;
|
|
314
|
+
var resolvedEpisodeId =
|
|
315
|
+
resolved && typeof payload.resolvedEpisodeId === 'string' ? payload.resolvedEpisodeId : null;
|
|
316
|
+
var resolvedOrder = resolved && typeof payload.order === 'number' ? payload.order : null;
|
|
317
|
+
|
|
246
318
|
// --- Issue #2155 ---------------------------------------------------------
|
|
247
319
|
// Every TAGGED push takes the close-then-show path, not just resolutions.
|
|
248
320
|
// Safari/iOS does not collapse same-tag cards on a plain `showNotification`,
|
|
@@ -253,7 +325,7 @@ self.addEventListener('push', function (event) {
|
|
|
253
325
|
// nothing to replace and goes straight to `showNotification`.
|
|
254
326
|
event.waitUntil(
|
|
255
327
|
options.tag
|
|
256
|
-
? replaceStaleNotifications(title, options)
|
|
328
|
+
? replaceStaleNotifications(title, options, resolvedEpisodeId, resolvedOrder)
|
|
257
329
|
: self.registration.showNotification(title, options)
|
|
258
330
|
);
|
|
259
331
|
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.47.1",
|
|
3
|
+
"date": "2026-10-23",
|
|
4
|
+
"highlight": {
|
|
5
|
+
"ja": "Auto-Yes が実行契約の制限を守らずに答えたり、危険なコマンドを見落としたりする問題を直しました。",
|
|
6
|
+
"en": "Fixed cases where Auto-Yes answered without honoring the execution contract's limits or missed a dangerous command."
|
|
7
|
+
},
|
|
8
|
+
"added": [],
|
|
9
|
+
"improved": [],
|
|
10
|
+
"fixed": [
|
|
11
|
+
{
|
|
12
|
+
"ja": "実行契約を一時的に読めなかったとき、Auto-Yes が契約の制限を無視して答えていた問題を直しました。読めない間は答えません。",
|
|
13
|
+
"en": "Fixed Auto-Yes answering without the contract's limits when the execution contract briefly could not be read. It now waits instead."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"ja": "承認を求めるコマンドの途中に「>」で始まる行があると、その上の危険なコマンドが拒否の判定から漏れていた問題を直しました。",
|
|
17
|
+
"en": "Fixed a dangerous command being missed by the deny check when the command awaiting approval contained a line starting with \">\"."
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.47.2",
|
|
3
|
+
"date": "2026-10-23",
|
|
4
|
+
"highlight": {
|
|
5
|
+
"ja": "依存パッケージの脆弱性を直しました。Next.js の重大な脆弱性への対応を含みます。",
|
|
6
|
+
"en": "Fixed vulnerabilities in dependencies, including a critical one in Next.js."
|
|
7
|
+
},
|
|
8
|
+
"added": [],
|
|
9
|
+
"improved": [],
|
|
10
|
+
"fixed": [
|
|
11
|
+
{
|
|
12
|
+
"ja": "Next.js を更新し、画像の最適化で外部からコードを実行されうる重大な脆弱性と、サービス停止の脆弱性を直しました。",
|
|
13
|
+
"en": "Updated Next.js to fix a critical vulnerability that could allow remote code execution through image optimization, and a denial-of-service issue."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"ja": "Markdown の表示に使うライブラリを更新し、高リスクの脆弱性を直しました。",
|
|
17
|
+
"en": "Updated libraries used to render Markdown to fix high-severity vulnerabilities."
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.48.0",
|
|
3
|
+
"date": "2026-10-25",
|
|
4
|
+
"highlight": {
|
|
5
|
+
"ja": "Auto-Yes の答え方を見直しました。質問への答え方を「おまかせ」と「慎重」から選べ、判断できない確認には答えず人に返します。",
|
|
6
|
+
"en": "Auto-Yes now lets you choose how it answers (Recommended or Careful), and leaves confirmations it cannot judge to you."
|
|
7
|
+
},
|
|
8
|
+
"added": [
|
|
9
|
+
{
|
|
10
|
+
"ja": "Auto-Yes に答え方のモードを追加しました。おまかせは質問に推奨の選択肢で答え、慎重は質問を人に任せます。",
|
|
11
|
+
"en": "Added answer modes to Auto-Yes: Recommended answers questions with the recommended option, Careful leaves questions to you."
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"improved": [],
|
|
15
|
+
"fixed": [
|
|
16
|
+
{
|
|
17
|
+
"ja": "Auto-Yes が許可の確認で、常に許可やモード変更ではなく「今回だけ許可」を選ぶようにしました。",
|
|
18
|
+
"en": "Auto-Yes now picks only the allow-this-time option on permission prompts, never permanent permission or mode changes."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"ja": "Auto-Yes が根拠の無い y/n や読めない選択画面に答えないようにし、ブラウザからの自動回答をやめました。",
|
|
22
|
+
"en": "Auto-Yes no longer answers unverified y/n prompts or unreadable choice screens, and the browser no longer answers automatically."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"ja": "送信に失敗した、または届いたか分からない回答を、Auto-Yes が同じ確認へ打ち直す問題を直しました。",
|
|
26
|
+
"en": "Fixed Auto-Yes re-sending an answer to the same prompt after a failed or uncertain send."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"ja": "確認画面の種類を一度で判定し、Auto-Yes とチャットの表示が食い違わないようにしました。",
|
|
30
|
+
"en": "Confirmation screens are now classified once, so Auto-Yes and the chat view no longer disagree about them."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"ja": "Antigravity の番号付きの画面に、Auto-Yes が既定で答えないようにしました。",
|
|
34
|
+
"en": "Auto-Yes no longer answers numbered Antigravity screens by default."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"ja": "Auto-Yes が答えた後に、答えていないという誤った通知が出る問題を直しました。",
|
|
38
|
+
"en": "Fixed false notifications saying Auto-Yes had not answered after it did."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"ja": "狭い・低いペインで Claude の確認画面を見落とす問題を直しました。",
|
|
42
|
+
"en": "Fixed Claude confirmation screens being missed in narrow or short panes."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"ja": "ターミナルの表示が、購読の切り替えで止まったり切断と表示されたりする問題を直しました。",
|
|
46
|
+
"en": "Fixed the terminal view stopping or showing as disconnected when switching subscriptions."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"ja": "サーバーと更新のログファイルの権限を本人だけが読める設定にそろえ、大きくなったら切り替えるようにしました。",
|
|
50
|
+
"en": "Server and update log files are now readable only by you and are rotated when they grow large."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"ja": "依存パッケージを更新し、高リスクの脆弱性を直しました。",
|
|
54
|
+
"en": "Updated a dependency to fix a high-severity vulnerability."
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
@@ -71,6 +71,14 @@ json_string_field() {
|
|
|
71
71
|
sed -n 's/.*"'"$2"'"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p'
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
# Extract a flat JSON non-negative integer field (digits only). A value that is
|
|
75
|
+
# not a bare run of digits — a string, a negative or fractional number — yields
|
|
76
|
+
# nothing. Text inside a string cannot produce the match: its quotes are escaped.
|
|
77
|
+
json_integer_field() {
|
|
78
|
+
printf '%s' "$1" | tr -d '\n' |
|
|
79
|
+
sed -n 's/.*"'"$2"'"[[:space:]]*:[[:space:]]*\([0-9][0-9]*\)[[:space:]]*[,}].*/\1/p'
|
|
80
|
+
}
|
|
81
|
+
|
|
74
82
|
# Escape a value for embedding in a JSON string literal.
|
|
75
83
|
json_escape() {
|
|
76
84
|
printf '%s' "$1" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g'
|
|
@@ -317,6 +325,20 @@ if [ "$EVENT" = "stop" ] && [ "$TOOL" = "claude" ] && [ -n "$HOOK_JSON" ]; then
|
|
|
317
325
|
;;
|
|
318
326
|
esac
|
|
319
327
|
fi
|
|
328
|
+
# Issue #3820 (design docs/design/auto-yes-measurement-3820.md §2.4). agy's
|
|
329
|
+
# `PostToolUse` names its call by `stepIdx` (unique within a conversation; the
|
|
330
|
+
# conversation is the `sessionId` above), and the server ties it to the
|
|
331
|
+
# `PreToolUse` of the same call — which reaches the permission route directly,
|
|
332
|
+
# not through here — to tell when the call ended. Forwarded as a number on
|
|
333
|
+
# antigravity's post_tool_use only, so every other tool and event keeps the
|
|
334
|
+
# body it had; omitted when the payload has none (an older agy), which the
|
|
335
|
+
# server reads as before. Bounded to 15 digits so it stays a safe integer.
|
|
336
|
+
if [ "$EVENT" = "post_tool_use" ] && [ "$TOOL" = "antigravity" ] && [ -n "$HOOK_JSON" ]; then
|
|
337
|
+
STEP_IDX="$(json_integer_field "$HOOK_JSON" 'stepIdx')"
|
|
338
|
+
if [ -n "$STEP_IDX" ] && [ "${#STEP_IDX}" -le 15 ]; then
|
|
339
|
+
BODY="$BODY,\"stepIdx\":$STEP_IDX"
|
|
340
|
+
fi
|
|
341
|
+
fi
|
|
320
342
|
BODY="$BODY}"
|
|
321
343
|
|
|
322
344
|
# Token via --header rather than the command line of a subprocess: argv is world
|