commandmate 0.20.0 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +252 -238
  3. package/.next/app-path-routes-manifest.json +38 -36
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +18 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update-check/route.js +1 -1
  11. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/assistant/messages/route.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.js +1 -1
  17. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/auth/login/route.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.js +1 -1
  24. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/auth/status/route.js +1 -1
  26. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +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_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.js +1 -1
  34. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  37. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  41. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  45. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  47. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/repositories/route.js +1 -1
  53. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/skills/operations/route.js +2 -2
  61. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  67. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/todos/route.js +1 -1
  71. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  73. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/verification/runs/route.js +1 -1
  75. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  79. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  81. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  84. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  86. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  91. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/git/log/route.js +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_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  147. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  150. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  156. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  159. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -0
  161. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -0
  162. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -0
  163. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -0
  164. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -0
  165. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -0
  166. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  197. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  198. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  200. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  201. package/.next/server/app/page_client-reference-manifest.js +1 -1
  202. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  204. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  205. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  206. package/.next/server/app/skills/[skillId]/page.js +2 -2
  207. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  208. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  209. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  210. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  211. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  212. package/.next/server/app/worktrees/[id]/page.js +5 -5
  213. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  214. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  215. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app-paths-manifest.json +38 -36
  217. package/.next/server/chunks/1029.js +1 -1
  218. package/.next/server/chunks/1503.js +1 -1
  219. package/.next/server/chunks/22.js +1 -1
  220. package/.next/server/chunks/2328.js +1 -1
  221. package/.next/server/chunks/2546.js +1 -0
  222. package/.next/server/chunks/2710.js +2 -2
  223. package/.next/server/chunks/28.js +2 -2
  224. package/.next/server/chunks/3417.js +1 -1
  225. package/.next/server/chunks/365.js +1 -0
  226. package/.next/server/chunks/3736.js +1 -1
  227. package/.next/server/chunks/3753.js +14 -5
  228. package/.next/server/chunks/4444.js +1 -1
  229. package/.next/server/chunks/5064.js +1 -1
  230. package/.next/server/chunks/5737.js +1 -1
  231. package/.next/server/chunks/5959.js +10 -3
  232. package/.next/server/chunks/6130.js +1 -1
  233. package/.next/server/chunks/6274.js +1 -1
  234. package/.next/server/chunks/6401.js +1 -1
  235. package/.next/server/chunks/848.js +1 -0
  236. package/.next/server/chunks/8536.js +1 -1
  237. package/.next/server/chunks/8584.js +1 -1
  238. package/.next/server/chunks/8807.js +1 -1
  239. package/.next/server/chunks/8856.js +1 -1
  240. package/.next/server/chunks/9058.js +1 -1
  241. package/.next/server/chunks/9360.js +2 -0
  242. package/.next/server/chunks/9687.js +1 -1
  243. package/.next/server/middleware-manifest.json +5 -5
  244. package/.next/server/pages/500.html +1 -1
  245. package/.next/server/server-reference-manifest.json +1 -1
  246. package/.next/static/chunks/{8562-6e2ab32452f4fa5b.js → 2053-52d3c82014e1cd54.js} +1 -1
  247. package/.next/static/chunks/2751-9ef0f4b450bd4ef0.js +1 -0
  248. package/.next/static/chunks/{6488-3e7539550c3ef358.js → 6488-d3cf14e8d95b2d03.js} +1 -1
  249. package/.next/static/chunks/app/api/app/update/route-be21650964d61b1d.js +1 -0
  250. package/.next/static/chunks/app/api/app/update-check/route-be21650964d61b1d.js +1 -0
  251. package/.next/static/chunks/app/api/assistant/conversation/route-be21650964d61b1d.js +1 -0
  252. package/.next/static/chunks/app/api/assistant/current-output/route-be21650964d61b1d.js +1 -0
  253. package/.next/static/chunks/app/api/assistant/messages/route-be21650964d61b1d.js +1 -0
  254. package/.next/static/chunks/app/api/assistant/session/route-be21650964d61b1d.js +1 -0
  255. package/.next/static/chunks/app/api/assistant/start/route-be21650964d61b1d.js +1 -0
  256. package/.next/static/chunks/app/api/assistant/terminal/route-be21650964d61b1d.js +1 -0
  257. package/.next/static/chunks/app/api/assistant/tools/route-be21650964d61b1d.js +1 -0
  258. package/.next/static/chunks/app/api/auth/login/route-be21650964d61b1d.js +1 -0
  259. package/.next/static/chunks/app/api/auth/logout/route-be21650964d61b1d.js +1 -0
  260. package/.next/static/chunks/app/api/auth/status/route-be21650964d61b1d.js +1 -0
  261. package/.next/static/chunks/app/api/daily-summary/route-be21650964d61b1d.js +1 -0
  262. package/.next/static/chunks/app/api/daily-summary/status/route-be21650964d61b1d.js +1 -0
  263. package/.next/static/chunks/app/api/external-apps/[id]/health/route-be21650964d61b1d.js +1 -0
  264. package/.next/static/chunks/app/api/external-apps/[id]/route-be21650964d61b1d.js +1 -0
  265. package/.next/static/chunks/app/api/external-apps/route-be21650964d61b1d.js +1 -0
  266. package/.next/static/chunks/app/api/fs/browse/route-be21650964d61b1d.js +1 -0
  267. package/.next/static/chunks/app/api/fs/recent-paths/route-be21650964d61b1d.js +1 -0
  268. package/.next/static/chunks/app/api/hooks/agent-event/route-be21650964d61b1d.js +1 -0
  269. package/.next/static/chunks/app/api/hooks/claude-done/route-be21650964d61b1d.js +1 -0
  270. package/.next/static/chunks/app/api/metrics/vibe/route-be21650964d61b1d.js +1 -0
  271. package/.next/static/chunks/app/api/ollama/models/route-be21650964d61b1d.js +1 -0
  272. package/.next/static/chunks/app/api/push/subscriptions/route-be21650964d61b1d.js +1 -0
  273. package/.next/static/chunks/app/api/push/vapid/route-be21650964d61b1d.js +1 -0
  274. package/.next/static/chunks/app/api/repositories/[id]/route-be21650964d61b1d.js +1 -0
  275. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-be21650964d61b1d.js +1 -0
  276. package/.next/static/chunks/app/api/repositories/[id]/todos/route-be21650964d61b1d.js +1 -0
  277. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-be21650964d61b1d.js +1 -0
  278. package/.next/static/chunks/app/api/repositories/clone/route-be21650964d61b1d.js +1 -0
  279. package/.next/static/chunks/app/api/repositories/excluded/route-be21650964d61b1d.js +1 -0
  280. package/.next/static/chunks/app/api/repositories/restore/route-be21650964d61b1d.js +1 -0
  281. package/.next/static/chunks/app/api/repositories/route-be21650964d61b1d.js +1 -0
  282. package/.next/static/chunks/app/api/repositories/scan/route-be21650964d61b1d.js +1 -0
  283. package/.next/static/chunks/app/api/repositories/sync/route-be21650964d61b1d.js +1 -0
  284. package/.next/static/chunks/app/api/repositories/validate-path/route-be21650964d61b1d.js +1 -0
  285. package/.next/static/chunks/app/api/sidebar/group-order/route-be21650964d61b1d.js +1 -0
  286. package/.next/static/chunks/app/api/skills/[id]/route-be21650964d61b1d.js +1 -0
  287. package/.next/static/chunks/app/api/skills/installations/route-be21650964d61b1d.js +1 -0
  288. package/.next/static/chunks/app/api/skills/operations/route-be21650964d61b1d.js +1 -0
  289. package/.next/static/chunks/app/api/skills/reindex/route-be21650964d61b1d.js +1 -0
  290. package/.next/static/chunks/app/api/skills/route-be21650964d61b1d.js +1 -0
  291. package/.next/static/chunks/app/api/slash-commands/route-be21650964d61b1d.js +1 -0
  292. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-be21650964d61b1d.js +1 -0
  293. package/.next/static/chunks/app/api/tasks/[taskId]/route-be21650964d61b1d.js +1 -0
  294. package/.next/static/chunks/app/api/templates/[id]/route-be21650964d61b1d.js +1 -0
  295. package/.next/static/chunks/app/api/templates/route-be21650964d61b1d.js +1 -0
  296. package/.next/static/chunks/app/api/todos/route-be21650964d61b1d.js +1 -0
  297. package/.next/static/chunks/app/api/verification/runs/[runId]/route-be21650964d61b1d.js +1 -0
  298. package/.next/static/chunks/app/api/verification/runs/route-be21650964d61b1d.js +1 -0
  299. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-be21650964d61b1d.js +1 -0
  300. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-be21650964d61b1d.js +1 -0
  301. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-be21650964d61b1d.js +1 -0
  302. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-be21650964d61b1d.js +1 -0
  303. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-be21650964d61b1d.js +1 -0
  304. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-be21650964d61b1d.js +1 -0
  305. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-be21650964d61b1d.js +1 -0
  306. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-be21650964d61b1d.js +1 -0
  307. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-be21650964d61b1d.js +1 -0
  308. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-be21650964d61b1d.js +1 -0
  309. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-be21650964d61b1d.js +1 -0
  310. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-be21650964d61b1d.js +1 -0
  311. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-be21650964d61b1d.js +1 -0
  312. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-be21650964d61b1d.js +1 -0
  313. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-be21650964d61b1d.js +1 -0
  314. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-be21650964d61b1d.js +1 -0
  315. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-be21650964d61b1d.js +1 -0
  316. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-be21650964d61b1d.js +1 -0
  317. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-be21650964d61b1d.js +1 -0
  318. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-be21650964d61b1d.js +1 -0
  319. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-be21650964d61b1d.js +1 -0
  320. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-be21650964d61b1d.js +1 -0
  321. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-be21650964d61b1d.js +1 -0
  322. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-be21650964d61b1d.js +1 -0
  323. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-be21650964d61b1d.js +1 -0
  324. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-be21650964d61b1d.js +1 -0
  325. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-be21650964d61b1d.js +1 -0
  326. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-be21650964d61b1d.js +1 -0
  327. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-be21650964d61b1d.js +1 -0
  328. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-be21650964d61b1d.js +1 -0
  329. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-be21650964d61b1d.js +1 -0
  330. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-be21650964d61b1d.js +1 -0
  331. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-be21650964d61b1d.js +1 -0
  332. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-be21650964d61b1d.js +1 -0
  333. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-be21650964d61b1d.js +1 -0
  334. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-be21650964d61b1d.js +1 -0
  335. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-be21650964d61b1d.js +1 -0
  336. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-be21650964d61b1d.js +1 -0
  337. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-be21650964d61b1d.js +1 -0
  338. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-be21650964d61b1d.js +1 -0
  339. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-be21650964d61b1d.js +1 -0
  340. package/.next/static/chunks/app/api/worktrees/[id]/route-be21650964d61b1d.js +1 -0
  341. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-be21650964d61b1d.js +1 -0
  342. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-be21650964d61b1d.js +1 -0
  343. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-be21650964d61b1d.js +1 -0
  344. package/.next/static/chunks/app/api/worktrees/[id]/search/route-be21650964d61b1d.js +1 -0
  345. package/.next/static/chunks/app/api/worktrees/[id]/send/route-be21650964d61b1d.js +1 -0
  346. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-be21650964d61b1d.js +1 -0
  347. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-be21650964d61b1d.js +1 -0
  348. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-be21650964d61b1d.js +1 -0
  349. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-be21650964d61b1d.js +1 -0
  350. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-be21650964d61b1d.js +1 -0
  351. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-be21650964d61b1d.js +1 -0
  352. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-be21650964d61b1d.js +1 -0
  353. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-be21650964d61b1d.js +1 -0
  354. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-be21650964d61b1d.js +1 -0
  355. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-be21650964d61b1d.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-be21650964d61b1d.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-be21650964d61b1d.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-be21650964d61b1d.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-be21650964d61b1d.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-be21650964d61b1d.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-be21650964d61b1d.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-be21650964d61b1d.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-be21650964d61b1d.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-be21650964d61b1d.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-be21650964d61b1d.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-be21650964d61b1d.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-be21650964d61b1d.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-be21650964d61b1d.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-be21650964d61b1d.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/route-be21650964d61b1d.js +1 -0
  371. package/.next/static/chunks/app/manifest.webmanifest/route-be21650964d61b1d.js +1 -0
  372. package/.next/static/chunks/app/proxy/[...path]/route-be21650964d61b1d.js +1 -0
  373. package/.next/static/chunks/app/skills/[skillId]/page-10d6f983e5f06ffb.js +1 -0
  374. package/.next/static/chunks/app/worktrees/[id]/layout-be21650964d61b1d.js +1 -0
  375. package/.next/static/chunks/app/worktrees/[id]/page-77b0ee35da06da00.js +1 -0
  376. package/.next/trace +12 -12
  377. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/update/route.ts +347 -0
  378. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.ts +347 -0
  379. package/.next/types/routes.d.ts +3 -1
  380. package/.next/types/validator.ts +18 -0
  381. package/dist/cli/commands/auto-yes.js +1 -1
  382. package/dist/cli/commands/capture.d.ts +1 -0
  383. package/dist/cli/commands/capture.d.ts.map +1 -1
  384. package/dist/cli/commands/capture.js +112 -0
  385. package/dist/cli/commands/respond.d.ts.map +1 -1
  386. package/dist/cli/commands/respond.js +31 -6
  387. package/dist/cli/commands/send.js +2 -2
  388. package/dist/cli/commands/skill-format.d.ts +7 -1
  389. package/dist/cli/commands/skill-format.d.ts.map +1 -1
  390. package/dist/cli/commands/skill-format.js +67 -0
  391. package/dist/cli/commands/skill.d.ts +2 -0
  392. package/dist/cli/commands/skill.d.ts.map +1 -1
  393. package/dist/cli/commands/skill.js +149 -0
  394. package/dist/cli/commands/sync.d.ts +14 -0
  395. package/dist/cli/commands/sync.d.ts.map +1 -0
  396. package/dist/cli/commands/sync.js +53 -0
  397. package/dist/cli/commands/wait.d.ts.map +1 -1
  398. package/dist/cli/commands/wait.js +72 -1
  399. package/dist/cli/docs/agent-operations.d.ts +1 -1
  400. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  401. package/dist/cli/docs/agent-operations.js +25 -3
  402. package/dist/cli/program.d.ts.map +1 -1
  403. package/dist/cli/program.js +3 -0
  404. package/dist/cli/types/api-responses.d.ts +201 -0
  405. package/dist/cli/types/api-responses.d.ts.map +1 -1
  406. package/dist/cli/types/index.d.ts +31 -0
  407. package/dist/cli/types/index.d.ts.map +1 -1
  408. package/dist/cli/utils/verify-runner.d.ts +9 -0
  409. package/dist/cli/utils/verify-runner.d.ts.map +1 -1
  410. package/dist/cli/utils/verify-runner.js +28 -2
  411. package/dist/config/history-display-config.d.ts +61 -0
  412. package/dist/config/history-display-config.d.ts.map +1 -0
  413. package/dist/config/history-display-config.js +62 -0
  414. package/dist/server/src/lib/auto-yes-poller.js +49 -0
  415. package/dist/server/src/lib/db/chat-db.js +75 -1
  416. package/dist/server/src/lib/db/db.js +4 -3
  417. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +122 -4
  418. package/dist/server/src/lib/detection/prompt-detector.js +39 -3
  419. package/dist/server/src/lib/polling/auto-yes-resolver.js +14 -5
  420. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +54 -0
  421. package/dist/server/src/lib/session/current-output-builder.js +2 -0
  422. package/dist/server/src/lib/skills/install-apply.js +63 -23
  423. package/dist/server/src/lib/skills/operation-audit.js +5 -6
  424. package/dist/server/src/lib/skills/startup-reconcile.js +26 -5
  425. package/dist/server/src/lib/skills/updater.js +830 -0
  426. package/package.json +1 -1
  427. package/.next/server/chunks/3042.js +0 -1
  428. package/.next/server/chunks/4440.js +0 -2
  429. package/.next/server/chunks/4548.js +0 -1
  430. package/.next/server/chunks/5793.js +0 -1
  431. package/.next/static/chunks/2751-7fabd91275b14ca3.js +0 -1
  432. package/.next/static/chunks/app/api/app/update/route-5bdd550ed6386f57.js +0 -1
  433. package/.next/static/chunks/app/api/app/update-check/route-5bdd550ed6386f57.js +0 -1
  434. package/.next/static/chunks/app/api/assistant/conversation/route-5bdd550ed6386f57.js +0 -1
  435. package/.next/static/chunks/app/api/assistant/current-output/route-5bdd550ed6386f57.js +0 -1
  436. package/.next/static/chunks/app/api/assistant/messages/route-5bdd550ed6386f57.js +0 -1
  437. package/.next/static/chunks/app/api/assistant/session/route-5bdd550ed6386f57.js +0 -1
  438. package/.next/static/chunks/app/api/assistant/start/route-5bdd550ed6386f57.js +0 -1
  439. package/.next/static/chunks/app/api/assistant/terminal/route-5bdd550ed6386f57.js +0 -1
  440. package/.next/static/chunks/app/api/assistant/tools/route-5bdd550ed6386f57.js +0 -1
  441. package/.next/static/chunks/app/api/auth/login/route-5bdd550ed6386f57.js +0 -1
  442. package/.next/static/chunks/app/api/auth/logout/route-5bdd550ed6386f57.js +0 -1
  443. package/.next/static/chunks/app/api/auth/status/route-5bdd550ed6386f57.js +0 -1
  444. package/.next/static/chunks/app/api/daily-summary/route-5bdd550ed6386f57.js +0 -1
  445. package/.next/static/chunks/app/api/daily-summary/status/route-5bdd550ed6386f57.js +0 -1
  446. package/.next/static/chunks/app/api/external-apps/[id]/health/route-5bdd550ed6386f57.js +0 -1
  447. package/.next/static/chunks/app/api/external-apps/[id]/route-5bdd550ed6386f57.js +0 -1
  448. package/.next/static/chunks/app/api/external-apps/route-5bdd550ed6386f57.js +0 -1
  449. package/.next/static/chunks/app/api/fs/browse/route-5bdd550ed6386f57.js +0 -1
  450. package/.next/static/chunks/app/api/fs/recent-paths/route-5bdd550ed6386f57.js +0 -1
  451. package/.next/static/chunks/app/api/hooks/agent-event/route-5bdd550ed6386f57.js +0 -1
  452. package/.next/static/chunks/app/api/hooks/claude-done/route-5bdd550ed6386f57.js +0 -1
  453. package/.next/static/chunks/app/api/metrics/vibe/route-5bdd550ed6386f57.js +0 -1
  454. package/.next/static/chunks/app/api/ollama/models/route-5bdd550ed6386f57.js +0 -1
  455. package/.next/static/chunks/app/api/push/subscriptions/route-5bdd550ed6386f57.js +0 -1
  456. package/.next/static/chunks/app/api/push/vapid/route-5bdd550ed6386f57.js +0 -1
  457. package/.next/static/chunks/app/api/repositories/[id]/route-5bdd550ed6386f57.js +0 -1
  458. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-5bdd550ed6386f57.js +0 -1
  459. package/.next/static/chunks/app/api/repositories/[id]/todos/route-5bdd550ed6386f57.js +0 -1
  460. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-5bdd550ed6386f57.js +0 -1
  461. package/.next/static/chunks/app/api/repositories/clone/route-5bdd550ed6386f57.js +0 -1
  462. package/.next/static/chunks/app/api/repositories/excluded/route-5bdd550ed6386f57.js +0 -1
  463. package/.next/static/chunks/app/api/repositories/restore/route-5bdd550ed6386f57.js +0 -1
  464. package/.next/static/chunks/app/api/repositories/route-5bdd550ed6386f57.js +0 -1
  465. package/.next/static/chunks/app/api/repositories/scan/route-5bdd550ed6386f57.js +0 -1
  466. package/.next/static/chunks/app/api/repositories/sync/route-5bdd550ed6386f57.js +0 -1
  467. package/.next/static/chunks/app/api/repositories/validate-path/route-5bdd550ed6386f57.js +0 -1
  468. package/.next/static/chunks/app/api/sidebar/group-order/route-5bdd550ed6386f57.js +0 -1
  469. package/.next/static/chunks/app/api/skills/[id]/route-5bdd550ed6386f57.js +0 -1
  470. package/.next/static/chunks/app/api/skills/installations/route-5bdd550ed6386f57.js +0 -1
  471. package/.next/static/chunks/app/api/skills/operations/route-5bdd550ed6386f57.js +0 -1
  472. package/.next/static/chunks/app/api/skills/reindex/route-5bdd550ed6386f57.js +0 -1
  473. package/.next/static/chunks/app/api/skills/route-5bdd550ed6386f57.js +0 -1
  474. package/.next/static/chunks/app/api/slash-commands/route-5bdd550ed6386f57.js +0 -1
  475. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-5bdd550ed6386f57.js +0 -1
  476. package/.next/static/chunks/app/api/tasks/[taskId]/route-5bdd550ed6386f57.js +0 -1
  477. package/.next/static/chunks/app/api/templates/[id]/route-5bdd550ed6386f57.js +0 -1
  478. package/.next/static/chunks/app/api/templates/route-5bdd550ed6386f57.js +0 -1
  479. package/.next/static/chunks/app/api/todos/route-5bdd550ed6386f57.js +0 -1
  480. package/.next/static/chunks/app/api/verification/runs/[runId]/route-5bdd550ed6386f57.js +0 -1
  481. package/.next/static/chunks/app/api/verification/runs/route-5bdd550ed6386f57.js +0 -1
  482. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-5bdd550ed6386f57.js +0 -1
  483. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-5bdd550ed6386f57.js +0 -1
  484. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-5bdd550ed6386f57.js +0 -1
  485. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-5bdd550ed6386f57.js +0 -1
  486. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-5bdd550ed6386f57.js +0 -1
  487. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-5bdd550ed6386f57.js +0 -1
  488. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-5bdd550ed6386f57.js +0 -1
  489. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-5bdd550ed6386f57.js +0 -1
  490. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-5bdd550ed6386f57.js +0 -1
  491. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-5bdd550ed6386f57.js +0 -1
  492. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-5bdd550ed6386f57.js +0 -1
  493. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-5bdd550ed6386f57.js +0 -1
  494. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-5bdd550ed6386f57.js +0 -1
  495. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-5bdd550ed6386f57.js +0 -1
  496. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-5bdd550ed6386f57.js +0 -1
  497. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-5bdd550ed6386f57.js +0 -1
  498. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-5bdd550ed6386f57.js +0 -1
  499. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-5bdd550ed6386f57.js +0 -1
  500. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-5bdd550ed6386f57.js +0 -1
  501. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-5bdd550ed6386f57.js +0 -1
  502. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-5bdd550ed6386f57.js +0 -1
  503. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-5bdd550ed6386f57.js +0 -1
  504. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-5bdd550ed6386f57.js +0 -1
  505. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-5bdd550ed6386f57.js +0 -1
  506. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-5bdd550ed6386f57.js +0 -1
  507. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-5bdd550ed6386f57.js +0 -1
  508. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-5bdd550ed6386f57.js +0 -1
  509. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-5bdd550ed6386f57.js +0 -1
  510. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-5bdd550ed6386f57.js +0 -1
  511. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-5bdd550ed6386f57.js +0 -1
  512. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-5bdd550ed6386f57.js +0 -1
  513. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-5bdd550ed6386f57.js +0 -1
  514. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-5bdd550ed6386f57.js +0 -1
  515. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-5bdd550ed6386f57.js +0 -1
  516. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-5bdd550ed6386f57.js +0 -1
  517. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-5bdd550ed6386f57.js +0 -1
  518. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-5bdd550ed6386f57.js +0 -1
  519. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-5bdd550ed6386f57.js +0 -1
  520. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-5bdd550ed6386f57.js +0 -1
  521. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-5bdd550ed6386f57.js +0 -1
  522. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-5bdd550ed6386f57.js +0 -1
  523. package/.next/static/chunks/app/api/worktrees/[id]/route-5bdd550ed6386f57.js +0 -1
  524. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-5bdd550ed6386f57.js +0 -1
  525. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-5bdd550ed6386f57.js +0 -1
  526. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-5bdd550ed6386f57.js +0 -1
  527. package/.next/static/chunks/app/api/worktrees/[id]/search/route-5bdd550ed6386f57.js +0 -1
  528. package/.next/static/chunks/app/api/worktrees/[id]/send/route-5bdd550ed6386f57.js +0 -1
  529. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-5bdd550ed6386f57.js +0 -1
  530. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-5bdd550ed6386f57.js +0 -1
  531. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-5bdd550ed6386f57.js +0 -1
  532. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-5bdd550ed6386f57.js +0 -1
  533. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-5bdd550ed6386f57.js +0 -1
  534. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-5bdd550ed6386f57.js +0 -1
  535. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-5bdd550ed6386f57.js +0 -1
  536. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-5bdd550ed6386f57.js +0 -1
  537. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-5bdd550ed6386f57.js +0 -1
  538. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-5bdd550ed6386f57.js +0 -1
  539. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-5bdd550ed6386f57.js +0 -1
  540. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-5bdd550ed6386f57.js +0 -1
  541. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-5bdd550ed6386f57.js +0 -1
  542. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-5bdd550ed6386f57.js +0 -1
  543. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-5bdd550ed6386f57.js +0 -1
  544. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-5bdd550ed6386f57.js +0 -1
  545. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-5bdd550ed6386f57.js +0 -1
  546. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-5bdd550ed6386f57.js +0 -1
  547. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-5bdd550ed6386f57.js +0 -1
  548. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-5bdd550ed6386f57.js +0 -1
  549. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-5bdd550ed6386f57.js +0 -1
  550. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-5bdd550ed6386f57.js +0 -1
  551. package/.next/static/chunks/app/api/worktrees/route-5bdd550ed6386f57.js +0 -1
  552. package/.next/static/chunks/app/manifest.webmanifest/route-5bdd550ed6386f57.js +0 -1
  553. package/.next/static/chunks/app/proxy/[...path]/route-5bdd550ed6386f57.js +0 -1
  554. package/.next/static/chunks/app/skills/[skillId]/page-6008b904225ebb25.js +0 -1
  555. package/.next/static/chunks/app/worktrees/[id]/layout-5bdd550ed6386f57.js +0 -1
  556. package/.next/static/chunks/app/worktrees/[id]/page-214ee8b97dca856b.js +0 -1
  557. /package/.next/static/{C01FQOE5FCmB3I_GhMa4_ → E2SxtJGbNcRMnWbCC3i_-}/_buildManifest.js +0 -0
  558. /package/.next/static/{C01FQOE5FCmB3I_GhMa4_ → E2SxtJGbNcRMnWbCC3i_-}/_ssgManifest.js +0 -0
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/" | "/chat" | "/login" | "/more" | "/offline" | "/repositories" | "/review" | "/sessions" | "/skills" | "/skills/[skillId]" | "/skills/installed" | "/worktrees/[id]" | "/worktrees/[id]/files/[...path]" | "/worktrees/[id]/terminal"
5
- type AppRouteHandlerRoutes = "/api/app/update" | "/api/app/update-check" | "/api/assistant/conversation" | "/api/assistant/current-output" | "/api/assistant/messages" | "/api/assistant/session" | "/api/assistant/start" | "/api/assistant/terminal" | "/api/assistant/tools" | "/api/auth/login" | "/api/auth/logout" | "/api/auth/status" | "/api/daily-summary" | "/api/daily-summary/status" | "/api/external-apps" | "/api/external-apps/[id]" | "/api/external-apps/[id]/health" | "/api/fs/browse" | "/api/fs/recent-paths" | "/api/hooks/agent-event" | "/api/hooks/claude-done" | "/api/metrics/vibe" | "/api/ollama/models" | "/api/push/subscriptions" | "/api/push/vapid" | "/api/repositories" | "/api/repositories/[id]" | "/api/repositories/[id]/todos" | "/api/repositories/[id]/todos/[todoId]" | "/api/repositories/clone" | "/api/repositories/clone/[jobId]" | "/api/repositories/excluded" | "/api/repositories/restore" | "/api/repositories/scan" | "/api/repositories/sync" | "/api/repositories/validate-path" | "/api/sidebar/group-order" | "/api/skills" | "/api/skills/[id]" | "/api/skills/installations" | "/api/skills/operations" | "/api/skills/reindex" | "/api/slash-commands" | "/api/tasks/[taskId]" | "/api/tasks/[taskId]/cancel" | "/api/templates" | "/api/templates/[id]" | "/api/todos" | "/api/verification/runs" | "/api/verification/runs/[runId]" | "/api/worktrees" | "/api/worktrees/[id]" | "/api/worktrees/[id]/auto-yes" | "/api/worktrees/[id]/capture" | "/api/worktrees/[id]/cli-tool" | "/api/worktrees/[id]/cmate/schedules" | "/api/worktrees/[id]/current-output" | "/api/worktrees/[id]/execution-logs" | "/api/worktrees/[id]/execution-logs/[logId]" | "/api/worktrees/[id]/files/[...path]" | "/api/worktrees/[id]/git/branch/create" | "/api/worktrees/[id]/git/branch/delete" | "/api/worktrees/[id]/git/branches" | "/api/worktrees/[id]/git/checkout" | "/api/worktrees/[id]/git/commit" | "/api/worktrees/[id]/git/diff" | "/api/worktrees/[id]/git/fetch" | "/api/worktrees/[id]/git/log" | "/api/worktrees/[id]/git/pull" | "/api/worktrees/[id]/git/push" | "/api/worktrees/[id]/git/reset" | "/api/worktrees/[id]/git/revert" | "/api/worktrees/[id]/git/show/[commitHash]" | "/api/worktrees/[id]/git/stage" | "/api/worktrees/[id]/git/staged" | "/api/worktrees/[id]/git/stash" | "/api/worktrees/[id]/git/stash/[index]" | "/api/worktrees/[id]/git/stash/apply" | "/api/worktrees/[id]/git/stash/pop" | "/api/worktrees/[id]/git/stash/push" | "/api/worktrees/[id]/git/status" | "/api/worktrees/[id]/git/unstage" | "/api/worktrees/[id]/git/working-diff" | "/api/worktrees/[id]/interrupt" | "/api/worktrees/[id]/kill-session" | "/api/worktrees/[id]/logs" | "/api/worktrees/[id]/logs/[filename]" | "/api/worktrees/[id]/marp-render" | "/api/worktrees/[id]/memos" | "/api/worktrees/[id]/memos/[memoId]" | "/api/worktrees/[id]/messages" | "/api/worktrees/[id]/prompt-response" | "/api/worktrees/[id]/respond" | "/api/worktrees/[id]/schedules" | "/api/worktrees/[id]/schedules/[scheduleId]" | "/api/worktrees/[id]/schedules/active" | "/api/worktrees/[id]/search" | "/api/worktrees/[id]/send" | "/api/worktrees/[id]/skills" | "/api/worktrees/[id]/skills/[skillId]/git-workflow" | "/api/worktrees/[id]/skills/[skillId]/install" | "/api/worktrees/[id]/skills/[skillId]/plan" | "/api/worktrees/[id]/skills/[skillId]/uninstall" | "/api/worktrees/[id]/skills/[skillId]/uninstall-plan" | "/api/worktrees/[id]/slash-commands" | "/api/worktrees/[id]/special-keys" | "/api/worktrees/[id]/start-polling" | "/api/worktrees/[id]/tasks" | "/api/worktrees/[id]/terminal" | "/api/worktrees/[id]/timers" | "/api/worktrees/[id]/timers/history" | "/api/worktrees/[id]/todos" | "/api/worktrees/[id]/todos/[todoId]" | "/api/worktrees/[id]/tree" | "/api/worktrees/[id]/tree/[...path]" | "/api/worktrees/[id]/upload/[...path]" | "/api/worktrees/[id]/verify" | "/api/worktrees/[id]/verify/runs" | "/api/worktrees/[id]/verify/runs/[runId]" | "/api/worktrees/[id]/viewed" | "/proxy/[...path]"
5
+ type AppRouteHandlerRoutes = "/api/app/update" | "/api/app/update-check" | "/api/assistant/conversation" | "/api/assistant/current-output" | "/api/assistant/messages" | "/api/assistant/session" | "/api/assistant/start" | "/api/assistant/terminal" | "/api/assistant/tools" | "/api/auth/login" | "/api/auth/logout" | "/api/auth/status" | "/api/daily-summary" | "/api/daily-summary/status" | "/api/external-apps" | "/api/external-apps/[id]" | "/api/external-apps/[id]/health" | "/api/fs/browse" | "/api/fs/recent-paths" | "/api/hooks/agent-event" | "/api/hooks/claude-done" | "/api/metrics/vibe" | "/api/ollama/models" | "/api/push/subscriptions" | "/api/push/vapid" | "/api/repositories" | "/api/repositories/[id]" | "/api/repositories/[id]/todos" | "/api/repositories/[id]/todos/[todoId]" | "/api/repositories/clone" | "/api/repositories/clone/[jobId]" | "/api/repositories/excluded" | "/api/repositories/restore" | "/api/repositories/scan" | "/api/repositories/sync" | "/api/repositories/validate-path" | "/api/sidebar/group-order" | "/api/skills" | "/api/skills/[id]" | "/api/skills/installations" | "/api/skills/operations" | "/api/skills/reindex" | "/api/slash-commands" | "/api/tasks/[taskId]" | "/api/tasks/[taskId]/cancel" | "/api/templates" | "/api/templates/[id]" | "/api/todos" | "/api/verification/runs" | "/api/verification/runs/[runId]" | "/api/worktrees" | "/api/worktrees/[id]" | "/api/worktrees/[id]/auto-yes" | "/api/worktrees/[id]/capture" | "/api/worktrees/[id]/cli-tool" | "/api/worktrees/[id]/cmate/schedules" | "/api/worktrees/[id]/current-output" | "/api/worktrees/[id]/execution-logs" | "/api/worktrees/[id]/execution-logs/[logId]" | "/api/worktrees/[id]/files/[...path]" | "/api/worktrees/[id]/git/branch/create" | "/api/worktrees/[id]/git/branch/delete" | "/api/worktrees/[id]/git/branches" | "/api/worktrees/[id]/git/checkout" | "/api/worktrees/[id]/git/commit" | "/api/worktrees/[id]/git/diff" | "/api/worktrees/[id]/git/fetch" | "/api/worktrees/[id]/git/log" | "/api/worktrees/[id]/git/pull" | "/api/worktrees/[id]/git/push" | "/api/worktrees/[id]/git/reset" | "/api/worktrees/[id]/git/revert" | "/api/worktrees/[id]/git/show/[commitHash]" | "/api/worktrees/[id]/git/stage" | "/api/worktrees/[id]/git/staged" | "/api/worktrees/[id]/git/stash" | "/api/worktrees/[id]/git/stash/[index]" | "/api/worktrees/[id]/git/stash/apply" | "/api/worktrees/[id]/git/stash/pop" | "/api/worktrees/[id]/git/stash/push" | "/api/worktrees/[id]/git/status" | "/api/worktrees/[id]/git/unstage" | "/api/worktrees/[id]/git/working-diff" | "/api/worktrees/[id]/interrupt" | "/api/worktrees/[id]/kill-session" | "/api/worktrees/[id]/logs" | "/api/worktrees/[id]/logs/[filename]" | "/api/worktrees/[id]/marp-render" | "/api/worktrees/[id]/memos" | "/api/worktrees/[id]/memos/[memoId]" | "/api/worktrees/[id]/messages" | "/api/worktrees/[id]/prompt-response" | "/api/worktrees/[id]/respond" | "/api/worktrees/[id]/schedules" | "/api/worktrees/[id]/schedules/[scheduleId]" | "/api/worktrees/[id]/schedules/active" | "/api/worktrees/[id]/search" | "/api/worktrees/[id]/send" | "/api/worktrees/[id]/skills" | "/api/worktrees/[id]/skills/[skillId]/git-workflow" | "/api/worktrees/[id]/skills/[skillId]/install" | "/api/worktrees/[id]/skills/[skillId]/plan" | "/api/worktrees/[id]/skills/[skillId]/uninstall" | "/api/worktrees/[id]/skills/[skillId]/uninstall-plan" | "/api/worktrees/[id]/skills/[skillId]/update" | "/api/worktrees/[id]/skills/[skillId]/update-plan" | "/api/worktrees/[id]/slash-commands" | "/api/worktrees/[id]/special-keys" | "/api/worktrees/[id]/start-polling" | "/api/worktrees/[id]/tasks" | "/api/worktrees/[id]/terminal" | "/api/worktrees/[id]/timers" | "/api/worktrees/[id]/timers/history" | "/api/worktrees/[id]/todos" | "/api/worktrees/[id]/todos/[todoId]" | "/api/worktrees/[id]/tree" | "/api/worktrees/[id]/tree/[...path]" | "/api/worktrees/[id]/upload/[...path]" | "/api/worktrees/[id]/verify" | "/api/worktrees/[id]/verify/runs" | "/api/worktrees/[id]/verify/runs/[runId]" | "/api/worktrees/[id]/viewed" | "/proxy/[...path]"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/" | "/worktrees/[id]"
8
8
  type RedirectRoutes = never
