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
@@ -31,6 +31,8 @@ exports.ACTIVITIES = [
31
31
  { id: 'timer', labelKey: 'activityBar.timer', icon: lucide_react_1.Timer },
32
32
  // Issue #1015: branch-scoped ToDo list.
33
33
  { id: 'todo', labelKey: 'activityBar.todo', icon: lucide_react_1.ListTodo },
34
+ // Issue #1441: worktree-scoped Skill install/uninstall management.
35
+ { id: 'skills', labelKey: 'activityBar.skills', icon: lucide_react_1.Sparkles },
34
36
  ];
35
37
  /**
36
38
  * Set of valid ActivityId values for runtime validation.
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * Git status polling configuration
4
+ * Issue #779: git status API + GitPane Current Status (Phase 1/5)
5
+ *
6
+ * Semantic separation from file-polling-config: GitPane's Current Status
7
+ * section polls `GET /api/worktrees/[id]/git/status` on its own cadence.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.GIT_PROGRESS_POLL_INTERVAL_MS = exports.GIT_PUSH_TIMEOUT_MS = exports.GIT_PULL_TIMEOUT_MS = exports.GIT_FETCH_TIMEOUT_MS = exports.MAX_STASH_INDEX = exports.MAX_COMMIT_MESSAGE_LENGTH = exports.MAX_GIT_FILES = exports.GIT_WRITE_TIMEOUT_MS = exports.GIT_STATUS_POLL_INTERVAL_MS = void 0;
11
+ /**
12
+ * Polling interval (ms) for GitPane's Current Status section.
13
+ * Issue #779: drives `useFilePolling` in GitPane (visibilitychange-aware).
14
+ */
15
+ exports.GIT_STATUS_POLL_INTERVAL_MS = 5000;
16
+ // =============================================================================
17
+ // Issue #780: stage / unstage / commit operations
18
+ // =============================================================================
19
+ /**
20
+ * Timeout (ms) for git WRITE operations (add / restore --staged / commit) and
21
+ * for the staged-status read used by those flows. Deliberately larger than the
22
+ * 1s `GIT_COMMAND_TIMEOUT_MS` used by getGitStatus (#779) because write ops can
23
+ * run pre-commit hooks and stage large numbers of files.
24
+ */
25
+ exports.GIT_WRITE_TIMEOUT_MS = 30000;
26
+ /**
27
+ * Maximum number of file paths accepted in a single stage / unstage request.
28
+ * Requests exceeding this are rejected with HTTP 400 to bound argv size and
29
+ * per-request work.
30
+ */
31
+ exports.MAX_GIT_FILES = 1000;
32
+ /**
33
+ * Maximum length (characters) of a commit message. Messages exceeding this are
34
+ * rejected with HTTP 400.
35
+ */
36
+ exports.MAX_COMMIT_MESSAGE_LENGTH = 10000;
37
+ // =============================================================================
38
+ // Issue #782: stash + reset/revert (Phase 4/5 - Danger Zone)
39
+ // =============================================================================
40
+ /**
41
+ * Maximum accepted `index` for the stash pop/apply/drop routes (Issue #782).
42
+ * The index is validated to be `/^\d+$/` and <= this bound before it is
43
+ * embedded into the `stash@{N}` argv (DoS / absurd-index defense). Mirrors the
44
+ * MAX_GIT_FILES (#780) / MAX_BRANCH_REF_LENGTH (#781) bounding pattern.
45
+ */
46
+ exports.MAX_STASH_INDEX = 1000;
47
+ // =============================================================================
48
+ // Issue #783: network operations (Phase 5/5 - push / pull / fetch)
49
+ // =============================================================================
50
+ /**
51
+ * Timeout (ms) for `git fetch`. Larger than the 1s `GIT_COMMAND_TIMEOUT_MS`
52
+ * (status read) and the 30s `GIT_WRITE_TIMEOUT_MS` line: a fetch contacts the
53
+ * remote and may run longer than a local index write. fetch is NOT serialized
54
+ * (§6.1) — it only updates remote-tracking refs / packed-refs.
55
+ */
56
+ exports.GIT_FETCH_TIMEOUT_MS = 30000;
57
+ /**
58
+ * Timeout (ms) for `git pull`. 60s because a pull does a fetch AND a merge/rebase
59
+ * over the working tree (slower than a bare fetch). Serialized per worktree.
60
+ */
61
+ exports.GIT_PULL_TIMEOUT_MS = 60000;
62
+ /**
63
+ * Timeout (ms) for `git push`. 60s because a push uploads objects to a remote
64
+ * over the network (the slowest network op). Serialized per worktree.
65
+ */
66
+ exports.GIT_PUSH_TIMEOUT_MS = 60000;
67
+ /**
68
+ * DR1-003: This is NOT a server progress-polling interval. There is NO server
69
+ * progress endpoint; the route holds the git process until completion and the
70
+ * awaited Promise is the only true state-transition source. This constant is an
71
+ * OPTIONAL client-side elapsed-time tick (zero server round-trips) used only to
72
+ * re-render the elapsed seconds while a network op is in-flight. A plain spinner
73
+ * is sufficient, so this may go unused. The name is kept for compatibility with
74
+ * the Issue body's "progress polling" wording (its true role is documented here).
75
+ */
76
+ exports.GIT_PROGRESS_POLL_INTERVAL_MS = 1000; // optional elapsed-time tick (in-flight only; NOT server progress)
77
+ // Issue #1277: the GitPane warning/guidance strings that used to live here
78
+ // (CHECKOUT_*_WARNING / RESET_HARD_HISTORY_LOSS_WARNING /
79
+ // DANGER_ZONE_RUNNING_SESSION_WARNING / PUSH_AUTH_FAILED_GUIDANCE /
80
+ // PUSH_PROTECTED_BRANCH_WARNING) were hardcoded Japanese rendered to every
81
+ // locale. They now live in the `worktree` dictionary under `git.*` and are
82
+ // resolved with useTranslations at the render site. Do not reintroduce
83
+ // user-facing prose in this config module.
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /**
3
+ * Skill fetch/snapshot security policy (Issue #1229)
4
+ *
5
+ * Single source of truth for *where* CommandMate is allowed to fetch Skill
6
+ * documents from and *how much* it is allowed to keep on disk. Every value here
7
+ * is a hardcoded constant: none of it may be derived from environment
8
+ * variables, config files or client input, because that is exactly the SSRF
9
+ * lever this module exists to remove (OWASP A10:2021, same rule as
10
+ * `GITHUB_API_URL` in src/lib/version-checker.ts).
11
+ *
12
+ * Catalog JSON and release assets get *separate* policies: they are served by
13
+ * different origins with different media types, and a Catalog response must
14
+ * never be accepted where an artifact is expected (or vice versa).
15
+ *
16
+ * @module config/skill-security-config
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.SKILL_PLAN_SWEEP_INTERVAL_MS = exports.SKILL_SNAPSHOT_ID_PATTERN = exports.SKILL_SNAPSHOT_ID_BYTES = exports.SKILL_SNAPSHOT_MAX_COUNT = exports.SKILL_SNAPSHOT_TOTAL_QUOTA_BYTES = exports.SKILL_SNAPSHOT_TTL_MS = exports.SKILL_SNAPSHOT_FILE_MODE = exports.SKILL_SNAPSHOT_DIR_MODE = exports.SKILL_SNAPSHOT_DIRNAME = exports.SKILL_FETCH_USER_AGENT_PREFIX = exports.SKILL_CREDENTIAL_HEADERS = exports.SKILL_FETCH_TOTAL_TIMEOUT_MS = exports.SKILL_FETCH_HEADER_TIMEOUT_MS = exports.SKILL_FETCH_MAX_REDIRECTS = exports.SKILL_SOURCE_POLICIES = exports.SKILL_CATALOG_MAX_SIZE = exports.SKILL_CATALOG_FILENAME = exports.SKILL_OFFICIAL_REPOSITORY = void 0;
20
+ exports.buildSkillCatalogUrl = buildSkillCatalogUrl;
21
+ const skills_1 = require("../lib/skills");
22
+ // =============================================================================
23
+ // Official source coordinates
24
+ // =============================================================================
25
+ /** The only repository Skills may be distributed from in schema_version 1. */
26
+ exports.SKILL_OFFICIAL_REPOSITORY = 'Kewton/commandmate-skills';
27
+ /** Catalog document filename at the repository root. */
28
+ exports.SKILL_CATALOG_FILENAME = 'catalog.json';
29
+ /** Catalog JSON is served by the raw content host, pinned to the official repo. */
30
+ const CATALOG_HOSTS = [
31
+ { host: 'raw.githubusercontent.com', pathPrefix: `/${exports.SKILL_OFFICIAL_REPOSITORY}/` },
32
+ ];
33
+ /** Release asset downloads always start at the release download path. */
34
+ const ARTIFACT_ENTRY_HOSTS = [
35
+ { host: 'github.com', pathPrefix: `/${exports.SKILL_OFFICIAL_REPOSITORY}/releases/download/` },
36
+ ];
37
+ /**
38
+ * Hosts a release asset download may be redirected to.
39
+ *
40
+ * GitHub hands release assets off to a storage CDN with an opaque, signed path,
41
+ * so no path prefix can be asserted on these hops. The artifact digest check is
42
+ * what makes that acceptable: a wrong body from an allowed host still fails.
43
+ */
44
+ const ARTIFACT_REDIRECT_HOSTS = [
45
+ ...ARTIFACT_ENTRY_HOSTS,
46
+ { host: 'objects.githubusercontent.com' },
47
+ { host: 'release-assets.githubusercontent.com' },
48
+ ];
49
+ /** Maximum Catalog document size in bytes (4 MiB). */
50
+ exports.SKILL_CATALOG_MAX_SIZE = 4 * 1024 * 1024;
51
+ /**
52
+ * `raw.githubusercontent.com` serves `.json` as `text/plain`, so the Catalog
53
+ * policy has to accept it. The document is parsed as JSON regardless of the
54
+ * declared type, and validated by `validateSkillCatalog` afterwards.
55
+ */
56
+ const CATALOG_CONTENT_TYPES = ['application/json', 'text/plain'];
57
+ exports.SKILL_SOURCE_POLICIES = {
58
+ catalog: {
59
+ kind: 'catalog',
60
+ entryHosts: CATALOG_HOSTS,
61
+ redirectHosts: CATALOG_HOSTS,
62
+ accept: 'application/json',
63
+ contentTypes: CATALOG_CONTENT_TYPES,
64
+ maxBytes: exports.SKILL_CATALOG_MAX_SIZE,
65
+ },
66
+ artifact: {
67
+ kind: 'artifact',
68
+ entryHosts: ARTIFACT_ENTRY_HOSTS,
69
+ redirectHosts: ARTIFACT_REDIRECT_HOSTS,
70
+ accept: skills_1.SKILL_ARTIFACT_CONTENT_TYPE,
71
+ contentTypes: [skills_1.SKILL_ARTIFACT_CONTENT_TYPE, 'application/octet-stream'],
72
+ maxBytes: skills_1.SKILL_ARTIFACT_MAX_SIZE,
73
+ },
74
+ };
75
+ // =============================================================================
76
+ // Transport limits
77
+ // =============================================================================
78
+ /** Maximum number of redirect hops before a fetch fails closed. */
79
+ exports.SKILL_FETCH_MAX_REDIRECTS = 5;
80
+ /** Timeout for receiving response headers, in milliseconds. */
81
+ exports.SKILL_FETCH_HEADER_TIMEOUT_MS = 10_000;
82
+ /** Timeout for the whole request including body transfer, in milliseconds. */
83
+ exports.SKILL_FETCH_TOTAL_TIMEOUT_MS = 120_000;
84
+ /**
85
+ * Request headers dropped when a redirect crosses an origin.
86
+ *
87
+ * `fetch` with `redirect: 'manual'` gives us the hop, so credential forwarding
88
+ * is our responsibility: a signed CDN redirect must never carry a GitHub token.
89
+ */
90
+ exports.SKILL_CREDENTIAL_HEADERS = [
91
+ 'authorization',
92
+ 'cookie',
93
+ 'proxy-authorization',
94
+ ];
95
+ /** Value sent as `User-Agent`, matching the version-checker convention. */
96
+ exports.SKILL_FETCH_USER_AGENT_PREFIX = 'CommandMate';
97
+ // =============================================================================
98
+ // Snapshot store limits
99
+ // =============================================================================
100
+ /** Directory name of the snapshot store under the service-owned data root. */
101
+ exports.SKILL_SNAPSHOT_DIRNAME = 'skill-snapshots';
102
+ /** Snapshot directory mode: service-owned, not group/world readable. */
103
+ exports.SKILL_SNAPSHOT_DIR_MODE = 0o700;
104
+ /** Snapshot file mode: read-only for the owning service account. */
105
+ exports.SKILL_SNAPSHOT_FILE_MODE = 0o400;
106
+ /** Lifetime of an unreferenced snapshot before sweeping, in milliseconds. */
107
+ exports.SKILL_SNAPSHOT_TTL_MS = 30 * 60 * 1000;
108
+ /** Total bytes the snapshot store may hold (256 MiB). */
109
+ exports.SKILL_SNAPSHOT_TOTAL_QUOTA_BYTES = 256 * 1024 * 1024;
110
+ /** Maximum number of concurrently retained snapshots. */
111
+ exports.SKILL_SNAPSHOT_MAX_COUNT = 64;
112
+ /** Random bytes behind an opaque snapshot ID. */
113
+ exports.SKILL_SNAPSHOT_ID_BYTES = 16;
114
+ /** Opaque snapshot ID grammar: lowercase hex of {@link SKILL_SNAPSHOT_ID_BYTES}. */
115
+ exports.SKILL_SNAPSHOT_ID_PATTERN = /^[0-9a-f]{32}$/;
116
+ /**
117
+ * How often the background sweeper reclaims expired plans and snapshots.
118
+ *
119
+ * Short relative to both TTLs so an abandoned plan releases its snapshot within
120
+ * a minute of expiring, rather than waiting for the next plan to be created.
121
+ */
122
+ exports.SKILL_PLAN_SWEEP_INTERVAL_MS = 60 * 1000;
123
+ // =============================================================================
124
+ // URL construction
125
+ // =============================================================================
126
+ /**
127
+ * Build the Catalog URL for an immutable commit.
128
+ *
129
+ * Takes a resolved 40-hex commit rather than a branch so the Catalog a user
130
+ * reviewed is the Catalog that gets installed. Callers never supply a URL.
131
+ *
132
+ * @throws Error when the commit is not a resolved 40-hex SHA
133
+ */
134
+ function buildSkillCatalogUrl(commit) {
135
+ if (!skills_1.GIT_COMMIT_SHA_PATTERN.test(commit)) {
136
+ throw new Error('Skill catalog URL requires a resolved 40-hex commit SHA');
137
+ }
138
+ return `https://raw.githubusercontent.com/${exports.SKILL_OFFICIAL_REPOSITORY}/${commit}/${exports.SKILL_CATALOG_FILENAME}`;
139
+ }
@@ -27,6 +27,10 @@ const v40_timer_error_1 = require("./v40-timer-error");
27
27
  const v41_push_subscriptions_1 = require("./v41-push-subscriptions");
