commandmate 0.11.4 → 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 +395 -303
- package/.next/app-path-routes-manifest.json +31 -22
- 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_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 +31 -22
- 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-76295bf0184b101f.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/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/0_lnKsT0DH-MnHhnV5n-l/_buildManifest.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-9a4ce51e697baac6.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/{0_lnKsT0DH-MnHhnV5n-l → D-aoE4gWfuCUN0GqEPIX3}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable no-restricted-syntax -- `description` here is JSON Schema documentation
|
|
3
|
+
published to Skill authors and validators, not UI copy: it must stay in the schema's own
|
|
4
|
+
language and is never rendered through t(). */
|
|
5
|
+
/**
|
|
6
|
+
* JSON Schema documents for the Skills distribution contract (Issue #1228)
|
|
7
|
+
*
|
|
8
|
+
* These are the publishable, language-neutral form of the contract: a Skill
|
|
9
|
+
* author or a CI job outside CommandMate can validate a manifest without
|
|
10
|
+
* running TypeScript. Inside CommandMate the authority is
|
|
11
|
+
* `src/lib/skills/schema.ts`; the parity test in
|
|
12
|
+
* `tests/unit/lib/skills/json-schema-parity.test.ts` keeps the two from
|
|
13
|
+
* drifting.
|
|
14
|
+
*
|
|
15
|
+
* @module lib/skills/json-schema
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.SKILL_RECEIPT_JSON_SCHEMA = exports.SKILL_CATALOG_JSON_SCHEMA = exports.SKILL_MANIFEST_JSON_SCHEMA = void 0;
|
|
19
|
+
const constants_1 = require("../../lib/skills/constants");
|
|
20
|
+
const types_1 = require("../../lib/cli-tools/types");
|
|
21
|
+
const semver_1 = require("../../lib/skills/semver");
|
|
22
|
+
const DRAFT = 'https://json-schema.org/draft/2020-12/schema';
|
|
23
|
+
const BASE_ID = 'https://commandmate.dev/schemas/skills';
|
|
24
|
+
const source = (pattern) => pattern.source;
|
|
25
|
+
const schemaVersionProperty = {
|
|
26
|
+
const: constants_1.SKILL_SCHEMA_VERSION,
|
|
27
|
+
description: 'Contract version. Consumers reject any other value.',
|
|
28
|
+
};
|
|
29
|
+
const providerDef = {
|
|
30
|
+
type: 'object',
|
|
31
|
+
additionalProperties: false,
|
|
32
|
+
required: ['name'],
|
|
33
|
+
properties: {
|
|
34
|
+
name: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_NAME_MAX_LENGTH },
|
|
35
|
+
url: { type: 'string', format: 'uri', pattern: '^https://' },
|
|
36
|
+
contact: { type: 'string', minLength: 1, maxLength: 200 },
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
const agentCompatibilityDef = {
|
|
40
|
+
type: 'object',
|
|
41
|
+
additionalProperties: false,
|
|
42
|
+
required: ['agent', 'support', 'evidence'],
|
|
43
|
+
properties: {
|
|
44
|
+
agent: { type: 'string', enum: [...types_1.CLI_TOOL_IDS] },
|
|
45
|
+
support: { type: 'string', enum: [...constants_1.SKILL_AGENT_SUPPORT_VALUES] },
|
|
46
|
+
evidence: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_EVIDENCE_MAX_LENGTH },
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
const compatibilityDef = {
|
|
50
|
+
type: 'object',
|
|
51
|
+
additionalProperties: false,
|
|
52
|
+
required: ['commandmate', 'agents'],
|
|
53
|
+
properties: {
|
|
54
|
+
commandmate: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
minLength: 1,
|
|
57
|
+
maxLength: 100,
|
|
58
|
+
description: 'AND-combined comparator list, e.g. ">=0.11.0 <1.0.0".',
|
|
59
|
+
},
|
|
60
|
+
agents: { type: 'array', maxItems: 20, items: { $ref: '#/$defs/agentCompatibility' } },
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
const sourceRefDef = {
|
|
64
|
+
type: 'object',
|
|
65
|
+
additionalProperties: false,
|
|
66
|
+
required: ['repository', 'ref', 'commit'],
|
|
67
|
+
properties: {
|
|
68
|
+
repository: { type: 'string', pattern: source(constants_1.REPOSITORY_SLUG_PATTERN) },
|
|
69
|
+
ref: { type: 'string', pattern: source(constants_1.GIT_REF_PATTERN) },
|
|
70
|
+
commit: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
pattern: source(constants_1.GIT_COMMIT_SHA_PATTERN),
|
|
73
|
+
description: 'Resolved commit SHA. The trusted source coordinate.',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
const sha256Property = {
|
|
78
|
+
type: 'string',
|
|
79
|
+
pattern: source(constants_1.SHA256_HEX_PATTERN),
|
|
80
|
+
description: 'Lowercase hex SHA-256.',
|
|
81
|
+
};
|
|
82
|
+
const declaredPermissionsProperty = {
|
|
83
|
+
type: 'array',
|
|
84
|
+
maxItems: constants_1.SKILL_DECLARED_PERMISSIONS.length,
|
|
85
|
+
uniqueItems: true,
|
|
86
|
+
items: { type: 'string', enum: [...constants_1.SKILL_DECLARED_PERMISSIONS] },
|
|
87
|
+
description: 'Publisher declaration only. Not an enforcement boundary.',
|
|
88
|
+
};
|
|
89
|
+
const riskProperty = { type: 'string', enum: [...constants_1.SKILL_RISK_LEVELS] };
|
|
90
|
+
const payloadPathProperty = {
|
|
91
|
+
type: 'string',
|
|
92
|
+
minLength: 1,
|
|
93
|
+
maxLength: constants_1.SKILL_PATH_MAX_LENGTH,
|
|
94
|
+
description: 'POSIX relative path inside the Skill root. No "..", no absolute path.',
|
|
95
|
+
};
|
|
96
|
+
/** JSON Schema for `commandmate.skill.yaml`. */
|
|
97
|
+
exports.SKILL_MANIFEST_JSON_SCHEMA = {
|
|
98
|
+
$schema: DRAFT,
|
|
99
|
+
$id: `${BASE_ID}/manifest-v${constants_1.SKILL_SCHEMA_VERSION}.json`,
|
|
100
|
+
title: 'CommandMate Skill manifest',
|
|
101
|
+
type: 'object',
|
|
102
|
+
additionalProperties: false,
|
|
103
|
+
required: [
|
|
104
|
+
'schema_version',
|
|
105
|
+
'id',
|
|
106
|
+
'name',
|
|
107
|
+
'version',
|
|
108
|
+
'summary',
|
|
109
|
+
'description',
|
|
110
|
+
'capabilities',
|
|
111
|
+
'expected_outcomes',
|
|
112
|
+
'provider',
|
|
113
|
+
'license',
|
|
114
|
+
'compatibility',
|
|
115
|
+
'requirements',
|
|
116
|
+
'declared_permissions',
|
|
117
|
+
'declared_risk',
|
|
118
|
+
'risk_rationale',
|
|
119
|
+
'files',
|
|
120
|
+
],
|
|
121
|
+
properties: {
|
|
122
|
+
schema_version: schemaVersionProperty,
|
|
123
|
+
id: { type: 'string', pattern: source(constants_1.SKILL_ID_PATTERN), maxLength: constants_1.SKILL_ID_MAX_LENGTH },
|
|
124
|
+
name: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_NAME_MAX_LENGTH },
|
|
125
|
+
version: { type: 'string', pattern: source(semver_1.SEMVER_2_PATTERN) },
|
|
126
|
+
summary: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_SUMMARY_MAX_LENGTH },
|
|
127
|
+
description: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_DESCRIPTION_MAX_LENGTH },
|
|
128
|
+
capabilities: {
|
|
129
|
+
type: 'array',
|
|
130
|
+
minItems: 1,
|
|
131
|
+
maxItems: constants_1.SKILL_BULLET_MAX_COUNT,
|
|
132
|
+
items: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_BULLET_MAX_LENGTH },
|
|
133
|
+
},
|
|
134
|
+
expected_outcomes: {
|
|
135
|
+
type: 'array',
|
|
136
|
+
minItems: 1,
|
|
137
|
+
maxItems: constants_1.SKILL_BULLET_MAX_COUNT,
|
|
138
|
+
items: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_BULLET_MAX_LENGTH },
|
|
139
|
+
},
|
|
140
|
+
provider: { $ref: '#/$defs/provider' },
|
|
141
|
+
license: { type: 'string', pattern: source(constants_1.SPDX_LICENSE_PATTERN) },
|
|
142
|
+
homepage: { type: 'string', pattern: '^https://' },
|
|
143
|
+
keywords: {
|
|
144
|
+
type: 'array',
|
|
145
|
+
maxItems: constants_1.SKILL_KEYWORDS_MAX_COUNT,
|
|
146
|
+
items: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_KEYWORD_MAX_LENGTH },
|
|
147
|
+
},
|
|
148
|
+
compatibility: { $ref: '#/$defs/compatibility' },
|
|
149
|
+
requirements: {
|
|
150
|
+
type: 'object',
|
|
151
|
+
additionalProperties: false,
|
|
152
|
+
required: ['commands', 'network_hosts'],
|
|
153
|
+
properties: {
|
|
154
|
+
commands: {
|
|
155
|
+
type: 'array',
|
|
156
|
+
maxItems: constants_1.SKILL_COMMANDS_MAX_COUNT,
|
|
157
|
+
items: {
|
|
158
|
+
type: 'object',
|
|
159
|
+
additionalProperties: false,
|
|
160
|
+
required: ['name'],
|
|
161
|
+
properties: {
|
|
162
|
+
name: { type: 'string', minLength: 1, maxLength: 64 },
|
|
163
|
+
version_range: { type: 'string', minLength: 1, maxLength: 100 },
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
network_hosts: {
|
|
168
|
+
type: 'array',
|
|
169
|
+
maxItems: constants_1.SKILL_NETWORK_HOSTS_MAX_COUNT,
|
|
170
|
+
items: { type: 'string', pattern: source(constants_1.NETWORK_HOST_PATTERN) },
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
declared_permissions: declaredPermissionsProperty,
|
|
175
|
+
declared_risk: riskProperty,
|
|
176
|
+
risk_rationale: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_RATIONALE_MAX_LENGTH },
|
|
177
|
+
files: {
|
|
178
|
+
type: 'array',
|
|
179
|
+
maxItems: constants_1.SKILL_FILES_MAX_COUNT,
|
|
180
|
+
description: 'Payload files excluding commandmate.skill.yaml itself and directory entries.',
|
|
181
|
+
items: {
|
|
182
|
+
type: 'object',
|
|
183
|
+
additionalProperties: false,
|
|
184
|
+
required: ['path', 'sha256', 'size', 'kind', 'executable', 'script'],
|
|
185
|
+
properties: {
|
|
186
|
+
path: payloadPathProperty,
|
|
187
|
+
sha256: sha256Property,
|
|
188
|
+
size: { type: 'integer', minimum: 0, maximum: constants_1.SKILL_FILE_MAX_SIZE },
|
|
189
|
+
kind: { type: 'string', enum: [...constants_1.SKILL_FILE_KINDS] },
|
|
190
|
+
executable: { type: 'boolean' },
|
|
191
|
+
script: { type: 'boolean' },
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
$defs: {
|
|
197
|
+
provider: providerDef,
|
|
198
|
+
compatibility: compatibilityDef,
|
|
199
|
+
agentCompatibility: agentCompatibilityDef,
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
/** JSON Schema for the Catalog document. */
|
|
203
|
+
exports.SKILL_CATALOG_JSON_SCHEMA = {
|
|
204
|
+
$schema: DRAFT,
|
|
205
|
+
$id: `${BASE_ID}/catalog-v${constants_1.SKILL_SCHEMA_VERSION}.json`,
|
|
206
|
+
title: 'CommandMate Skill catalog',
|
|
207
|
+
type: 'object',
|
|
208
|
+
additionalProperties: false,
|
|
209
|
+
required: ['schema_version', 'entries'],
|
|
210
|
+
properties: {
|
|
211
|
+
schema_version: schemaVersionProperty,
|
|
212
|
+
entries: {
|
|
213
|
+
type: 'array',
|
|
214
|
+
maxItems: constants_1.SKILL_CATALOG_ENTRIES_MAX_COUNT,
|
|
215
|
+
items: {
|
|
216
|
+
type: 'object',
|
|
217
|
+
additionalProperties: false,
|
|
218
|
+
required: ['id', 'name', 'summary', 'provider', 'license', 'latest', 'versions'],
|
|
219
|
+
properties: {
|
|
220
|
+
id: { type: 'string', pattern: source(constants_1.SKILL_ID_PATTERN), maxLength: constants_1.SKILL_ID_MAX_LENGTH },
|
|
221
|
+
name: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_NAME_MAX_LENGTH },
|
|
222
|
+
summary: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_SUMMARY_MAX_LENGTH },
|
|
223
|
+
provider: { $ref: '#/$defs/provider' },
|
|
224
|
+
license: { type: 'string', pattern: source(constants_1.SPDX_LICENSE_PATTERN) },
|
|
225
|
+
homepage: { type: 'string', pattern: '^https://' },
|
|
226
|
+
keywords: {
|
|
227
|
+
type: 'array',
|
|
228
|
+
maxItems: constants_1.SKILL_KEYWORDS_MAX_COUNT,
|
|
229
|
+
items: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_KEYWORD_MAX_LENGTH },
|
|
230
|
+
},
|
|
231
|
+
latest: { type: 'string', pattern: source(semver_1.SEMVER_2_PATTERN) },
|
|
232
|
+
versions: {
|
|
233
|
+
type: 'array',
|
|
234
|
+
minItems: 1,
|
|
235
|
+
maxItems: constants_1.SKILL_CATALOG_VERSIONS_MAX_COUNT,
|
|
236
|
+
items: {
|
|
237
|
+
type: 'object',
|
|
238
|
+
additionalProperties: false,
|
|
239
|
+
required: [
|
|
240
|
+
'version',
|
|
241
|
+
'changelog',
|
|
242
|
+
'published_at',
|
|
243
|
+
'source',
|
|
244
|
+
'artifact',
|
|
245
|
+
'compatibility',
|
|
246
|
+
'declared_risk',
|
|
247
|
+
],
|
|
248
|
+
properties: {
|
|
249
|
+
version: { type: 'string', pattern: source(semver_1.SEMVER_2_PATTERN) },
|
|
250
|
+
changelog: { type: 'string', minLength: 1, maxLength: constants_1.SKILL_CHANGELOG_MAX_LENGTH },
|
|
251
|
+
published_at: { type: 'string', pattern: source(constants_1.RFC3339_UTC_PATTERN) },
|
|
252
|
+
source: { $ref: '#/$defs/sourceRef' },
|
|
253
|
+
artifact: {
|
|
254
|
+
type: 'object',
|
|
255
|
+
additionalProperties: false,
|
|
256
|
+
required: ['asset_name', 'url', 'sha256', 'size', 'content_type', 'format'],
|
|
257
|
+
properties: {
|
|
258
|
+
asset_name: {
|
|
259
|
+
type: 'string',
|
|
260
|
+
minLength: 1,
|
|
261
|
+
maxLength: 200,
|
|
262
|
+
description: '<skill-id>-<version>.tar.gz',
|
|
263
|
+
},
|
|
264
|
+
url: { type: 'string', pattern: '^https://' },
|
|
265
|
+
sha256: sha256Property,
|
|
266
|
+
size: { type: 'integer', minimum: 1, maximum: constants_1.SKILL_ARTIFACT_MAX_SIZE },
|
|
267
|
+
content_type: { const: constants_1.SKILL_ARTIFACT_CONTENT_TYPE },
|
|
268
|
+
format: { const: constants_1.SKILL_ARTIFACT_FORMAT },
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
compatibility: { $ref: '#/$defs/compatibility' },
|
|
272
|
+
declared_risk: riskProperty,
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
$defs: {
|
|
281
|
+
provider: providerDef,
|
|
282
|
+
compatibility: compatibilityDef,
|
|
283
|
+
agentCompatibility: agentCompatibilityDef,
|
|
284
|
+
sourceRef: sourceRefDef,
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
/** JSON Schema for the deterministic install receipt. */
|
|
288
|
+
exports.SKILL_RECEIPT_JSON_SCHEMA = {
|
|
289
|
+
$schema: DRAFT,
|
|
290
|
+
$id: `${BASE_ID}/receipt-v${constants_1.SKILL_SCHEMA_VERSION}.json`,
|
|
291
|
+
title: 'CommandMate Skill install receipt',
|
|
292
|
+
type: 'object',
|
|
293
|
+
additionalProperties: false,
|
|
294
|
+
required: [
|
|
295
|
+
'schema_version',
|
|
296
|
+
'skill_id',
|
|
297
|
+
'version',
|
|
298
|
+
'install_root',
|
|
299
|
+
'source',
|
|
300
|
+
'artifact',
|
|
301
|
+
'files',
|
|
302
|
+
'declared_risk',
|
|
303
|
+
'computed_risk',
|
|
304
|
+
'effective_risk',
|
|
305
|
+
'declared_permissions',
|
|
306
|
+
'agent_compatibility',
|
|
307
|
+
],
|
|
308
|
+
properties: {
|
|
309
|
+
schema_version: schemaVersionProperty,
|
|
310
|
+
skill_id: { type: 'string', pattern: source(constants_1.SKILL_ID_PATTERN), maxLength: constants_1.SKILL_ID_MAX_LENGTH },
|
|
311
|
+
version: { type: 'string', pattern: source(semver_1.SEMVER_2_PATTERN) },
|
|
312
|
+
install_root: {
|
|
313
|
+
type: 'string',
|
|
314
|
+
description: 'Repository-relative .agents/skills/<skill-id>. Never a machine-absolute path.',
|
|
315
|
+
},
|
|
316
|
+
install_roots: {
|
|
317
|
+
type: 'array',
|
|
318
|
+
maxItems: constants_1.SKILL_INSTALL_ROOT_PREFIXES.length,
|
|
319
|
+
description: 'Optional (#1460): every repository-relative root the package was placed into, primary first. Absent for a single-root install.',
|
|
320
|
+
items: { type: 'string', maxLength: 200 },
|
|
321
|
+
},
|
|
322
|
+
source: { $ref: '#/$defs/sourceRef' },
|
|
323
|
+
artifact: {
|
|
324
|
+
type: 'object',
|
|
325
|
+
additionalProperties: false,
|
|
326
|
+
required: ['asset_name', 'sha256', 'size', 'format'],
|
|
327
|
+
description: 'No url: download URLs may be signed and are treated as secrets.',
|
|
328
|
+
properties: {
|
|
329
|
+
asset_name: { type: 'string', minLength: 1, maxLength: 200 },
|
|
330
|
+
sha256: sha256Property,
|
|
331
|
+
size: { type: 'integer', minimum: 1, maximum: constants_1.SKILL_ARTIFACT_MAX_SIZE },
|
|
332
|
+
format: { const: constants_1.SKILL_ARTIFACT_FORMAT },
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
files: {
|
|
336
|
+
type: 'array',
|
|
337
|
+
maxItems: constants_1.SKILL_FILES_MAX_COUNT,
|
|
338
|
+
description: 'Sorted by path ascending so receipts are byte-reproducible.',
|
|
339
|
+
items: {
|
|
340
|
+
type: 'object',
|
|
341
|
+
additionalProperties: false,
|
|
342
|
+
required: ['path', 'sha256', 'size', 'executable'],
|
|
343
|
+
properties: {
|
|
344
|
+
path: payloadPathProperty,
|
|
345
|
+
sha256: sha256Property,
|
|
346
|
+
size: { type: 'integer', minimum: 0, maximum: constants_1.SKILL_FILE_MAX_SIZE },
|
|
347
|
+
executable: { type: 'boolean' },
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
declared_risk: riskProperty,
|
|
352
|
+
computed_risk: riskProperty,
|
|
353
|
+
effective_risk: { ...riskProperty, description: 'max(declared_risk, computed_risk).' },
|
|
354
|
+
declared_permissions: declaredPermissionsProperty,
|
|
355
|
+
agent_compatibility: {
|
|
356
|
+
type: 'array',
|
|
357
|
+
maxItems: 20,
|
|
358
|
+
items: { $ref: '#/$defs/agentCompatibility' },
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
$defs: {
|
|
362
|
+
sourceRef: sourceRefDef,
|
|
363
|
+
agentCompatibility: agentCompatibilityDef,
|
|
364
|
+
},
|
|
365
|
+
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal Skill operation audit (Issue #1234, Phase 1)
|
|
4
|
+
*
|
|
5
|
+
* Append-only writes to `skill_operations`. Every install/uninstall lands one
|
|
6
|
+
* row per outcome, carrying the source coordinates that make the change
|
|
7
|
+
* traceable to an immutable commit and artifact digest, plus the actor and the
|
|
8
|
+
* typed result.
|
|
9
|
+
*
|
|
10
|
+
* Two properties are load-bearing:
|
|
11
|
+
* - **Append-only** is enforced by database triggers (migration v44), so a
|
|
12
|
+
* later bug cannot rewrite the log. `recordSkillOperationAudit` only inserts.
|
|
13
|
+
* - **Redaction** happens on the way in, not on the way out, so a signed URL or
|
|
14
|
+
* a home directory path never reaches the table in the first place.
|
|
15
|
+
*
|
|
16
|
+
* @module lib/skills/operation-audit
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.buildSkillOperationAuditInput = buildSkillOperationAuditInput;
|
|
20
|
+
exports.recordSkillOperationAudit = recordSkillOperationAudit;
|
|
21
|
+
exports.getSkillOperationAuditByOperationId = getSkillOperationAuditByOperationId;
|
|
22
|
+
exports.listSkillOperationAudit = listSkillOperationAudit;
|
|
23
|
+
const crypto_1 = require("crypto");
|
|
24
|
+
const operation_store_1 = require("../../lib/skills/operation-store");
|
|
25
|
+
function mapRow(row) {
|
|
26
|
+
return {
|
|
27
|
+
id: row.id,
|
|
28
|
+
operationId: row.operation_id,
|
|
29
|
+
idempotencyKey: row.idempotency_key,
|
|
30
|
+
bindingHash: row.binding_hash,
|
|
31
|
+
operation: row.operation,
|
|
32
|
+
state: row.state,
|
|
33
|
+
result: row.result,
|
|
34
|
+
actorType: row.actor_type,
|
|
35
|
+
actorId: row.actor_id,
|
|
36
|
+
worktreeId: row.worktree_id,
|
|
37
|
+
skillId: row.skill_id,
|
|
38
|
+
skillVersion: row.skill_version,
|
|
39
|
+
sourceOrigin: row.source_origin,
|
|
40
|
+
sourceRepository: row.source_repository,
|
|
41
|
+
sourceRef: row.source_ref,
|
|
42
|
+
sourceCommit: row.source_commit,
|
|
43
|
+
artifactSha256: row.artifact_sha256,
|
|
44
|
+
errorCode: row.error_code,
|
|
45
|
+
errorMessage: row.error_message,
|
|
46
|
+
recordedAt: row.recorded_at,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const SELECT_COLUMNS = `
|
|
50
|
+
id, operation_id, idempotency_key, binding_hash, operation, state, result,
|
|
51
|
+
actor_type, actor_id, worktree_id, skill_id, skill_version,
|
|
52
|
+
source_origin, source_repository, source_ref, source_commit, artifact_sha256,
|
|
53
|
+
error_code, error_message, recorded_at
|
|
54
|
+
`;
|
|
55
|
+
/**
|
|
56
|
+
* Build an audit input from a journal entry, so the two records cannot drift.
|
|
57
|
+
* The journal already holds the actor, target, source and typed error.
|
|
58
|
+
*/
|
|
59
|
+
function buildSkillOperationAuditInput(entry, result, recordedAt) {
|
|
60
|
+
return {
|
|
61
|
+
operationId: entry.operationId,
|
|
62
|
+
idempotencyKey: entry.idempotencyKey,
|
|
63
|
+
bindingHash: entry.bindingHash,
|
|
64
|
+
operation: entry.operation,
|
|
65
|
+
state: entry.state,
|
|
66
|
+
result,
|
|
67
|
+
actorType: entry.actor.type,
|
|
68
|
+
actorId: entry.actor.id,
|
|
69
|
+
worktreeId: entry.target.worktreeId,
|
|
70
|
+
skillId: entry.target.skillId,
|
|
71
|
+
skillVersion: entry.target.version,
|
|
72
|
+
sourceOrigin: entry.source?.origin ?? null,
|
|
73
|
+
sourceRepository: entry.source?.repository ?? null,
|
|
74
|
+
sourceRef: entry.source?.ref ?? null,
|
|
75
|
+
sourceCommit: entry.source?.commit ?? null,
|
|
76
|
+
artifactSha256: entry.source?.artifactSha256 ?? null,
|
|
77
|
+
errorCode: entry.error?.code ?? null,
|
|
78
|
+
errorMessage: entry.error?.message ?? null,
|
|
79
|
+
recordedAt,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/** Append one audit event. Never updates: repeated outcomes add rows. */
|
|
83
|
+
function recordSkillOperationAudit(db, input) {
|
|
84
|
+
const record = {
|
|
85
|
+
...input,
|
|
86
|
+
id: (0, crypto_1.randomUUID)(),
|
|
87
|
+
errorMessage: input.errorMessage === null ? null : (0, operation_store_1.redactSkillOperationText)(input.errorMessage),
|
|
88
|
+
recordedAt: input.recordedAt ?? Date.now(),
|
|
89
|
+
};
|
|
90
|
+
db.prepare(`INSERT INTO skill_operations (
|
|
91
|
+
id, operation_id, idempotency_key, binding_hash, operation, state, result,
|
|
92
|
+
actor_type, actor_id, worktree_id, skill_id, skill_version,
|
|
93
|
+
source_origin, source_repository, source_ref, source_commit, artifact_sha256,
|
|
94
|
+
error_code, error_message, recorded_at
|
|
95
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(record.id, record.operationId, record.idempotencyKey, record.bindingHash, record.operation, record.state, record.result, record.actorType, record.actorId, record.worktreeId, record.skillId, record.skillVersion, record.sourceOrigin, record.sourceRepository, record.sourceRef, record.sourceCommit, record.artifactSha256, record.errorCode, record.errorMessage, record.recordedAt);
|
|
96
|
+
return record;
|
|
97
|
+
}
|
|
98
|
+
/** Audit trail of one operation, oldest first. */
|
|
99
|
+
function getSkillOperationAuditByOperationId(db, operationId) {
|
|
100
|
+
const rows = db
|
|
101
|
+
.prepare(`SELECT ${SELECT_COLUMNS} FROM skill_operations
|
|
102
|
+
WHERE operation_id = ? ORDER BY recorded_at ASC, id ASC`)
|
|
103
|
+
.all(operationId);
|
|
104
|
+
return rows.map(mapRow);
|
|
105
|
+
}
|
|
106
|
+
/** Audit trail for one Skill in one worktree, newest first. */
|
|
107
|
+
function listSkillOperationAudit(db, filter) {
|
|
108
|
+
const limit = filter.limit ?? 100;
|
|
109
|
+
const rows = (filter.skillId === undefined
|
|
110
|
+
? db
|
|
111
|
+
.prepare(`SELECT ${SELECT_COLUMNS} FROM skill_operations
|
|
112
|
+
WHERE worktree_id = ? ORDER BY recorded_at DESC, id DESC LIMIT ?`)
|
|
113
|
+
.all(filter.worktreeId, limit)
|
|
114
|
+
: db
|
|
115
|
+
.prepare(`SELECT ${SELECT_COLUMNS} FROM skill_operations
|
|
116
|
+
WHERE worktree_id = ? AND skill_id = ?
|
|
117
|
+
ORDER BY recorded_at DESC, id DESC LIMIT ?`)
|
|
118
|
+
.all(filter.worktreeId, filter.skillId, limit));
|
|
119
|
+
return rows.map(mapRow);
|
|
120
|
+
}
|