@@ -116,6 +116,8 @@ interface ParamMap {
116
116
  "/api/worktrees/[id]/skills/[skillId]/plan": { "id": string; "skillId": string; }
117
117
  "/api/worktrees/[id]/skills/[skillId]/uninstall": { "id": string; "skillId": string; }
118
118
  "/api/worktrees/[id]/skills/[skillId]/uninstall-plan": { "id": string; "skillId": string; }
119
+ "/api/worktrees/[id]/skills/[skillId]/update": { "id": string; "skillId": string; }
120
+ "/api/worktrees/[id]/skills/[skillId]/update-plan": { "id": string; "skillId": string; }
119
121
  "/api/worktrees/[id]/slash-commands": { "id": string; }
120
122
  "/api/worktrees/[id]/special-keys": { "id": string; }
121
123
  "/api/worktrees/[id]/start-polling": { "id": string; }
@@ -1091,6 +1091,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
1091
1091
  type __Unused = __Check
1092
1092
  }
1093
1093
 
1094
+ // Validate ../../src/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.ts
1095
+ {
1096
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/skills/[skillId]/update-plan">> = Specific
1097
+ const handler = {} as typeof import("../../src/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js")
1098
+ type __Check = __IsExpected<typeof handler>
1099
+ // @ts-ignore
1100
+ type __Unused = __Check
1101
+ }
1102
+
1103
+ // Validate ../../src/app/api/worktrees/[id]/skills/[skillId]/update/route.ts
1104
+ {
1105
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/skills/[skillId]/update">> = Specific
1106
+ const handler = {} as typeof import("../../src/app/api/worktrees/[id]/skills/[skillId]/update/route.js")
1107
+ type __Check = __IsExpected<typeof handler>
1108
+ // @ts-ignore
1109
+ type __Unused = __Check
1110
+ }
1111
+
1094
1112
  // Validate ../../src/app/api/worktrees/[id]/skills/route.ts
