commandmate 0.15.0 → 0.16.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 (537) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +366 -321
  3. package/.next/app-path-routes-manifest.json +31 -26
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/react-loadable-manifest.json +11 -11
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +15 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update-check/route.js +1 -1
  12. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/route.js +1 -1
  24. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  27. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  28. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/fs/recent-paths/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.js +1 -1
  45. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/repositories/clone/route.js +1 -1
  47. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/skills/[id]/route.js +1 -1
  56. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/skills/installations/route.js +23 -0
  58. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -0
  59. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -0
  60. package/.next/server/app/api/skills/operations/route.js +13 -0
  61. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -0
  62. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -0
  63. package/.next/server/app/api/skills/reindex/route.js +23 -0
  64. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -0
  65. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -0
  66. package/.next/server/app/api/skills/route.js +1 -1
  67. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/todos/route.js +1 -1
  72. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  76. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  78. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  81. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  83. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  86. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  87. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  89. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  90. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  93. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  96. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  99. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  102. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  105. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  108. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  111. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  114. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  117. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  172. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +18 -0
  184. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -0
  185. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -0
  186. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  221. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  222. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/more/page.js +1 -1
  224. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  225. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/page_client-reference-manifest.js +1 -1
  227. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  229. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  230. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  231. package/.next/server/app/skills/[skillId]/page.js +1 -1
  232. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  233. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  234. package/.next/server/app/skills/installed/page.js +2 -0
  235. package/.next/server/app/skills/installed/page.js.nft.json +1 -0
  236. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -0
  237. package/.next/server/app/skills/page.js +2 -2
  238. package/.next/server/app/skills/page.js.nft.json +1 -1
  239. package/.next/server/app/skills/page_client-reference-manifest.js +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 +3 -3
  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_client-reference-manifest.js +1 -1
  245. package/.next/server/app-paths-manifest.json +31 -26
  246. package/.next/server/chunks/1117.js +1 -1
  247. package/.next/server/chunks/1185.js +1 -0
  248. package/.next/server/chunks/1239.js +1 -0
  249. package/.next/server/chunks/22.js +1 -1
  250. package/.next/server/chunks/2328.js +1 -1
  251. package/.next/server/chunks/2710.js +2 -0
  252. package/.next/server/chunks/28.js +35 -0
  253. package/.next/server/chunks/3042.js +1 -2
  254. package/.next/server/chunks/4440.js +2 -0
  255. package/.next/server/chunks/4548.js +1 -0
  256. package/.next/server/chunks/5064.js +1 -1
  257. package/.next/server/chunks/5381.js +1 -1
  258. package/.next/server/chunks/5456.js +1 -1
  259. package/.next/server/chunks/5737.js +1 -0
  260. package/.next/server/chunks/5793.js +1 -0
  261. package/.next/server/chunks/5959.js +2 -2
  262. package/.next/server/chunks/6130.js +1 -1
  263. package/.next/server/chunks/8681.js +1 -1
  264. package/.next/server/chunks/8807.js +66 -3
  265. package/.next/server/chunks/9051.js +1 -0
  266. package/.next/server/middleware-build-manifest.js +1 -1
  267. package/.next/server/middleware-manifest.json +5 -5
  268. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  269. package/.next/server/pages/500.html +1 -1
  270. package/.next/server/server-reference-manifest.json +1 -1
  271. package/.next/static/AKqbAyuzbFfg05qpbCI_K/_buildManifest.js +1 -0
  272. package/.next/static/chunks/2751-7fabd91275b14ca3.js +1 -0
  273. package/.next/static/chunks/{4459.03172449db395039.js → 4459.a94b52985a76509a.js} +1 -1
  274. package/.next/static/chunks/{6488-93870a55f4a3e3cd.js → 6488-c2a968ec806975c2.js} +1 -1
  275. package/.next/static/chunks/{7485.43871aedf3dbb980.js → 7485.442b21101fca7257.js} +1 -1
  276. package/.next/static/chunks/8562-6e2ab32452f4fa5b.js +1 -0
  277. package/.next/static/chunks/app/api/app/update/route-55e398bd20e2d7a9.js +1 -0
  278. package/.next/static/chunks/app/api/app/update-check/route-55e398bd20e2d7a9.js +1 -0
  279. package/.next/static/chunks/app/api/assistant/conversation/route-55e398bd20e2d7a9.js +1 -0
  280. package/.next/static/chunks/app/api/assistant/current-output/route-55e398bd20e2d7a9.js +1 -0
  281. package/.next/static/chunks/app/api/assistant/messages/route-55e398bd20e2d7a9.js +1 -0
  282. package/.next/static/chunks/app/api/assistant/session/route-55e398bd20e2d7a9.js +1 -0
  283. package/.next/static/chunks/app/api/assistant/start/route-55e398bd20e2d7a9.js +1 -0
  284. package/.next/static/chunks/app/api/assistant/terminal/route-55e398bd20e2d7a9.js +1 -0
  285. package/.next/static/chunks/app/api/assistant/tools/route-55e398bd20e2d7a9.js +1 -0
  286. package/.next/static/chunks/app/api/auth/login/route-55e398bd20e2d7a9.js +1 -0
  287. package/.next/static/chunks/app/api/auth/logout/route-55e398bd20e2d7a9.js +1 -0
  288. package/.next/static/chunks/app/api/auth/status/route-55e398bd20e2d7a9.js +1 -0
  289. package/.next/static/chunks/app/api/daily-summary/route-55e398bd20e2d7a9.js +1 -0
  290. package/.next/static/chunks/app/api/daily-summary/status/route-55e398bd20e2d7a9.js +1 -0
  291. package/.next/static/chunks/app/api/external-apps/[id]/health/route-55e398bd20e2d7a9.js +1 -0
  292. package/.next/static/chunks/app/api/external-apps/[id]/route-55e398bd20e2d7a9.js +1 -0
  293. package/.next/static/chunks/app/api/external-apps/route-55e398bd20e2d7a9.js +1 -0
  294. package/.next/static/chunks/app/api/fs/browse/route-55e398bd20e2d7a9.js +1 -0
  295. package/.next/static/chunks/app/api/fs/recent-paths/route-55e398bd20e2d7a9.js +1 -0
  296. package/.next/static/chunks/app/api/hooks/claude-done/route-55e398bd20e2d7a9.js +1 -0
  297. package/.next/static/chunks/app/api/ollama/models/route-55e398bd20e2d7a9.js +1 -0
  298. package/.next/static/chunks/app/api/push/subscriptions/route-55e398bd20e2d7a9.js +1 -0
  299. package/.next/static/chunks/app/api/push/vapid/route-55e398bd20e2d7a9.js +1 -0
  300. package/.next/static/chunks/app/api/repositories/[id]/route-55e398bd20e2d7a9.js +1 -0
  301. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-55e398bd20e2d7a9.js +1 -0
  302. package/.next/static/chunks/app/api/repositories/[id]/todos/route-55e398bd20e2d7a9.js +1 -0
  303. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-55e398bd20e2d7a9.js +1 -0
  304. package/.next/static/chunks/app/api/repositories/clone/route-55e398bd20e2d7a9.js +1 -0
  305. package/.next/static/chunks/app/api/repositories/excluded/route-55e398bd20e2d7a9.js +1 -0
  306. package/.next/static/chunks/app/api/repositories/restore/route-55e398bd20e2d7a9.js +1 -0
  307. package/.next/static/chunks/app/api/repositories/route-55e398bd20e2d7a9.js +1 -0
  308. package/.next/static/chunks/app/api/repositories/scan/route-55e398bd20e2d7a9.js +1 -0
  309. package/.next/static/chunks/app/api/repositories/sync/route-55e398bd20e2d7a9.js +1 -0
  310. package/.next/static/chunks/app/api/repositories/validate-path/route-55e398bd20e2d7a9.js +1 -0
  311. package/.next/static/chunks/app/api/sidebar/group-order/route-55e398bd20e2d7a9.js +1 -0
  312. package/.next/static/chunks/app/api/skills/[id]/route-55e398bd20e2d7a9.js +1 -0
  313. package/.next/static/chunks/app/api/skills/installations/route-55e398bd20e2d7a9.js +1 -0
  314. package/.next/static/chunks/app/api/skills/operations/route-55e398bd20e2d7a9.js +1 -0
  315. package/.next/static/chunks/app/api/skills/reindex/route-55e398bd20e2d7a9.js +1 -0
  316. package/.next/static/chunks/app/api/skills/route-55e398bd20e2d7a9.js +1 -0
  317. package/.next/static/chunks/app/api/slash-commands/route-55e398bd20e2d7a9.js +1 -0
  318. package/.next/static/chunks/app/api/templates/[id]/route-55e398bd20e2d7a9.js +1 -0
  319. package/.next/static/chunks/app/api/templates/route-55e398bd20e2d7a9.js +1 -0
  320. package/.next/static/chunks/app/api/todos/route-55e398bd20e2d7a9.js +1 -0
  321. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-55e398bd20e2d7a9.js +1 -0
  322. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-55e398bd20e2d7a9.js +1 -0
  323. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-55e398bd20e2d7a9.js +1 -0
  324. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-55e398bd20e2d7a9.js +1 -0
  325. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-55e398bd20e2d7a9.js +1 -0
  326. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-55e398bd20e2d7a9.js +1 -0
  327. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-55e398bd20e2d7a9.js +1 -0
  328. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-55e398bd20e2d7a9.js +1 -0
  329. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-55e398bd20e2d7a9.js +1 -0
  330. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-55e398bd20e2d7a9.js +1 -0
  331. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-55e398bd20e2d7a9.js +1 -0
  332. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-55e398bd20e2d7a9.js +1 -0
  333. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-55e398bd20e2d7a9.js +1 -0
  334. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-55e398bd20e2d7a9.js +1 -0
  335. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-55e398bd20e2d7a9.js +1 -0
  336. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-55e398bd20e2d7a9.js +1 -0
  337. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-55e398bd20e2d7a9.js +1 -0
  338. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-55e398bd20e2d7a9.js +1 -0
  339. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-55e398bd20e2d7a9.js +1 -0
  340. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-55e398bd20e2d7a9.js +1 -0
  341. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-55e398bd20e2d7a9.js +1 -0
  342. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-55e398bd20e2d7a9.js +1 -0
  343. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-55e398bd20e2d7a9.js +1 -0
  344. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-55e398bd20e2d7a9.js +1 -0
  345. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-55e398bd20e2d7a9.js +1 -0
  346. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-55e398bd20e2d7a9.js +1 -0
  347. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-55e398bd20e2d7a9.js +1 -0
  348. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-55e398bd20e2d7a9.js +1 -0
  349. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-55e398bd20e2d7a9.js +1 -0
  350. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-55e398bd20e2d7a9.js +1 -0
  351. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-55e398bd20e2d7a9.js +1 -0
  352. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-55e398bd20e2d7a9.js +1 -0
  353. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-55e398bd20e2d7a9.js +1 -0
  354. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-55e398bd20e2d7a9.js +1 -0
  355. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-55e398bd20e2d7a9.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-55e398bd20e2d7a9.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-55e398bd20e2d7a9.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-55e398bd20e2d7a9.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-55e398bd20e2d7a9.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-55e398bd20e2d7a9.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-55e398bd20e2d7a9.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/route-55e398bd20e2d7a9.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-55e398bd20e2d7a9.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-55e398bd20e2d7a9.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-55e398bd20e2d7a9.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/search/route-55e398bd20e2d7a9.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/send/route-55e398bd20e2d7a9.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-55e398bd20e2d7a9.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-55e398bd20e2d7a9.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-55e398bd20e2d7a9.js +1 -0
  371. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-55e398bd20e2d7a9.js +1 -0
  372. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-55e398bd20e2d7a9.js +1 -0
  373. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-55e398bd20e2d7a9.js +1 -0
  374. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-55e398bd20e2d7a9.js +1 -0
  375. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-55e398bd20e2d7a9.js +1 -0
  376. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-55e398bd20e2d7a9.js +1 -0
  377. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-55e398bd20e2d7a9.js +1 -0
  378. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-55e398bd20e2d7a9.js +1 -0
  379. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-55e398bd20e2d7a9.js +1 -0
  380. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-55e398bd20e2d7a9.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-55e398bd20e2d7a9.js +1 -0
  382. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-55e398bd20e2d7a9.js +1 -0
  383. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-55e398bd20e2d7a9.js +1 -0
  384. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-55e398bd20e2d7a9.js +1 -0
  385. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-55e398bd20e2d7a9.js +1 -0
  386. package/.next/static/chunks/app/api/worktrees/route-55e398bd20e2d7a9.js +1 -0
  387. package/.next/static/chunks/app/manifest.webmanifest/route-55e398bd20e2d7a9.js +1 -0
  388. package/.next/static/chunks/app/more/{page-082d4ae496f9a36e.js → page-1619018cac999bbc.js} +1 -1
  389. package/.next/static/chunks/app/proxy/[...path]/route-55e398bd20e2d7a9.js +1 -0
  390. package/.next/static/chunks/app/skills/[skillId]/page-6008b904225ebb25.js +1 -0
  391. package/.next/static/chunks/app/skills/installed/page-6641f95e6a6e5f9d.js +1 -0
  392. package/.next/static/chunks/app/skills/page-184f8e23e31a3667.js +1 -0
  393. package/.next/static/chunks/app/worktrees/[id]/{page-6da38f0a06dfd9db.js → page-59a63a2c013ec1eb.js} +1 -1
  394. package/.next/static/chunks/{webpack-6b35d37d50302d27.js → webpack-180bebdee221b6f4.js} +1 -1
  395. package/.next/static/css/{5127edd9aa8f3b49.css → d3453a6876553d32.css} +1 -1
  396. package/.next/trace +11 -11
  397. package/.next/types/app/api/skills/installations/route.ts +347 -0
  398. package/.next/types/app/api/skills/operations/route.ts +347 -0
  399. package/.next/types/app/api/skills/reindex/route.ts +347 -0
  400. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.ts +347 -0
  401. package/.next/types/app/skills/installed/page.ts +84 -0
  402. package/.next/types/routes.d.ts +7 -2
  403. package/.next/types/validator.ts +45 -0
  404. package/dist/cli/commands/skill.d.ts +2 -1
  405. package/dist/cli/commands/skill.d.ts.map +1 -1
  406. package/dist/cli/commands/skill.js +136 -2
  407. package/dist/cli/types/api-responses.d.ts +40 -0
  408. package/dist/cli/types/api-responses.d.ts.map +1 -1
  409. package/dist/cli/types/index.d.ts +6 -0
  410. package/dist/cli/types/index.d.ts.map +1 -1
  411. package/dist/server/src/lib/db/migrations/index.js +2 -0
  412. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  413. package/dist/server/src/lib/db/migrations/v48-skill-operations-audit-index.js +117 -0
  414. package/dist/server/src/lib/skills/compatibility-matrix.js +256 -0
  415. package/dist/server/src/lib/skills/compatibility.js +132 -11
  416. package/dist/server/src/lib/skills/operation-audit.js +85 -15
  417. package/dist/server/src/lib/skills/operation-journal.js +14 -1
  418. package/package.json +1 -1
  419. package/.next/server/chunks/1808.js +0 -1
  420. package/.next/server/chunks/5226.js +0 -28
  421. package/.next/server/chunks/5306.js +0 -2
  422. package/.next/server/chunks/593.js +0 -1
  423. package/.next/server/chunks/9192.js +0 -1
  424. package/.next/static/MqlW91_Se_kEW6mtm-1x0/_buildManifest.js +0 -1
  425. package/.next/static/chunks/3418-7e47651340d940b0.js +0 -1
  426. package/.next/static/chunks/9142-41b13a2f278529cc.js +0 -1
  427. package/.next/static/chunks/app/api/app/update/route-8c8bebe20cebf964.js +0 -1
  428. package/.next/static/chunks/app/api/app/update-check/route-8c8bebe20cebf964.js +0 -1
  429. package/.next/static/chunks/app/api/assistant/conversation/route-8c8bebe20cebf964.js +0 -1
  430. package/.next/static/chunks/app/api/assistant/current-output/route-8c8bebe20cebf964.js +0 -1
  431. package/.next/static/chunks/app/api/assistant/messages/route-8c8bebe20cebf964.js +0 -1
  432. package/.next/static/chunks/app/api/assistant/session/route-8c8bebe20cebf964.js +0 -1
  433. package/.next/static/chunks/app/api/assistant/start/route-8c8bebe20cebf964.js +0 -1
  434. package/.next/static/chunks/app/api/assistant/terminal/route-8c8bebe20cebf964.js +0 -1
  435. package/.next/static/chunks/app/api/assistant/tools/route-8c8bebe20cebf964.js +0 -1
  436. package/.next/static/chunks/app/api/auth/login/route-8c8bebe20cebf964.js +0 -1
  437. package/.next/static/chunks/app/api/auth/logout/route-8c8bebe20cebf964.js +0 -1
  438. package/.next/static/chunks/app/api/auth/status/route-8c8bebe20cebf964.js +0 -1
  439. package/.next/static/chunks/app/api/daily-summary/route-8c8bebe20cebf964.js +0 -1
  440. package/.next/static/chunks/app/api/daily-summary/status/route-8c8bebe20cebf964.js +0 -1
  441. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8c8bebe20cebf964.js +0 -1
  442. package/.next/static/chunks/app/api/external-apps/[id]/route-8c8bebe20cebf964.js +0 -1
  443. package/.next/static/chunks/app/api/external-apps/route-8c8bebe20cebf964.js +0 -1
  444. package/.next/static/chunks/app/api/fs/browse/route-8c8bebe20cebf964.js +0 -1
  445. package/.next/static/chunks/app/api/fs/recent-paths/route-8c8bebe20cebf964.js +0 -1
  446. package/.next/static/chunks/app/api/hooks/claude-done/route-8c8bebe20cebf964.js +0 -1
  447. package/.next/static/chunks/app/api/ollama/models/route-8c8bebe20cebf964.js +0 -1
  448. package/.next/static/chunks/app/api/push/subscriptions/route-8c8bebe20cebf964.js +0 -1
  449. package/.next/static/chunks/app/api/push/vapid/route-8c8bebe20cebf964.js +0 -1
  450. package/.next/static/chunks/app/api/repositories/[id]/route-8c8bebe20cebf964.js +0 -1
  451. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +0 -1
  452. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8c8bebe20cebf964.js +0 -1
  453. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8c8bebe20cebf964.js +0 -1
  454. package/.next/static/chunks/app/api/repositories/clone/route-8c8bebe20cebf964.js +0 -1
  455. package/.next/static/chunks/app/api/repositories/excluded/route-8c8bebe20cebf964.js +0 -1
  456. package/.next/static/chunks/app/api/repositories/restore/route-8c8bebe20cebf964.js +0 -1
  457. package/.next/static/chunks/app/api/repositories/route-8c8bebe20cebf964.js +0 -1
  458. package/.next/static/chunks/app/api/repositories/scan/route-8c8bebe20cebf964.js +0 -1
  459. package/.next/static/chunks/app/api/repositories/sync/route-8c8bebe20cebf964.js +0 -1
  460. package/.next/static/chunks/app/api/repositories/validate-path/route-8c8bebe20cebf964.js +0 -1
  461. package/.next/static/chunks/app/api/sidebar/group-order/route-8c8bebe20cebf964.js +0 -1
  462. package/.next/static/chunks/app/api/skills/[id]/route-8c8bebe20cebf964.js +0 -1
  463. package/.next/static/chunks/app/api/skills/route-8c8bebe20cebf964.js +0 -1
  464. package/.next/static/chunks/app/api/slash-commands/route-8c8bebe20cebf964.js +0 -1
  465. package/.next/static/chunks/app/api/templates/[id]/route-8c8bebe20cebf964.js +0 -1
  466. package/.next/static/chunks/app/api/templates/route-8c8bebe20cebf964.js +0 -1
  467. package/.next/static/chunks/app/api/todos/route-8c8bebe20cebf964.js +0 -1
  468. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8c8bebe20cebf964.js +0 -1
  469. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8c8bebe20cebf964.js +0 -1
  470. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8c8bebe20cebf964.js +0 -1
  471. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8c8bebe20cebf964.js +0 -1
  472. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8c8bebe20cebf964.js +0 -1
  473. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8c8bebe20cebf964.js +0 -1
  474. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8c8bebe20cebf964.js +0 -1
  475. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8c8bebe20cebf964.js +0 -1
  476. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8c8bebe20cebf964.js +0 -1
  477. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8c8bebe20cebf964.js +0 -1
  478. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8c8bebe20cebf964.js +0 -1
  479. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8c8bebe20cebf964.js +0 -1
  480. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8c8bebe20cebf964.js +0 -1
  481. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8c8bebe20cebf964.js +0 -1
  482. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8c8bebe20cebf964.js +0 -1
  483. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8c8bebe20cebf964.js +0 -1
  484. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8c8bebe20cebf964.js +0 -1
  485. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8c8bebe20cebf964.js +0 -1
  486. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8c8bebe20cebf964.js +0 -1
  487. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8c8bebe20cebf964.js +0 -1
  488. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8c8bebe20cebf964.js +0 -1
  489. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8c8bebe20cebf964.js +0 -1
  490. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8c8bebe20cebf964.js +0 -1
  491. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8c8bebe20cebf964.js +0 -1
  492. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8c8bebe20cebf964.js +0 -1
  493. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8c8bebe20cebf964.js +0 -1
  494. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8c8bebe20cebf964.js +0 -1
  495. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8c8bebe20cebf964.js +0 -1
  496. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8c8bebe20cebf964.js +0 -1
  497. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8c8bebe20cebf964.js +0 -1
  498. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8c8bebe20cebf964.js +0 -1
  499. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8c8bebe20cebf964.js +0 -1
  500. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8c8bebe20cebf964.js +0 -1
  501. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8c8bebe20cebf964.js +0 -1
  502. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8c8bebe20cebf964.js +0 -1
  503. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8c8bebe20cebf964.js +0 -1
  504. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8c8bebe20cebf964.js +0 -1
  505. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8c8bebe20cebf964.js +0 -1
  506. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8c8bebe20cebf964.js +0 -1
  507. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8c8bebe20cebf964.js +0 -1
  508. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8c8bebe20cebf964.js +0 -1
  509. package/.next/static/chunks/app/api/worktrees/[id]/route-8c8bebe20cebf964.js +0 -1
  510. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8c8bebe20cebf964.js +0 -1
  511. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8c8bebe20cebf964.js +0 -1
  512. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8c8bebe20cebf964.js +0 -1
  513. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8c8bebe20cebf964.js +0 -1
  514. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8c8bebe20cebf964.js +0 -1
  515. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8c8bebe20cebf964.js +0 -1
  516. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8c8bebe20cebf964.js +0 -1
  517. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8c8bebe20cebf964.js +0 -1
  518. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8c8bebe20cebf964.js +0 -1
  519. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8c8bebe20cebf964.js +0 -1
  520. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8c8bebe20cebf964.js +0 -1
  521. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8c8bebe20cebf964.js +0 -1
  522. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8c8bebe20cebf964.js +0 -1
  523. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8c8bebe20cebf964.js +0 -1
  524. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8c8bebe20cebf964.js +0 -1
  525. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8c8bebe20cebf964.js +0 -1
  526. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +0 -1
  527. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8c8bebe20cebf964.js +0 -1
  528. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8c8bebe20cebf964.js +0 -1
  529. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8c8bebe20cebf964.js +0 -1
  530. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8c8bebe20cebf964.js +0 -1
  531. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8c8bebe20cebf964.js +0 -1
  532. package/.next/static/chunks/app/api/worktrees/route-8c8bebe20cebf964.js +0 -1
  533. package/.next/static/chunks/app/manifest.webmanifest/route-8c8bebe20cebf964.js +0 -1
  534. package/.next/static/chunks/app/proxy/[...path]/route-8c8bebe20cebf964.js +0 -1
  535. package/.next/static/chunks/app/skills/[skillId]/page-8c40c9683f242207.js +0 -1
  536. package/.next/static/chunks/app/skills/page-46242c428ee8bccf.js +0 -1
  537. /package/.next/static/{MqlW91_Se_kEW6mtm-1x0 → AKqbAyuzbFfg05qpbCI_K}/_ssgManifest.js +0 -0
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v48: audit version transition and feed indexes (Issue #1248).
4
+ *
5
+ * Two things the applied-state dashboard needs that v44 does not provide.
6
+ *
7
+ * **`from_version` / `to_version`.** v44 records a single `skill_version`, which
8
+ * answers "what version was this operation about" but not "what replaced what".
9
+ * An update is exactly a transition, and reading one out of two adjacent audit
10
+ * rows is guesswork the log should not require. Both columns are nullable
11
+ * because the ends of the timeline are genuinely open: an install onto an empty
12
+ * target has no `from`, an uninstall has no `to`.
13
+ *
14
+ * **Feed indexes.** The existing `idx_skill_operations_target` leads with
15
+ * `worktree_id`, so it cannot serve the dashboard's cross-worktree "newest
16
+ * first" query, and the "show me only the failures" filter has no index at all.
17
+ * Both are added here rather than left to a full scan that grows with history —
18
+ * the table is append-only, so it only ever gets longer.
19
+ *
20
+ * `ALTER TABLE ... ADD COLUMN` is DDL and does not fire the v44 append-only
21
+ * triggers, so existing rows are preserved and read back with NULL transitions.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.v48_migrations = void 0;
25
+ exports.v48_migrations = [
26
+ {
27
+ version: 48,
28
+ name: 'add-skill-operations-audit-index',
29
+ up: (db) => {
30
+ db.exec('ALTER TABLE skill_operations ADD COLUMN from_version TEXT;');
31
+ db.exec('ALTER TABLE skill_operations ADD COLUMN to_version TEXT;');
32
+ db.exec(`
33
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_recent
34
+ ON skill_operations(recorded_at DESC, id DESC);
35
+ `);
36
+ db.exec(`
37
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_result
38
+ ON skill_operations(result, recorded_at DESC);
39
+ `);
40
+ },
41
+ down: (db) => {
42
+ db.exec('DROP INDEX IF EXISTS idx_skill_operations_result;');
43
+ db.exec('DROP INDEX IF EXISTS idx_skill_operations_recent;');
44
+ // SQLite < 3.35 cannot DROP COLUMN; rebuild without the two columns. The
45
+ // append-only triggers are recreated afterwards: DROP TABLE removes the
46
+ // triggers bound to the old table, and a log without them is not the log.
47
+ db.exec('DROP TRIGGER IF EXISTS skill_operations_no_delete;');
48
+ db.exec('DROP TRIGGER IF EXISTS skill_operations_no_update;');
49
+ db.exec(`
50
+ CREATE TABLE skill_operations__v47 (
51
+ id TEXT PRIMARY KEY,
52
+ operation_id TEXT NOT NULL,
53
+ idempotency_key TEXT NOT NULL,
54
+ binding_hash TEXT NOT NULL,
55
+ operation TEXT NOT NULL,
56
+ state TEXT NOT NULL,
57
+ result TEXT NOT NULL,
58
+ actor_type TEXT NOT NULL,
59
+ actor_id TEXT,
60
+ worktree_id TEXT NOT NULL,
61
+ skill_id TEXT NOT NULL,
62
+ skill_version TEXT,
63
+ source_origin TEXT,
64
+ source_repository TEXT,
65
+ source_ref TEXT,
66
+ source_commit TEXT,
67
+ artifact_sha256 TEXT,
68
+ error_code TEXT,
69
+ error_message TEXT,
70
+ recorded_at INTEGER NOT NULL
71
+ );
72
+ `);
73
+ db.exec(`
74
+ INSERT INTO skill_operations__v47 (
75
+ id, operation_id, idempotency_key, binding_hash, operation, state, result,
76
+ actor_type, actor_id, worktree_id, skill_id, skill_version,
77
+ source_origin, source_repository, source_ref, source_commit, artifact_sha256,
78
+ error_code, error_message, recorded_at
79
+ )
80
+ SELECT
81
+ id, operation_id, idempotency_key, binding_hash, operation, state, result,
82
+ actor_type, actor_id, worktree_id, skill_id, skill_version,
83
+ source_origin, source_repository, source_ref, source_commit, artifact_sha256,
84
+ error_code, error_message, recorded_at
85
+ FROM skill_operations;
86
+ `);
87
+ db.exec('DROP TABLE skill_operations;');
88
+ db.exec('ALTER TABLE skill_operations__v47 RENAME TO skill_operations;');
89
+ db.exec(`
90
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_operation_id
91
+ ON skill_operations(operation_id);
92
+ `);
93
+ db.exec(`
94
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_idempotency_key
95
+ ON skill_operations(idempotency_key);
96
+ `);
97
+ db.exec(`
98
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_target
99
+ ON skill_operations(worktree_id, skill_id, recorded_at);
100
+ `);
101
+ db.exec(`
102
+ CREATE TRIGGER IF NOT EXISTS skill_operations_no_update
103
+ BEFORE UPDATE ON skill_operations
104
+ BEGIN
105
+ SELECT RAISE(ABORT, 'skill_operations is append-only');
106
+ END;
107
+ `);
108
+ db.exec(`
109
+ CREATE TRIGGER IF NOT EXISTS skill_operations_no_delete
110
+ BEFORE DELETE ON skill_operations
111
+ BEGIN
112
+ SELECT RAISE(ABORT, 'skill_operations is append-only');
113
+ END;
114
+ `);
115
+ },
116
+ },
117
+ ];
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ /**
3
+ * Measured Agent discovery matrix (Issue #1246)
4
+ *
5
+ * What a Skill package *declares* about an Agent and what CommandMate has
6
+ * actually *measured* are different claims. `compatibility.ts` carries the
7
+ * declaration; this module carries the measurement, so the UI can show both and
8
+ * never present one as the other.
9
+ *
10
+ * Two axes, not one. A single `native`/`unsupported` value cannot describe
11
+ * Codex CLI 0.145.0, which discovers a Skill from `.agents/skills` but does not
12
+ * expose it as a slash command. Collapsing that into one value would either
13
+ * promise an invocation route that does not exist or deny a discovery that does.
14
+ * So discovery and invocation are recorded separately and only discovery feeds
15
+ * the support verdict; invocation becomes a stated limitation.
16
+ *
17
+ * Pure data and pure functions: no filesystem, no network, no clock. `now` is
18
+ * always an explicit argument so a staleness verdict is reproducible.
19
+ *
20
+ * Evidence provenance: the 2026-07-26 measurements were taken in an isolated
21
+ * environment (dedicated port, dedicated database, a fresh repository with no
22
+ * Skills installed) against CommandMate 0.15.0. They are recorded here rather
23
+ * than re-derived at runtime — CommandMate does not drive a CLI to answer a
24
+ * catalog request.
25
+ *
26
+ * @module lib/skills/compatibility-matrix
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.AGENT_LIMITATION_MESSAGE_KEYS = exports.AGENT_RELOAD_MESSAGE_KEYS = exports.SKILL_EVIDENCE_MAX_AGE_DAYS = exports.AGENT_EVIDENCE_KIND_LABEL_KEYS = exports.AGENT_AXIS_OUTCOME_LABEL_KEYS = exports.AGENT_AXIS_LABEL_KEYS = exports.SKILL_EVIDENCE_KINDS = exports.SKILL_AGENT_AXIS_OUTCOMES = void 0;
30
+ exports.getSkillAgentMatrix = getSkillAgentMatrix;
31
+ exports.findSkillAgentMatrixEntry = findSkillAgentMatrixEntry;
32
+ exports.isAgentMeasured = isAgentMeasured;
33
+ exports.deriveMatrixAgentSupport = deriveMatrixAgentSupport;
34
+ exports.evidenceAgeInDays = evidenceAgeInDays;
35
+ exports.isEvidenceStale = isEvidenceStale;
36
+ exports.unmeasuredAgents = unmeasuredAgents;
37
+ exports.agentsMissingFromMatrix = agentsMissingFromMatrix;
38
+ const types_1 = require("../../lib/cli-tools/types");
39
+ const constants_1 = require("../../lib/skills/constants");
40
+ exports.SKILL_AGENT_AXIS_OUTCOMES = [
41
+ 'verified',
42
+ 'unsupported',
43
+ 'unknown',
44
+ ];
45
+ exports.SKILL_EVIDENCE_KINDS = [
46
+ 'mechanical',
47
+ 'self_report',
48
+ 'not_measured',
49
+ ];
50
+ /** i18n keys naming each axis, shared by UI and CLI (UX-05). */
51
+ exports.AGENT_AXIS_LABEL_KEYS = {
52
+ discovery: 'skills.compatibility.axis.discovery',
53
+ invocation: 'skills.compatibility.axis.invocation',
54
+ };
55
+ exports.AGENT_AXIS_OUTCOME_LABEL_KEYS = {
56
+ verified: 'skills.compatibility.axisOutcome.verified',
57
+ unsupported: 'skills.compatibility.axisOutcome.unsupported',
58
+ unknown: 'skills.compatibility.axisOutcome.unknown',
59
+ };
60
+ exports.AGENT_EVIDENCE_KIND_LABEL_KEYS = {
61
+ mechanical: 'skills.compatibility.evidenceKind.mechanical',
62
+ self_report: 'skills.compatibility.evidenceKind.selfReport',
63
+ not_measured: 'skills.compatibility.evidenceKind.notMeasured',
64
+ };
65
+ /**
66
+ * How long a measurement stays quotable before the UI flags it.
67
+ *
68
+ * Agent CLIs ship far faster than CommandMate re-measures them, so evidence
69
+ * that is merely old is presented as old rather than silently trusted.
70
+ */
71
+ exports.SKILL_EVIDENCE_MAX_AGE_DAYS = 180;
72
+ const NOT_MEASURED_AXIS = {
73
+ outcome: 'unknown',
74
+ evidenceKind: 'not_measured',
75
+ labelKey: exports.AGENT_AXIS_OUTCOME_LABEL_KEYS.unknown,
76
+ evidenceKindKey: exports.AGENT_EVIDENCE_KIND_LABEL_KEYS.not_measured,
77
+ limitationKey: null,
78
+ };
79
+ const NOT_MEASURED_SKIP_REASON_KEY = 'skills.compatibility.skipReason.notMeasured';
80
+ /** Reload guidance keys. Keyed by behavior, not by Agent, so they stay reusable. */
81
+ exports.AGENT_RELOAD_MESSAGE_KEYS = {
82
+ SESSION_RESTART: 'skills.compatibility.reload.sessionRestart',
83
+ SESSION_RESTART_NO_SLASH: 'skills.compatibility.reload.sessionRestartNoSlash',
84
+ UNKNOWN: 'skills.compatibility.reload.unknown',
85
+ };
86
+ /** Known limitation keys attached to an axis outcome. */
87
+ exports.AGENT_LIMITATION_MESSAGE_KEYS = {
88
+ NO_SLASH_COMMAND: 'skills.compatibility.limitation.noSlashCommand',
89
+ };
90
+ /** Evidence reference for the 2026-07-26 isolated-environment measurement. */
91
+ const G4_EVIDENCE_SOURCE = 'https://github.com/Kewton/CommandMate/issues/1513#issuecomment-5083878264';
92
+ const MEASURED_DATE_2026_07_26 = '2026-07-26';
93
+ function unmeasuredEntry(agent) {
94
+ return {
95
+ agent,
96
+ discoveryRoots: [],
97
+ discovery: NOT_MEASURED_AXIS,
98
+ invocation: NOT_MEASURED_AXIS,
99
+ testedVersion: null,
100
+ testedDate: null,
101
+ evidenceSource: null,
102
+ reloadKey: exports.AGENT_RELOAD_MESSAGE_KEYS.UNKNOWN,
103
+ skipReasonKey: NOT_MEASURED_SKIP_REASON_KEY,
104
+ };
105
+ }
106
+ // =============================================================================
107
+ // The matrix
108
+ // =============================================================================
109
+ /**
110
+ * Every Agent CommandMate knows about, measured or not.
111
+ *
112
+ * The unmeasured entries are listed rather than omitted: an Agent missing from
113
+ * the table would render as no statement at all, which a reader completes as
114
+ * "presumably fine". An explicit `unknown` with a skip reason is the honest
115
+ * shape of "we did not test this".
116
+ */
117
+ const AGENT_DISCOVERY_MATRIX = [
118
+ {
119
+ agent: 'claude',
120
+ // Measured to read `.claude/skills` and *not* `.agents/skills`. The official
121
+ // catalog's older entries credited `.agents/skills` for Claude support; the
122
+ // conclusion was right and the reason was wrong — it works because #1460
123
+ // installs into `.claude/skills` too.
124
+ discoveryRoots: [constants_1.SKILL_CLAUDE_INSTALL_ROOT_PREFIX],
125
+ discovery: {
126
+ outcome: 'verified',
127
+ evidenceKind: 'mechanical',
128
+ labelKey: exports.AGENT_AXIS_OUTCOME_LABEL_KEYS.verified,
129
+ evidenceKindKey: exports.AGENT_EVIDENCE_KIND_LABEL_KEYS.mechanical,
130
+ limitationKey: null,
131
+ },
132
+ invocation: {
133
+ outcome: 'verified',
134
+ evidenceKind: 'mechanical',
135
+ labelKey: exports.AGENT_AXIS_OUTCOME_LABEL_KEYS.verified,
136
+ evidenceKindKey: exports.AGENT_EVIDENCE_KIND_LABEL_KEYS.mechanical,
137
+ limitationKey: null,
138
+ },
139
+ testedVersion: '2.1.220',
140
+ testedDate: MEASURED_DATE_2026_07_26,
141
+ evidenceSource: G4_EVIDENCE_SOURCE,
142
+ reloadKey: exports.AGENT_RELOAD_MESSAGE_KEYS.SESSION_RESTART,
143
+ skipReasonKey: null,
144
+ },
145
+ {
146
+ agent: 'codex',
147
+ discoveryRoots: [constants_1.SKILL_INSTALL_ROOT_PREFIX],
148
+ discovery: {
149
+ // The Agent named the absolute SKILL.md path under `.agents/skills` when
150
+ // asked without tools. That is evidence, and it is the Agent describing
151
+ // itself, so it is recorded as a self report rather than as a match.
152
+ outcome: 'verified',
153
+ evidenceKind: 'self_report',
154
+ labelKey: exports.AGENT_AXIS_OUTCOME_LABEL_KEYS.verified,
155
+ evidenceKindKey: exports.AGENT_EVIDENCE_KIND_LABEL_KEYS.self_report,
156
+ limitationKey: null,
157
+ },
158
+ invocation: {
159
+ // Ruled out as a placement problem by control: `/mo` matched `/model`, so
160
+ // the palette works, and a Skill already sitting in `~/.codex/skills` did
161
+ // not match either. This CLI version does not expose Skills as slash
162
+ // commands wherever they are placed.
163
+ outcome: 'unsupported',
164
+ evidenceKind: 'mechanical',
165
+ labelKey: exports.AGENT_AXIS_OUTCOME_LABEL_KEYS.unsupported,
166
+ evidenceKindKey: exports.AGENT_EVIDENCE_KIND_LABEL_KEYS.mechanical,
167
+ limitationKey: exports.AGENT_LIMITATION_MESSAGE_KEYS.NO_SLASH_COMMAND,
168
+ },
169
+ testedVersion: '0.145.0',
170
+ testedDate: MEASURED_DATE_2026_07_26,
171
+ evidenceSource: G4_EVIDENCE_SOURCE,
172
+ reloadKey: exports.AGENT_RELOAD_MESSAGE_KEYS.SESSION_RESTART_NO_SLASH,
173
+ skipReasonKey: null,
174
+ },
175
+ unmeasuredEntry('gemini'),
176
+ unmeasuredEntry('vibe-local'),
177
+ unmeasuredEntry('opencode'),
178
+ unmeasuredEntry('copilot'),
179
+ // CommandMate's own slash palette serves `.agents/skills` entries to
180
+ // antigravity sessions (#1504). That is CommandMate injecting a command, not
181
+ // the Agent discovering a Skill, so it is not evidence for this table.
182
+ unmeasuredEntry('antigravity'),
183
+ ];
184
+ /** The measured matrix, in CLI-tool declaration order. */
185
+ function getSkillAgentMatrix() {
186
+ return AGENT_DISCOVERY_MATRIX;
187
+ }
188
+ /** The entry for one Agent, or null when the id is not a known CLI tool. */
189
+ function findSkillAgentMatrixEntry(agent) {
190
+ return AGENT_DISCOVERY_MATRIX.find((entry) => entry.agent === agent) ?? null;
191
+ }
192
+ /** Whether CommandMate has any measurement at all for this Agent. */
193
+ function isAgentMeasured(entry) {
194
+ return entry.discovery.evidenceKind !== 'not_measured';
195
+ }
196
+ /**
197
+ * The four-valued support verdict implied by the measurement.
198
+ *
199
+ * Only the discovery axis decides it. An Agent that finds and can run a Skill
200
+ * supports it natively even when its palette does not list it, so a failed
201
+ * invocation axis is reported as a limitation instead of demoting the verdict
202
+ * to `unsupported` — which would read as "this will not work".
203
+ *
204
+ * `commandmate_runtime` is never produced here: the Runtime is not shipped, and
205
+ * inventing that verdict would promise a fallback that does not exist.
206
+ */
207
+ function deriveMatrixAgentSupport(entry) {
208
+ switch (entry.discovery.outcome) {
209
+ case 'verified':
210
+ return 'native';
211
+ case 'unsupported':
212
+ return 'unsupported';
213
+ case 'unknown':
214
+ return 'unknown';
215
+ }
216
+ }
217
+ // =============================================================================
218
+ // Staleness
219
+ // =============================================================================
220
+ const MS_PER_DAY = 24 * 60 * 60 * 1000;
221
+ const MEASURED_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
222
+ /**
223
+ * Whole days between the measurement and `now`, or null when unmeasured or when
224
+ * the recorded date is unusable. A measurement dated in the future yields 0
225
+ * rather than a negative age.
226
+ */
227
+ function evidenceAgeInDays(entry, now) {
228
+ if (entry.testedDate === null || !MEASURED_DATE_PATTERN.test(entry.testedDate))
229
+ return null;
230
+ const measured = Date.parse(`${entry.testedDate}T00:00:00Z`);
231
+ const current = now.getTime();
232
+ if (Number.isNaN(measured) || Number.isNaN(current))
233
+ return null;
234
+ return Math.max(0, Math.floor((current - measured) / MS_PER_DAY));
235
+ }
236
+ /**
237
+ * Whether the measurement is old enough to warn about.
238
+ *
239
+ * An unmeasured Agent is not stale — it is unknown, which the UI already states
240
+ * more strongly. Marking it stale as well would imply a measurement had expired.
241
+ */
242
+ function isEvidenceStale(entry, now, maxAgeDays = exports.SKILL_EVIDENCE_MAX_AGE_DAYS) {
243
+ const age = evidenceAgeInDays(entry, now);
244
+ return age !== null && age > maxAgeDays;
245
+ }
246
+ // =============================================================================
247
+ // Coverage
248
+ // =============================================================================
249
+ /** CLI tools with no measurement, in matrix order. */
250
+ function unmeasuredAgents() {
251
+ return AGENT_DISCOVERY_MATRIX.filter((entry) => !isAgentMeasured(entry)).map((entry) => entry.agent);
252
+ }
253
+ /** CLI tool ids the matrix does not mention. Empty in a consistent build. */
254
+ function agentsMissingFromMatrix() {
255
+ return types_1.CLI_TOOL_IDS.filter((id) => findSkillAgentMatrixEntry(id) === null);
256
+ }
@@ -3,8 +3,8 @@
3
3
  * CommandMate compatibility judgement and version resolution (Issue #1231)
4
4
  *
5
5
  * Pure functions: no filesystem, no network, no process state. The host version
6
- * is always an explicit argument so UI, API and CLI can evaluate the same
7
- * Catalog against the same rules and reach the same verdict.
6
+ * and the current instant are always explicit arguments so UI, API and CLI can
7
+ * evaluate the same Catalog against the same rules and reach the same verdict.
8
8
  *
9
9
  * Every verdict carries a stable machine code *and* a human-readable message
10
10
  * (受入条件: "互換性NGの理由がmachine-readable codeとhuman-readable messageで返る").
@@ -14,16 +14,19 @@
14
14
  * @module lib/skills/compatibility
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.SkillRecommendationReason = exports.UNKNOWN_HOST_VERSION_SENTINEL = exports.SKILL_COMPATIBILITY_MESSAGE_KEYS = exports.SkillCompatibilityReason = void 0;
17
+ exports.SkillRecommendationReason = exports.SKILL_AGENT_VERIFICATION_MESSAGE_KEYS = exports.SkillAgentVerification = exports.UNKNOWN_HOST_VERSION_SENTINEL = exports.SKILL_COMPATIBILITY_MESSAGE_KEYS = exports.SkillCompatibilityReason = void 0;
18
18
  exports.normalizeHostVersion = normalizeHostVersion;
19
19
  exports.evaluateCommandMateCompatibility = evaluateCommandMateCompatibility;
20
20
  exports.evaluateVersionCompatibility = evaluateVersionCompatibility;
21
+ exports.capSupportByMeasurement = capSupportByMeasurement;
22
+ exports.reconcileAgentSupport = reconcileAgentSupport;
21
23
  exports.describeAgentCompatibility = describeAgentCompatibility;
22
24
  exports.resolveSkillVersions = resolveSkillVersions;
23
25
  exports.findSkillCatalogEntry = findSkillCatalogEntry;
24
26
  // Sibling modules of the same package are imported directly rather than through
25
27
  // the `@/lib/skills` barrel, so adding this module to the barrel later can never
26
28
  // introduce an import cycle. External callers still go through the barrel.
29
+ const compatibility_matrix_1 = require("../../lib/skills/compatibility-matrix");
27
30
  const constants_1 = require("../../lib/skills/constants");
28
31
  const semver_1 = require("../../lib/skills/semver");
29
32
  /** Stable reason codes for a CommandMate compatibility verdict. */
@@ -122,14 +125,132 @@ function evaluateCommandMateCompatibility(requiredRange, currentVersion) {
122
125
  function evaluateVersionCompatibility(version, currentVersion) {
123
126
  return evaluateCommandMateCompatibility(version.compatibility.commandmate, currentVersion);
124
127
  }
125
- /** Attach the shared i18n label key to each Agent support claim. */
126
- function describeAgentCompatibility(agents) {
127
- return agents.map((entry) => ({
128
- agent: entry.agent,
129
- support: entry.support,
130
- labelKey: constants_1.AGENT_SUPPORT_LABEL_KEYS[entry.support],
131
- evidence: entry.evidence,
132
- }));
128
+ // =============================================================================
129
+ // Agent compatibility
130
+ // =============================================================================
131
+ /**
132
+ * How the publisher's declaration stands up against what CommandMate measured
133
+ * (Issue #1246).
134
+ */
135
+ exports.SkillAgentVerification = {
136
+ /** Declaration and measurement agree. */
137
+ CONFIRMED: 'SKILL_AGENT_EVIDENCE_CONFIRMED',
138
+ /** Measurement is weaker than the declaration, so the declaration is capped. */
139
+ RESTRICTED: 'SKILL_AGENT_EVIDENCE_RESTRICTED',
140
+ /** Measurement is stronger than the declaration; the manifest has fallen behind. */
141
+ STALE_DECLARATION: 'SKILL_AGENT_EVIDENCE_STALE_DECLARATION',
142
+ /** CommandMate has never measured this Agent. */
143
+ UNVERIFIED: 'SKILL_AGENT_EVIDENCE_UNVERIFIED',
144
+ };
145
+ exports.SKILL_AGENT_VERIFICATION_MESSAGE_KEYS = {
146
+ [exports.SkillAgentVerification.CONFIRMED]: 'skills.compatibility.verification.confirmed',
147
+ [exports.SkillAgentVerification.RESTRICTED]: 'skills.compatibility.verification.restricted',
148
+ [exports.SkillAgentVerification.STALE_DECLARATION]: 'skills.compatibility.verification.staleDeclaration',
149
+ [exports.SkillAgentVerification.UNVERIFIED]: 'skills.compatibility.verification.unverified',
150
+ };
151
+ /**
152
+ * Ordering used to cap a declaration by a measurement. Higher is stronger.
153
+ *
154
+ * `unknown` outranks `unsupported` because "we could not tell" leaves more room
155
+ * than "we established it does not work".
156
+ */
157
+ const AGENT_SUPPORT_RANK = {
158
+ unsupported: 0,
159
+ unknown: 1,
160
+ commandmate_runtime: 2,
161
+ native: 3,
162
+ };
163
+ /**
164
+ * Cap a publisher's declaration by what CommandMate measured.
165
+ *
166
+ * Downward only. A weaker measurement wins, which is what keeps an
167
+ * evidence-free `native` off the screen. A stronger one does not: raising a
168
+ * package's own claim is the publisher's call, so the mismatch is reported as
169
+ * a declaration that has fallen behind.
170
+ */
171
+ function capSupportByMeasurement(declared, measured) {
172
+ const declaredRank = AGENT_SUPPORT_RANK[declared];
173
+ const measuredRank = AGENT_SUPPORT_RANK[measured];
174
+ if (measuredRank < declaredRank) {
175
+ return { support: measured, verification: exports.SkillAgentVerification.RESTRICTED };
176
+ }
177
+ if (measuredRank > declaredRank) {
178
+ return { support: declared, verification: exports.SkillAgentVerification.STALE_DECLARATION };
179
+ }
180
+ return { support: declared, verification: exports.SkillAgentVerification.CONFIRMED };
181
+ }
182
+ function toAxisView(axis, evidence) {
183
+ return {
184
+ axis,
185
+ axisKey: compatibility_matrix_1.AGENT_AXIS_LABEL_KEYS[axis],
186
+ outcome: evidence.outcome,
187
+ outcomeKey: evidence.labelKey,
188
+ evidenceKind: evidence.evidenceKind,
189
+ evidenceKindKey: evidence.evidenceKindKey,
190
+ limitationKey: evidence.limitationKey,
191
+ };
192
+ }
193
+ function toMeasuredView(entry, now) {
194
+ return {
195
+ discovery: toAxisView('discovery', entry.discovery),
196
+ invocation: toAxisView('invocation', entry.invocation),
197
+ discoveryRoots: [...entry.discoveryRoots],
198
+ testedVersion: entry.testedVersion,
199
+ testedDate: entry.testedDate,
200
+ evidenceSource: entry.evidenceSource,
201
+ ageDays: (0, compatibility_matrix_1.evidenceAgeInDays)(entry, now),
202
+ stale: (0, compatibility_matrix_1.isEvidenceStale)(entry, now),
203
+ };
204
+ }
205
+ /**
206
+ * Reconcile one declared Agent claim with the measured discovery matrix.
207
+ *
208
+ * The declaration is never rewritten upward: a measurement stronger than the
209
+ * manifest is reported as a stale declaration, not silently promoted, because
210
+ * the publisher is the one who decides what their package claims to support.
211
+ * It *is* capped downward, which is what keeps "evidence-free native" off the
212
+ * screen when a manifest asserts an Agent CommandMate measured as unsupported.
213
+ */
214
+ function reconcileAgentSupport(declared, now) {
215
+ const entry = (0, compatibility_matrix_1.findSkillAgentMatrixEntry)(declared.agent);
216
+ const base = {
217
+ agent: declared.agent,
218
+ evidence: declared.evidence,
219
+ declaredSupport: declared.support,
220
+ declaredLabelKey: constants_1.AGENT_SUPPORT_LABEL_KEYS[declared.support],
221
+ };
222
+ if (entry === null || !(0, compatibility_matrix_1.isAgentMeasured)(entry)) {
223
+ return {
224
+ ...base,
225
+ support: declared.support,
226
+ labelKey: constants_1.AGENT_SUPPORT_LABEL_KEYS[declared.support],
227
+ verification: exports.SkillAgentVerification.UNVERIFIED,
228
+ verificationKey: exports.SKILL_AGENT_VERIFICATION_MESSAGE_KEYS[exports.SkillAgentVerification.UNVERIFIED],
229
+ measured: null,
230
+ skipReasonKey: entry?.skipReasonKey ?? null,
231
+ reloadKey: entry?.reloadKey ?? compatibility_matrix_1.AGENT_RELOAD_MESSAGE_KEYS.UNKNOWN,
232
+ };
233
+ }
234
+ const { support, verification } = capSupportByMeasurement(declared.support, (0, compatibility_matrix_1.deriveMatrixAgentSupport)(entry));
235
+ return {
236
+ ...base,
237
+ support,
238
+ labelKey: constants_1.AGENT_SUPPORT_LABEL_KEYS[support],
239
+ verification,
240
+ verificationKey: exports.SKILL_AGENT_VERIFICATION_MESSAGE_KEYS[verification],
241
+ measured: toMeasuredView(entry, now),
242
+ skipReasonKey: null,
243
+ reloadKey: entry.reloadKey,
244
+ };
245
+ }
246
+ /**
247
+ * Attach the shared i18n label key and the measured evidence to each claim.
248
+ *
249
+ * @param now - Evaluated against for evidence staleness. Passed explicitly by
250
+ * tests so a verdict never depends on when the suite runs.
251
+ */
252
+ function describeAgentCompatibility(agents, now = new Date()) {
253
+ return agents.map((entry) => reconcileAgentSupport(entry, now));
133
254
  }
134
255
  // =============================================================================
135
256
  // Version resolution