commandmate 0.11.4 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +406 -314
  3. package/.next/app-path-routes-manifest.json +35 -26
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +15 -15
  6. package/.next/react-loadable-manifest.json +8 -6
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +66 -0
  9. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update-check/route.js +1 -1
  13. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/daily-summary/route.js +1 -1
  25. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  26. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  28. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  29. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  36. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  40. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  42. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/skills/[id]/route.js +1 -0
  52. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -0
  53. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -0
  54. package/.next/server/app/api/skills/route.js +1 -0
  55. package/.next/server/app/api/skills/route.js.nft.json +1 -0
  56. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
  57. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/todos/route.js +1 -1
  61. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  65. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  67. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  70. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  72. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  75. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  76. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  78. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  79. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  81. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  82. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  84. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  85. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  87. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  88. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  90. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  91. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  93. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  94. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  97. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  100. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  103. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  106. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  109. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  112. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  115. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  118. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  161. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  171. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -0
  173. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -0
  174. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -0
  175. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -0
  176. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -0
  177. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -0
  178. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -0
  179. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -0
  180. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -0
  181. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -0
  182. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -0
  183. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -0
  184. package/.next/server/app/api/worktrees/[id]/skills/route.js +23 -0
  185. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -0
  186. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -0
  187. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/chat/page.js +2 -2
  209. package/.next/server/app/chat/page.js.nft.json +1 -1
  210. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  211. package/.next/server/app/login/page.js.nft.json +1 -1
  212. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  213. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/more/page.js +2 -2
  215. package/.next/server/app/more/page.js.nft.json +1 -1
  216. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  217. package/.next/server/app/offline/page.js.nft.json +1 -1
  218. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  219. package/.next/server/app/page.js +1 -1
  220. package/.next/server/app/page.js.nft.json +1 -1
  221. package/.next/server/app/page_client-reference-manifest.js +1 -1
  222. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/repositories/page.js +1 -1
  224. package/.next/server/app/repositories/page.js.nft.json +1 -1
  225. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/review/page.js +1 -1
  227. package/.next/server/app/review/page.js.nft.json +1 -1
  228. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  229. package/.next/server/app/sessions/page.js +1 -1
  230. package/.next/server/app/sessions/page.js.nft.json +1 -1
  231. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  232. package/.next/server/app/skills/[skillId]/page.js +2 -0
  233. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -0
  234. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -0
  235. package/.next/server/app/skills/page.js +2 -0
  236. package/.next/server/app/skills/page.js.nft.json +1 -0
  237. package/.next/server/app/skills/page_client-reference-manifest.js +1 -0
  238. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  239. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  240. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  241. package/.next/server/app/worktrees/[id]/page.js +9 -9
  242. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  243. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  244. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  245. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  246. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app-paths-manifest.json +35 -26
  248. package/.next/server/chunks/1117.js +1 -1
  249. package/.next/server/chunks/120.js +1 -0
  250. package/.next/server/chunks/1808.js +1 -0
  251. package/.next/server/chunks/186.js +1 -0
  252. package/.next/server/chunks/2119.js +1 -1
  253. package/.next/server/chunks/22.js +1 -0
  254. package/.next/server/chunks/2328.js +1 -0
  255. package/.next/server/chunks/2445.js +1 -1
  256. package/.next/server/chunks/3042.js +2 -0
  257. package/.next/server/chunks/3543.js +1 -1
  258. package/.next/server/chunks/3708.js +1 -0
  259. package/.next/server/chunks/3945.js +1 -1
  260. package/.next/server/chunks/5064.js +1 -0
  261. package/.next/server/chunks/5226.js +28 -0
  262. package/.next/server/chunks/5306.js +2 -0
  263. package/.next/server/chunks/5312.js +1 -0
  264. package/.next/server/chunks/5326.js +1 -0
  265. package/.next/server/chunks/5381.js +1 -1
  266. package/.next/server/chunks/5456.js +1 -0
  267. package/.next/server/chunks/5571.js +1 -1
  268. package/.next/server/chunks/5959.js +3 -3
  269. package/.next/server/chunks/6065.js +1 -0
  270. package/.next/server/chunks/6130.js +1 -0
  271. package/.next/server/chunks/6283.js +1 -1
  272. package/.next/server/chunks/6285.js +1 -1
  273. package/.next/server/chunks/646.js +6 -6
  274. package/.next/server/chunks/{9968.js → 7587.js} +1 -1
  275. package/.next/server/chunks/8584.js +1 -0
  276. package/.next/server/chunks/8681.js +1 -1
  277. package/.next/server/chunks/8807.js +950 -804
  278. package/.next/server/chunks/9123.js +1 -1
  279. package/.next/server/middleware-build-manifest.js +1 -1
  280. package/.next/server/middleware-manifest.json +5 -5
  281. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  282. package/.next/server/pages/500.html +1 -1
  283. package/.next/server/server-reference-manifest.json +1 -1
  284. package/.next/static/ZYti9g9gICKnjtmkfvvB2/_buildManifest.js +1 -0
  285. package/.next/static/chunks/1668-7484081c45a44f89.js +1 -0
  286. package/.next/static/chunks/3418-7e47651340d940b0.js +1 -0
  287. package/.next/static/chunks/4027-0c529b322be7d4d8.js +1 -0
  288. package/.next/static/chunks/{4560-64b1461fd996127a.js → 4560-04e5aebcab96bfa1.js} +1 -1
  289. package/.next/static/chunks/6007-de36119357dcd418.js +1 -0
  290. package/.next/static/chunks/{6488-76295bf0184b101f.js → 6488-624d4b6d2d4cc236.js} +1 -1
  291. package/.next/static/chunks/{8965-872d8de254196cec.js → 6497-dc26c6c6b0b15adf.js} +1 -1
  292. package/.next/static/chunks/790-d8e6acd26e03679c.js +1 -0
  293. package/.next/static/chunks/8361.4bf062be2d2962f4.js +1 -0
  294. package/.next/static/chunks/app/api/app/update/route-56dad0523d3c4a92.js +1 -0
  295. package/.next/static/chunks/app/api/app/update-check/route-56dad0523d3c4a92.js +1 -0
  296. package/.next/static/chunks/app/api/assistant/conversation/route-56dad0523d3c4a92.js +1 -0
  297. package/.next/static/chunks/app/api/assistant/current-output/route-56dad0523d3c4a92.js +1 -0
  298. package/.next/static/chunks/app/api/assistant/messages/route-56dad0523d3c4a92.js +1 -0
  299. package/.next/static/chunks/app/api/assistant/session/route-56dad0523d3c4a92.js +1 -0
  300. package/.next/static/chunks/app/api/assistant/start/route-56dad0523d3c4a92.js +1 -0
  301. package/.next/static/chunks/app/api/assistant/terminal/route-56dad0523d3c4a92.js +1 -0
  302. package/.next/static/chunks/app/api/assistant/tools/route-56dad0523d3c4a92.js +1 -0
  303. package/.next/static/chunks/app/api/auth/login/route-56dad0523d3c4a92.js +1 -0
  304. package/.next/static/chunks/app/api/auth/logout/route-56dad0523d3c4a92.js +1 -0
  305. package/.next/static/chunks/app/api/auth/status/route-56dad0523d3c4a92.js +1 -0
  306. package/.next/static/chunks/app/api/daily-summary/route-56dad0523d3c4a92.js +1 -0
  307. package/.next/static/chunks/app/api/daily-summary/status/route-56dad0523d3c4a92.js +1 -0
  308. package/.next/static/chunks/app/api/external-apps/[id]/health/route-56dad0523d3c4a92.js +1 -0
  309. package/.next/static/chunks/app/api/external-apps/[id]/route-56dad0523d3c4a92.js +1 -0
  310. package/.next/static/chunks/app/api/external-apps/route-56dad0523d3c4a92.js +1 -0
  311. package/.next/static/chunks/app/api/hooks/claude-done/route-56dad0523d3c4a92.js +1 -0
  312. package/.next/static/chunks/app/api/ollama/models/route-56dad0523d3c4a92.js +1 -0
  313. package/.next/static/chunks/app/api/push/subscriptions/route-56dad0523d3c4a92.js +1 -0
  314. package/.next/static/chunks/app/api/push/vapid/route-56dad0523d3c4a92.js +1 -0
  315. package/.next/static/chunks/app/api/repositories/[id]/route-56dad0523d3c4a92.js +1 -0
  316. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-56dad0523d3c4a92.js +1 -0
  317. package/.next/static/chunks/app/api/repositories/[id]/todos/route-56dad0523d3c4a92.js +1 -0
  318. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-56dad0523d3c4a92.js +1 -0
  319. package/.next/static/chunks/app/api/repositories/clone/route-56dad0523d3c4a92.js +1 -0
  320. package/.next/static/chunks/app/api/repositories/excluded/route-56dad0523d3c4a92.js +1 -0
  321. package/.next/static/chunks/app/api/repositories/restore/route-56dad0523d3c4a92.js +1 -0
  322. package/.next/static/chunks/app/api/repositories/route-56dad0523d3c4a92.js +1 -0
  323. package/.next/static/chunks/app/api/repositories/scan/route-56dad0523d3c4a92.js +1 -0
  324. package/.next/static/chunks/app/api/repositories/sync/route-56dad0523d3c4a92.js +1 -0
  325. package/.next/static/chunks/app/api/sidebar/group-order/route-56dad0523d3c4a92.js +1 -0
  326. package/.next/static/chunks/app/api/skills/[id]/route-56dad0523d3c4a92.js +1 -0
  327. package/.next/static/chunks/app/api/skills/route-56dad0523d3c4a92.js +1 -0
  328. package/.next/static/chunks/app/api/slash-commands/route-56dad0523d3c4a92.js +1 -0
  329. package/.next/static/chunks/app/api/templates/[id]/route-56dad0523d3c4a92.js +1 -0
  330. package/.next/static/chunks/app/api/templates/route-56dad0523d3c4a92.js +1 -0
  331. package/.next/static/chunks/app/api/todos/route-56dad0523d3c4a92.js +1 -0
  332. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-56dad0523d3c4a92.js +1 -0
  333. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-56dad0523d3c4a92.js +1 -0
  334. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-56dad0523d3c4a92.js +1 -0
  335. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-56dad0523d3c4a92.js +1 -0
  336. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-56dad0523d3c4a92.js +1 -0
  337. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-56dad0523d3c4a92.js +1 -0
  338. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-56dad0523d3c4a92.js +1 -0
  339. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-56dad0523d3c4a92.js +1 -0
  340. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-56dad0523d3c4a92.js +1 -0
  341. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-56dad0523d3c4a92.js +1 -0
  342. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-56dad0523d3c4a92.js +1 -0
  343. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-56dad0523d3c4a92.js +1 -0
  344. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-56dad0523d3c4a92.js +1 -0
  345. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-56dad0523d3c4a92.js +1 -0
  346. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-56dad0523d3c4a92.js +1 -0
  347. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-56dad0523d3c4a92.js +1 -0
  348. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-56dad0523d3c4a92.js +1 -0
  349. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-56dad0523d3c4a92.js +1 -0
  350. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-56dad0523d3c4a92.js +1 -0
  351. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-56dad0523d3c4a92.js +1 -0
  352. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-56dad0523d3c4a92.js +1 -0
  353. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-56dad0523d3c4a92.js +1 -0
  354. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-56dad0523d3c4a92.js +1 -0
  355. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-56dad0523d3c4a92.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-56dad0523d3c4a92.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-56dad0523d3c4a92.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-56dad0523d3c4a92.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-56dad0523d3c4a92.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-56dad0523d3c4a92.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-56dad0523d3c4a92.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-56dad0523d3c4a92.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-56dad0523d3c4a92.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-56dad0523d3c4a92.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-56dad0523d3c4a92.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-56dad0523d3c4a92.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-56dad0523d3c4a92.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-56dad0523d3c4a92.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-56dad0523d3c4a92.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-56dad0523d3c4a92.js +1 -0
  371. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-56dad0523d3c4a92.js +1 -0
  372. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-56dad0523d3c4a92.js +1 -0
  373. package/.next/static/chunks/app/api/worktrees/[id]/route-56dad0523d3c4a92.js +1 -0
  374. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-56dad0523d3c4a92.js +1 -0
  375. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-56dad0523d3c4a92.js +1 -0
  376. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-56dad0523d3c4a92.js +1 -0
  377. package/.next/static/chunks/app/api/worktrees/[id]/search/route-56dad0523d3c4a92.js +1 -0
  378. package/.next/static/chunks/app/api/worktrees/[id]/send/route-56dad0523d3c4a92.js +1 -0
  379. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-56dad0523d3c4a92.js +1 -0
  380. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-56dad0523d3c4a92.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-56dad0523d3c4a92.js +1 -0
  382. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-56dad0523d3c4a92.js +1 -0
  383. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-56dad0523d3c4a92.js +1 -0
  384. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-56dad0523d3c4a92.js +1 -0
  385. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-56dad0523d3c4a92.js +1 -0
  386. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-56dad0523d3c4a92.js +1 -0
  387. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-56dad0523d3c4a92.js +1 -0
  388. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-56dad0523d3c4a92.js +1 -0
  389. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-56dad0523d3c4a92.js +1 -0
  390. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-56dad0523d3c4a92.js +1 -0
  391. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-56dad0523d3c4a92.js +1 -0
  392. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-56dad0523d3c4a92.js +1 -0
  393. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-56dad0523d3c4a92.js +1 -0
  394. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-56dad0523d3c4a92.js +1 -0
  395. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-56dad0523d3c4a92.js +1 -0
  396. package/.next/static/chunks/app/api/worktrees/route-56dad0523d3c4a92.js +1 -0
  397. package/.next/static/chunks/app/chat/{page-9ed2ffd98eb4ae18.js → page-9cf4ba62e21d9074.js} +1 -1
  398. package/.next/static/chunks/app/manifest.webmanifest/route-56dad0523d3c4a92.js +1 -0
  399. package/.next/static/chunks/app/more/{page-a496425bba427b48.js → page-082d4ae496f9a36e.js} +1 -1
  400. package/.next/static/chunks/app/{page-15bfd76bcf65842d.js → page-af457ca5876ed616.js} +1 -1
  401. package/.next/static/chunks/app/proxy/[...path]/route-56dad0523d3c4a92.js +1 -0
  402. package/.next/static/chunks/app/repositories/{page-d214522ab8792ce7.js → page-75f0d70452c6b6c0.js} +1 -1
  403. package/.next/static/chunks/app/review/{page-1dadf0b5d7129598.js → page-f431d630097c2e85.js} +1 -1
  404. package/.next/static/chunks/app/sessions/{page-96f007d986c5f327.js → page-20f07a99db64d2ca.js} +1 -1
  405. package/.next/static/chunks/app/skills/[skillId]/page-68ed5e9186efe56d.js +1 -0
  406. package/.next/static/chunks/app/skills/page-46242c428ee8bccf.js +1 -0
  407. package/.next/static/chunks/app/worktrees/[id]/page-7dd929bfc978742e.js +1 -0
  408. package/.next/static/chunks/app/worktrees/[id]/terminal/page-a75fe180a7233b2b.js +1 -0
  409. package/.next/static/chunks/webpack-0f9275e279c058eb.js +1 -0
  410. package/.next/static/css/b4bdb1f3457fe9a7.css +1 -0
  411. package/.next/trace +11 -10
  412. package/.next/types/app/api/skills/[id]/route.ts +347 -0
  413. package/.next/types/app/api/skills/route.ts +347 -0
  414. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/install/route.ts +347 -0
  415. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/plan/route.ts +347 -0
  416. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.ts +347 -0
  417. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.ts +347 -0
  418. package/.next/types/app/api/worktrees/[id]/skills/route.ts +347 -0
  419. package/.next/types/app/skills/[skillId]/page.ts +84 -0
  420. package/.next/types/app/skills/page.ts +84 -0
  421. package/.next/types/routes.d.ts +11 -2
  422. package/.next/types/validator.ts +81 -0
  423. package/dist/cli/commands/skill-format.d.ts +28 -0
  424. package/dist/cli/commands/skill-format.d.ts.map +1 -0
  425. package/dist/cli/commands/skill-format.js +163 -0
  426. package/dist/cli/commands/skill-guards.d.ts +53 -0
  427. package/dist/cli/commands/skill-guards.d.ts.map +1 -0
  428. package/dist/cli/commands/skill-guards.js +188 -0
  429. package/dist/cli/commands/skill.d.ts +24 -0
  430. package/dist/cli/commands/skill.d.ts.map +1 -0
  431. package/dist/cli/commands/skill.js +365 -0
  432. package/dist/cli/docs/agent-operations.d.ts +1 -1
  433. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  434. package/dist/cli/docs/agent-operations.js +36 -0
  435. package/dist/cli/program.d.ts.map +1 -1
  436. package/dist/cli/program.js +11 -0
  437. package/dist/cli/types/api-responses.d.ts +215 -0
  438. package/dist/cli/types/api-responses.d.ts.map +1 -1
  439. package/dist/cli/types/index.d.ts +60 -0
  440. package/dist/cli/types/index.d.ts.map +1 -1
  441. package/dist/cli/types/index.js +23 -1
  442. package/dist/cli/utils/api-client.d.ts +19 -1
  443. package/dist/cli/utils/api-client.d.ts.map +1 -1
  444. package/dist/cli/utils/api-client.js +41 -4
  445. package/dist/server/server.js +57 -0
  446. package/dist/server/src/config/activity-bar-config.js +2 -0
  447. package/dist/server/src/config/git-status-config.js +83 -0
  448. package/dist/server/src/config/skill-security-config.js +139 -0
  449. package/dist/server/src/lib/cli-tools/antigravity.js +8 -13
  450. package/dist/server/src/lib/cli-tools/codex.js +8 -14
  451. package/dist/server/src/lib/cli-tools/copilot.js +12 -13
  452. package/dist/server/src/lib/cli-tools/gemini.js +8 -13
  453. package/dist/server/src/lib/cli-tools/opencode.js +8 -13
  454. package/dist/server/src/lib/cli-tools/submit-verified-sender.js +174 -0
  455. package/dist/server/src/lib/cli-tools/vibe-local.js +12 -17
  456. package/dist/server/src/lib/db/migrations/index.js +8 -0
  457. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  458. package/dist/server/src/lib/db/migrations/v44-skill-operations.js +81 -0
  459. package/dist/server/src/lib/db/migrations/v45-skill-installations.js +59 -0
  460. package/dist/server/src/lib/db/migrations/v46-skill-installations-cascade.js +107 -0
  461. package/dist/server/src/lib/db/migrations/v47-skill-installations-roots.js +70 -0
  462. package/dist/server/src/lib/db/worktree-db.js +9 -4
  463. package/dist/server/src/lib/git/git-errors.js +336 -0
  464. package/dist/server/src/lib/git/git-exec.js +285 -0
  465. package/dist/server/src/lib/session-key-sender.js +11 -9
  466. package/dist/server/src/lib/skills/compatibility.js +194 -0
  467. package/dist/server/src/lib/skills/constants.js +252 -0
  468. package/dist/server/src/lib/skills/errors.js +82 -0
  469. package/dist/server/src/lib/skills/index.js +91 -0
  470. package/dist/server/src/lib/skills/install-apply.js +670 -0
  471. package/dist/server/src/lib/skills/install-plan.js +582 -0
  472. package/dist/server/src/lib/skills/installed-state.js +127 -0
  473. package/dist/server/src/lib/skills/integrity.js +225 -0
  474. package/dist/server/src/lib/skills/json-schema.js +365 -0
  475. package/dist/server/src/lib/skills/operation-audit.js +120 -0
  476. package/dist/server/src/lib/skills/operation-journal.js +286 -0
  477. package/dist/server/src/lib/skills/operation-lock.js +339 -0
  478. package/dist/server/src/lib/skills/operation-reconciler.js +107 -0
  479. package/dist/server/src/lib/skills/operation-store.js +153 -0
  480. package/dist/server/src/lib/skills/package-reader.js +495 -0
  481. package/dist/server/src/lib/skills/package-validator.js +451 -0
  482. package/dist/server/src/lib/skills/preview-diff.js +627 -0
  483. package/dist/server/src/lib/skills/safe-yaml.js +593 -0
  484. package/dist/server/src/lib/skills/schema.js +1248 -0
  485. package/dist/server/src/lib/skills/semver.js +193 -0
  486. package/dist/server/src/lib/skills/snapshot-store.js +334 -0
  487. package/dist/server/src/lib/skills/startup-reconcile.js +138 -0
  488. package/dist/server/src/lib/skills/uninstall-apply.js +495 -0
  489. package/dist/server/src/lib/skills/uninstall-plan.js +479 -0
  490. package/dist/server/src/types/skills.js +17 -0
  491. package/package.json +1 -1
  492. package/.next/server/chunks/129.js +0 -1
  493. package/.next/server/chunks/2478.js +0 -1
  494. package/.next/server/chunks/9886.js +0 -1
  495. package/.next/static/0_lnKsT0DH-MnHhnV5n-l/_buildManifest.js +0 -1
  496. package/.next/static/chunks/3165-87bf884f7f3d15cf.js +0 -1
  497. package/.next/static/chunks/6416.6756b7ad06dd96f7.js +0 -1
  498. package/.next/static/chunks/8676.57260a06f6554e7e.js +0 -1
  499. package/.next/static/chunks/app/api/app/update/route-7536041a7a89616d.js +0 -1
  500. package/.next/static/chunks/app/api/app/update-check/route-7536041a7a89616d.js +0 -1
  501. package/.next/static/chunks/app/api/assistant/conversation/route-7536041a7a89616d.js +0 -1
  502. package/.next/static/chunks/app/api/assistant/current-output/route-7536041a7a89616d.js +0 -1
  503. package/.next/static/chunks/app/api/assistant/messages/route-7536041a7a89616d.js +0 -1
  504. package/.next/static/chunks/app/api/assistant/session/route-7536041a7a89616d.js +0 -1
  505. package/.next/static/chunks/app/api/assistant/start/route-7536041a7a89616d.js +0 -1
  506. package/.next/static/chunks/app/api/assistant/terminal/route-7536041a7a89616d.js +0 -1
  507. package/.next/static/chunks/app/api/assistant/tools/route-7536041a7a89616d.js +0 -1
  508. package/.next/static/chunks/app/api/auth/login/route-7536041a7a89616d.js +0 -1
  509. package/.next/static/chunks/app/api/auth/logout/route-7536041a7a89616d.js +0 -1
  510. package/.next/static/chunks/app/api/auth/status/route-7536041a7a89616d.js +0 -1
  511. package/.next/static/chunks/app/api/daily-summary/route-7536041a7a89616d.js +0 -1
  512. package/.next/static/chunks/app/api/daily-summary/status/route-7536041a7a89616d.js +0 -1
  513. package/.next/static/chunks/app/api/external-apps/[id]/health/route-7536041a7a89616d.js +0 -1
  514. package/.next/static/chunks/app/api/external-apps/[id]/route-7536041a7a89616d.js +0 -1
  515. package/.next/static/chunks/app/api/external-apps/route-7536041a7a89616d.js +0 -1
  516. package/.next/static/chunks/app/api/hooks/claude-done/route-7536041a7a89616d.js +0 -1
  517. package/.next/static/chunks/app/api/ollama/models/route-7536041a7a89616d.js +0 -1
  518. package/.next/static/chunks/app/api/push/subscriptions/route-7536041a7a89616d.js +0 -1
  519. package/.next/static/chunks/app/api/push/vapid/route-7536041a7a89616d.js +0 -1
  520. package/.next/static/chunks/app/api/repositories/[id]/route-7536041a7a89616d.js +0 -1
  521. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-7536041a7a89616d.js +0 -1
  522. package/.next/static/chunks/app/api/repositories/[id]/todos/route-7536041a7a89616d.js +0 -1
  523. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-7536041a7a89616d.js +0 -1
  524. package/.next/static/chunks/app/api/repositories/clone/route-7536041a7a89616d.js +0 -1
  525. package/.next/static/chunks/app/api/repositories/excluded/route-7536041a7a89616d.js +0 -1
  526. package/.next/static/chunks/app/api/repositories/restore/route-7536041a7a89616d.js +0 -1
  527. package/.next/static/chunks/app/api/repositories/route-7536041a7a89616d.js +0 -1
  528. package/.next/static/chunks/app/api/repositories/scan/route-7536041a7a89616d.js +0 -1
  529. package/.next/static/chunks/app/api/repositories/sync/route-7536041a7a89616d.js +0 -1
  530. package/.next/static/chunks/app/api/sidebar/group-order/route-7536041a7a89616d.js +0 -1
  531. package/.next/static/chunks/app/api/slash-commands/route-7536041a7a89616d.js +0 -1
  532. package/.next/static/chunks/app/api/templates/[id]/route-7536041a7a89616d.js +0 -1
  533. package/.next/static/chunks/app/api/templates/route-7536041a7a89616d.js +0 -1
  534. package/.next/static/chunks/app/api/todos/route-7536041a7a89616d.js +0 -1
  535. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-7536041a7a89616d.js +0 -1
  536. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-7536041a7a89616d.js +0 -1
  537. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-7536041a7a89616d.js +0 -1
  538. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-7536041a7a89616d.js +0 -1
  539. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-7536041a7a89616d.js +0 -1
  540. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-7536041a7a89616d.js +0 -1
  541. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-7536041a7a89616d.js +0 -1
  542. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-7536041a7a89616d.js +0 -1
  543. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-7536041a7a89616d.js +0 -1
  544. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-7536041a7a89616d.js +0 -1
  545. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-7536041a7a89616d.js +0 -1
  546. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-7536041a7a89616d.js +0 -1
  547. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-7536041a7a89616d.js +0 -1
  548. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-7536041a7a89616d.js +0 -1
  549. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-7536041a7a89616d.js +0 -1
  550. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-7536041a7a89616d.js +0 -1
  551. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-7536041a7a89616d.js +0 -1
  552. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-7536041a7a89616d.js +0 -1
  553. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-7536041a7a89616d.js +0 -1
  554. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-7536041a7a89616d.js +0 -1
  555. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-7536041a7a89616d.js +0 -1
  556. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-7536041a7a89616d.js +0 -1
  557. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-7536041a7a89616d.js +0 -1
  558. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-7536041a7a89616d.js +0 -1
  559. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-7536041a7a89616d.js +0 -1
  560. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-7536041a7a89616d.js +0 -1
  561. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-7536041a7a89616d.js +0 -1
  562. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-7536041a7a89616d.js +0 -1
  563. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-7536041a7a89616d.js +0 -1
  564. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-7536041a7a89616d.js +0 -1
  565. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-7536041a7a89616d.js +0 -1
  566. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-7536041a7a89616d.js +0 -1
  567. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-7536041a7a89616d.js +0 -1
  568. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-7536041a7a89616d.js +0 -1
  569. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-7536041a7a89616d.js +0 -1
  570. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-7536041a7a89616d.js +0 -1
  571. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-7536041a7a89616d.js +0 -1
  572. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-7536041a7a89616d.js +0 -1
  573. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-7536041a7a89616d.js +0 -1
  574. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-7536041a7a89616d.js +0 -1
  575. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-7536041a7a89616d.js +0 -1
  576. package/.next/static/chunks/app/api/worktrees/[id]/route-7536041a7a89616d.js +0 -1
  577. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-7536041a7a89616d.js +0 -1
  578. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-7536041a7a89616d.js +0 -1
  579. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-7536041a7a89616d.js +0 -1
  580. package/.next/static/chunks/app/api/worktrees/[id]/search/route-7536041a7a89616d.js +0 -1
  581. package/.next/static/chunks/app/api/worktrees/[id]/send/route-7536041a7a89616d.js +0 -1
  582. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-7536041a7a89616d.js +0 -1
  583. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-7536041a7a89616d.js +0 -1
  584. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-7536041a7a89616d.js +0 -1
  585. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-7536041a7a89616d.js +0 -1
  586. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-7536041a7a89616d.js +0 -1
  587. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-7536041a7a89616d.js +0 -1
  588. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-7536041a7a89616d.js +0 -1
  589. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-7536041a7a89616d.js +0 -1
  590. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-7536041a7a89616d.js +0 -1
  591. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-7536041a7a89616d.js +0 -1
  592. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-7536041a7a89616d.js +0 -1
  593. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-7536041a7a89616d.js +0 -1
  594. package/.next/static/chunks/app/api/worktrees/route-7536041a7a89616d.js +0 -1
  595. package/.next/static/chunks/app/manifest.webmanifest/route-7536041a7a89616d.js +0 -1
  596. package/.next/static/chunks/app/proxy/[...path]/route-7536041a7a89616d.js +0 -1
  597. package/.next/static/chunks/app/worktrees/[id]/page-9a4ce51e697baac6.js +0 -1
  598. package/.next/static/chunks/app/worktrees/[id]/terminal/page-ed4590b024edd8d6.js +0 -1
  599. package/.next/static/chunks/webpack-2e3739a831868daa.js +0 -1
  600. package/.next/static/css/d7e2e8d1b8d69d36.css +0 -1
  601. package/dist/server/src/lib/pasted-text-helper.js +0 -58
  602. /package/.next/static/{0_lnKsT0DH-MnHhnV5n-l → ZYti9g9gICKnjtmkfvvB2}/_ssgManifest.js +0 -0
@@ -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"}