1095
1113
  {
1096
1114
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/skills">> = Specific
@@ -21,7 +21,7 @@ function createAutoYesCommand() {
21
21
  .option('--enable', 'Enable auto-yes')
22
22
  .option('--disable', 'Disable auto-yes')
23
23
  .option('--duration <duration>', `Duration (${duration_constants_1.ALLOWED_DURATIONS.join(', ')})`)
24
- .option('--stop-pattern <pattern>', 'Stop pattern (regex, max 500 chars)')
24
+ .option('--stop-pattern <pattern>', 'Stop pattern (regex, max 500 chars). Matched against terminal output; cannot block commands (build logs mentioning the pattern also trigger it). To suppress auto-responses per command, use the task contract\'s autoYes.denyPatterns')
25
25
  .option('--instance <id>', agent_target_options_1.INSTANCE_OPTION_DESCRIPTION)
26
26
  .option('--agent <agent>', agent_target_options_1.AGENT_OPTION_DESCRIPTION)
27
27
  .option('--token <token>', command_helpers_1.TOKEN_WARNING)
@@ -2,6 +2,7 @@
2
2
  * capture Command - Get current terminal output
3
3
  * Issue #518: [DR1-08] Factory pattern
4
4
  * Issue #1623: `--pane` reads the raw tmux pane as a transcript (案B)
5
+ * Issue #1685: `--prompts` lists the resolved-prompt audit trail
5
6
  */
6
7
  import { Command } from 'commander';
7
8
  export declare function createCaptureCommand(): Command;
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/capture.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8HpC,wBAAgB,oBAAoB,IAAI,OAAO,CA+E9C"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/capture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8OpC,wBAAgB,oBAAoB,IAAI,OAAO,CAkG9C"}
@@ -3,11 +3,13 @@
3
3
  * capture Command - Get current terminal output
4
4
  * Issue #518: [DR1-08] Factory pattern
5
5
  * Issue #1623: `--pane` reads the raw tmux pane as a transcript (案B)
6
+ * Issue #1685: `--prompts` lists the resolved-prompt audit trail
6
7
  */
7
8
  Object.defineProperty(exports, "__esModule", { value: true });
8
9
  exports.createCaptureCommand = createCaptureCommand;
9
10
  const commander_1 = require("commander");
10
11
  const types_1 = require("../types");
12
+ const history_display_config_1 = require("../../config/history-display-config");
11
13
  const api_client_1 = require("../utils/api-client");
12
14
  const command_helpers_1 = require("../utils/command-helpers");
13
15
  const cli_tool_ids_1 = require("../config/cli-tool-ids");
@@ -73,6 +75,99 @@ async function resolvePaneCliTool(client, worktreeId, agent, instance) {
73
75
  const worktree = await client.get(`/api/worktrees/${worktreeId}`);
74
76
  return worktree.cliToolId || 'claude';
75
77
  }
78
+ /** Default number of prompts `--prompts` lists (Issue #1685). */
79
+ const DEFAULT_PROMPTS_LIMIT = 20;
80
+ /**
81
+ * Parse and validate `--limit N` for the `--prompts` listing.
82
+ *
83
+ * @param raw - Raw option value, if the user passed one
84
+ * @returns The parsed count (defaults to {@link DEFAULT_PROMPTS_LIMIT})
85
+ */
86
+ function parsePromptsLimit(raw) {
87
+ if (raw === undefined)
88
+ return DEFAULT_PROMPTS_LIMIT;
89
+ const value = Number(raw);
90
+ if (!Number.isInteger(value) || value < 1 || value > history_display_config_1.MAX_MESSAGES_LIMIT) {
91
+ console.error(`Error: --limit must be an integer between 1 and ${history_display_config_1.MAX_MESSAGES_LIMIT}.`);
92
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
93
+ }
94
+ return value;
95
+ }
96
+ /**
97
+ * Render one prompt option for the text listing. Handles both the
98
+ * multiple-choice object shape ({number, label, isDefault}) and plain strings
99
+ * (yes_no options).
100
+ */
101
+ function formatPromptOption(option) {
102
+ if (option !== null && typeof option === 'object') {
103
+ const { number: num, label, isDefault } = option;
104
+ const body = `${num !== undefined ? `${num}) ` : ''}${label ?? ''}`.trim();
105
+ return isDefault ? `${body} (default)` : body;
106
+ }
107
+ return String(option);
108
+ }
109
+ /**
110
+ * `--prompts` path (Issue #1685): list the resolved-prompt audit trail.
111
+ *
112
+ * Reads prompt messages from chat history instead of the live pane, so the
113
+ * question / options / answer / answeredBy of a prompt Auto-Yes already
114
+ * resolved remain retrievable after the fact — the case where `wait` never
115
+ * exited 10 and `capture --json`'s promptData is already null.
116
+ */
117
+ async function capturePrompts(worktreeId, options) {
118
+ const client = new api_client_1.ApiClient({ token: options.token });
119
+ const limit = parsePromptsLimit(options.limit);
120
+ const query = new URLSearchParams({ messageType: 'prompt', limit: String(limit) });
121
+ if (options.agent)
122
+ query.set('cliTool', options.agent);
123
+ if (options.instance)
124
+ query.set('instance', options.instance);
125
+ const messages = await client.get(`/api/worktrees/${worktreeId}/messages?${query.toString()}`);
126
+ // Defensive: the endpoint already filters, but promptData-less rows would
127
+ // render as empty entries.
128
+ const prompts = messages.filter((m) => m.messageType === 'prompt' && m.promptData);
129
+ if (options.json) {
130
+ console.log(JSON.stringify({
131
+ worktreeId,
132
+ count: prompts.length,
133
+ prompts: prompts.map((m) => ({
134
+ id: m.id,
135
+ timestamp: m.timestamp,
136
+ cliToolId: m.cliToolId ?? null,
137
+ instanceId: m.instanceId ?? null,
138
+ type: m.promptData.type,
139
+ question: m.promptData.question,
140
+ options: m.promptData.options ?? null,
141
+ status: m.promptData.status ?? null,
142
+ answer: m.promptData.answer ?? null,
143
+ answeredAt: m.promptData.answeredAt ?? null,
144
+ answeredBy: m.promptData.answeredBy ?? null,
145
+ // Issue #1699: what the contract's denyPatterns were judged against.
146
+ // Null on rows recorded before the field existed.
147
+ approvalTarget: m.promptData.approvalTarget ?? null,
148
+ })),
149
+ }, null, 2));
150
+ return;
151
+ }
152
+ if (prompts.length === 0) {
153
+ console.log('No prompt history.');
154
+ return;
155
+ }
156
+ const blocks = prompts.map((m) => {
157
+ const p = m.promptData;
158
+ const answered = p.status === 'answered';
159
+ const header = `${m.timestamp} ${m.cliToolId ?? '-'}/${m.instanceId ?? '-'} [${answered ? `answered:${p.answeredBy ?? 'unknown'}` : 'pending'}]`;
160
+ const lines = [header, ` Q: ${p.question}`];
161
+ if (Array.isArray(p.options) && p.options.length > 0) {
162
+ lines.push(` options: ${p.options.map(formatPromptOption).join(' ')}`);
163
+ }
164
+ if (answered) {
165
+ lines.push(` A: ${p.answer ?? '-'}${p.answeredAt ? ` (${p.answeredAt})` : ''}`);
166
+ }
167
+ return lines.join('\n');
168
+ });
169
+ console.log(blocks.join('\n'));
170
+ }
76
171
  /**
77
172
  * `--pane` path: read the raw tmux pane and render it as a readable transcript.
78
173
  *
@@ -117,6 +212,9 @@ function createCaptureCommand() {
117
212
  .option('--pane', 'Read the raw tmux pane as a transcript, with blank layout rows squeezed')
118
213
  .option('--tail <n>', 'With --pane: keep only the last N lines OF THE SQUEEZED transcript')
119
214
  .option('--raw', 'With --pane: skip the squeeze and print the pane verbatim')
215
+ // Issue #1685: audit trail of resolved prompts (question/options/answer/answeredBy)
216
+ .option('--prompts', 'List recent prompts from chat history (including ones Auto-Yes already resolved)')
217
+ .option('--limit <n>', `With --prompts: number of most recent prompts to list (default ${DEFAULT_PROMPTS_LIMIT})`)
120
218
  .option('--instance <id>', agent_target_options_1.INSTANCE_OPTION_DESCRIPTION)
121
219
  .option('--agent <agent>', agent_target_options_1.AGENT_OPTION_DESCRIPTION)
122
220
  .option('--token <token>', command_helpers_1.TOKEN_WARNING)
@@ -142,6 +240,20 @@ function createCaptureCommand() {
142
240
  console.error('Error: --tail and --raw require --pane.');
143
241
  process.exit(types_1.ExitCode.CONFIG_ERROR);
144
242
  }
243
+ // Issue #1685: --prompts reads history, --pane reads the live pane —
244
+ // asking for both at once has no meaningful answer.
245
+ if (options.prompts && options.pane) {
246
+ console.error('Error: --prompts cannot be combined with --pane.');
247
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
248
+ }
249
+ if (!options.prompts && options.limit !== undefined) {
250
+ console.error('Error: --limit requires --prompts.');
251
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
252
+ }
253
+ if (options.prompts) {
254
+ await capturePrompts(worktreeId, options);
255
+ return;
256
+ }
145
257
  if (options.pane) {
146
258
  await capturePane(worktreeId, options);
147
259
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,oBAAoB,IAAI,OAAO,CAyE9C"}
1
+ {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,oBAAoB,IAAI,OAAO,CAgG9C"}
@@ -19,7 +19,8 @@ function createRespondCommand() {
19
19
  cmd
20
20
  .description("Respond to an agent's prompt (yes/no, number, or text)")
21
21
  .argument('<worktree-id>', 'Worktree ID')
22
- .argument('<answer>', 'Response answer (yes, no, number, or free text)')
22
+ .argument('[answer]', 'Response answer (yes, no, number, or free text)')
23
+ .option('--default', "Select the prompt's default option (mutually exclusive with <answer>)")
23
24
  .option('--instance <id>', agent_target_options_1.INSTANCE_OPTION_DESCRIPTION)
24
25
  .option('--agent <agent>', agent_target_options_1.AGENT_OPTION_DESCRIPTION)
25
26
  .option('--token <token>', command_helpers_1.TOKEN_WARNING)
@@ -40,9 +41,14 @@ function createRespondCommand() {
40
41
  console.error('Error: Invalid --instance. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
41
42
  process.exit(types_1.ExitCode.CONFIG_ERROR);
42
43
  }
43
- // Validate answer is not empty
44
- if (!answer.trim()) {
45
- console.error('Error: Answer cannot be empty.');
44
+ // Issue #1681: exactly one of <answer> / --default
45
+ const useDefault = options.default === true;
46
+ if (useDefault && answer !== undefined) {
47
+ console.error('Error: <answer> and --default are mutually exclusive.');
48
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
49
+ }
50
+ if (!useDefault && (answer === undefined || !answer.trim())) {
51
+ console.error('Error: Answer cannot be empty. Provide an answer or --default.');
46
52
  process.exit(types_1.ExitCode.CONFIG_ERROR);
47
53
  }
48
54
  const client = new api_client_1.ApiClient({ token: options.token });
@@ -54,7 +60,7 @@ function createRespondCommand() {
54
60
  ? await (0, instances_1.resolveInstanceCliTool)(client, worktreeId, options.instance, options.agent)
55
61
  : options.agent;
56
62
  // [DR2-06] Use prompt-response API with cliTool (not cliToolId)
57
- const body = { answer };
63
+ const body = useDefault ? { useDefault: true } : { answer };
58
64
  if (agent) {
59
65
  body.cliTool = agent;
60
66
  }
@@ -66,9 +72,28 @@ function createRespondCommand() {
66
72
  if (result && !result.success) {
67
73
  // [DR2-06] Check reason for failure
68
74
  const reason = result.reason || 'unknown';
69
- console.error(`Warning: Response may not have been applied. Reason: ${reason}`);
75
+ if (reason === 'unresolvable_answer') {
76
+ // Issue #1681: nothing was sent to the terminal.
77
+ console.error(`Error: Answer was not sent. Reason: ${reason}${result.message ? ` (${result.message})` : ''}`);
78
+ }
79
+ else {
80
+ console.error(`Warning: Response may not have been applied. Reason: ${reason}`);
81
+ }
70
82
  process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
71
83
  }
84
+ // Issue #1681: audit trail — print which option was actually selected.
85
+ const resolved = result?.resolved;
86
+ if (resolved) {
87
+ if (resolved.via === 'semantic') {
88
+ console.log(`Resolved "${answer}" to option ${resolved.optionNumber}: ${resolved.optionLabel}`);
89
+ }
90
+ else if (resolved.optionNumber !== undefined) {
91
+ console.log(`Selected default option ${resolved.optionNumber}: ${resolved.optionLabel}`);
92
+ }
93
+ else {
94
+ console.log(`Selected default answer: ${resolved.optionLabel}`);
95
+ }
96
+ }
72
97
  console.error('Response sent.');
73
98
  }
74
99
  catch (error) {
@@ -137,9 +137,9 @@ function createSendCommand() {
137
137
  .option('--agent <agent>', agent_target_options_1.AGENT_OPTION_DESCRIPTION)
138
138
  .option('--register', 'Register the --instance session into the agent-instance roster (needs --agent unless the instance id is itself a CLI tool id)')
139
139
  .option('--model <model>', 'Specify AI model for Copilot or Antigravity agent')
140
- .option('--auto-yes', 'Enable auto-yes before sending')
140
+ .option('--auto-yes', 'Enable auto-yes before sending (session-wide, no policy guard; for unattended runs prefer --contract with an autoYes policy)')
141
141
  .option('--duration <duration>', `Auto-yes duration (${duration_constants_1.ALLOWED_DURATIONS.join(', ')})`)
142
- .option('--stop-pattern <pattern>', 'Auto-yes stop pattern (regex)')
142
+ .option('--stop-pattern <pattern>', 'Auto-yes stop pattern (regex). Matched against terminal output; cannot block commands (use the task contract\'s autoYes.denyPatterns for that)')
143
143
  .option('--contract <path>', 'Execution contract path relative to the worktree root (e.g. .commandmate/tasks/my-task.yaml). Records a task and sends the contract preamble plus its goal.')
144
144
  .option('--token <token>', command_helpers_1.TOKEN_WARNING)
145
145
  .action(async (worktreeId, message, options) => {
@@ -7,7 +7,7 @@
7
7
  * Nothing here prints an absolute path, a token or an artifact URL: the API does
8
8
  * not serve them, and these functions must not reconstruct them either.
9
9
  */
