commandmate 0.11.3 → 0.12.0

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