commandmate 0.11.3 → 0.12.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 +392 -300
- package/.next/app-path-routes-manifest.json +30 -21
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +12 -12
- package/.next/react-loadable-manifest.json +8 -6
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +66 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_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/hooks/claude-done/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/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/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.js +1 -0
- package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/route.js +1 -0
- package/.next/server/app/api/skills/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route.js +1 -1
- package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.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 +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]/install/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/route.js +23 -0
- package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_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_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]/viewed/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +2 -2
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +2 -2
- package/.next/server/app/more/page.js.nft.json +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page.js.nft.json +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +1 -1
- package/.next/server/app/repositories/page.js.nft.json +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page.js.nft.json +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +2 -0
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -0
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/skills/page.js +2 -0
- package/.next/server/app/skills/page.js.nft.json +1 -0
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -0
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +9 -9
- 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 +30 -21
- package/.next/server/chunks/1117.js +1 -1
- package/.next/server/chunks/120.js +1 -0
- package/.next/server/chunks/1808.js +1 -0
- package/.next/server/chunks/186.js +1 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/22.js +1 -0
- package/.next/server/chunks/2328.js +1 -0
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/3042.js +2 -0
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3708.js +1 -0
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/5064.js +1 -0
- package/.next/server/chunks/5226.js +28 -0
- package/.next/server/chunks/5306.js +2 -0
- package/.next/server/chunks/5312.js +1 -0
- package/.next/server/chunks/5326.js +1 -0
- package/.next/server/chunks/5381.js +1 -1
- package/.next/server/chunks/5456.js +1 -0
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/5959.js +2 -2
- package/.next/server/chunks/6065.js +1 -0
- package/.next/server/chunks/6130.js +1 -0
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/646.js +6 -6
- package/.next/server/chunks/{9968.js → 7587.js} +1 -1
- package/.next/server/chunks/8584.js +1 -0
- package/.next/server/chunks/8681.js +1 -1
- package/.next/server/chunks/8807.js +950 -804
- package/.next/server/chunks/9123.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/D-aoE4gWfuCUN0GqEPIX3/_buildManifest.js +1 -0
- package/.next/static/chunks/1668-7484081c45a44f89.js +1 -0
- package/.next/static/chunks/3418-7e47651340d940b0.js +1 -0
- package/.next/static/chunks/4027-0c529b322be7d4d8.js +1 -0
- package/.next/static/chunks/{4560-64b1461fd996127a.js → 4560-04e5aebcab96bfa1.js} +1 -1
- package/.next/static/chunks/6007-de36119357dcd418.js +1 -0
- package/.next/static/chunks/{6488-8819e6905355caea.js → 6488-e257111ca7389d05.js} +1 -1
- package/.next/static/chunks/{8965-872d8de254196cec.js → 6497-dc26c6c6b0b15adf.js} +1 -1
- package/.next/static/chunks/790-d8e6acd26e03679c.js +1 -0
- package/.next/static/chunks/8361.4bf062be2d2962f4.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/assistant/conversation/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/assistant/current-output/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/assistant/messages/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/skills/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/templates/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/todos/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/chat/{page-9ed2ffd98eb4ae18.js → page-9cf4ba62e21d9074.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/more/{page-a496425bba427b48.js → page-082d4ae496f9a36e.js} +1 -1
- package/.next/static/chunks/app/{page-15bfd76bcf65842d.js → page-af457ca5876ed616.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-56dad0523d3c4a92.js +1 -0
- package/.next/static/chunks/app/repositories/{page-d214522ab8792ce7.js → page-75f0d70452c6b6c0.js} +1 -1
- package/.next/static/chunks/app/review/{page-1dadf0b5d7129598.js → page-f431d630097c2e85.js} +1 -1
- package/.next/static/chunks/app/sessions/{page-96f007d986c5f327.js → page-20f07a99db64d2ca.js} +1 -1
- package/.next/static/chunks/app/skills/[skillId]/page-68ed5e9186efe56d.js +1 -0
- package/.next/static/chunks/app/skills/page-46242c428ee8bccf.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-bf811e793052c917.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/page-a75fe180a7233b2b.js +1 -0
- package/.next/static/chunks/webpack-0f9275e279c058eb.js +1 -0
- package/.next/static/css/b4bdb1f3457fe9a7.css +1 -0
- package/.next/trace +11 -10
- package/.next/types/app/api/skills/[id]/route.ts +347 -0
- package/.next/types/app/api/skills/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/skills/[skillId]/install/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/skills/[skillId]/plan/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/skills/route.ts +347 -0
- package/.next/types/app/skills/[skillId]/page.ts +84 -0
- package/.next/types/app/skills/page.ts +84 -0
- package/.next/types/routes.d.ts +11 -2
- package/.next/types/validator.ts +81 -0
- package/dist/cli/commands/skill-format.d.ts +28 -0
- package/dist/cli/commands/skill-format.d.ts.map +1 -0
- package/dist/cli/commands/skill-format.js +163 -0
- package/dist/cli/commands/skill-guards.d.ts +53 -0
- package/dist/cli/commands/skill-guards.d.ts.map +1 -0
- package/dist/cli/commands/skill-guards.js +188 -0
- package/dist/cli/commands/skill.d.ts +24 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +365 -0
- package/dist/cli/docs/agent-operations.d.ts +1 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +36 -0
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +11 -0
- package/dist/cli/types/api-responses.d.ts +215 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +60 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/types/index.js +23 -1
- package/dist/cli/utils/api-client.d.ts +19 -1
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +41 -4
- package/dist/cli/utils/npx-runner.d.ts +14 -0
- package/dist/cli/utils/npx-runner.d.ts.map +1 -1
- package/dist/cli/utils/npx-runner.js +20 -0
- package/dist/server/server.js +57 -0
- package/dist/server/src/config/activity-bar-config.js +2 -0
- package/dist/server/src/config/git-status-config.js +83 -0
- package/dist/server/src/config/skill-security-config.js +139 -0
- package/dist/server/src/lib/db/migrations/index.js +8 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v44-skill-operations.js +81 -0
- package/dist/server/src/lib/db/migrations/v45-skill-installations.js +59 -0
- package/dist/server/src/lib/db/migrations/v46-skill-installations-cascade.js +107 -0
- package/dist/server/src/lib/db/migrations/v47-skill-installations-roots.js +70 -0
- package/dist/server/src/lib/db/worktree-db.js +9 -4
- package/dist/server/src/lib/git/git-errors.js +336 -0
- package/dist/server/src/lib/git/git-exec.js +285 -0
- package/dist/server/src/lib/skills/compatibility.js +194 -0
- package/dist/server/src/lib/skills/constants.js +252 -0
- package/dist/server/src/lib/skills/errors.js +82 -0
- package/dist/server/src/lib/skills/index.js +91 -0
- package/dist/server/src/lib/skills/install-apply.js +670 -0
- package/dist/server/src/lib/skills/install-plan.js +582 -0
- package/dist/server/src/lib/skills/installed-state.js +127 -0
- package/dist/server/src/lib/skills/integrity.js +225 -0
- package/dist/server/src/lib/skills/json-schema.js +365 -0
- package/dist/server/src/lib/skills/operation-audit.js +120 -0
- package/dist/server/src/lib/skills/operation-journal.js +286 -0
- package/dist/server/src/lib/skills/operation-lock.js +339 -0
- package/dist/server/src/lib/skills/operation-reconciler.js +107 -0
- package/dist/server/src/lib/skills/operation-store.js +153 -0
- package/dist/server/src/lib/skills/package-reader.js +495 -0
- package/dist/server/src/lib/skills/package-validator.js +451 -0
- package/dist/server/src/lib/skills/preview-diff.js +627 -0
- package/dist/server/src/lib/skills/safe-yaml.js +593 -0
- package/dist/server/src/lib/skills/schema.js +1248 -0
- package/dist/server/src/lib/skills/semver.js +193 -0
- package/dist/server/src/lib/skills/snapshot-store.js +334 -0
- package/dist/server/src/lib/skills/startup-reconcile.js +138 -0
- package/dist/server/src/lib/skills/uninstall-apply.js +495 -0
- package/dist/server/src/lib/skills/uninstall-plan.js +479 -0
- package/dist/server/src/types/skills.js +17 -0
- package/package.json +1 -1
- package/.next/server/chunks/129.js +0 -1
- package/.next/server/chunks/2478.js +0 -1
- package/.next/server/chunks/9886.js +0 -1
- package/.next/static/chunks/3165-87bf884f7f3d15cf.js +0 -1
- package/.next/static/chunks/6416.6756b7ad06dd96f7.js +0 -1
- package/.next/static/chunks/8676.57260a06f6554e7e.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/assistant/conversation/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/assistant/current-output/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/templates/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/todos/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-7536041a7a89616d.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-6105a3470b279527.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/terminal/page-ed4590b024edd8d6.js +0 -1
- package/.next/static/chunks/webpack-2e3739a831868daa.js +0 -1
- package/.next/static/css/d7e2e8d1b8d69d36.css +0 -1
- package/.next/static/i8mdUwheg9j9sU_lI_ZSf/_buildManifest.js +0 -1
- /package/.next/static/{i8mdUwheg9j9sU_lI_ZSf → D-aoE4gWfuCUN0GqEPIX3}/_ssgManifest.js +0 -0
package/.next/types/validator.ts
CHANGED
|
@@ -119,6 +119,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
119
119
|
type __Unused = __Check
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
// Validate ../../src/app/skills/[skillId]/page.tsx
|
|
123
|
+
{
|
|
124
|
+
type __IsExpected<Specific extends AppPageConfig<"/skills/[skillId]">> = Specific
|
|
125
|
+
const handler = {} as typeof import("../../src/app/skills/[skillId]/page.js")
|
|
126
|
+
type __Check = __IsExpected<typeof handler>
|
|
127
|
+
// @ts-ignore
|
|
128
|
+
type __Unused = __Check
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Validate ../../src/app/skills/page.tsx
|
|
132
|
+
{
|
|
133
|
+
type __IsExpected<Specific extends AppPageConfig<"/skills">> = Specific
|
|
134
|
+
const handler = {} as typeof import("../../src/app/skills/page.js")
|
|
135
|
+
type __Check = __IsExpected<typeof handler>
|
|
136
|
+
// @ts-ignore
|
|
137
|
+
type __Unused = __Check
|
|
138
|
+
}
|
|
139
|
+
|
|
122
140
|
// Validate ../../src/app/worktrees/[id]/files/[...path]/page.tsx
|
|
123
141
|
{
|
|
124
142
|
type __IsExpected<Specific extends AppPageConfig<"/worktrees/[id]/files/[...path]">> = Specific
|
|
@@ -434,6 +452,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
434
452
|
type __Unused = __Check
|
|
435
453
|
}
|
|
436
454
|
|
|
455
|
+
// Validate ../../src/app/api/skills/[id]/route.ts
|
|
456
|
+
{
|
|
457
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/skills/[id]">> = Specific
|
|
458
|
+
const handler = {} as typeof import("../../src/app/api/skills/[id]/route.js")
|
|
459
|
+
type __Check = __IsExpected<typeof handler>
|
|
460
|
+
// @ts-ignore
|
|
461
|
+
type __Unused = __Check
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
// Validate ../../src/app/api/skills/route.ts
|
|
465
|
+
{
|
|
466
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/skills">> = Specific
|
|
467
|
+
const handler = {} as typeof import("../../src/app/api/skills/route.js")
|
|
468
|
+
type __Check = __IsExpected<typeof handler>
|
|
469
|
+
// @ts-ignore
|
|
470
|
+
type __Unused = __Check
|
|
471
|
+
}
|
|
472
|
+
|
|
437
473
|
// Validate ../../src/app/api/slash-commands/route.ts
|
|
438
474
|
{
|
|
439
475
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/slash-commands">> = Specific
|
|
@@ -893,6 +929,51 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
893
929
|
type __Unused = __Check
|
|
894
930
|
}
|
|
895
931
|
|
|
932
|
+
// Validate ../../src/app/api/worktrees/[id]/skills/[skillId]/install/route.ts
|
|
933
|
+
{
|
|
934
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/skills/[skillId]/install">> = Specific
|
|
935
|
+
const handler = {} as typeof import("../../src/app/api/worktrees/[id]/skills/[skillId]/install/route.js")
|
|
936
|
+
type __Check = __IsExpected<typeof handler>
|
|
937
|
+
// @ts-ignore
|
|
938
|
+
type __Unused = __Check
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
// Validate ../../src/app/api/worktrees/[id]/skills/[skillId]/plan/route.ts
|
|
942
|
+
{
|
|
943
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/skills/[skillId]/plan">> = Specific
|
|
944
|
+
const handler = {} as typeof import("../../src/app/api/worktrees/[id]/skills/[skillId]/plan/route.js")
|
|
945
|
+
type __Check = __IsExpected<typeof handler>
|
|
946
|
+
// @ts-ignore
|
|
947
|
+
type __Unused = __Check
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
// Validate ../../src/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.ts
|
|
951
|
+
{
|
|
952
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/skills/[skillId]/uninstall-plan">> = Specific
|
|
953
|
+
const handler = {} as typeof import("../../src/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js")
|
|
954
|
+
type __Check = __IsExpected<typeof handler>
|
|
955
|
+
// @ts-ignore
|
|
956
|
+
type __Unused = __Check
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
// Validate ../../src/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.ts
|
|
960
|
+
{
|
|
961
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/skills/[skillId]/uninstall">> = Specific
|
|
962
|
+
const handler = {} as typeof import("../../src/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js")
|
|
963
|
+
type __Check = __IsExpected<typeof handler>
|
|
964
|
+
// @ts-ignore
|
|
965
|
+
type __Unused = __Check
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
// Validate ../../src/app/api/worktrees/[id]/skills/route.ts
|
|
969
|
+
{
|
|
970
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/skills">> = Specific
|
|
971
|
+
const handler = {} as typeof import("../../src/app/api/worktrees/[id]/skills/route.js")
|
|
972
|
+
type __Check = __IsExpected<typeof handler>
|
|
973
|
+
// @ts-ignore
|
|
974
|
+
type __Unused = __Check
|
|
975
|
+
}
|
|
976
|
+
|
|
896
977
|
// Validate ../../src/app/api/worktrees/[id]/slash-commands/route.ts
|
|
897
978
|
{
|
|
898
979
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/slash-commands">> = Specific
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* skill command output formatting
|
|
3
|
+
* Issue #1237: renders Catalog entries and plans in the same vocabulary the UI
|
|
4
|
+
* uses (capability, effect, provenance, risk, target, diff, next action) so a
|
|
5
|
+
* user reading `--help` and one reading the browser see the same thing.
|
|
6
|
+
*
|
|
7
|
+
* Nothing here prints an absolute path, a token or an artifact URL: the API does
|
|
8
|
+
* not serve them, and these functions must not reconstruct them either.
|
|
9
|
+
*/
|
|
10
|
+
import type { SkillCatalogMeta, SkillCatalogSummary, SkillInstallPlan, SkillUninstallPlan } from '../types/api-responses';
|
|
11
|
+
/**
|
|
12
|
+
* Freshness notice for a Catalog response, or null when it was confirmed current.
|
|
13
|
+
* Belongs on stderr: it qualifies the listing rather than being part of it.
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatCatalogFreshness(catalog: SkillCatalogMeta): string | null;
|
|
16
|
+
export declare function formatSkillTable(skills: SkillCatalogSummary[]): string;
|
|
17
|
+
export declare function formatSkillDetail(skill: SkillCatalogSummary, version?: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Render the install root(s). A dual-root install (#1460) lists every root so
|
|
20
|
+
* the user sees the package lands for both Codex and Claude; a single-root plan
|
|
21
|
+
* reads exactly as before.
|
|
22
|
+
*/
|
|
23
|
+
export declare function formatInstallRoots(roots: readonly string[] | undefined, primary: string): string;
|
|
24
|
+
/** The install preview: what lands, where, at what risk, and what stands in the way. */
|
|
25
|
+
export declare function formatInstallPlan(plan: SkillInstallPlan): string;
|
|
26
|
+
/** The uninstall preview: what would be deleted, what would stay, and why. */
|
|
27
|
+
export declare function formatUninstallPlan(plan: SkillUninstallPlan): string;
|
|
28
|
+
//# sourceMappingURL=skill-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-format.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAgBhC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAI/E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAatE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CA2CtF;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA8ChE;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CA2BpE"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* skill command output formatting
|
|
4
|
+
* Issue #1237: renders Catalog entries and plans in the same vocabulary the UI
|
|
5
|
+
* uses (capability, effect, provenance, risk, target, diff, next action) so a
|
|
6
|
+
* user reading `--help` and one reading the browser see the same thing.
|
|
7
|
+
*
|
|
8
|
+
* Nothing here prints an absolute path, a token or an artifact URL: the API does
|
|
9
|
+
* not serve them, and these functions must not reconstruct them either.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.formatCatalogFreshness = formatCatalogFreshness;
|
|
13
|
+
exports.formatSkillTable = formatSkillTable;
|
|
14
|
+
exports.formatSkillDetail = formatSkillDetail;
|
|
15
|
+
exports.formatInstallRoots = formatInstallRoots;
|
|
16
|
+
exports.formatInstallPlan = formatInstallPlan;
|
|
17
|
+
exports.formatUninstallPlan = formatUninstallPlan;
|
|
18
|
+
/** [DR1-08 consistency] Mirrors ls.ts / instances.ts table rendering. */
|
|
19
|
+
function formatTable(headers, rows) {
|
|
20
|
+
const widths = headers.map((header, i) => Math.max(header.length, ...rows.map((row) => row[i].length)));
|
|
21
|
+
const line = (cells) => cells.map((cell, i) => cell.padEnd(widths[i])).join(' ');
|
|
22
|
+
return [
|
|
23
|
+
line(headers),
|
|
24
|
+
widths.map((w) => '-'.repeat(w)).join(' '),
|
|
25
|
+
...rows.map(line),
|
|
26
|
+
].join('\n');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Freshness notice for a Catalog response, or null when it was confirmed current.
|
|
30
|
+
* Belongs on stderr: it qualifies the listing rather than being part of it.
|
|
31
|
+
*/
|
|
32
|
+
function formatCatalogFreshness(catalog) {
|
|
33
|
+
if (!catalog.stale)
|
|
34
|
+
return null;
|
|
35
|
+
const reason = catalog.staleReason ?? catalog.state;
|
|
36
|
+
return `Warning: showing the last known good Catalog (${reason}); it could not be confirmed current.`;
|
|
37
|
+
}
|
|
38
|
+
function formatSkillTable(skills) {
|
|
39
|
+
if (skills.length === 0)
|
|
40
|
+
return 'No Skills are published in the official Catalog.';
|
|
41
|
+
return formatTable(['SKILL_ID', 'NAME', 'LATEST', 'RECOMMENDED', 'COMPATIBILITY'], skills.map((skill) => [
|
|
42
|
+
skill.id,
|
|
43
|
+
skill.name,
|
|
44
|
+
skill.latest,
|
|
45
|
+
skill.recommendedVersion ?? '-',
|
|
46
|
+
skill.compatibility?.status ?? 'unknown',
|
|
47
|
+
]));
|
|
48
|
+
}
|
|
49
|
+
function formatSkillDetail(skill, version) {
|
|
50
|
+
const lines = [
|
|
51
|
+
`${skill.name} (${skill.id})`,
|
|
52
|
+
skill.summary,
|
|
53
|
+
'',
|
|
54
|
+
`Provider: ${skill.provider.name}`,
|
|
55
|
+
`License: ${skill.license}`,
|
|
56
|
+
`Latest: ${skill.latest}`,
|
|
57
|
+
`Recommended: ${skill.recommendedVersion ?? '-'} (${skill.recommendedReason})`,
|
|
58
|
+
];
|
|
59
|
+
if (skill.homepage)
|
|
60
|
+
lines.push(`Homepage: ${skill.homepage}`);
|
|
61
|
+
if (skill.compatibility) {
|
|
62
|
+
lines.push(`Compatibility: ${skill.compatibility.status} — ${skill.compatibility.message}`);
|
|
63
|
+
}
|
|
64
|
+
const versions = version
|
|
65
|
+
? skill.versions.filter((entry) => entry.version === version)
|
|
66
|
+
: skill.versions;
|
|
67
|
+
lines.push('', 'Versions:');
|
|
68
|
+
if (versions.length === 0) {
|
|
69
|
+
lines.push(version
|
|
70
|
+
? ` (no published version ${version}; pass --prerelease if it is a prerelease)`
|
|
71
|
+
: ' (none listed; pass --prerelease to include prereleases)');
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
lines.push(formatTable(['VERSION', 'RISK', 'PRERELEASE', 'COMPATIBILITY', 'PUBLISHED'], versions.map((entry) => [
|
|
75
|
+
entry.version,
|
|
76
|
+
entry.declaredRisk,
|
|
77
|
+
entry.prerelease ? 'yes' : 'no',
|
|
78
|
+
entry.compatibility.commandmate.status,
|
|
79
|
+
entry.publishedAt,
|
|
80
|
+
]))
|
|
81
|
+
.split('\n')
|
|
82
|
+
.map((row) => ` ${row}`)
|
|
83
|
+
.join('\n'));
|
|
84
|
+
}
|
|
85
|
+
return lines.join('\n');
|
|
86
|
+
}
|
|
87
|
+
function formatList(label, values) {
|
|
88
|
+
return `${label}${values.length > 0 ? values.join(', ') : '(none)'}`;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Render the install root(s). A dual-root install (#1460) lists every root so
|
|
92
|
+
* the user sees the package lands for both Codex and Claude; a single-root plan
|
|
93
|
+
* reads exactly as before.
|
|
94
|
+
*/
|
|
95
|
+
function formatInstallRoots(roots, primary) {
|
|
96
|
+
return roots && roots.length > 1 ? roots.join(', ') : primary;
|
|
97
|
+
}
|
|
98
|
+
/** The install preview: what lands, where, at what risk, and what stands in the way. */
|
|
99
|
+
function formatInstallPlan(plan) {
|
|
100
|
+
const { skill, target, stats } = plan;
|
|
101
|
+
const lines = [
|
|
102
|
+
`Install plan: ${skill.name} ${skill.version} (${skill.id})`,
|
|
103
|
+
skill.summary,
|
|
104
|
+
'',
|
|
105
|
+
`Target: ${target.repositoryName} / ${target.worktreeName} (${target.worktreeId})`,
|
|
106
|
+
`Branch: ${target.branch ?? `(${target.headState})`}${target.workingTreeDirty ? ' [working tree dirty]' : ''}`,
|
|
107
|
+
`Install root: ${formatInstallRoots(target.installRoots, target.installRoot)}`,
|
|
108
|
+
`Risk: ${skill.effectiveRisk} — ${skill.riskRationale}`,
|
|
109
|
+
`Compatibility: ${skill.compatibility.commandmate.status} — ${skill.compatibility.commandmate.message}`,
|
|
110
|
+
formatList('Permissions: ', skill.declaredPermissions),
|
|
111
|
+
formatList('Scripts: ', skill.scriptPaths),
|
|
112
|
+
formatList('Requires: ', skill.requirements.commands.map((command) => command.versionRange ? `${command.name} ${command.versionRange}` : command.name)),
|
|
113
|
+
formatList('Network: ', skill.requirements.networkHosts),
|
|
114
|
+
`Changes: +${stats.added} added, ~${stats.modified} modified, =${stats.unchanged} unchanged, !${stats.conflicted} conflicting, ?${stats.unmanaged} unmanaged`,
|
|
115
|
+
];
|
|
116
|
+
if (target.existingInstall) {
|
|
117
|
+
lines.push(`Already installed: ${target.existingInstall.version}`);
|
|
118
|
+
}
|
|
119
|
+
if (plan.warnings.length > 0) {
|
|
120
|
+
lines.push(`Warnings: ${plan.warnings.join(', ')}`);
|
|
121
|
+
}
|
|
122
|
+
if (plan.blockers.length > 0) {
|
|
123
|
+
lines.push('Blockers:');
|
|
124
|
+
for (const blocker of plan.blockers) {
|
|
125
|
+
lines.push(` - ${blocker.code}${blocker.path ? `: ${blocker.path}` : ''}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
lines.push(plan.installable
|
|
129
|
+
? 'Installable: yes'
|
|
130
|
+
: 'Installable: no — nothing would be written');
|
|
131
|
+
if (plan.requiresRiskAcknowledgement) {
|
|
132
|
+
lines.push(`High risk: installing requires --ack-risk ${skill.id}@${skill.version} in addition to --yes`);
|
|
133
|
+
}
|
|
134
|
+
return lines.join('\n');
|
|
135
|
+
}
|
|
136
|
+
/** The uninstall preview: what would be deleted, what would stay, and why. */
|
|
137
|
+
function formatUninstallPlan(plan) {
|
|
138
|
+
const { skill, target, stats } = plan;
|
|
139
|
+
const lines = [
|
|
140
|
+
`Uninstall plan: ${skill.id} ${skill.version}`,
|
|
141
|
+
'',
|
|
142
|
+
`Target: ${target.repositoryName} / ${target.worktreeName} (${target.worktreeId})`,
|
|
143
|
+
`Branch: ${target.branch ?? '(detached)'}${target.workingTreeDirty ? ' [working tree dirty]' : ''}`,
|
|
144
|
+
`Install root: ${target.installRoot}`,
|
|
145
|
+
`Risk: ${skill.effectiveRisk}`,
|
|
146
|
+
`Files: ${stats.removable} removable, ${stats.modified} locally modified, ${stats.missing} missing, ${stats.unknown} unmanaged, ${stats.irregular} irregular`,
|
|
147
|
+
`Removable: ${plan.removable ? 'yes' : 'no — nothing would be deleted'}`,
|
|
148
|
+
];
|
|
149
|
+
if (plan.retained.length > 0) {
|
|
150
|
+
lines.push('Retained:');
|
|
151
|
+
for (const entry of plan.retained) {
|
|
152
|
+
lines.push(` - ${entry.path} (${entry.reason})`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (plan.blockers.length > 0) {
|
|
156
|
+
lines.push('Blockers:');
|
|
157
|
+
for (const blocker of plan.blockers) {
|
|
158
|
+
lines.push(` - ${blocker.code}${blocker.path ? `: ${blocker.path}` : ''}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
lines.push(`Next action: ${plan.nextActionKey}`);
|
|
162
|
+
return lines.join('\n');
|
|
163
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* skill command guards — confirmation contract and typed error mapping
|
|
3
|
+
* Issue #1237: `commandmate skill` is a thin client over the Skill APIs, so the
|
|
4
|
+
* only safety logic that belongs here is the part the server cannot enforce:
|
|
5
|
+
* whether *this invocation* is allowed to ask for a write at all.
|
|
6
|
+
*/
|
|
7
|
+
import { ApiError } from '../utils/api-client';
|
|
8
|
+
/**
|
|
9
|
+
* Validate a Skill ID before it is interpolated into a request path.
|
|
10
|
+
* The server validates it again; this only turns a typo into exit 2 instead of
|
|
11
|
+
* a request carrying an arbitrary path segment.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isValidSkillId(id: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Print a refusal on stderr and set the process exit code.
|
|
16
|
+
*
|
|
17
|
+
* Callers must `return` immediately afterwards: process.exit is stubbed in
|
|
18
|
+
* tests, so anything written after this line would still run — and, for a write
|
|
19
|
+
* command, would still reach the API.
|
|
20
|
+
*/
|
|
21
|
+
export declare function refuse(message: string, exitCode: number): void;
|
|
22
|
+
/** Exit code for a failed Skill API call. */
|
|
23
|
+
export declare function skillExitCode(error: ApiError): number;
|
|
24
|
+
/**
|
|
25
|
+
* Report a failed skill subcommand.
|
|
26
|
+
*
|
|
27
|
+
* Everything goes to stderr, including the typed code and any blocker paths, so
|
|
28
|
+
* a `--json` run that fails emits nothing at all on stdout rather than a
|
|
29
|
+
* half-written or error-shaped document.
|
|
30
|
+
*/
|
|
31
|
+
export declare function handleSkillCommandError(error: unknown): void;
|
|
32
|
+
/** How the confirmation requirement was settled. Only `confirmed` may write. */
|
|
33
|
+
export type ConfirmationOutcome = 'confirmed' | 'declined' | 'non_interactive';
|
|
34
|
+
/**
|
|
35
|
+
* Decide whether this invocation may proceed to a write.
|
|
36
|
+
*
|
|
37
|
+
* A non-TTY without `--yes` is refused rather than assumed: an environment that
|
|
38
|
+
* cannot show a prompt is exactly the one where an implicit yes would install
|
|
39
|
+
* something nobody watched.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveWriteConfirmation(question: string, options: {
|
|
42
|
+
yes?: boolean;
|
|
43
|
+
}): Promise<ConfirmationOutcome>;
|
|
44
|
+
/**
|
|
45
|
+
* Whether `--ack-risk` names exactly this Skill and version.
|
|
46
|
+
*
|
|
47
|
+
* Deliberately an exact value rather than a flag: `--yes` is a blanket "don't
|
|
48
|
+
* prompt me" that a wrapper script sets once and forgets, so it must not be
|
|
49
|
+
* able to carry a high-risk install with it. Typing the id and version is the
|
|
50
|
+
* acknowledgement.
|
|
51
|
+
*/
|
|
52
|
+
export declare function riskAcknowledgementMatches(ackRisk: string | undefined, skillId: string, version: string): boolean;
|
|
53
|
+
//# sourceMappingURL=skill-guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-guards.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAG9D;AA8CD,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAOrD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAY5D;AAsBD,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE/E;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAI9B;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAET"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* skill command guards — confirmation contract and typed error mapping
|
|
4
|
+
* Issue #1237: `commandmate skill` is a thin client over the Skill APIs, so the
|
|
5
|
+
* only safety logic that belongs here is the part the server cannot enforce:
|
|
6
|
+
* whether *this invocation* is allowed to ask for a write at all.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.isValidSkillId = isValidSkillId;
|
|
43
|
+
exports.refuse = refuse;
|
|
44
|
+
exports.skillExitCode = skillExitCode;
|
|
45
|
+
exports.handleSkillCommandError = handleSkillCommandError;
|
|
46
|
+
exports.resolveWriteConfirmation = resolveWriteConfirmation;
|
|
47
|
+
exports.riskAcknowledgementMatches = riskAcknowledgementMatches;
|
|
48
|
+
const readline = __importStar(require("readline"));
|
|
49
|
+
const types_1 = require("../types");
|
|
50
|
+
const api_client_1 = require("../utils/api-client");
|
|
51
|
+
const prompt_1 = require("../utils/prompt");
|
|
52
|
+
/** Mirrors: src/lib/skills/constants.ts SKILL_ID_PATTERN / SKILL_ID_MAX_LENGTH. */
|
|
53
|
+
const SKILL_ID_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
54
|
+
const SKILL_ID_MAX_LENGTH = 64;
|
|
55
|
+
/**
|
|
56
|
+
* Validate a Skill ID before it is interpolated into a request path.
|
|
57
|
+
* The server validates it again; this only turns a typo into exit 2 instead of
|
|
58
|
+
* a request carrying an arbitrary path segment.
|
|
59
|
+
*/
|
|
60
|
+
function isValidSkillId(id) {
|
|
61
|
+
return id.length > 0 && id.length <= SKILL_ID_MAX_LENGTH && SKILL_ID_PATTERN.test(id);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Print a refusal on stderr and set the process exit code.
|
|
65
|
+
*
|
|
66
|
+
* Callers must `return` immediately afterwards: process.exit is stubbed in
|
|
67
|
+
* tests, so anything written after this line would still run — and, for a write
|
|
68
|
+
* command, would still reach the API.
|
|
69
|
+
*/
|
|
70
|
+
function refuse(message, exitCode) {
|
|
71
|
+
console.error(`Error: ${message}`);
|
|
72
|
+
process.exit(exitCode);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Exit code for each typed Skill API error.
|
|
76
|
+
*
|
|
77
|
+
* The point of the table is the split the Issue asks for: a bad request or a
|
|
78
|
+
* missing Skill (fix the argv) must not look like a worktree that refused the
|
|
79
|
+
* write (fix the files, then re-plan), and neither may look like the Catalog
|
|
80
|
+
* being unreachable (retry later).
|
|
81
|
+
*/
|
|
82
|
+
const SKILL_ERROR_EXIT_CODES = {
|
|
83
|
+
// The request was wrong. Nothing about the worktree needs to change.
|
|
84
|
+
SKILL_PLAN_INPUT_REJECTED: types_1.ExitCode.CONFIG_ERROR,
|
|
85
|
+
SKILL_PLAN_INVALID_BODY: types_1.ExitCode.CONFIG_ERROR,
|
|
86
|
+
SKILL_INSTALL_INVALID_BODY: types_1.ExitCode.CONFIG_ERROR,
|
|
87
|
+
SKILL_UNINSTALL_INVALID_BODY: types_1.ExitCode.CONFIG_ERROR,
|
|
88
|
+
SKILL_PLAN_TARGET_UNSAFE: types_1.ExitCode.CONFIG_ERROR,
|
|
89
|
+
SKILL_NOT_FOUND: types_1.ExitCode.CONFIG_ERROR,
|
|
90
|
+
SKILL_VERSION_NOT_FOUND: types_1.ExitCode.CONFIG_ERROR,
|
|
91
|
+
SKILL_UNINSTALL_NOT_INSTALLED: types_1.ExitCode.CONFIG_ERROR,
|
|
92
|
+
// The target refused. Resolve the named path, or re-plan, then retry.
|
|
93
|
+
SKILL_PLAN_STALE: types_1.SkillExitCode.BLOCKED,
|
|
94
|
+
SKILL_PLAN_EXPIRED: types_1.SkillExitCode.BLOCKED,
|
|
95
|
+
SKILL_PLAN_CONSUMED: types_1.SkillExitCode.BLOCKED,
|
|
96
|
+
SKILL_PLAN_BINDING_MISMATCH: types_1.SkillExitCode.BLOCKED,
|
|
97
|
+
SKILL_PLAN_NOT_INSTALLABLE: types_1.SkillExitCode.BLOCKED,
|
|
98
|
+
SKILL_INSTALL_DESTINATION_EXISTS: types_1.SkillExitCode.BLOCKED,
|
|
99
|
+
SKILL_INSTALL_DESTINATION_UNMANAGED: types_1.SkillExitCode.BLOCKED,
|
|
100
|
+
SKILL_INSTALL_TARGET_UNSAFE: types_1.SkillExitCode.BLOCKED,
|
|
101
|
+
SKILL_INSTALL_LOCKED: types_1.SkillExitCode.BLOCKED,
|
|
102
|
+
SKILL_INSTALL_IDEMPOTENCY_CONFLICT: types_1.SkillExitCode.BLOCKED,
|
|
103
|
+
SKILL_INSTALL_IN_PROGRESS: types_1.SkillExitCode.BLOCKED,
|
|
104
|
+
SKILL_UNINSTALL_BLOCKED: types_1.SkillExitCode.BLOCKED,
|
|
105
|
+
SKILL_UNINSTALL_TARGET_UNSAFE: types_1.SkillExitCode.BLOCKED,
|
|
106
|
+
SKILL_UNINSTALL_LOCKED: types_1.SkillExitCode.BLOCKED,
|
|
107
|
+
SKILL_UNINSTALL_IDEMPOTENCY_CONFLICT: types_1.SkillExitCode.BLOCKED,
|
|
108
|
+
SKILL_UNINSTALL_IN_PROGRESS: types_1.SkillExitCode.BLOCKED,
|
|
109
|
+
// An acknowledgement was missing, not a file.
|
|
110
|
+
SKILL_PLAN_RISK_NOT_ACKNOWLEDGED: types_1.SkillExitCode.CONFIRMATION_REQUIRED,
|
|
111
|
+
};
|
|
112
|
+
/** Statuses that mean "the dependency is unavailable", not "your request was wrong". */
|
|
113
|
+
const AVAILABILITY_STATUSES = [502, 503, 504];
|
|
114
|
+
/** Exit code for a failed Skill API call. */
|
|
115
|
+
function skillExitCode(error) {
|
|
116
|
+
const mapped = error.apiCode ? SKILL_ERROR_EXIT_CODES[error.apiCode] : undefined;
|
|
117
|
+
if (mapped !== undefined)
|
|
118
|
+
return mapped;
|
|
119
|
+
if (error.statusCode !== undefined && AVAILABILITY_STATUSES.includes(error.statusCode)) {
|
|
120
|
+
return types_1.ExitCode.DEPENDENCY_ERROR;
|
|
121
|
+
}
|
|
122
|
+
return error.exitCode;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Report a failed skill subcommand.
|
|
126
|
+
*
|
|
127
|
+
* Everything goes to stderr, including the typed code and any blocker paths, so
|
|
128
|
+
* a `--json` run that fails emits nothing at all on stdout rather than a
|
|
129
|
+
* half-written or error-shaped document.
|
|
130
|
+
*/
|
|
131
|
+
function handleSkillCommandError(error) {
|
|
132
|
+
if (error instanceof api_client_1.ApiError) {
|
|
133
|
+
const detail = error.payload?.error ?? error.message;
|
|
134
|
+
console.error(error.apiCode ? `Error: ${detail} [${error.apiCode}]` : `Error: ${detail}`);
|
|
135
|
+
for (const blocker of error.payload?.blockers ?? []) {
|
|
136
|
+
console.error(` - ${blocker.code}${blocker.path ? `: ${blocker.path}` : ''}`);
|
|
137
|
+
}
|
|
138
|
+
process.exit(skillExitCode(error));
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
142
|
+
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Ask a yes/no question on stderr.
|
|
146
|
+
*
|
|
147
|
+
* The shared confirm() in utils/prompt.ts writes to stdout, which would land
|
|
148
|
+
* inside the document a `--json` run is expected to emit. Skill writes own their
|
|
149
|
+
* prompt so stdout carries the result and nothing else, in every mode.
|
|
150
|
+
*/
|
|
151
|
+
async function confirmOnStderr(question) {
|
|
152
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
153
|
+
try {
|
|
154
|
+
const answer = await new Promise((resolvePromise) => {
|
|
155
|
+
rl.question(`${question} (y/N): `, resolvePromise);
|
|
156
|
+
});
|
|
157
|
+
const normalized = answer.trim().toLowerCase();
|
|
158
|
+
return normalized === 'y' || normalized === 'yes';
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
rl.close();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Decide whether this invocation may proceed to a write.
|
|
166
|
+
*
|
|
167
|
+
* A non-TTY without `--yes` is refused rather than assumed: an environment that
|
|
168
|
+
* cannot show a prompt is exactly the one where an implicit yes would install
|
|
169
|
+
* something nobody watched.
|
|
170
|
+
*/
|
|
171
|
+
async function resolveWriteConfirmation(question, options) {
|
|
172
|
+
if (options.yes)
|
|
173
|
+
return 'confirmed';
|
|
174
|
+
if (!(0, prompt_1.isInteractive)())
|
|
175
|
+
return 'non_interactive';
|
|
176
|
+
return (await confirmOnStderr(question)) ? 'confirmed' : 'declined';
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Whether `--ack-risk` names exactly this Skill and version.
|
|
180
|
+
*
|
|
181
|
+
* Deliberately an exact value rather than a flag: `--yes` is a blanket "don't
|
|
182
|
+
* prompt me" that a wrapper script sets once and forgets, so it must not be
|
|
183
|
+
* able to carry a high-risk install with it. Typing the id and version is the
|
|
184
|
+
* acknowledgement.
|
|
185
|
+
*/
|
|
186
|
+
function riskAcknowledgementMatches(ackRisk, skillId, version) {
|
|
187
|
+
return ackRisk !== undefined && ackRisk.trim() === `${skillId}@${version}`;
|
|
188
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* skill Command - manage official Agent Skills from the CLI
|
|
3
|
+
* Issue #1237: a thin client over the Skill APIs (#1231/#1233/#1235/#1236)
|
|
4
|
+
*
|
|
5
|
+
* commandmate skill list [--json]
|
|
6
|
+
* commandmate skill info <skill-id> [--version <v>] [--json]
|
|
7
|
+
* commandmate skill plan <skill-id> --worktree <id> [--version <v>] [--json]
|
|
8
|
+
* commandmate skill install <skill-id> --worktree <id> --version <exact> [--dry-run] [--yes] [--ack-risk <id>@<version>]
|
|
9
|
+
* commandmate skill uninstall <skill-id> --worktree <id> [--dry-run] [--yes] [--json]
|
|
10
|
+
* commandmate skill status <skill-id> --worktree <id> [--json]
|
|
11
|
+
*
|
|
12
|
+
* The CLI never downloads, extracts, writes or deletes anything: it asks the
|
|
13
|
+
* server for a plan, shows it, and presents the token the server issued back to
|
|
14
|
+
* the server unchanged. It reconstructs no file list, no checksum and no path —
|
|
15
|
+
* those inputs are rejected by the API by design (#1233), and reproducing them
|
|
16
|
+
* here would create exactly the UI/CLI security drift the design forbids.
|
|
17
|
+
*
|
|
18
|
+
* `--json` prints the API response body verbatim, so the JSON contract is the
|
|
19
|
+
* API's. Every diagnostic, prompt and error goes to stderr, so a failed `--json`
|
|
20
|
+
* run leaves stdout empty rather than half-written.
|
|
21
|
+
*/
|
|
22
|
+
import { Command } from 'commander';
|
|
23
|
+
export declare function createSkillCommand(): Command;
|
|
24
|
+
//# sourceMappingURL=skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiWpC,wBAAgB,kBAAkB,IAAI,OAAO,CA+H5C"}
|