10
- import type { SkillCatalogMeta, SkillCatalogSummary, SkillInstallPlan, SkillUninstallPlan } from '../types/api-responses';
10
+ import type { SkillCatalogMeta, SkillCatalogSummary, SkillInstallPlan, SkillUninstallPlan, SkillUpdatePlan } from '../types/api-responses';
11
11
  /**
12
12
  * Freshness notice for a Catalog response, or null when it was confirmed current.
13
13
  * Belongs on stderr: it qualifies the listing rather than being part of it.
@@ -23,6 +23,12 @@ export declare function formatSkillDetail(skill: SkillCatalogSummary, version?:
23
23
  export declare function formatInstallRoots(roots: readonly string[] | undefined, primary: string): string;
24
24
  /** The install preview: what lands, where, at what risk, and what stands in the way. */
25
25
  export declare function formatInstallPlan(plan: SkillInstallPlan): string;
26
+ /**
27
+ * The update preview (Issue #1243): the version move, the security-relevant
28
+ * differences, the file diff totals, and every reason the update is refused.
29
+ * Shows the same facts the browser dialog shows, in the same order.
30
+ */
31
+ export declare function formatUpdatePlan(plan: SkillUpdatePlan): string;
26
32
  /** The uninstall preview: what would be deleted, what would stay, and why. */
