commandmate 0.41.1 → 0.42.1
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 +134 -134
- package/.next/app-path-routes-manifest.json +24 -24
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +9 -9
- 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/agents/update/route.js +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_client-reference-manifest.js +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_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/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +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.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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_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 +103 -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_client-reference-manifest.js +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_client-reference-manifest.js +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 +103 -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 -103
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.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_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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +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_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/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_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +9 -9
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +24 -24
- package/.next/server/chunks/1068.js +1 -0
- package/.next/server/chunks/1210.js +1 -1
- package/.next/server/chunks/1501.js +5 -5
- 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/2445.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3707.js +1 -1
- package/.next/server/chunks/3718.js +1 -0
- package/.next/server/chunks/434.js +1 -1
- package/.next/server/chunks/4443.js +1 -1
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/5775.js +1 -0
- package/.next/server/chunks/611.js +1 -0
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/650.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +1 -1
- package/.next/server/chunks/8583.js +1 -1
- package/.next/server/chunks/8673.js +2 -2
- package/.next/server/chunks/8728.js +3 -3
- package/.next/server/chunks/8791.js +1 -0
- package/.next/server/chunks/8800.js +1 -1
- package/.next/server/chunks/8918.js +1 -103
- package/.next/server/chunks/9130.js +2 -2
- package/.next/server/chunks/964.js +1 -1
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/chunks/9882.js +3 -3
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{2407-7bd75de2f6be3692.js → 2407-21fbf12d753b8d4d.js} +1 -1
- package/.next/static/chunks/7705-2a2936551b0cf9a3.js +1 -0
- package/.next/static/chunks/8165-934ee7ff3b4ddfd4.js +1 -0
- package/.next/static/chunks/app/{layout-51fa91ea833c97fc.js → layout-8ff4c7c08ef1f621.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/page-3c946bd2875391fd.js +1 -0
- package/.next/static/css/{974314e796232f53.css → b3f433d52b8ed5c8.css} +1 -1
- package/.next/trace +13 -13
- package/dist/cli/commands/attach.d.ts +6 -4
- package/dist/cli/commands/attach.d.ts.map +1 -1
- package/dist/cli/commands/attach.js +36 -5
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +5 -0
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +19 -9
- package/dist/cli/commands/whoami.d.ts +9 -25
- package/dist/cli/commands/whoami.d.ts.map +1 -1
- package/dist/cli/commands/whoami.js +18 -42
- package/dist/cli/types/api-responses.d.ts +37 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/lib/cli-tools/session-name.d.ts +72 -4
- package/dist/lib/cli-tools/session-name.d.ts.map +1 -1
- package/dist/lib/cli-tools/session-name.js +115 -12
- package/dist/lib/detection/tools/verified-against.d.ts +11 -2
- package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
- package/dist/lib/detection/tools/verified-against.js +11 -2
- package/dist/lib/session/tmux-session-surface.d.ts +9 -7
- package/dist/lib/session/tmux-session-surface.d.ts.map +1 -1
- package/dist/lib/session/tmux-session-surface.js +15 -8
- package/dist/lib/tmux/legacy-session-alias.d.ts +43 -0
- package/dist/lib/tmux/legacy-session-alias.d.ts.map +1 -0
- package/dist/lib/tmux/legacy-session-alias.js +64 -0
- package/dist/lib/verification/verify-config.d.ts +21 -0
- package/dist/lib/verification/verify-config.d.ts.map +1 -1
- package/dist/lib/verification/verify-config.js +54 -1
- package/dist/server/locales/en/worktree.json +60 -17
- package/dist/server/locales/ja/worktree.json +63 -20
- package/dist/server/server.js +29 -0
- package/dist/server/src/lib/auto-yes-poller.js +15 -0
- package/dist/server/src/lib/cli-tools/antigravity.js +1 -1
- package/dist/server/src/lib/cli-tools/base.js +10 -1
- package/dist/server/src/lib/cli-tools/codex.js +1 -1
- package/dist/server/src/lib/cli-tools/command-code.js +1 -1
- package/dist/server/src/lib/cli-tools/copilot.js +1 -1
- package/dist/server/src/lib/cli-tools/gemini.js +1 -1
- package/dist/server/src/lib/cli-tools/legacy-session-adoption.js +19 -0
- package/dist/server/src/lib/cli-tools/opencode.js +1 -1
- package/dist/server/src/lib/cli-tools/session-name.js +115 -12
- package/dist/server/src/lib/cli-tools/session-namespace.js +55 -0
- package/dist/server/src/lib/cli-tools/session-ownership.js +21 -0
- package/dist/server/src/lib/cli-tools/vibe-local.js +1 -1
- package/dist/server/src/lib/cli-tools/worktree-session-ownership.js +28 -0
- package/dist/server/src/lib/db/app-settings-db.js +29 -0
- package/dist/server/src/lib/detection/cli-patterns.js +51 -10
- package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +8 -2
- package/dist/server/src/lib/detection/tools/codex/detect.js +8 -1
- package/dist/server/src/lib/detection/tools/codex/prompt.js +6 -2
- package/dist/server/src/lib/detection/tools/verified-against.js +11 -2
- package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +77 -2
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +77 -1
- package/dist/server/src/lib/realtime/terminal-broadcast.js +11 -0
- package/dist/server/src/lib/session/adopt-legacy-sessions.js +89 -0
- package/dist/server/src/lib/session/claude-session.js +13 -10
- package/dist/server/src/lib/session/current-output-builder.js +18 -0
- package/dist/server/src/lib/session/send-user-message.js +26 -0
- package/dist/server/src/lib/session/session-instance-targets.js +53 -0
- package/dist/server/src/lib/session/tmux-session-surface.js +15 -8
- package/dist/server/src/lib/session/worktree-session-reconcile.js +101 -56
- package/dist/server/src/lib/session-cleanup.js +33 -3
- package/dist/server/src/lib/tmux/legacy-session-alias.js +64 -0
- package/dist/server/src/lib/tmux/session-hook-scripts.js +12 -4
- package/dist/server/src/lib/tmux/session-ownership.js +174 -0
- package/dist/server/src/lib/tmux/tmux.js +13 -3
- package/dist/server/src/lib/verification/env-clean-gate.js +46 -14
- package/dist/server/src/lib/verification/gate-runner.js +1 -0
- package/dist/server/src/lib/verification/verify-config.js +54 -1
- package/dist/server/src/lib/ws-server.js +11 -0
- package/package.json +1 -1
- package/release-notes/0.42.0.json +62 -0
- package/release-notes/0.42.1.json +16 -0
- package/.next/server/chunks/3323.js +0 -1
- package/.next/server/chunks/7075.js +0 -1
- package/.next/server/chunks/9080.js +0 -1
- package/.next/static/chunks/7705-25076b57224da370.js +0 -1
- package/.next/static/chunks/8165-d3b7c8a7aa776bc7.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-1e6300dd50cd9a4d.js +0 -1
- /package/.next/static/{_fBjTkjoWfOqdjl2SeMIN → 3M_S0B7dhEDdVE2XSJz1Y}/_buildManifest.js +0 -0
- /package/.next/static/{_fBjTkjoWfOqdjl2SeMIN → 3M_S0B7dhEDdVE2XSJz1Y}/_ssgManifest.js +0 -0
|
@@ -15,15 +15,56 @@
|
|
|
15
15
|
* `import('@/lib/ws-server')` の 458ms のうち 234ms を占めていた。
|
|
16
16
|
*
|
|
17
17
|
* 規則そのものは 1 箇所に保つ — `BaseCLITool.getSessionName()` はこの関数へ委譲する。
|
|
18
|
+
*
|
|
19
|
+
* ## Issue #2866: 名前空間(ns)
|
|
20
|
+
*
|
|
21
|
+
* worktree ID はディレクトリ名から作られるので、DB が別の 2 台のサーバでも
|
|
22
|
+
* `mcbd-{cli}-{worktreeId}` が重なる。サーバ起動時に `initSessionNamespace()`
|
|
23
|
+
* (`session-namespace.ts`)が ns(16 進 8 桁)を決めると、以後の名前は
|
|
24
|
+
* `mcbd-{ns}-{cli}-{worktreeId}[-{suffix}]` になる。ns 未設定(CLI・テスト・
|
|
25
|
+
* 初期化失敗時)は従来形式のまま。ns はどの CLI ツール ID とも一致しないので、
|
|
26
|
+
* `mcbd-` の直後の区切りで新旧を見分けられる({@link parseSessionName})。
|
|
27
|
+
*
|
|
28
|
+
* このモジュールは CLI バンドル(`tsconfig.cli.json` は paths なし)にも入るので、
|
|
29
|
+
* `@/` を使わず、DB にも触らない。ns の保持だけをここで行い、DB からの読み書きは
|
|
30
|
+
* `session-namespace.ts` が受け持つ。
|
|
18
31
|
*/
|
|
19
32
|
import { type CLIToolType } from './types';
|
|
33
|
+
/** Shape of a session-name namespace: 8 lowercase hex digits (Issue #2866). */
|
|
34
|
+
export declare const SESSION_NAMESPACE_PATTERN: RegExp;
|
|
35
|
+
declare global {
|
|
36
|
+
var __cmTmuxSessionNamespace: string | null | undefined;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The namespace this process names its sessions with, or null (legacy names).
|
|
40
|
+
*
|
|
41
|
+
* @internal Read through `getSessionNamespace()` in `session-namespace.ts`.
|
|
42
|
+
* Kept on `globalThis` because the custom server sets it at startup while the
|
|
43
|
+
* Next route bundles — a separate module graph (Issue #2223) — read it.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getActiveSessionNamespace(): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* @internal Set by `initSessionNamespace()` / reset by tests only.
|
|
48
|
+
*/
|
|
49
|
+
export declare function setActiveSessionNamespace(namespace: string | null): void;
|
|
50
|
+
/**
|
|
51
|
+
* The session name in the given namespace, ignoring legacy adoptions
|
|
52
|
+
* (Issue #2866). `namespace === null` is the legacy form.
|
|
53
|
+
*
|
|
54
|
+
* @throws Error if the resulting session name is invalid
|
|
55
|
+
*/
|
|
56
|
+
export declare function resolveNamespacedSessionName(namespace: string | null, cliToolId: CLIToolType, worktreeId: string, instanceId?: string): string;
|
|
20
57
|
/**
|
|
21
58
|
* Resolve the tmux session name for a (worktree, CLI tool, instance) triple.
|
|
22
59
|
*
|
|
23
|
-
* Format (Issue #868):
|
|
24
|
-
* -
|
|
25
|
-
* `
|
|
26
|
-
*
|
|
60
|
+
* Format (Issue #868, #2866):
|
|
61
|
+
* - namespace set: `mcbd-{ns}-{cli_tool_id}-{worktree_id}[-{suffix}]` — unless a
|
|
62
|
+
* legacy session was adopted for that name (`adoptLegacySessions`), in which
|
|
63
|
+
* case the adopted legacy name is returned
|
|
64
|
+
* - namespace unset: `mcbd-{cli_tool_id}-{worktree_id}[-{suffix}]`
|
|
65
|
+
*
|
|
66
|
+
* The primary instance (`instanceId` omitted or `=== cliToolId`) carries no
|
|
67
|
+
* suffix.
|
|
27
68
|
*
|
|
28
69
|
* T2.3 (MF4-001): the result is validated to keep shell metacharacters out of
|
|
29
70
|
* the tmux command line.
|
|
@@ -36,9 +77,36 @@ import { type CLIToolType } from './types';
|
|
|
36
77
|
*
|
|
37
78
|
* @example
|
|
38
79
|
* ```typescript
|
|
80
|
+
* // namespace unset
|
|
39
81
|
* resolveSessionName('claude', 'wt-1'); // 'mcbd-claude-wt-1'
|
|
40
82
|
* resolveSessionName('claude', 'wt-1', 'claude-2'); // 'mcbd-claude-wt-1-2'
|
|
83
|
+
* // namespace '0a1b2c3d'
|
|
84
|
+
* resolveSessionName('claude', 'wt-1'); // 'mcbd-0a1b2c3d-claude-wt-1'
|
|
41
85
|
* ```
|
|
42
86
|
*/
|
|
43
87
|
export declare function resolveSessionName(cliToolId: CLIToolType, worktreeId: string, instanceId?: string): string;
|
|
88
|
+
/**
|
|
89
|
+
* The legacy (pre-#2866) session name, whatever the namespace:
|
|
90
|
+
* `mcbd-{cli_tool_id}-{worktree_id}[-{suffix}]`.
|
|
91
|
+
*
|
|
92
|
+
* @throws Error if the resulting session name is invalid
|
|
93
|
+
*/
|
|
94
|
+
export declare function resolveLegacySessionName(cliToolId: CLIToolType, worktreeId: string, instanceId?: string): string;
|
|
95
|
+
/** A session name split into its parts (Issue #2866). */
|
|
96
|
+
export interface ParsedSessionName {
|
|
97
|
+
/** The server namespace, or null for the legacy form */
|
|
98
|
+
namespace: string | null;
|
|
99
|
+
cliToolId: CLIToolType;
|
|
100
|
+
/** What follows `mcbd-[{ns}-]{cli}-`: the worktree ID and an optional suffix */
|
|
101
|
+
rest: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Split a session name of either form. The worktree ID and the instance suffix
|
|
105
|
+
* are NOT separated — worktree IDs may contain `-`, so only the caller (who
|
|
106
|
+
* knows the set of worktree IDs) can tell them apart.
|
|
107
|
+
*
|
|
108
|
+
* @returns null when the name does not start with `mcbd-`, names no known CLI
|
|
109
|
+
* tool, or has nothing after the tool
|
|
110
|
+
*/
|
|
111
|
+
export declare function parseSessionName(name: string): ParsedSessionName | null;
|
|
44
112
|
//# sourceMappingURL=session-name.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-name.d.ts","sourceRoot":"","sources":["../../../src/lib/cli-tools/session-name.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-name.d.ts","sourceRoot":"","sources":["../../../src/lib/cli-tools/session-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAqC,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAM9E,+EAA+E;AAC/E,eAAO,MAAM,yBAAyB,QAAkB,CAAC;AAOzD,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,wBAAwB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACzD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAKxE;AAmBD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAGR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAKR;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAER;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAgBvE"}
|
|
@@ -16,18 +16,87 @@
|
|
|
16
16
|
* `import('@/lib/ws-server')` の 458ms のうち 234ms を占めていた。
|
|
17
17
|
*
|
|
18
18
|
* 規則そのものは 1 箇所に保つ — `BaseCLITool.getSessionName()` はこの関数へ委譲する。
|
|
19
|
+
*
|
|
20
|
+
* ## Issue #2866: 名前空間(ns)
|
|
21
|
+
*
|
|
22
|
+
* worktree ID はディレクトリ名から作られるので、DB が別の 2 台のサーバでも
|
|
23
|
+
* `mcbd-{cli}-{worktreeId}` が重なる。サーバ起動時に `initSessionNamespace()`
|
|
24
|
+
* (`session-namespace.ts`)が ns(16 進 8 桁)を決めると、以後の名前は
|
|
25
|
+
* `mcbd-{ns}-{cli}-{worktreeId}[-{suffix}]` になる。ns 未設定(CLI・テスト・
|
|
26
|
+
* 初期化失敗時)は従来形式のまま。ns はどの CLI ツール ID とも一致しないので、
|
|
27
|
+
* `mcbd-` の直後の区切りで新旧を見分けられる({@link parseSessionName})。
|
|
28
|
+
*
|
|
29
|
+
* このモジュールは CLI バンドル(`tsconfig.cli.json` は paths なし)にも入るので、
|
|
30
|
+
* `@/` を使わず、DB にも触らない。ns の保持だけをここで行い、DB からの読み書きは
|
|
31
|
+
* `session-namespace.ts` が受け持つ。
|
|
19
32
|
*/
|
|
20
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.SESSION_NAMESPACE_PATTERN = void 0;
|
|
35
|
+
exports.getActiveSessionNamespace = getActiveSessionNamespace;
|
|
36
|
+
exports.setActiveSessionNamespace = setActiveSessionNamespace;
|
|
37
|
+
exports.resolveNamespacedSessionName = resolveNamespacedSessionName;
|
|
21
38
|
exports.resolveSessionName = resolveSessionName;
|
|
39
|
+
exports.resolveLegacySessionName = resolveLegacySessionName;
|
|
40
|
+
exports.parseSessionName = parseSessionName;
|
|
22
41
|
const types_1 = require("./types");
|
|
23
42
|
const validation_1 = require("./validation");
|
|
43
|
+
const legacy_session_alias_1 = require("../tmux/legacy-session-alias");
|
|
44
|
+
const SESSION_NAME_PREFIX = 'mcbd-';
|
|
45
|
+
/** Shape of a session-name namespace: 8 lowercase hex digits (Issue #2866). */
|
|
46
|
+
exports.SESSION_NAMESPACE_PATTERN = /^[0-9a-f]{8}$/;
|
|
47
|
+
/** CLI tool ids, longest first, so a longer id is never read as a shorter one. */
|
|
48
|
+
const CLI_TOOL_IDS_LONGEST_FIRST = [...types_1.CLI_TOOL_IDS].sort((a, b) => b.length - a.length);
|
|
49
|
+
/**
|
|
50
|
+
* The namespace this process names its sessions with, or null (legacy names).
|
|
51
|
+
*
|
|
52
|
+
* @internal Read through `getSessionNamespace()` in `session-namespace.ts`.
|
|
53
|
+
* Kept on `globalThis` because the custom server sets it at startup while the
|
|
54
|
+
* Next route bundles — a separate module graph (Issue #2223) — read it.
|
|
55
|
+
*/
|
|
56
|
+
function getActiveSessionNamespace() {
|
|
57
|
+
return globalThis.__cmTmuxSessionNamespace ?? null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @internal Set by `initSessionNamespace()` / reset by tests only.
|
|
61
|
+
*/
|
|
62
|
+
function setActiveSessionNamespace(namespace) {
|
|
63
|
+
if (namespace !== null && !exports.SESSION_NAMESPACE_PATTERN.test(namespace)) {
|
|
64
|
+
throw new Error(`Invalid session namespace: ${namespace}`);
|
|
65
|
+
}
|
|
66
|
+
globalThis.__cmTmuxSessionNamespace = namespace;
|
|
67
|
+
}
|
|
68
|
+
function buildSessionName(head, cliToolId, worktreeId, instanceId) {
|
|
69
|
+
const base = `${head}${cliToolId}-${worktreeId}`;
|
|
70
|
+
if (!instanceId || instanceId === cliToolId) {
|
|
71
|
+
(0, validation_1.validateSessionName)(base);
|
|
72
|
+
return base;
|
|
73
|
+
}
|
|
74
|
+
const suffix = (0, types_1.deriveSessionSuffix)(instanceId, cliToolId);
|
|
75
|
+
const sessionName = suffix ? `${base}-${suffix}` : base;
|
|
76
|
+
(0, validation_1.validateSessionName)(sessionName);
|
|
77
|
+
return sessionName;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The session name in the given namespace, ignoring legacy adoptions
|
|
81
|
+
* (Issue #2866). `namespace === null` is the legacy form.
|
|
82
|
+
*
|
|
83
|
+
* @throws Error if the resulting session name is invalid
|
|
84
|
+
*/
|
|
85
|
+
function resolveNamespacedSessionName(namespace, cliToolId, worktreeId, instanceId) {
|
|
86
|
+
const head = namespace === null ? SESSION_NAME_PREFIX : `${SESSION_NAME_PREFIX}${namespace}-`;
|
|
87
|
+
return buildSessionName(head, cliToolId, worktreeId, instanceId);
|
|
88
|
+
}
|
|
24
89
|
/**
|
|
25
90
|
* Resolve the tmux session name for a (worktree, CLI tool, instance) triple.
|
|
26
91
|
*
|
|
27
|
-
* Format (Issue #868):
|
|
28
|
-
* -
|
|
29
|
-
* `
|
|
30
|
-
*
|
|
92
|
+
* Format (Issue #868, #2866):
|
|
93
|
+
* - namespace set: `mcbd-{ns}-{cli_tool_id}-{worktree_id}[-{suffix}]` — unless a
|
|
94
|
+
* legacy session was adopted for that name (`adoptLegacySessions`), in which
|
|
95
|
+
* case the adopted legacy name is returned
|
|
96
|
+
* - namespace unset: `mcbd-{cli_tool_id}-{worktree_id}[-{suffix}]`
|
|
97
|
+
*
|
|
98
|
+
* The primary instance (`instanceId` omitted or `=== cliToolId`) carries no
|
|
99
|
+
* suffix.
|
|
31
100
|
*
|
|
32
101
|
* T2.3 (MF4-001): the result is validated to keep shell metacharacters out of
|
|
33
102
|
* the tmux command line.
|
|
@@ -40,18 +109,52 @@ const validation_1 = require("./validation");
|
|
|
40
109
|
*
|
|
41
110
|
* @example
|
|
42
111
|
* ```typescript
|
|
112
|
+
* // namespace unset
|
|
43
113
|
* resolveSessionName('claude', 'wt-1'); // 'mcbd-claude-wt-1'
|
|
44
114
|
* resolveSessionName('claude', 'wt-1', 'claude-2'); // 'mcbd-claude-wt-1-2'
|
|
115
|
+
* // namespace '0a1b2c3d'
|
|
116
|
+
* resolveSessionName('claude', 'wt-1'); // 'mcbd-0a1b2c3d-claude-wt-1'
|
|
45
117
|
* ```
|
|
46
118
|
*/
|
|
47
119
|
function resolveSessionName(cliToolId, worktreeId, instanceId) {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return
|
|
120
|
+
const namespace = getActiveSessionNamespace();
|
|
121
|
+
const name = resolveNamespacedSessionName(namespace, cliToolId, worktreeId, instanceId);
|
|
122
|
+
if (namespace === null)
|
|
123
|
+
return name;
|
|
124
|
+
return (0, legacy_session_alias_1.lookupLegacyAlias)(name) ?? name;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The legacy (pre-#2866) session name, whatever the namespace:
|
|
128
|
+
* `mcbd-{cli_tool_id}-{worktree_id}[-{suffix}]`.
|
|
129
|
+
*
|
|
130
|
+
* @throws Error if the resulting session name is invalid
|
|
131
|
+
*/
|
|
132
|
+
function resolveLegacySessionName(cliToolId, worktreeId, instanceId) {
|
|
133
|
+
return resolveNamespacedSessionName(null, cliToolId, worktreeId, instanceId);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Split a session name of either form. The worktree ID and the instance suffix
|
|
137
|
+
* are NOT separated — worktree IDs may contain `-`, so only the caller (who
|
|
138
|
+
* knows the set of worktree IDs) can tell them apart.
|
|
139
|
+
*
|
|
140
|
+
* @returns null when the name does not start with `mcbd-`, names no known CLI
|
|
141
|
+
* tool, or has nothing after the tool
|
|
142
|
+
*/
|
|
143
|
+
function parseSessionName(name) {
|
|
144
|
+
if (!name.startsWith(SESSION_NAME_PREFIX))
|
|
145
|
+
return null;
|
|
146
|
+
let body = name.slice(SESSION_NAME_PREFIX.length);
|
|
147
|
+
let namespace = null;
|
|
148
|
+
const dash = body.indexOf('-');
|
|
149
|
+
if (dash > 0 && exports.SESSION_NAMESPACE_PATTERN.test(body.slice(0, dash))) {
|
|
150
|
+
namespace = body.slice(0, dash);
|
|
151
|
+
body = body.slice(dash + 1);
|
|
52
152
|
}
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
153
|
+
const cliToolId = CLI_TOOL_IDS_LONGEST_FIRST.find((id) => body.startsWith(`${id}-`));
|
|
154
|
+
if (!cliToolId)
|
|
155
|
+
return null;
|
|
156
|
+
const rest = body.slice(cliToolId.length + 1);
|
|
157
|
+
if (rest === '')
|
|
158
|
+
return null;
|
|
159
|
+
return { namespace, cliToolId, rest };
|
|
57
160
|
}
|
|
@@ -57,10 +57,19 @@ export declare const CLAUDE_VERIFIED_AGAINST: {
|
|
|
57
57
|
* verdict. **The stamp moved to 0.155.1 because every 0.155.1 frame now reads
|
|
58
58
|
* correctly** (`codex-thread-title-bar-2818.test.ts`,
|
|
59
59
|
* `codex-dialogs-0155-2808.test.ts`).
|
|
60
|
+
*
|
|
61
|
+
* ## Advanced to 0.157.1 by Issue #2868
|
|
62
|
+
*
|
|
63
|
+
* 0.157.1 reworded the `/model` picker's footer to `enter select · esc back`, so
|
|
64
|
+
* the picker read `prompt_detected` and `/prompt-response` refused its answers.
|
|
65
|
+
* #2868 ran the #2842 probe (`tests/fixtures/codex-dialogs-0157/`, 2026-09-27):
|
|
66
|
+
* of the six standard screens only `model-picker.txt` failed, and it reads
|
|
67
|
+
* `codex_selection_list` again via `CODEX_PICKER_FOOTER_PATTERN`
|
|
68
|
+
* (`codex-dialogs-0157.test.ts`).
|
|
60
69
|
*/
|
|
61
70
|
export declare const CODEX_VERIFIED_AGAINST: {
|
|
62
|
-
readonly version: "0.
|
|
63
|
-
readonly capturedAt: "2026-09-
|
|
71
|
+
readonly version: "0.157.1";
|
|
72
|
+
readonly capturedAt: "2026-09-27";
|
|
64
73
|
readonly paneGeometry: "200x1000";
|
|
65
74
|
};
|
|
66
75
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verified-against.d.ts","sourceRoot":"","sources":["../../../../src/lib/detection/tools/verified-against.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iEAAiE;AACjE,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"verified-against.d.ts","sourceRoot":"","sources":["../../../../src/lib/detection/tools/verified-against.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iEAAiE;AACjE,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,4BAA4B;;;;CAI/B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,eAAO,MAAM,6BAA6B;;;;CAIhC,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B;;;;CAI9B,CAAC;AAEX,iFAAiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CASpF,CAAC"}
|
|
@@ -60,10 +60,19 @@ exports.CLAUDE_VERIFIED_AGAINST = {
|
|
|
60
60
|
* verdict. **The stamp moved to 0.155.1 because every 0.155.1 frame now reads
|
|
61
61
|
* correctly** (`codex-thread-title-bar-2818.test.ts`,
|
|
62
62
|
* `codex-dialogs-0155-2808.test.ts`).
|
|
63
|
+
*
|
|
64
|
+
* ## Advanced to 0.157.1 by Issue #2868
|
|
65
|
+
*
|
|
66
|
+
* 0.157.1 reworded the `/model` picker's footer to `enter select · esc back`, so
|
|
67
|
+
* the picker read `prompt_detected` and `/prompt-response` refused its answers.
|
|
68
|
+
* #2868 ran the #2842 probe (`tests/fixtures/codex-dialogs-0157/`, 2026-09-27):
|
|
69
|
+
* of the six standard screens only `model-picker.txt` failed, and it reads
|
|
70
|
+
* `codex_selection_list` again via `CODEX_PICKER_FOOTER_PATTERN`
|
|
71
|
+
* (`codex-dialogs-0157.test.ts`).
|
|
63
72
|
*/
|
|
64
73
|
exports.CODEX_VERIFIED_AGAINST = {
|
|
65
|
-
version: '0.
|
|
66
|
-
capturedAt: '2026-09-
|
|
74
|
+
version: '0.157.1',
|
|
75
|
+
capturedAt: '2026-09-27',
|
|
67
76
|
paneGeometry: '200x1000',
|
|
68
77
|
};
|
|
69
78
|
/**
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* The tmux "surface" CommandMate publishes on its own sessions (Issue #2317).
|
|
3
3
|
*
|
|
4
4
|
* Everything here is a pure argument builder or a pure predicate — no
|
|
5
|
-
* `child_process`, no `@/` path alias,
|
|
6
|
-
* constraints put it here rather than under
|
|
7
|
-
* load-bearing:
|
|
5
|
+
* `child_process`, no `@/` path alias, one constants import and the pure
|
|
6
|
+
* session-name parser. Three constraints put it here rather than under
|
|
7
|
+
* `lib/tmux/`, and all three are load-bearing:
|
|
8
8
|
*
|
|
9
9
|
* 1. **`tsconfig.cli.json` sets `"paths": {}`.** The CLI bundle resolves nothing
|
|
10
10
|
* through `@/…`, so a module the `attach` command needs may only reach the
|
|
@@ -200,8 +200,9 @@ export declare function isLiveAttachSupported(cliToolId: string): boolean;
|
|
|
200
200
|
/**
|
|
201
201
|
* Whether a tmux session's NAME says it runs a tool `--live` supports.
|
|
202
202
|
*
|
|
203
|
-
* The session name is `mcbd
|
|
204
|
-
*
|
|
203
|
+
* The session name is `mcbd-[<ns>-]<tool>-<worktree>` and `parseSessionName`
|
|
204
|
+
* reads the tool out of either form (Issue #2866), so this is exact rather
|
|
205
|
+
* than a guess. It exists because
|
|
205
206
|
* the two callers that need the answer — the attach hook script's installer and
|
|
206
207
|
* the response poller — hold a session name and nothing else: a hook fires with
|
|
207
208
|
* tmux formats, and the poller must not pay a tmux round-trip to ask about a
|
|
@@ -219,8 +220,9 @@ export declare function isLiveAttachEligibleSession(sessionName: string): boolea
|
|
|
219
220
|
* else. `attach` prints its hint for exactly these.
|
|
220
221
|
*
|
|
221
222
|
* Deliberately a local list rather than an import of `usesAlternateScreen()`:
|
|
222
|
-
* this module must stay free of `lib/cli-tools
|
|
223
|
-
*
|
|
223
|
+
* this module must stay free of `lib/cli-tools` beyond the pure
|
|
224
|
+
* `session-name.ts`, whose tool graph the CLI bundle cannot afford (see the
|
|
225
|
+
* module docblock). The two are pinned to each other by
|
|
224
226
|
* `tests/unit/tmux/session-surface-2317.test.ts`, so a tool moving in or out of
|
|
225
227
|
* the alternate screen breaks a test rather than silently dropping the hint.
|
|
226
228
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux-session-surface.d.ts","sourceRoot":"","sources":["../../../src/lib/session/tmux-session-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;
|
|
1
|
+
{"version":3,"file":"tmux-session-surface.d.ts","sourceRoot":"","sources":["../../../src/lib/session/tmux-session-surface.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* The tmux "surface" CommandMate publishes on its own sessions (Issue #2317).
|
|
4
4
|
*
|
|
5
5
|
* Everything here is a pure argument builder or a pure predicate — no
|
|
6
|
-
* `child_process`, no `@/` path alias,
|
|
7
|
-
* constraints put it here rather than under
|
|
8
|
-
* load-bearing:
|
|
6
|
+
* `child_process`, no `@/` path alias, one constants import and the pure
|
|
7
|
+
* session-name parser. Three constraints put it here rather than under
|
|
8
|
+
* `lib/tmux/`, and all three are load-bearing:
|
|
9
9
|
*
|
|
10
10
|
* 1. **`tsconfig.cli.json` sets `"paths": {}`.** The CLI bundle resolves nothing
|
|
11
11
|
* through `@/…`, so a module the `attach` command needs may only reach the
|
|
@@ -67,6 +67,10 @@ exports.buildRemoveAutoPopupHookArgs = buildRemoveAutoPopupHookArgs;
|
|
|
67
67
|
exports.buildDelegateGeometryCommands = buildDelegateGeometryCommands;
|
|
68
68
|
exports.buildRestoreGeometryCommands = buildRestoreGeometryCommands;
|
|
69
69
|
const tmux_pane_config_1 = require("../../config/tmux-pane-config");
|
|
70
|
+
// Relative on purpose (constraint 1 above). `session-name.ts` is already part of
|
|
71
|
+
// the CLI bundle (`commands/attach.ts` imports it) and reaches nothing through
|
|
72
|
+
// `@/…`, so it costs the bundle nothing new (Issue #2866).
|
|
73
|
+
const session_name_1 = require("../cli-tools/session-name");
|
|
70
74
|
/**
|
|
71
75
|
* Session-name prefix every CommandMate tmux session carries.
|
|
72
76
|
*
|
|
@@ -308,8 +312,9 @@ function isLiveAttachSupported(cliToolId) {
|
|
|
308
312
|
/**
|
|
309
313
|
* Whether a tmux session's NAME says it runs a tool `--live` supports.
|
|
310
314
|
*
|
|
311
|
-
* The session name is `mcbd
|
|
312
|
-
*
|
|
315
|
+
* The session name is `mcbd-[<ns>-]<tool>-<worktree>` and `parseSessionName`
|
|
316
|
+
* reads the tool out of either form (Issue #2866), so this is exact rather
|
|
317
|
+
* than a guess. It exists because
|
|
313
318
|
* the two callers that need the answer — the attach hook script's installer and
|
|
314
319
|
* the response poller — hold a session name and nothing else: a hook fires with
|
|
315
320
|
* tmux formats, and the poller must not pay a tmux round-trip to ask about a
|
|
@@ -320,7 +325,8 @@ function isLiveAttachSupported(cliToolId) {
|
|
|
320
325
|
function isLiveAttachEligibleSession(sessionName) {
|
|
321
326
|
if (!isCommandMateSession(sessionName))
|
|
322
327
|
return false;
|
|
323
|
-
|
|
328
|
+
const cliToolId = (0, session_name_1.parseSessionName)(sessionName)?.cliToolId;
|
|
329
|
+
return cliToolId !== undefined && exports.LIVE_ATTACH_TOOLS.includes(cliToolId);
|
|
324
330
|
}
|
|
325
331
|
/**
|
|
326
332
|
* CLI tools that paint their transcript in the terminal's alternate screen.
|
|
@@ -331,8 +337,9 @@ function isLiveAttachEligibleSession(sessionName) {
|
|
|
331
337
|
* else. `attach` prints its hint for exactly these.
|
|
332
338
|
*
|
|
333
339
|
* Deliberately a local list rather than an import of `usesAlternateScreen()`:
|
|
334
|
-
* this module must stay free of `lib/cli-tools
|
|
335
|
-
*
|
|
340
|
+
* this module must stay free of `lib/cli-tools` beyond the pure
|
|
341
|
+
* `session-name.ts`, whose tool graph the CLI bundle cannot afford (see the
|
|
342
|
+
* module docblock). The two are pinned to each other by
|
|
336
343
|
* `tests/unit/tmux/session-surface-2317.test.ts`, so a tool moving in or out of
|
|
337
344
|
* the alternate screen breaks a test rather than silently dropping the hint.
|
|
338
345
|
*/
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legacy tmux session adoption table (Issue #2866).
|
|
3
|
+
*
|
|
4
|
+
* Once the server has a session-name namespace, a session is named
|
|
5
|
+
* `mcbd-{ns}-{cli}-{worktreeId}[-{suffix}]`. Sessions the same server started
|
|
6
|
+
* before that (`mcbd-{cli}-{worktreeId}[-{suffix}]`) are NOT renamed — a rename
|
|
7
|
+
* would lose them for an older CommandMate running beside this one, or after a
|
|
8
|
+
* downgrade. Instead `adoptLegacySessions` records "the new-format name X is
|
|
9
|
+
* served by the legacy session Y", and `resolveSessionName` returns Y for X
|
|
10
|
+
* while the entry lives.
|
|
11
|
+
*
|
|
12
|
+
* An entry is dropped when its legacy session is killed or found gone
|
|
13
|
+
* (`tmux.ts` `killSession` / `hasSession`), so the next start uses the
|
|
14
|
+
* new-format name.
|
|
15
|
+
*
|
|
16
|
+
* Pure (no `@/` alias, no child_process): `cli-tools/session-name.ts` reads it,
|
|
17
|
+
* and that module is part of the CLI bundle (`tsconfig.cli.json` has no paths).
|
|
18
|
+
*
|
|
19
|
+
* Kept on `globalThis` rather than in module scope: under `next start` this
|
|
20
|
+
* module is evaluated once in the custom server's graph and again in each Next
|
|
21
|
+
* route bundle (see `tui-accumulator.ts`, Issue #2223), and the table is filled
|
|
22
|
+
* by the server at startup but read by the routes.
|
|
23
|
+
*/
|
|
24
|
+
declare global {
|
|
25
|
+
var __cmLegacySessionAliases: Map<string, string> | undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Serve the new-format session name `newName` with the existing legacy session
|
|
29
|
+
* `legacyName`.
|
|
30
|
+
*/
|
|
31
|
+
export declare function registerLegacyAlias(newName: string, legacyName: string): void;
|
|
32
|
+
/** The legacy session name adopted for `newName`, if any. */
|
|
33
|
+
export declare function lookupLegacyAlias(newName: string): string | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Forget every adoption served by the legacy session `legacyName`. A no-op for
|
|
36
|
+
* a name that is not an adopted legacy session.
|
|
37
|
+
*
|
|
38
|
+
* @returns true when an entry was removed
|
|
39
|
+
*/
|
|
40
|
+
export declare function dropLegacyAliasByLegacyName(legacyName: string): boolean;
|
|
41
|
+
/** Test-only: forget every adoption. */
|
|
42
|
+
export declare function clearLegacyAliasesForTests(): void;
|
|
43
|
+
//# sourceMappingURL=legacy-session-alias.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-session-alias.d.ts","sourceRoot":"","sources":["../../../src/lib/tmux/legacy-session-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC/D;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAUvE;AAED,wCAAwC;AACxC,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Legacy tmux session adoption table (Issue #2866).
|
|
4
|
+
*
|
|
5
|
+
* Once the server has a session-name namespace, a session is named
|
|
6
|
+
* `mcbd-{ns}-{cli}-{worktreeId}[-{suffix}]`. Sessions the same server started
|
|
7
|
+
* before that (`mcbd-{cli}-{worktreeId}[-{suffix}]`) are NOT renamed — a rename
|
|
8
|
+
* would lose them for an older CommandMate running beside this one, or after a
|
|
9
|
+
* downgrade. Instead `adoptLegacySessions` records "the new-format name X is
|
|
10
|
+
* served by the legacy session Y", and `resolveSessionName` returns Y for X
|
|
11
|
+
* while the entry lives.
|
|
12
|
+
*
|
|
13
|
+
* An entry is dropped when its legacy session is killed or found gone
|
|
14
|
+
* (`tmux.ts` `killSession` / `hasSession`), so the next start uses the
|
|
15
|
+
* new-format name.
|
|
16
|
+
*
|
|
17
|
+
* Pure (no `@/` alias, no child_process): `cli-tools/session-name.ts` reads it,
|
|
18
|
+
* and that module is part of the CLI bundle (`tsconfig.cli.json` has no paths).
|
|
19
|
+
*
|
|
20
|
+
* Kept on `globalThis` rather than in module scope: under `next start` this
|
|
21
|
+
* module is evaluated once in the custom server's graph and again in each Next
|
|
22
|
+
* route bundle (see `tui-accumulator.ts`, Issue #2223), and the table is filled
|
|
23
|
+
* by the server at startup but read by the routes.
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.registerLegacyAlias = registerLegacyAlias;
|
|
27
|
+
exports.lookupLegacyAlias = lookupLegacyAlias;
|
|
28
|
+
exports.dropLegacyAliasByLegacyName = dropLegacyAliasByLegacyName;
|
|
29
|
+
exports.clearLegacyAliasesForTests = clearLegacyAliasesForTests;
|
|
30
|
+
function aliases() {
|
|
31
|
+
return (globalThis.__cmLegacySessionAliases ??= new Map());
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Serve the new-format session name `newName` with the existing legacy session
|
|
35
|
+
* `legacyName`.
|
|
36
|
+
*/
|
|
37
|
+
function registerLegacyAlias(newName, legacyName) {
|
|
38
|
+
aliases().set(newName, legacyName);
|
|
39
|
+
}
|
|
40
|
+
/** The legacy session name adopted for `newName`, if any. */
|
|
41
|
+
function lookupLegacyAlias(newName) {
|
|
42
|
+
return aliases().get(newName);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Forget every adoption served by the legacy session `legacyName`. A no-op for
|
|
46
|
+
* a name that is not an adopted legacy session.
|
|
47
|
+
*
|
|
48
|
+
* @returns true when an entry was removed
|
|
49
|
+
*/
|
|
50
|
+
function dropLegacyAliasByLegacyName(legacyName) {
|
|
51
|
+
const table = aliases();
|
|
52
|
+
let dropped = false;
|
|
53
|
+
for (const [newName, legacy] of table) {
|
|
54
|
+
if (legacy === legacyName) {
|
|
55
|
+
table.delete(newName);
|
|
56
|
+
dropped = true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return dropped;
|
|
60
|
+
}
|
|
61
|
+
/** Test-only: forget every adoption. */
|
|
62
|
+
function clearLegacyAliasesForTests() {
|
|
63
|
+
aliases().clear();
|
|
64
|
+
}
|
|
@@ -87,6 +87,22 @@ export interface VerifyOptions {
|
|
|
87
87
|
* never a pass.
|
|
88
88
|
*/
|
|
89
89
|
requireEnvClean: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* `$HOME` entry names the `env-clean` gate does not count (Issue #2890).
|
|
92
|
+
* Default `[]`; the loader always fills it, so a loaded config has the key.
|
|
93
|
+
*
|
|
94
|
+
* **Exact names, no glob, no regex.** A pattern would let one careless line
|
|
95
|
+
* (`.*`) switch the `home-entries` probe off, and the probe exists to catch
|
|
96
|
+
* exactly what an agent leaves in `$HOME`. The list is for entries that
|
|
97
|
+
* appear on their own — another tool's dotdir created by a process nobody on
|
|
98
|
+
* this task started — and it is applied when the two snapshots are compared,
|
|
99
|
+
* so it also covers baselines taken before the entry was listed here.
|
|
100
|
+
* Whatever it excused is named in the gate's report rather than dropped.
|
|
101
|
+
*
|
|
102
|
+
* Optional in the type only so a hand-built {@link VerifyConfig} fixture that
|
|
103
|
+
* predates the key keeps compiling; the parser never leaves it out.
|
|
104
|
+
*/
|
|
105
|
+
envCleanIgnoreHomeEntries?: string[];
|
|
90
106
|
}
|
|
91
107
|
export interface VerifyConfig {
|
|
92
108
|
version: 1;
|
|
@@ -170,6 +186,11 @@ export declare const MAX_GATE_MUTEX_LENGTH = 64;
|
|
|
170
186
|
* reports the machine's luck, not the work.
|
|
171
187
|
*/
|
|
172
188
|
export declare const MAX_RETRY_ON_FAIL = 1;
|
|
189
|
+
/**
|
|
190
|
+
* Most names `options.envCleanIgnoreHomeEntries` may list (Issue #2890). A list
|
|
191
|
+
* this long is already a repository papering over a machine it should fix.
|
|
192
|
+
*/
|
|
193
|
+
export declare const MAX_ENV_CLEAN_IGNORE_HOME_ENTRIES = 32;
|
|
173
194
|
export declare class VerifyConfigError extends Error {
|
|
174
195
|
readonly issues: string[];
|
|
175
196
|
constructor(issues: string[]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-config.d.ts","sourceRoot":"","sources":["../../../src/lib/verification/verify-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;OAUG;IACH,eAAe,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"verify-config.d.ts","sourceRoot":"","sources":["../../../src/lib/verification/verify-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;OAUG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;;;;;;;;;;OAcG;IACH,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,kDAIpB,CAAC;AAEX,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,aAAa,GAAE,SAAS,UAAU,EAAO,GACxC,MAAM,EAAE,CAWV;AAED,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAM/C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,QAA8B,CAAC;AAE3D;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAsB,CAAC;AAEtD,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAapD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE;CAK7B;AA6CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAe9F;AA8RD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAYtE"}
|