28
28
  const v42_push_subscription_locale_1 = require("./v42-push-subscription-locale");
29
29
  const v43_remove_cm_root_dir_ghost_repository_1 = require("./v43-remove-cm-root-dir-ghost-repository");
30
+ const v44_skill_operations_1 = require("./v44-skill-operations");
31
+ const v45_skill_installations_1 = require("./v45-skill-installations");
32
+ const v46_skill_installations_cascade_1 = require("./v46-skill-installations-cascade");
33
+ const v47_skill_installations_roots_1 = require("./v47-skill-installations-roots");
30
34
  /**
31
35
  * Complete ordered list of all migrations.
32
36
  * Used internally by the barrel file (db-migrations.ts); NOT exported from the barrel (DR2-004).
@@ -57,4 +61,8 @@ exports.migrations = [
57
61
  ...v41_push_subscriptions_1.v41_migrations,
58
62
  ...v42_push_subscription_locale_1.v42_migrations,
59
63
  ...v43_remove_cm_root_dir_ghost_repository_1.v43_migrations,
64
+ ...v44_skill_operations_1.v44_migrations,
65
+ ...v45_skill_installations_1.v45_migrations,
66
+ ...v46_skill_installations_cascade_1.v46_migrations,
67
+ ...v47_skill_installations_roots_1.v47_migrations,
60
68
  ];
@@ -17,7 +17,7 @@ const path_1 = __importDefault(require("path"));
17
17
  * Current schema version
18
18
  * Increment this when adding new migrations
19
19
  */