27
33
  export declare function formatUninstallPlan(plan: SkillUninstallPlan): string;
28
34
  //# sourceMappingURL=skill-format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-format.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAgBhC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAI/E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAatE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CA2CtF;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA8ChE;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CA2BpE"}
1
+ {"version":3,"file":"skill-format.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAgBhC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAI/E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAatE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CA2CtF;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA8ChE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAwE9D;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CA2BpE"}
@@ -14,6 +14,7 @@ exports.formatSkillTable = formatSkillTable;
14
14
  exports.formatSkillDetail = formatSkillDetail;
15
15
  exports.formatInstallRoots = formatInstallRoots;
16
16
  exports.formatInstallPlan = formatInstallPlan;
17
+ exports.formatUpdatePlan = formatUpdatePlan;
17
18
  exports.formatUninstallPlan = formatUninstallPlan;
18
19
  /** [DR1-08 consistency] Mirrors ls.ts / instances.ts table rendering. */
19
20
  function formatTable(headers, rows) {
@@ -133,6 +134,72 @@ function formatInstallPlan(plan) {
133
134
  }
134
135
  return lines.join('\n');
135
136
  }
137
+ /**
138
+ * The update preview (Issue #1243): the version move, the security-relevant
139
+ * differences, the file diff totals, and every reason the update is refused.
140
+ * Shows the same facts the browser dialog shows, in the same order.
141
+ */
142
+ function formatUpdatePlan(plan) {
143
+ const { skill, target, update, securityDiff, stats } = plan;
144
+ const lines = [
145
+ `Update plan: ${skill.name} (${skill.id}) ${update.fromVersion} -> ${update.toVersion}`,
146
+ '',
147
+ `Target: ${target.repositoryName} / ${target.worktreeName} (${target.worktreeId})`,
148
+ `Branch: ${target.branch ?? `(${target.headState})`}${target.workingTreeDirty ? ' [working tree dirty]' : ''}`,
149
+ `Install root: ${formatInstallRoots(target.installRoots, target.installRoot)}`,
150
+ `Risk: ${securityDiff.risk.from.effective} -> ${securityDiff.risk.to.effective}${securityDiff.risk.increased ? ' [RISK INCREASE]' : ''}`,
151
+ `Compatibility: ${skill.compatibility.commandmate.status} — ${skill.compatibility.commandmate.message}`,
152
+ ];
153
+ if (update.latestVersion && update.latestVersion !== update.toVersion) {
154
+ lines.push(`Newest: ${update.latestVersion} (not selected)`);
155
+ }
156
+ if (securityDiff.permissions.added.length > 0) {
157
+ lines.push(formatList('Perms added: ', securityDiff.permissions.added));
158
+ }
159
+ if (securityDiff.permissions.removed.length > 0) {
160
+ lines.push(formatList('Perms removed:', securityDiff.permissions.removed));
161
+ }
162
+ if (securityDiff.scripts.added.length > 0) {
163
+ lines.push(formatList('New scripts: ', securityDiff.scripts.added));
164
+ }
165
+ if (securityDiff.scripts.removed.length > 0) {
166
+ lines.push(formatList('Scripts gone: ', securityDiff.scripts.removed));
167
+ }
168
+ if (securityDiff.executables.added.length > 0) {
169
+ lines.push(formatList('New execs: ', securityDiff.executables.added));
170
+ }
171
+ lines.push(`Changes: +${stats.added} added, ~${stats.updated} updated, -${stats.removed} removed, =${stats.unchanged} unchanged`);
172
+ const localFindings = stats.localModified + stats.localMissing + stats.localUnknown + stats.irregular;
173
+ if (localFindings > 0) {
174
+ lines.push(`Local: ${stats.localModified} modified, ${stats.localMissing} missing, ${stats.localUnknown} unmanaged, ${stats.irregular} irregular`);
175
+ }
176
+ for (const entry of securityDiff.changelogs) {
177
+ lines.push(`Changelog ${entry.version}:`);
178
+ for (const changelogLine of entry.changelog.split('\n')) {
179
+ lines.push(` ${changelogLine}`);
180
+ }
181
+ }
182
+ if (plan.warnings.length > 0) {
183
+ lines.push(`Warnings: ${plan.warnings.join(', ')}`);
184
+ }
185
+ if (plan.blockers.length > 0) {
186
+ lines.push('Blockers:');
187
+ for (const blocker of plan.blockers) {
188
+ lines.push(` - ${blocker.code}${blocker.detail ? ` (${blocker.detail})` : ''}${blocker.path ? `: ${blocker.path}` : ''}`);
189
+ }
190
+ }
191
+ lines.push(plan.updatable
192
+ ? 'Updatable: yes'
193
+ : 'Updatable: no — nothing would be written');
194
+ if (plan.requiresRiskAcknowledgement) {
195
+ lines.push(`High risk: applying this update will require an explicit acknowledgement of ${skill.id}@${update.toVersion}`);
196
+ }
197
+ if (plan.riskIncreased) {
198
+ lines.push('Risk rises: applying this update will require a separate risk-increase confirmation');
199
+ }
200
+ lines.push(`Next action: ${plan.nextActionKey}`);
201
+ return lines.join('\n');
202
+ }
136
203
  /** The uninstall preview: what would be deleted, what would stay, and why. */
137
204
  function formatUninstallPlan(plan) {
138
205
  const { skill, target, stats } = plan;
@@ -5,6 +5,8 @@
5
5
  * commandmate skill list [--json]
6
6
  * commandmate skill info <skill-id> [--version <v>] [--json]
7
7
  * commandmate skill plan <skill-id> --worktree <id> [--version <v>] [--json]
8
+ * commandmate skill update-plan <skill-id> --worktree <id> [--version <v>] [--range <r>] [--json]
9
+ * commandmate skill update <skill-id> --worktree <id> [--version <v>] [--dry-run] [--yes] [--ack-risk <id>@<version>] [--ack-risk-increase]
8
10
  * commandmate skill install <skill-id> --worktree <id> --version <exact> [--dry-run] [--yes] [--ack-risk <id>@<version>] [--git current|dedicated] [--push] [--pr]
9
11
  * commandmate skill uninstall <skill-id> --worktree <id> [--dry-run] [--yes] [--json]
10
12
  * commandmate skill status <skill-id> --worktree <id> [--json]
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0gBpC,wBAAgB,kBAAkB,IAAI,OAAO,CAkJ5C"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2qBpC,wBAAgB,kBAAkB,IAAI,OAAO,CAgM5C"}
@@ -6,6 +6,8 @@
6
6
  * commandmate skill list [--json]