20
- exports.CURRENT_SCHEMA_VERSION = 43;
20
+ exports.CURRENT_SCHEMA_VERSION = 47;
21
21
  /**
22
22
  * Get current schema version from database
23
23
  */
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v44: append-only skill_operations audit log (Issue #1234).
4
+ *
5
+ * One row per audit event, not per operation: a single operationId appends a row
6
+ * when it fails and another when reconciliation converges it, so the sequence of
7
+ * events survives instead of being overwritten. Append-only is enforced in the
8
+ * database by BEFORE UPDATE/DELETE triggers rather than by convention, so a bug
9
+ * or a direct sqlite3 session cannot silently rewrite history.
10
+ *
11
+ * Source coordinates (repository/ref/resolved commit/artifact digest) are stored
12
+ * as separate columns so an install can be traced back to an immutable source
13
+ * without parsing a blob. No column holds a URL, token or machine-absolute path.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.v44_migrations = void 0;
17
+ exports.v44_migrations = [
18
+ {
19
+ version: 44,
20
+ name: 'add-skill-operations',
21
+ up: (db) => {
22
+ db.exec(`
23
+ CREATE TABLE IF NOT EXISTS skill_operations (
24
+ id TEXT PRIMARY KEY,
25
+ operation_id TEXT NOT NULL,
26
+ idempotency_key TEXT NOT NULL,
27
+ binding_hash TEXT NOT NULL,
28
+ operation TEXT NOT NULL,
29
+ state TEXT NOT NULL,
30
+ result TEXT NOT NULL,
31
+ actor_type TEXT NOT NULL,
32
+ actor_id TEXT,
33
+ worktree_id TEXT NOT NULL,
34
+ skill_id TEXT NOT NULL,
35
+ skill_version TEXT,
36
+ source_origin TEXT,
37
+ source_repository TEXT,
38
+ source_ref TEXT,
39
+ source_commit TEXT,
40
+ artifact_sha256 TEXT,
41
+ error_code TEXT,
42
+ error_message TEXT,
43
+ recorded_at INTEGER NOT NULL
44
+ );
45
+ `);
46
+ db.exec(`
47
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_operation_id
48
+ ON skill_operations(operation_id);
49
+ `);
50
+ db.exec(`
51
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_idempotency_key
52
+ ON skill_operations(idempotency_key);
53
+ `);
54
+ db.exec(`
55
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_target
56
+ ON skill_operations(worktree_id, skill_id, recorded_at);
57
+ `);
58
+ db.exec(`
59
+ CREATE TRIGGER IF NOT EXISTS skill_operations_no_update
60
+ BEFORE UPDATE ON skill_operations
61
+ BEGIN
62
+ SELECT RAISE(ABORT, 'skill_operations is append-only');
63
+ END;
64
+ `);
65
+ db.exec(`
66
+ CREATE TRIGGER IF NOT EXISTS skill_operations_no_delete
67
+ BEFORE DELETE ON skill_operations
68
+ BEGIN
69
+ SELECT RAISE(ABORT, 'skill_operations is append-only');
70
+ END;
71
+ `);
72
+ },
73
+ down: (db) => {
74
+ // Triggers first: the delete guard would otherwise be the only thing
75
+ // standing between a rollback and an ABORT on any later cleanup.
76
+ db.exec('DROP TRIGGER IF EXISTS skill_operations_no_delete;');
77
+ db.exec('DROP TRIGGER IF EXISTS skill_operations_no_update;');
78
+ db.exec('DROP TABLE IF EXISTS skill_operations;');
79
+ },
80
+ },
81
+ ];
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v45: `skill_installations` index (Issue #1235).
4
+ *
5
+ * One row per (worktree, skill): the index answers "what is installed here"
6
+ * without walking every worktree on disk. It is an *index*, not the truth — the
7
+ * receipt inside `.agents/skills/<id>/` is. That ordering is what lets a crash
8
+ * between the atomic rename and this row be reconciled forward (#1234) instead
9
+ * of being reported as a rollback that the filesystem contradicts.
10
+ *
11
+ * `receipt_sha256` is the join back to the payload: reconciliation compares it
12
+ * against the receipt actually on disk, so a row that describes a different
13
+ * install than the one present is detectable rather than merely stale.
14
+ *
15
+ * No column holds a URL, a token or a machine-absolute path; `install_root` is
16
+ * repository-relative by construction.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.v45_migrations = void 0;
20
+ exports.v45_migrations = [
21
+ {
22
+ version: 45,
23
+ name: 'add-skill-installations',
24
+ up: (db) => {
25
+ db.exec(`
26
+ CREATE TABLE IF NOT EXISTS skill_installations (
27
+ id TEXT PRIMARY KEY,
28
+ worktree_id TEXT NOT NULL,
29
+ skill_id TEXT NOT NULL,
30
+ version TEXT NOT NULL,
31
+ install_root TEXT NOT NULL,
32
+ receipt_sha256 TEXT NOT NULL,
33
+ source_repository TEXT NOT NULL,
34
+ source_ref TEXT NOT NULL,
35
+ source_commit TEXT NOT NULL,
36
+ artifact_sha256 TEXT NOT NULL,
37
+ effective_risk TEXT NOT NULL,
38
+ operation_id TEXT NOT NULL,
39
+ installed_at INTEGER NOT NULL,
40
+ updated_at INTEGER NOT NULL,
41
+ UNIQUE (worktree_id, skill_id)
42
+ );
43
+ `);
44
+ db.exec(`
45
+ CREATE INDEX IF NOT EXISTS idx_skill_installations_worktree
46
+ ON skill_installations(worktree_id);
47
+ `);
48
+ db.exec(`
49
+ CREATE INDEX IF NOT EXISTS idx_skill_installations_skill
50
+ ON skill_installations(skill_id, version);
51
+ `);
52
+ },
53
+ down: (db) => {
54
+ db.exec('DROP INDEX IF EXISTS idx_skill_installations_skill;');
55
+ db.exec('DROP INDEX IF EXISTS idx_skill_installations_worktree;');
56
+ db.exec('DROP TABLE IF EXISTS skill_installations;');
57
+ },
58
+ },
59
+ ];
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v46: `skill_installations` follows the worktree it belongs to (Issue #1430).
4
+ *
5
+ * v45 created the table with `worktree_id TEXT NOT NULL` and no foreign key, so
6
+ * deleting a worktree left its install rows behind forever (`UNIQUE(worktree_id,
7
+ * skill_id)` keeps them). Recreating a worktree at the same path mints a new
8
+ * UUID, so the UI reports "not installed" while the payload and receipt are
9
+ * still on disk: re-install fails with SKILL_INSTALL_DESTINATION_EXISTS and
10
+ * uninstall has no record to act on.
11
+ *
12
+ * The fix follows the convention every other worktree-scoped table already uses
13
+ * — `ON DELETE CASCADE` — rather than an explicit DELETE at one call site. Two
14
+ * reasons beyond consistency: `deleteWorktreesByIds` is not the only path that
15
+ * removes a worktree row, and `migrateWorktreeIdPreservingChildren` (#1151)
16
+ * discovers child tables through `PRAGMA foreign_key_list`, so the constraint is
17
+ * also what makes a same-directory branch switch *carry* installs forward
18
+ * instead of orphaning them.
19
+ *
20
+ * SQLite cannot add a constraint in place, so the table is rebuilt (same pattern
21
+ * as v33). Rows whose worktree is already gone are dropped by the copy filter,
22
+ * which is what clears the dangling rows existing databases have accumulated —
23
+ * `PRAGMA foreign_keys` cannot be toggled inside the migration transaction, so
24
+ * the filter must be in the SELECT rather than deferred to the constraint.
25
+ */
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.v46_migrations = void 0;
28
+ const COLUMNS = `
29
+ id, worktree_id, skill_id, version, install_root, receipt_sha256,
30
+ source_repository, source_ref, source_commit, artifact_sha256,
31
+ effective_risk, operation_id, installed_at, updated_at
32
+ `;
33
+ const COLUMN_DEFINITIONS = `
34
+ id TEXT PRIMARY KEY,
35
+ worktree_id TEXT NOT NULL,
36
+ skill_id TEXT NOT NULL,
37
+ version TEXT NOT NULL,
38
+ install_root TEXT NOT NULL,
39
+ receipt_sha256 TEXT NOT NULL,
40
+ source_repository TEXT NOT NULL,
41
+ source_ref TEXT NOT NULL,
42
+ source_commit TEXT NOT NULL,
43
+ artifact_sha256 TEXT NOT NULL,
44
+ effective_risk TEXT NOT NULL,
45
+ operation_id TEXT NOT NULL,
46
+ installed_at INTEGER NOT NULL,
47
+ updated_at INTEGER NOT NULL,
48
+ UNIQUE (worktree_id, skill_id)
49
+ `;
50
+ function createIndexes(db) {
51
+ db.exec(`
52
+ CREATE INDEX IF NOT EXISTS idx_skill_installations_worktree
53
+ ON skill_installations(worktree_id);
54
+ `);
55
+ db.exec(`
56
+ CREATE INDEX IF NOT EXISTS idx_skill_installations_skill
57
+ ON skill_installations(skill_id, version);
58
+ `);
59
+ }
60
+ exports.v46_migrations = [
61
+ {
62
+ version: 46,
63
+ name: 'skill-installations-worktree-cascade',
64
+ up: (db) => {
65
+ db.exec(`
66
+ CREATE TABLE skill_installations_new (
67
+ ${COLUMN_DEFINITIONS},
68
+ FOREIGN KEY (worktree_id) REFERENCES worktrees(id) ON DELETE CASCADE
69
+ );
70
+ `);
71
+ // The WHERE clause is the dangling-row sweep: rows pointing at a worktree
72
+ // that no longer exists are not carried over.
73
+ db.exec(`
74
+ INSERT INTO skill_installations_new (${COLUMNS})
75
+ SELECT ${COLUMNS} FROM skill_installations
76
+ WHERE worktree_id IN (SELECT id FROM worktrees);
77
+ `);
78
+ const dangling = db
79
+ .prepare(`SELECT COUNT(*) AS n FROM skill_installations
80
+ WHERE worktree_id NOT IN (SELECT id FROM worktrees)`)
81
+ .get();
82
+ // Dropping the table drops its indexes too; recreate them on the new one.
83
+ db.exec('DROP TABLE skill_installations;');
84
+ db.exec('ALTER TABLE skill_installations_new RENAME TO skill_installations;');
85
+ createIndexes(db);
86
+ if (dangling.n > 0) {
87
+ console.log(`Removed ${dangling.n} skill_installations row(s) with no worktree`);
88
+ }
89
+ console.log('skill_installations now cascades with its worktree');
90
+ },
91
+ down: (db) => {
92
+ db.exec(`
93
+ CREATE TABLE skill_installations_old (
94
+ ${COLUMN_DEFINITIONS}
95
+ );
96
+ `);
97
+ db.exec(`
98
+ INSERT INTO skill_installations_old (${COLUMNS})
99
+ SELECT ${COLUMNS} FROM skill_installations;
100
+ `);
101
+ db.exec('DROP TABLE skill_installations;');
102
+ db.exec('ALTER TABLE skill_installations_old RENAME TO skill_installations;');
103
+ createIndexes(db);
104
+ console.log('Rolled back skill_installations cascade (v46)');
105
+ },
106
+ },
107
+ ];
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v47: `skill_installations.install_roots` (Issue #1460).
4
+ *
5
+ * A package is now placed into more than one discovery root — `.agents/skills`
6
+ * (Codex) and `.claude/skills` (Claude) — so the index needs to record the full
7
+ * set, not just the primary `install_root`. The column is a JSON array of
8
+ * repository-relative roots, primary first.
9
+ *
10
+ * Nullable and added by `ALTER TABLE`, so it is backward compatible: rows written
11
+ * before this migration keep `install_root` and read back as the single root they
12
+ * name. The on-disk receipt remains the source of truth; this column, like the
13
+ * rest of the row, is a rebuildable index over it (#1235).
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.v47_migrations = void 0;
17
+ exports.v47_migrations = [
18
+ {
19
+ version: 47,
20
+ name: 'add-skill-installations-roots',
21
+ up: (db) => {
22
+ db.exec('ALTER TABLE skill_installations ADD COLUMN install_roots TEXT;');
23
+ },
24
+ down: (db) => {
25
+ // SQLite < 3.35 cannot DROP COLUMN; rebuild the table without it. The
26
+ // column is nullable and index-only, so no data of record is lost.
27
+ db.exec(`
28
+ CREATE TABLE skill_installations__v46 (
29
+ id TEXT PRIMARY KEY,
30
+ worktree_id TEXT NOT NULL,
31
+ skill_id TEXT NOT NULL,
32
+ version TEXT NOT NULL,
33
+ install_root TEXT NOT NULL,
34
+ receipt_sha256 TEXT NOT NULL,
35
+ source_repository TEXT NOT NULL,
36
+ source_ref TEXT NOT NULL,
37
+ source_commit TEXT NOT NULL,
38
+ artifact_sha256 TEXT NOT NULL,
39
+ effective_risk TEXT NOT NULL,
40
+ operation_id TEXT NOT NULL,
41
+ installed_at INTEGER NOT NULL,
42
+ updated_at INTEGER NOT NULL,
43
+ UNIQUE (worktree_id, skill_id)
44
+ );
45
+ `);
46
+ db.exec(`
47
+ INSERT INTO skill_installations__v46 (
48
+ id, worktree_id, skill_id, version, install_root, receipt_sha256,
49
+ source_repository, source_ref, source_commit, artifact_sha256,
50
+ effective_risk, operation_id, installed_at, updated_at
51
+ )
52
+ SELECT
53
+ id, worktree_id, skill_id, version, install_root, receipt_sha256,
54
+ source_repository, source_ref, source_commit, artifact_sha256,
55
+ effective_risk, operation_id, installed_at, updated_at
56
+ FROM skill_installations;
57
+ `);
58
+ db.exec('DROP TABLE skill_installations;');
59
+ db.exec('ALTER TABLE skill_installations__v46 RENAME TO skill_installations;');
60
+ db.exec(`
61
+ CREATE INDEX IF NOT EXISTS idx_skill_installations_worktree
62
+ ON skill_installations(worktree_id);
63
+ `);
64
+ db.exec(`
65
+ CREATE INDEX IF NOT EXISTS idx_skill_installations_skill
66
+ ON skill_installations(skill_id, version);
67
+ `);
68
+ },
69
+ },
70
+ ];
@@ -523,8 +523,11 @@ function getWorktreesByRepository(db, repositoryPath) {
523
523
  }
524
524
  /**
525
525
  * Delete all worktrees for a given repository path
526
- * Related data (chat_messages, session_states, worktree_memos, worktree_todos)
527
- * will be automatically deleted via CASCADE foreign key constraints.
526
+ * Related data is automatically deleted via ON DELETE CASCADE in every table
527
+ * holding a foreign key to worktrees(id) chat_messages, session_states,
528
+ * worktree_memos, worktree_todos, agent_instances, scheduled_executions,
529
+ * execution_logs, timer_messages and skill_installations (#1430). The live list
530
+ * is whatever `PRAGMA foreign_key_list` reports; see getWorktreeChildTables.
528
531
  *
529
532
  * @param db - Database instance
530
533
  * @param repositoryPath - Path of the repository to delete
@@ -539,8 +542,10 @@ function deleteRepositoryWorktrees(db, repositoryPath) {
539
542
  }
540
543
  /**
541
544
  * Delete worktrees by their IDs
542
- * Related data (chat_messages, session_states, worktree_memos, worktree_todos)
543
- * will be automatically deleted via CASCADE foreign key constraints.
545
+ * Related data is automatically deleted via ON DELETE CASCADE in every table
546
+ * holding a foreign key to worktrees(id) including skill_installations, whose
547
+ * rows used to survive the worktree and make a re-created worktree at the same
548
+ * path un-installable (#1430). See getWorktreeChildTables for the live list.
544
549
  *
545
550
  * @param db - Database instance
546
551
  * @param worktreeIds - Array of worktree IDs to delete