7
7
  * commandmate skill info <skill-id> [--version <v>] [--json]
8
8
  * commandmate skill plan <skill-id> --worktree <id> [--version <v>] [--json]
9
+ * commandmate skill update-plan <skill-id> --worktree <id> [--version <v>] [--range <r>] [--json]
10
+ * commandmate skill update <skill-id> --worktree <id> [--version <v>] [--dry-run] [--yes] [--ack-risk <id>@<version>] [--ack-risk-increase]
9
11
  * commandmate skill install <skill-id> --worktree <id> --version <exact> [--dry-run] [--yes] [--ack-risk <id>@<version>] [--git current|dedicated] [--push] [--pr]
10
12
  * commandmate skill uninstall <skill-id> --worktree <id> [--dry-run] [--yes] [--json]
11
13
  * commandmate skill status <skill-id> --worktree <id> [--json]
@@ -98,6 +100,36 @@ async function planInstall(skillId, options) {
98
100
  if (!plan.installable)
99
101
  process.exit(types_1.SkillExitCode.BLOCKED);
100
102
  }
103
+ /** Ask the server to build an Update Plan. The only inputs are what to move to. */
104
+ async function requestUpdatePlan(client, target, options) {
105
+ const body = {};
106
+ if (options.version)
107
+ body.version = options.version;
108
+ if (options.prerelease)
109
+ body.includePrerelease = true;
110
+ if (options.range)
111
+ body.range = options.range;
112
+ const response = await client.post(`/api/worktrees/${encodeURIComponent(target.worktreeId)}/skills/${encodeURIComponent(target.skillId)}/update-plan`, body);
113
+ return (0, api_client_1.assertResponseShape)(response, ['plan'], 'POST .../skills/update-plan').plan;
114
+ }
115
+ /**
116
+ * Preview updating an installed Skill to a newer exact version (Issue #1243).
117
+ *
118
+ * Plan-only by design: the server reads the installed version from the on-disk
119
+ * receipt, resolves the candidate against the Catalog, verifies the artifact
120
+ * and reports the version diff, the risk change and every blocker. Applying is
121
+ * `skill update` (#1244).
122
+ */
123
+ async function planUpdate(skillId, options) {
124
+ const target = resolveTarget(skillId, options.worktree);
125
+ if (!target)
126
+ return;
127
+ const client = new api_client_1.ApiClient({ token: options.token });
128
+ const plan = await requestUpdatePlan(client, target, options);
129
+ console.log(options.json ? JSON.stringify({ plan }, null, 2) : (0, skill_format_1.formatUpdatePlan)(plan));
130
+ if (!plan.updatable)
131
+ process.exit(types_1.SkillExitCode.BLOCKED);
132
+ }
101
133
  /**
102
134
  * Report whether one Skill is installed in one worktree.
103
135
  *
@@ -316,6 +348,83 @@ async function installSkill(skillId, options) {
316
348
  console.log(describeGitOutcome(git.result));
317
349
  }
318
350
  }
351
+ /**
352
+ * Update an installed Skill to a newer exact version (Issue #1244).
353
+ *
354
+ * The same thin-client contract as install: the CLI shows the server-built
355
+ * plan, collects the confirmations the plan demands, and presents the token
356
+ * back unchanged. Both risk gates fail closed — a high-risk candidate needs
357
+ * `--ack-risk <id>@<version>`, and a risk *increase* additionally needs
358
+ * `--ack-risk-increase` — so `--yes` alone can never carry either.
359
+ */
360
+ async function updateSkill(skillId, options) {
361
+ const target = resolveTarget(skillId, options.worktree);
362
+ if (!target)
363
+ return;
364
+ const client = new api_client_1.ApiClient({ token: options.token });
365
+ const plan = await requestUpdatePlan(client, target, options);
366
+ // --dry-run stops here by construction: the plan is the whole output and no
367
+ // token is ever presented back to the server.
368
+ if (options.dryRun) {
369
+ console.log(options.json ? JSON.stringify({ plan }, null, 2) : (0, skill_format_1.formatUpdatePlan)(plan));
370
+ if (!plan.updatable)
371
+ process.exit(types_1.SkillExitCode.BLOCKED);
372
+ return;
373
+ }
374
+ console.error((0, skill_format_1.formatUpdatePlan)(plan));
375
+ if (!plan.updatable) {
376
+ (0, skill_guards_1.refuse)('The update is blocked by the findings listed above; nothing was written.', types_1.SkillExitCode.BLOCKED);
377
+ return;
378
+ }
379
+ // Checked before the generic confirmation so `--yes` alone can never carry a
380
+ // high-risk update, in a TTY or out of one.
381
+ if (plan.requiresRiskAcknowledgement &&
382
+ !(0, skill_guards_1.riskAcknowledgementMatches)(options.ackRisk, plan.skill.id, plan.update.toVersion)) {
383
+ (0, skill_guards_1.refuse)(`${plan.skill.id} ${plan.update.toVersion} is high risk. Re-run with --ack-risk ${plan.skill.id}@${plan.update.toVersion} to acknowledge it explicitly.`, types_1.SkillExitCode.CONFIRMATION_REQUIRED);
384
+ return;
385
+ }
386
+ // The escalation gate is separate from the high-risk gate on purpose: a risk
387
+ // increase must be named as its own fact, not folded into a flag the caller
388
+ // may already be passing for other reasons.
389
+ if (plan.riskIncreased && options.ackRiskIncrease !== true) {
390
+ (0, skill_guards_1.refuse)(`Updating ${plan.skill.id} to ${plan.update.toVersion} raises its effective risk (${plan.securityDiff.risk.from.effective} -> ${plan.securityDiff.risk.to.effective}). Re-run with --ack-risk-increase to confirm the escalation explicitly.`, types_1.SkillExitCode.CONFIRMATION_REQUIRED);
391
+ return;
392
+ }
393
+ const outcome = await (0, skill_guards_1.resolveWriteConfirmation)(`Update ${plan.skill.id} ${plan.update.fromVersion} -> ${plan.update.toVersion} in ${plan.target.worktreeId} (${(0, skill_format_1.formatInstallRoots)(plan.target.installRoots, plan.target.installRoot)})?`, options);
394
+ if (outcome === 'non_interactive') {
395
+ (0, skill_guards_1.refuse)('Refusing to update without a confirmation. Pass --yes to update from a non-interactive environment.', types_1.SkillExitCode.CONFIRMATION_REQUIRED);
396
+ return;
397
+ }
398
+ if (outcome === 'declined') {
399
+ (0, skill_guards_1.refuse)('Update declined; nothing was written.', types_1.SkillExitCode.CONFIRMATION_REQUIRED);
400
+ return;
401
+ }
402
+ const response = await client.post(`/api/worktrees/${encodeURIComponent(target.worktreeId)}/skills/${encodeURIComponent(target.skillId)}/update`, {
403
+ planToken: plan.token,
404
+ version: plan.update.toVersion,
405
+ acknowledgeRisk: plan.requiresRiskAcknowledgement,
406
+ acknowledgeRiskIncrease: plan.riskIncreased,
407
+ });
408
+ const body = (0, api_client_1.assertResponseShape)(response, ['operation', 'update'], 'POST .../skills/update');
409
+ if (options.json) {
410
+ console.log(JSON.stringify(body, null, 2));
411
+ }
412
+ else {
413
+ console.log(`Updated ${body.update?.skillId ?? target.skillId} ${body.update?.fromVersion ?? plan.update.fromVersion} -> ${body.update?.toVersion ?? body.update?.version ?? plan.update.toVersion} in ${(0, skill_format_1.formatInstallRoots)(body.update?.installRoots, body.update?.installRoot ?? plan.target.installRoot)}`);
414
+ for (const agent of body.reload?.agents ?? []) {
415
+ console.error(`Reload: restart the ${agent.agent} session in this worktree to pick up the new version.`);
416
+ }
417
+ if (body.rollback?.available) {
418
+ console.error(`Rollback: version ${body.rollback.backup.fromVersion} is preserved in verified backup ${body.rollback.backup.backupId} (restore ships separately).`);
419
+ }
420
+ }
421
+ if (body.operation.result === 'committed_reconciling') {
422
+ // The new payload is on disk; saying "update failed" would contradict what
423
+ // the user can see. Report it as needing attention instead.
424
+ console.error(`Warning: the new version landed but the operation did not finish cleanly (${body.operation.nextActionKey}). Reconciliation will converge it.`);
425
+ process.exit(types_1.SkillExitCode.COMMITTED_RECONCILING);
426
+ }
427
+ }
319
428
  async function uninstallSkill(skillId, options) {
320
429
  const target = resolveTarget(skillId, options.worktree);
321
430
  if (!target)
@@ -411,6 +520,24 @@ function createSkillCommand() {
411
520
  (0, skill_guards_1.handleSkillCommandError)(error);
412
521
  }
413
522
  });
523
+ skill
524
+ .command('update-plan')
525
+ .description('Preview updating an installed Skill to a newer version. Never writes.')
526
+ .argument('<skill-id>', 'Installed Skill ID')
527
+ .option('--worktree <id>', 'Target worktree ID (see: commandmate ls)')
528
+ .option('--version <version>', 'Exact candidate version (default: the recommended candidate)')
529
+ .option('--range <range>', 'Only consider candidates satisfying this version range')
530
+ .option('--json', 'JSON output (the API response body, verbatim)')
531
+ .option('--prerelease', 'Include prerelease candidates')
532
+ .option('--token <token>', command_helpers_1.TOKEN_WARNING)
533
+ .action(async (skillId, options) => {
534
+ try {
535
+ await planUpdate(skillId, options);
536
+ }
537
+ catch (error) {
538
+ (0, skill_guards_1.handleSkillCommandError)(error);
539
+ }
540
+ });
414
541
  skill
415
542
  .command('install')
416
543
  .description('Install a Skill into a worktree, after showing the plan and confirming')
@@ -434,6 +561,28 @@ function createSkillCommand() {
434
561
  (0, skill_guards_1.handleSkillCommandError)(error);
435
562
  }
436
563
  });
564
+ skill
565
+ .command('update')
566
+ .description('Update an installed Skill to a newer version, after showing the plan and confirming')
567
+ .argument('<skill-id>', 'Installed Skill ID')
568
+ .option('--worktree <id>', 'Target worktree ID (see: commandmate ls)')
569
+ .option('--version <version>', 'Exact candidate version (default: the recommended candidate)')
570
+ .option('--range <range>', 'Only consider candidates satisfying this version range')
571
+ .option('--dry-run', 'Build and print the plan, then stop without writing')
572
+ .option('-y, --yes', 'Skip the confirmation prompt (required for non-interactive use)')
573
+ .option('--ack-risk <skill-id@version>', 'Explicitly acknowledge a high-risk candidate. Required in addition to --yes.')
574
+ .option('--ack-risk-increase', 'Explicitly confirm an update that raises the Skill\'s effective risk. Required in addition to --yes.')
575
+ .option('--json', 'JSON output (the API response body, verbatim)')
576
+ .option('--prerelease', 'Include prerelease candidates')
577
+ .option('--token <token>', command_helpers_1.TOKEN_WARNING)
578
+ .action(async (skillId, options) => {
579
+ try {
580
+ await updateSkill(skillId, options);
581
+ }
582
+ catch (error) {
583
+ (0, skill_guards_1.handleSkillCommandError)(error);
584
+ }
585
+ });
437
586
  skill
438
587
  .command('uninstall')
439
588
  .description('Remove an installed Skill from a worktree, after showing the plan and confirming')