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
@@ -0,0 +1,14 @@
1
+ /**
2
+ * sync Command - Trigger a server-side worktree re-scan
3
+ * Issue #1680: worktrees created with `git worktree add` stay invisible to
4
+ * `commandmate ls` until the GUI sync button is pressed. This command calls the
5
+ * same endpoint (POST /api/repositories/sync) so worktree creation → dispatch
6
+ * completes from the CLI alone.
7
+ */
8
+ import { Command } from 'commander';
9
+ /**
10
+ * Create the sync command.
11
+ * [DR1-08] Factory pattern for addCommand() registration.
12
+ */
13
+ export declare function createSyncCommand(): Command;
14
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAmC3C"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * sync Command - Trigger a server-side worktree re-scan
4
+ * Issue #1680: worktrees created with `git worktree add` stay invisible to
5
+ * `commandmate ls` until the GUI sync button is pressed. This command calls the
6
+ * same endpoint (POST /api/repositories/sync) so worktree creation → dispatch
7
+ * completes from the CLI alone.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createSyncCommand = createSyncCommand;
11
+ const commander_1 = require("commander");
12
+ const types_1 = require("../types");
13
+ const api_client_1 = require("../utils/api-client");
14
+ const command_helpers_1 = require("../utils/command-helpers");
15
+ /**
16
+ * Create the sync command.
17
+ * [DR1-08] Factory pattern for addCommand() registration.
18
+ */
19
+ function createSyncCommand() {
20
+ const cmd = new commander_1.Command('sync');
21
+ cmd
22
+ .description('Re-scan repositories and sync worktrees to the server (same as the GUI sync button)')
23
+ .option('--json', 'JSON output (API response as-is)')
24
+ .option('--token <token>', command_helpers_1.TOKEN_WARNING)
25
+ .action(async (options) => {
26
+ try {
27
+ const client = new api_client_1.ApiClient({ token: options.token });
28
+ const data = await client.post('/api/repositories/sync');
29
+ if (options.json) {
30
+ console.log(JSON.stringify(data, null, 2));
31
+ return;
32
+ }
33
+ console.log(data.message);
34
+ if (data.deletedCount > 0) {
35
+ console.log(`Removed ${data.deletedCount} stale worktree(s).`);
36
+ }
37
+ for (const warning of data.cleanupWarnings ?? []) {
38
+ console.error(`Warning: ${warning}`);
39
+ }
40
+ }
41
+ catch (error) {
42
+ // The route's only 400 is "No repositories configured..." — the server's
43
+ // wording names the fix (WORKTREE_REPOS / CM_ROOT_DIR), so pass it
44
+ // through instead of the generic "Bad request" mapping.
45
+ if (error instanceof api_client_1.ApiError && error.statusCode === 400 && error.payload?.error) {
46
+ console.error(`Error: ${error.payload.error}`);
47
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
48
+ }
49
+ (0, command_helpers_1.handleCommandError)(error);
50
+ }
51
+ });
52
+ return cmd;
53
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAySpC,wBAAgB,iBAAiB,IAAI,OAAO,CA6G3C"}
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuXpC,wBAAgB,iBAAiB,IAAI,OAAO,CA6G3C"}
@@ -34,6 +34,47 @@ const POLL_INTERVAL_MS = 5000;
34
34
  * names the state instead of inventing options.
35
35
  */
36
36
  const SELECTION_LIST_PROMPT_TYPE = 'selection_list';
37
+ /**
38
+ * How recent `autoYes.lastSuppression` must be to be reported as the reason this
39
+ * wait is blocked (Issue #1699).
40
+ *
41
+ * The record is refreshed on every poll for as long as the suppressed prompt is
42
+ * on screen, so a fresh timestamp means "this is happening now" while an old one
43
+ * is a historical suppression of some earlier prompt. The window is generous
44
+ * against the server's own poll interval — being a few seconds late with a true
45
+ * report beats staying silent, which is the failure this exists to fix.
46
+ */
47
+ const SUPPRESSION_FRESH_MS = 60_000;
48
+ /** The suppression currently blocking this session, or null. */
49
+ function activeSuppression(data, now) {
50
+ const suppression = data.autoYes?.lastSuppression;
51
+ if (!suppression)
52
+ return null;
53
+ const ageMs = now - suppression.at;
54
+ // A negative age is clock skew between the CLI and the server, not staleness.
55
+ if (ageMs > SUPPRESSION_FRESH_MS)
56
+ return null;
57
+ return { suppression, ageSeconds: Math.max(0, Math.round(ageMs / 1000)) };
58
+ }
59
+ /**
60
+ * One stderr line naming the policy that is holding this prompt (Issue #1699).
61
+ *
62
+ * `wait` used to print only "Waiting for human response...", which reads the
63
+ * same whether a human was always going to answer or whether Auto-Yes silently
64
+ * refused to. That ambiguity is what let a deny pattern matching a finished turn
65
+ * stall two workers unnoticed; the pattern and the reason code belong on screen.
66
+ */
67
+ function formatSuppressionNotice(suppression, ageSeconds) {
68
+ const parts = [
69
+ `reason=${suppression.reason}`,
70
+ `mode=${suppression.mode ?? 'none'}`,
71
+ `promptType=${suppression.promptType}`,
72
+ ];
73
+ if (suppression.pattern !== undefined) {
74
+ parts.push(`pattern=${JSON.stringify(suppression.pattern)}`);
75
+ }
76
+ return ` auto-yes suppressed this prompt by contract policy: ${parts.join(' ')} (${ageSeconds}s ago)`;
77
+ }
37
78
  /**
38
79
  * Poll a single worktree until completion, prompt, or timeout.
39
80
  */
@@ -82,10 +123,17 @@ async function pollWorktree(client, worktreeId, options) {
82
123
  }
83
124
  // Prompt detected
84
125
  if (data.isPromptWaiting && data.promptData) {
126
+ // Issue #1699: report a policy suppression on both exits — the human one
127
+ // keeps polling and would otherwise say nothing about why nobody
128
+ // answered, and the agent one is read by pipelines that never see stderr.
129
+ const suppressed = activeSuppression(data, Date.now());
85
130
  // [DR1-03] Prompt detection exit code
86
131
  if (options.onPrompt === 'human') {
87
132
  // Block and continue polling - user handles prompt manually
88
133
  console.error(`Prompt detected on ${worktreeId}. Waiting for human response...`);
134
+ if (suppressed) {
135
+ console.error(formatSuppressionNotice(suppressed.suppression, suppressed.ageSeconds));
136
+ }
89
137
  await sleep(POLL_INTERVAL_MS);
90
138
  continue;
91
139
  }
@@ -97,7 +145,24 @@ async function pollWorktree(client, worktreeId, options) {
97
145
  question: data.promptData.question || '',
98
146
  options: data.promptData.options || [],
99
147
  status: data.promptData.status || 'pending',
148
+ ...(data.promptData.approvalTarget !== undefined && {
149
+ approvalTarget: data.promptData.approvalTarget,
150
+ }),
151
+ ...(suppressed && {
152
+ autoYesSuppression: {
153
+ reason: suppressed.suppression.reason,
154
+ mode: suppressed.suppression.mode,
155
+ promptType: suppressed.suppression.promptType,
156
+ ...(suppressed.suppression.pattern !== undefined && {
157
+ pattern: suppressed.suppression.pattern,
158
+ }),
159
+ ageSeconds: suppressed.ageSeconds,
160
+ },
161
+ }),
100
162
  };
163
+ if (suppressed) {
164
+ console.error(formatSuppressionNotice(suppressed.suppression, suppressed.ageSeconds));
165
+ }
101
166
  return { exitCode: types_1.WaitExitCode.PROMPT_DETECTED, output: promptOutput };
102
167
  }
103
168
  // Issue #1628: an arrow-key menu is the agent blocked on a human just as much
@@ -108,6 +173,12 @@ async function pollWorktree(client, worktreeId, options) {
108
173
  if (options.onPrompt === 'human') {
109
174
  console.error(`Selection list active on ${worktreeId} (${data.sessionStatusReason ?? 'selection_list'}). ` +
110
175
  'Waiting for human response...');
176
+ // Issue #1699: the poller parses frames status-detector publishes as
177
+ // selection lists, so a policy can be the reason this one is stuck too.
178
+ const suppressed = activeSuppression(data, Date.now());
179
+ if (suppressed) {
180
+ console.error(formatSuppressionNotice(suppressed.suppression, suppressed.ageSeconds));
181
+ }
111
182
  await sleep(POLL_INTERVAL_MS);
112
183
  continue;
113
184
  }
@@ -271,7 +342,7 @@ function createWaitCommand() {
271
342
  .description('Wait for agent completion (1 worktree per CLI instance recommended)')
272
343
  .argument('<worktree-ids...>', 'Worktree ID(s) to wait on')
273
344
  .option('--timeout <seconds>', 'Maximum wait time in seconds', parseInt)
274
- .option('--on-prompt <mode>', 'Prompt handling: agent (default) or human')
345
+ .option('--on-prompt <mode>', 'Prompt handling: agent (default) exits 10 with a prompt JSON payload on stdout (read it before re-capturing); human keeps waiting for a human reply')
275
346
  .option('--stall-timeout <seconds>', 'Maximum time without output change', parseInt)
276
347
  .option('--instance <id>', agent_target_options_1.WAIT_INSTANCE_OPTION_DESCRIPTION)
277
348
  .option('--verify', 'After completion, run every verification gate; exit 20 when a gate fails, 21 when there is nothing to verify')
@@ -5,6 +5,6 @@
5
5
  * This content is embedded as a string constant so that it's available
6
6
  * even when installed via `npm install -g commandmate` (where docs/ is not included).
7
7
  */
8
- export declare const AGENT_OPERATIONS_GUIDE = "# CLI Agent Operations Guide\n\nOperate agent sessions from the CommandMate CLI.\nThese commands enable coding agents (Claude Code, Codex, etc.) to orchestrate other agents in parallel.\n\n## Prerequisites\n\n- CommandMate server must be running: commandmate start --daemon\n- Target worktrees must be registered (visible in browser UI sidebar)\n- Use CM_PORT env var to connect to a different port (default: 3000)\n- Use CM_AUTH_TOKEN env var for authenticated servers\n\n## Commands\n\n### commandmate ls\n List worktrees with status.\n\n commandmate ls # Table format (ID, NAME, STATUS, DEFAULT)\n commandmate ls --json # JSON output (for agent consumption)\n commandmate ls --quiet # IDs only, one per line (for piping)\n commandmate ls --branch <prefix> # Filter by branch name prefix\n commandmate ls --id <prefix> # Filter by worktree id prefix\n\n Worktree ids are <repo>-<branch> slugs (e.g. anvil-develop). --id / --branch\n front-match is case-sensitive and does NOT guarantee uniqueness (e.g.\n --id anvil-develop also matches anvil-develop-2). --branch and --id combine\n as AND. Use --id to disambiguate the same branch across repositories.\n\n STATUS values:\n idle - Session not started\n ready - Session running, waiting for input (task completed)\n running - Agent executing a task\n waiting - Confirmation prompt active (Yes/No, etc.)\n\n### commandmate send <worktree-id> \"<message>\"\n Send a message to an agent (async). Starts session automatically if not running.\n\n Options:\n --instance <id> Agent instance ID: <agent> or <agent>-<n> (e.g. claude-2, or codex\n for the codex primary instance). The recommended way to name a\n target: send / wait / respond / capture / auto-yes all take it.\n --agent <id> Ad-hoc CLI tool for an instance the roster does not know:\n claude (default), codex, gemini, vibe-local, opencode, copilot, antigravity\n --register Register the --instance session into the agent-instance roster\n --auto-yes Enable auto-yes before sending\n --duration <d> Auto-yes duration: 1h, 3h, 8h (default: 1h)\n --stop-pattern <p> Auto-yes stop condition (regex)\n\n Finding worktree IDs:\n WT=$(commandmate ls --branch feature/101 --quiet)\n WT=$(commandmate ls --id anvil- --quiet) # disambiguate by repo (id prefix)\n commandmate send \"$WT\" \"Implement this\"\n\n Targeting a non-default agent (Issue #1638): pass --instance, not --agent. Only\n --instance is accepted by every command -- 'wait --agent' does not exist -- so a\n workflow that names the agent on 'send' and nothing on 'wait' waits on the wrong\n session in silence.\n commandmate send \"$WT\" \"Implement this\" --instance codex\n commandmate wait \"$WT\" --instance codex\n\n### commandmate wait <worktree-id...>\n Block until agent completes or prompt is detected.\n\n Options:\n --timeout <seconds> Maximum wait time\n --on-prompt <mode> agent (default) or human\n --stall-timeout <seconds> Max time without output change\n --instance <id> Agent instance to wait on. There is no --agent here.\n --verify After completion, run every verification gate\n --require-work After completion, run only the work-evidence gate\n\n Exit codes:\n 0 - Completed (agent idle/ready), and verified when --verify was given\n 10 - Prompt detected (--on-prompt agent mode)\n 20 - A verification gate failed (--verify)\n 21 - Nothing to verify: no commits, no uncommitted changes\n 124 - Timeout exceeded\n\n --on-prompt modes:\n agent - Returns exit 10 immediately with prompt JSON on stdout\n human - Keeps blocking until human responds via browser UI\n\n Prompt JSON output (exit 10):\n {\"worktreeId\":\"...\",\"cliToolId\":\"claude\",\"type\":\"yes_no\",\"question\":\"...\",\"options\":[\"yes\",\"no\"],\"status\":\"pending\"}\n\n --verify turns \"the agent stopped\" into \"the work passes the repository's own\n checks\". Verification only runs when completion was detected: a prompt (10) or\n a timeout (124) is reported as-is and never verified. With several worktrees,\n gates run one worktree at a time because the server caps concurrent runs.\n\n### commandmate verify <worktree-id>\n Run the gates declared in .commandmate/verify.yaml against a worktree.\n\n Options:\n --gates <id1,id2> Gate ids to run (default: work-evidence + all declared)\n --instance <id> Attribute the run to an agent instance\n --timeout <seconds> Stop polling after N seconds (exit 124)\n --json Print the run and its gate results as JSON on stdout\n\n Exit codes:\n 0 - Every gate passed\n 20 - A gate failed, timed out, or errored\n 21 - work-evidence found nothing to verify (no commits, no changes)\n 99 - The run produced no verdict (bad verify.yaml, gates skipped, cancelled)\n 124 - --timeout elapsed while the run was still going\n\n Output (progress on stderr, verdict on stdout):\n GATE work-evidence PASS (commits=3, uncommitted=2)\n GATE lint PASS (exit=0, 12.3s)\n GATE unit FAIL (exit=1, 45.0s)\n RESULT failed\n\n Gates run in the worktree's own directory. Gates are skipped (run status 99,\n never 0) in the checkout the server itself runs from when verify.yaml sets\n options.skipInPrimaryCheckout, so a 'build' gate cannot replace the assets the\n live app is serving.\n\n### commandmate verify history / commandmate verify show <run-id>\n Read past verification runs. Both are read-only and never start a run, so\n neither returns 20 or 21 \u2014 those mean \"this tree failed verification\", and a\n question about history is not a verdict on the current tree.\n\n commandmate verify history # every worktree, newest 50\n commandmate verify history --worktree <id> # one worktree\n commandmate verify history --days 14 --limit 100 # window and page size\n commandmate verify history --json # JSON array on stdout\n commandmate verify show 42 # gates + log tails\n commandmate verify show 42 --json\n\n history options:\n --worktree <id> Restrict to one worktree (default: all)\n --days <n> Look back n days, 1..90 (default: no lower bound)\n --limit <n> Maximum runs, 1..500 (default: 50)\n\n One run per line. The leading #<run-id> is what \"verify show\" takes:\n #42 2026-07-31T04:12:00.000Z myrepo-feature-101 manual failed failed: unit,build\n\n The listing carries gate verdicts but NOT gate log bodies \u2014 logTail is absent\n from the JSON, not null. Use \"verify show <run-id>\" when you need the log.\n\n Exit codes:\n 0 - Read succeeded (also when nothing matched: stderr note, or [] in JSON)\n 2 - Bad argument (--days/--limit out of range, bad worktree or run id)\n 99 - No such run (404), or an unexpected failure\n\n### commandmate respond <worktree-id> \"<answer>\"\n Respond to an agent's prompt.\n\n commandmate respond <id> \"yes\" # Yes/No\n commandmate respond <id> \"2\" # Multiple choice (number)\n commandmate respond <id> \"custom text\" # Free text\n commandmate respond <id> \"yes\" --instance codex-2 # Specific instance\n\n Exit codes:\n 0 - Response sent\n 99 - Prompt already dismissed (prompt_no_longer_active)\n\n### commandmate capture <worktree-id>\n Get current terminal output.\n\n commandmate capture <id> # Plain text\n commandmate capture <id> --json # JSON with status info\n commandmate capture <id> --instance codex # Specific instance\n\n### commandmate auto-yes <worktree-id>\n Control auto-yes (automatic prompt response).\n\n commandmate auto-yes <id> --enable # Enable (default 1h)\n commandmate auto-yes <id> --enable --duration 3h # With duration\n commandmate auto-yes <id> --enable --stop-pattern \"error\"\n commandmate auto-yes <id> --disable # Disable\n commandmate auto-yes <id> --enable --instance codex-2 # Scoped to one instance\n\n### commandmate instances <worktree-id> [action] [args]\n Discover and manage a worktree's agent-instance roster (1 agent, multiple sessions).\n\n commandmate instances <id> # List roster + running/auto-yes status\n commandmate instances <id> --json # JSON output\n commandmate instances <id> add --agent codex # Add an instance (auto-generates ID, e.g. codex-2)\n commandmate instances <id> add --agent codex --alias \"Review\" --id codex-3\n commandmate instances <id> remove <instance-id> # Remove from roster\n commandmate instances <id> remove <instance-id> --kill # Remove and kill its session\n commandmate instances <id> alias <instance-id> \"New Name\"\n commandmate instances <id> kill <instance-id> # Kill only that instance's session\n\n See \"Multi-Session\" below for the ID convention and roster semantics.\n\n### commandmate skill <subcommand>\n Manage official Agent Skills. Every subcommand is a thin client over the same\n APIs the browser UI uses: the CLI never downloads, extracts, writes or deletes\n anything itself, and never sends a filesystem path, artifact URL, file list or\n checksum (the API rejects those outright).\n\n commandmate skill list [--json] [--prerelease]\n commandmate skill info <skill-id> [--version <v>] [--json]\n commandmate skill plan <skill-id> --worktree <id> [--version <v>] [--json]\n commandmate skill install <skill-id> --worktree <id> --version <exact> [--dry-run] [--yes] [--ack-risk <id>@<version>] [--json]\n commandmate skill uninstall <skill-id> --worktree <id> [--dry-run] [--yes] [--json]\n commandmate skill status <skill-id> --worktree <id> [--json]\n\n Confirmation contract (writes = install / uninstall):\n - A plan is always built and shown first. --dry-run stops there.\n - Without a TTY, a write REQUIRES --yes. A missing --yes is refused, never\n assumed: an environment that cannot prompt must not install silently.\n - A high-risk Skill additionally requires --ack-risk <skill-id>@<version>\n with the exact id and version. --yes alone never carries a high-risk\n install, in a TTY or out of one.\n\n Exit codes:\n 0 success\n 1 the server or the Catalog could not be reached (retryable)\n 2 invalid arguments, unknown Skill or unknown version\n 11 the worktree refused it (local change, conflict, lock, plan drift)\n 12 the write was never confirmed (no --yes, declined, or missing --ack-risk)\n 13 files changed but the operation needs reconciliation\n\n --json prints the API response body verbatim on stdout; diagnostics, prompts\n and errors always go to stderr, so a failed --json run leaves stdout empty.\n\n 'skill status' reports one Skill in one worktree, read from the install\n receipt on disk. There is no per-worktree listing endpoint yet, so <skill-id>\n is required.\n\n## Multi-Session (1 agent, multiple sessions)\n\n A worktree can run several sessions of the same CLI tool concurrently. Each\n session is an \"instance\" identified by an instance ID:\n <agent> - the agent's primary instance (e.g. \"claude\")\n <agent>-<n> - an additional instance, n >= 2 (e.g. \"claude-2\", \"claude-3\")\n\n --instance is accepted by send / wait / respond / capture / auto-yes.\n send --instance auto-starts the session if it is not already running.\n\n --instance alone is the recommended way to name a target (Issue #1638). It is\n the only flag all five commands share: --agent is rejected by 'wait'. A\n rostered instance already carries its CLI tool (Issue #1629), and an instance\n id that is itself a tool id resolves to that tool's primary instance even\n without a roster entry, so '--instance codex' needs no --agent.\n\n --agent remains accepted by send / respond / capture / auto-yes as the\n supplement for ad-hoc instances the roster does not know -- notably\n '--register', which cannot infer the tool from an id like codex-3. Passing an\n --agent that contradicts the roster is an error (exit 2), not an override.\n\n The roster (visible in the browser UI's Agent panel) is the list of known\n instances with aliases and display order. Ad-hoc sessions started via\n 'send --instance' do NOT appear in the roster unless registered:\n commandmate send <id> \"...\" --instance claude-2 --register\n Without --register, the session still runs and responds to CLI commands,\n but it will not show up in the UI sidebar/roster until added there or via\n 'commandmate instances <id> add'.\n\n Per-instance auto-yes: --instance scopes --auto-yes/--duration/--stop-pattern\n to that specific session, independent of other instances of the same agent.\n\n commandmate instances <id> # discover valid --instance values\n commandmate send <id> \"task\" --instance codex-2 --auto-yes\n commandmate wait <id> --instance codex-2 --timeout 600\n commandmate capture <id> --instance codex-2\n\n## All Exit Codes\n\n 0 SUCCESS - Completed successfully\n 1 DEPENDENCY_ERROR - Server not running\n 2 CONFIG_ERROR - Validation error (invalid agent, duration, etc.)\n 10 PROMPT_DETECTED - Prompt detected during wait\n 20 VERIFY_FAILED - A verification gate failed (verify, wait --verify)\n 21 NOT_STARTED - Nothing to verify: no commits, no uncommitted changes\n 99 UNEXPECTED_ERROR - Unexpected error / resource not found / no verdict\n 124 TIMEOUT - Wait or verification timeout exceeded\n\n When one 'wait' covers several worktrees, the reported code is the highest\n priority one observed: 10 > 20 > 21 > 124.\n\n## Troubleshooting\n\n Server not running:\n commandmate start --daemon\n CM_PORT=3011 commandmate ls # Different port\n\n Worktree not found:\n commandmate ls --quiet # Check registered IDs\n curl -s -X POST http://localhost:3000/api/repositories/sync # Sync new worktrees\n\n Authentication:\n CM_AUTH_TOKEN=your-token commandmate ls\n";
8
+ export declare const AGENT_OPERATIONS_GUIDE = "# CLI Agent Operations Guide\n\nOperate agent sessions from the CommandMate CLI.\nThese commands enable coding agents (Claude Code, Codex, etc.) to orchestrate other agents in parallel.\n\n## Prerequisites\n\n- CommandMate server must be running: commandmate start --daemon\n- Target worktrees must be registered (visible in browser UI sidebar)\n- Use CM_PORT env var to connect to a different port (default: 3000)\n- Use CM_AUTH_TOKEN env var for authenticated servers\n\n## Commands\n\n### commandmate ls\n List worktrees with status.\n\n commandmate ls # Table format (ID, NAME, STATUS, DEFAULT)\n commandmate ls --json # JSON output (for agent consumption)\n commandmate ls --quiet # IDs only, one per line (for piping)\n commandmate ls --branch <prefix> # Filter by branch name prefix\n commandmate ls --id <prefix> # Filter by worktree id prefix\n\n Worktree ids are <repo>-<branch> slugs (e.g. anvil-develop). --id / --branch\n front-match is case-sensitive and does NOT guarantee uniqueness (e.g.\n --id anvil-develop also matches anvil-develop-2). --branch and --id combine\n as AND. Use --id to disambiguate the same branch across repositories.\n\n STATUS values:\n idle - Session not started\n ready - Session running, waiting for input (task completed)\n running - Agent executing a task\n waiting - Confirmation prompt active (Yes/No, etc.)\n\n### commandmate sync\n Ask the server to re-scan repositories and sync worktrees to its database\n (same endpoint as the GUI sync button). Run it after 'git worktree add' so the\n new worktree appears in 'commandmate ls' without opening the GUI (Issue #1680).\n\n commandmate sync # Prints the server's summary message\n commandmate sync --json # Full API response (worktreeCount,\n # repositoryCount, repositories,\n # deletedCount, cleanupWarnings)\n\n### commandmate send <worktree-id> \"<message>\"\n Send a message to an agent (async). Starts session automatically if not running.\n\n Options:\n --instance <id> Agent instance ID: <agent> or <agent>-<n> (e.g. claude-2, or codex\n for the codex primary instance). The recommended way to name a\n target: send / wait / respond / capture / auto-yes all take it.\n --agent <id> Ad-hoc CLI tool for an instance the roster does not know:\n claude (default), codex, gemini, vibe-local, opencode, copilot, antigravity\n --register Register the --instance session into the agent-instance roster\n --auto-yes Enable auto-yes before sending (session-wide, no policy\n guard -- for unattended runs prefer --contract with an\n autoYes policy: mode / denyPatterns)\n --duration <d> Auto-yes duration: 1h, 3h, 8h (default: 1h)\n --stop-pattern <p> Auto-yes stop condition (regex; matches terminal output,\n cannot block commands -- see auto-yes below)\n\n Finding worktree IDs:\n WT=$(commandmate ls --branch feature/101 --quiet)\n WT=$(commandmate ls --id anvil- --quiet) # disambiguate by repo (id prefix)\n commandmate send \"$WT\" \"Implement this\"\n\n Targeting a non-default agent (Issue #1638): pass --instance, not --agent. Only\n --instance is accepted by every command -- 'wait --agent' does not exist -- so a\n workflow that names the agent on 'send' and nothing on 'wait' waits on the wrong\n session in silence.\n commandmate send \"$WT\" \"Implement this\" --instance codex\n commandmate wait \"$WT\" --instance codex\n\n### commandmate wait <worktree-id...>\n Block until agent completes or prompt is detected.\n\n Options:\n --timeout <seconds> Maximum wait time\n --on-prompt <mode> agent (default) or human\n --stall-timeout <seconds> Max time without output change\n --instance <id> Agent instance to wait on. There is no --agent here.\n --verify After completion, run every verification gate\n --require-work After completion, run only the work-evidence gate\n\n Exit codes:\n 0 - Completed (agent idle/ready), and verified when --verify was given\n 10 - Prompt detected (--on-prompt agent mode)\n 20 - A verification gate failed (--verify)\n 21 - Nothing to verify: no commits, no uncommitted changes\n 124 - Timeout exceeded\n\n --on-prompt modes:\n agent - Returns exit 10 immediately with prompt JSON on stdout\n human - Keeps blocking until human responds via browser UI\n\n Prompt JSON output (exit 10):\n {\"worktreeId\":\"...\",\"cliToolId\":\"claude\",\"type\":\"yes_no\",\"question\":\"...\",\"options\":[\"yes\",\"no\"],\"status\":\"pending\"}\n The payload IS the prompt -- read it from stdout before falling back to\n capture. For type \"selection_list\", options is empty by design and the\n question field carries the reason.\n\n --verify turns \"the agent stopped\" into \"the work passes the repository's own\n checks\". Verification only runs when completion was detected: a prompt (10) or\n a timeout (124) is reported as-is and never verified. With several worktrees,\n gates run one worktree at a time because the server caps concurrent runs.\n\n### commandmate verify <worktree-id>\n Run the gates declared in .commandmate/verify.yaml against a worktree.\n\n Options:\n --gates <id1,id2> Gate ids to run (default: work-evidence + all declared)\n --instance <id> Attribute the run to an agent instance\n --timeout <seconds> Stop polling after N seconds (exit 124)\n --json Print the run and its gate results as JSON on stdout\n\n Exit codes:\n 0 - Every gate passed\n 20 - A gate failed, timed out, or errored\n 21 - work-evidence found nothing to verify (no commits, no changes)\n 99 - The run produced no verdict (bad verify.yaml, gates skipped, cancelled)\n 124 - --timeout elapsed while the run was still going\n\n Output (progress on stderr, verdict on stdout):\n GATE work-evidence PASS (commits=3, uncommitted=2)\n GATE lint PASS (exit=0, 12.3s)\n GATE unit FAIL (exit=1, 45.0s)\n RESULT failed\n\n Gates run in the worktree's own directory. Gates are skipped (run status 99,\n never 0) in the checkout the server itself runs from when verify.yaml sets\n options.skipInPrimaryCheckout, so a 'build' gate cannot replace the assets the\n live app is serving.\n\n### commandmate verify history / commandmate verify show <run-id>\n Read past verification runs. Both are read-only and never start a run, so\n neither returns 20 or 21 \u2014 those mean \"this tree failed verification\", and a\n question about history is not a verdict on the current tree.\n\n commandmate verify history # every worktree, newest 50\n commandmate verify history --worktree <id> # one worktree\n commandmate verify history --days 14 --limit 100 # window and page size\n commandmate verify history --json # JSON array on stdout\n commandmate verify show 42 # gates + log tails\n commandmate verify show 42 --json\n\n history options:\n --worktree <id> Restrict to one worktree (default: all)\n --days <n> Look back n days, 1..90 (default: no lower bound)\n --limit <n> Maximum runs, 1..500 (default: 50)\n\n One run per line. The leading #<run-id> is what \"verify show\" takes:\n #42 2026-07-31T04:12:00.000Z myrepo-feature-101 manual failed failed: unit,build\n\n The listing carries gate verdicts but NOT gate log bodies \u2014 logTail is absent\n from the JSON, not null. Use \"verify show <run-id>\" when you need the log.\n\n Exit codes:\n 0 - Read succeeded (also when nothing matched: stderr note, or [] in JSON)\n 2 - Bad argument (--days/--limit out of range, bad worktree or run id)\n 99 - No such run (404), or an unexpected failure\n\n### commandmate respond <worktree-id> \"<answer>\"\n Respond to an agent's prompt.\n\n commandmate respond <id> \"yes\" # Yes/No\n commandmate respond <id> \"2\" # Multiple choice (number)\n commandmate respond <id> \"custom text\" # Free text\n commandmate respond <id> \"yes\" --instance codex-2 # Specific instance\n\n Exit codes:\n 0 - Response sent\n 99 - Prompt already dismissed (prompt_no_longer_active)\n\n### commandmate capture <worktree-id>\n Get current terminal output.\n\n commandmate capture <id> # Plain text\n commandmate capture <id> --json # JSON with status info\n commandmate capture <id> --instance codex # Specific instance\n\n### commandmate auto-yes <worktree-id>\n Control auto-yes (automatic prompt response).\n\n commandmate auto-yes <id> --enable # Enable (default 1h)\n commandmate auto-yes <id> --enable --duration 3h # With duration\n commandmate auto-yes <id> --enable --stop-pattern \"error\"\n commandmate auto-yes <id> --disable # Disable\n commandmate auto-yes <id> --enable --instance codex-2 # Scoped to one instance\n\n --stop-pattern matches new terminal output, not the commands an agent runs.\n It cannot block a command; a build log that merely prints the pattern\n (e.g. \"rm -rf\" in an npm script) also triggers it and stops auto-yes.\n To suppress auto-responses for risky prompts, use the task contract's\n autoYes.denyPatterns instead (docs/design/task-contract.md).\n\n### commandmate instances <worktree-id> [action] [args]\n Discover and manage a worktree's agent-instance roster (1 agent, multiple sessions).\n\n commandmate instances <id> # List roster + running/auto-yes status\n commandmate instances <id> --json # JSON output\n commandmate instances <id> add --agent codex # Add an instance (auto-generates ID, e.g. codex-2)\n commandmate instances <id> add --agent codex --alias \"Review\" --id codex-3\n commandmate instances <id> remove <instance-id> # Remove from roster\n commandmate instances <id> remove <instance-id> --kill # Remove and kill its session\n commandmate instances <id> alias <instance-id> \"New Name\"\n commandmate instances <id> kill <instance-id> # Kill only that instance's session\n\n See \"Multi-Session\" below for the ID convention and roster semantics.\n\n### commandmate skill <subcommand>\n Manage official Agent Skills. Every subcommand is a thin client over the same\n APIs the browser UI uses: the CLI never downloads, extracts, writes or deletes\n anything itself, and never sends a filesystem path, artifact URL, file list or\n checksum (the API rejects those outright).\n\n commandmate skill list [--json] [--prerelease]\n commandmate skill info <skill-id> [--version <v>] [--json]\n commandmate skill plan <skill-id> --worktree <id> [--version <v>] [--json]\n commandmate skill install <skill-id> --worktree <id> --version <exact> [--dry-run] [--yes] [--ack-risk <id>@<version>] [--json]\n commandmate skill uninstall <skill-id> --worktree <id> [--dry-run] [--yes] [--json]\n commandmate skill status <skill-id> --worktree <id> [--json]\n\n Confirmation contract (writes = install / uninstall):\n - A plan is always built and shown first. --dry-run stops there.\n - Without a TTY, a write REQUIRES --yes. A missing --yes is refused, never\n assumed: an environment that cannot prompt must not install silently.\n - A high-risk Skill additionally requires --ack-risk <skill-id>@<version>\n with the exact id and version. --yes alone never carries a high-risk\n install, in a TTY or out of one.\n\n Exit codes:\n 0 success\n 1 the server or the Catalog could not be reached (retryable)\n 2 invalid arguments, unknown Skill or unknown version\n 11 the worktree refused it (local change, conflict, lock, plan drift)\n 12 the write was never confirmed (no --yes, declined, or missing --ack-risk)\n 13 files changed but the operation needs reconciliation\n\n --json prints the API response body verbatim on stdout; diagnostics, prompts\n and errors always go to stderr, so a failed --json run leaves stdout empty.\n\n 'skill status' reports one Skill in one worktree, read from the install\n receipt on disk. There is no per-worktree listing endpoint yet, so <skill-id>\n is required.\n\n## Multi-Session (1 agent, multiple sessions)\n\n A worktree can run several sessions of the same CLI tool concurrently. Each\n session is an \"instance\" identified by an instance ID:\n <agent> - the agent's primary instance (e.g. \"claude\")\n <agent>-<n> - an additional instance, n >= 2 (e.g. \"claude-2\", \"claude-3\")\n\n --instance is accepted by send / wait / respond / capture / auto-yes.\n send --instance auto-starts the session if it is not already running.\n\n --instance alone is the recommended way to name a target (Issue #1638). It is\n the only flag all five commands share: --agent is rejected by 'wait'. A\n rostered instance already carries its CLI tool (Issue #1629), and an instance\n id that is itself a tool id resolves to that tool's primary instance even\n without a roster entry, so '--instance codex' needs no --agent.\n\n --agent remains accepted by send / respond / capture / auto-yes as the\n supplement for ad-hoc instances the roster does not know -- notably\n '--register', which cannot infer the tool from an id like codex-3. Passing an\n --agent that contradicts the roster is an error (exit 2), not an override.\n\n The roster (visible in the browser UI's Agent panel) is the list of known\n instances with aliases and display order. Ad-hoc sessions started via\n 'send --instance' do NOT appear in the roster unless registered:\n commandmate send <id> \"...\" --instance claude-2 --register\n Without --register, the session still runs and responds to CLI commands,\n but it will not show up in the UI sidebar/roster until added there or via\n 'commandmate instances <id> add'.\n\n Per-instance auto-yes: --instance scopes --auto-yes/--duration/--stop-pattern\n to that specific session, independent of other instances of the same agent.\n\n commandmate instances <id> # discover valid --instance values\n commandmate send <id> \"task\" --instance codex-2 --auto-yes\n commandmate wait <id> --instance codex-2 --timeout 600\n commandmate capture <id> --instance codex-2\n\n## All Exit Codes\n\n 0 SUCCESS - Completed successfully\n 1 DEPENDENCY_ERROR - Server not running\n 2 CONFIG_ERROR - Validation error (invalid agent, duration, etc.)\n 10 PROMPT_DETECTED - Prompt detected during wait\n 20 VERIFY_FAILED - A verification gate failed (verify, wait --verify)\n 21 NOT_STARTED - Nothing to verify: no commits, no uncommitted changes\n 99 UNEXPECTED_ERROR - Unexpected error / resource not found / no verdict\n 124 TIMEOUT - Wait or verification timeout exceeded\n\n When one 'wait' covers several worktrees, the reported code is the highest\n priority one observed: 10 > 20 > 21 > 124.\n\n## Troubleshooting\n\n Server not running:\n commandmate start --daemon\n CM_PORT=3011 commandmate ls # Different port\n\n Worktree not found:\n commandmate ls --quiet # Check registered IDs\n commandmate sync # Sync new worktrees (e.g. after git worktree add)\n\n Authentication:\n CM_AUTH_TOKEN=your-token commandmate ls\n";
9
9
  export declare const AGENT_OPERATIONS_SAMPLES = "# CLI Agent Operations - Workflow Samples\n\nCopy and adapt these patterns for your use case.\n\n## 1. Basic: send, wait, capture\n\n WT=$(commandmate ls --branch feature/101 --quiet)\n commandmate send \"$WT\" \"Implement Issue #101 with TDD\"\n commandmate wait \"$WT\" --timeout 600\n commandmate capture \"$WT\"\n\n## 2. With Auto-Yes (unattended execution)\n\n WT=$(commandmate ls --branch feature/101 --quiet)\n commandmate send \"$WT\" \"Implement Issue #101\" --auto-yes --duration 3h\n commandmate wait \"$WT\" --timeout 1800\n commandmate auto-yes \"$WT\" --disable # Disable for safety\n commandmate capture \"$WT\" --json\n\n## 3. Prompt Response Loop\n\n WT=$(commandmate ls --branch feature/101 --quiet)\n commandmate send \"$WT\" \"Refactor this module\"\n\n while true; do\n commandmate wait \"$WT\" --timeout 600 --on-prompt agent\n EXIT_CODE=$?\n\n if [ $EXIT_CODE -eq 0 ]; then\n echo \"Done\"\n break\n elif [ $EXIT_CODE -eq 10 ]; then\n commandmate respond \"$WT\" \"yes\"\n elif [ $EXIT_CODE -eq 124 ]; then\n echo \"Timeout\"\n break\n fi\n done\n\n commandmate capture \"$WT\"\n\n## 4. Parallel Worktrees\n\n WT1=$(commandmate ls --branch feature/101 --quiet)\n WT2=$(commandmate ls --branch feature/102 --quiet)\n\n commandmate send \"$WT1\" \"Implement #101\" --auto-yes\n commandmate send \"$WT2\" \"Implement #102\" --auto-yes --instance codex\n\n # One --instance covers every worktree id in the call, so worktrees on\n # different instances need one wait each. Both agents keep running while the\n # first wait blocks, so this costs no wall clock over a combined wait.\n # A bare 'wait \"$WT2\"' would watch WT2's DEFAULT agent, not the codex session:\n # 'wait' has no --agent to correct that with.\n commandmate wait \"$WT1\" --timeout 1800\n commandmate wait \"$WT2\" --instance codex --timeout 1800\n\n commandmate capture \"$WT1\" --json\n commandmate capture \"$WT2\" --instance codex --json\n\n## 5. Check status before sending\n\n # Find worktrees and check status\n commandmate ls --json | python3 -c \"\n import sys, json\n for wt in json.load(sys.stdin):\n if wt['name'].startswith('feature/'):\n print(f\\\"{wt['id']} {wt['name']}\\\")\n \"\n\n## 6. Error handling pattern\n\n WT=$(commandmate ls --branch feature/101 --quiet)\n\n if [ -z \"$WT\" ]; then\n echo \"Error: worktree not found\"\n exit 1\n fi\n\n commandmate send \"$WT\" \"Fix the bug\" --auto-yes\n commandmate wait \"$WT\" --timeout 600\n EXIT_CODE=$?\n\n case $EXIT_CODE in\n 0) echo \"Success\"; commandmate capture \"$WT\" ;;\n 10) echo \"Prompt detected\"; commandmate respond \"$WT\" \"yes\" ;;\n 124) echo \"Timeout\"; commandmate capture \"$WT\" --json ;;\n *) echo \"Error: exit $EXIT_CODE\" ;;\n esac\n\n## 7. Multi-Session: run a second Codex session alongside the primary agent\n\n WT=$(commandmate ls --branch feature/101 --quiet)\n\n # Discover the roster before picking an --instance value\n commandmate instances \"$WT\"\n\n # Register a second Codex instance, then send/wait/capture scoped to it.\n # Once it is in the roster, --instance alone carries the CLI tool.\n commandmate instances \"$WT\" add --agent codex --alias \"Review\"\n commandmate send \"$WT\" \"Review the diff\" --instance codex-2 --auto-yes\n commandmate wait \"$WT\" --instance codex-2 --timeout 600\n commandmate capture \"$WT\" --instance codex-2 --json\n\n # Ad-hoc instance without pre-registering (still runs; register to show in UI).\n # --agent is required here: codex-3 is not in the roster yet, so nothing else\n # says which CLI tool to start.\n commandmate send \"$WT\" \"Quick check\" --agent codex --instance codex-3 --register\n\n # Clean up when done\n commandmate instances \"$WT\" remove codex-2 --kill\n\n## 8. Verify the work instead of trusting \"the agent stopped\"\n\n WT=$(commandmate ls --branch feature/101 --quiet)\n commandmate send \"$WT\" \"Implement Issue #101 with TDD\" --auto-yes\n\n # One call: wait for completion, then run every gate in .commandmate/verify.yaml\n commandmate wait \"$WT\" --timeout 1800 --verify\n case $? in\n 0) echo \"Verified\" ;;\n 10) commandmate respond \"$WT\" \"yes\" ;;\n 20) echo \"A gate failed\"; commandmate verify \"$WT\" --json ;;\n 21) echo \"The agent produced nothing\" ;;\n esac\n\n # Cheap pre-check: is there any work at all, before paying for the full suite?\n commandmate wait \"$WT\" --require-work || echo \"no commits and no changes\"\n\n # Re-run a subset after a fix, without waiting on the agent\n commandmate verify \"$WT\" --gates lint,unit\n";
10
10
  //# sourceMappingURL=agent-operations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-operations.d.ts","sourceRoot":"","sources":["../../../src/cli/docs/agent-operations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,sBAAsB,+icA8RlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,klJAmIpC,CAAC"}
1
+ {"version":3,"file":"agent-operations.d.ts","sourceRoot":"","sources":["../../../src/cli/docs/agent-operations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,sBAAsB,u7eAoTlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,klJAmIpC,CAAC"}
@@ -42,6 +42,16 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
42
42
  running - Agent executing a task
43
43
  waiting - Confirmation prompt active (Yes/No, etc.)
44
44
 
45
+ ### commandmate sync
46
+ Ask the server to re-scan repositories and sync worktrees to its database
47
+ (same endpoint as the GUI sync button). Run it after 'git worktree add' so the
48
+ new worktree appears in 'commandmate ls' without opening the GUI (Issue #1680).
49
+
50
+ commandmate sync # Prints the server's summary message
51
+ commandmate sync --json # Full API response (worktreeCount,
52
+ # repositoryCount, repositories,
53
+ # deletedCount, cleanupWarnings)
54
+
45
55
  ### commandmate send <worktree-id> "<message>"
46
56
  Send a message to an agent (async). Starts session automatically if not running.
47
57
 
@@ -52,9 +62,12 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
52
62
  --agent <id> Ad-hoc CLI tool for an instance the roster does not know:
53
63
  claude (default), codex, gemini, vibe-local, opencode, copilot, antigravity
54
64
  --register Register the --instance session into the agent-instance roster
55
- --auto-yes Enable auto-yes before sending
65
+ --auto-yes Enable auto-yes before sending (session-wide, no policy
66
+ guard -- for unattended runs prefer --contract with an
67
+ autoYes policy: mode / denyPatterns)
56
68
  --duration <d> Auto-yes duration: 1h, 3h, 8h (default: 1h)
57
- --stop-pattern <p> Auto-yes stop condition (regex)
69
+ --stop-pattern <p> Auto-yes stop condition (regex; matches terminal output,
70
+ cannot block commands -- see auto-yes below)
58
71
 
59
72
  Finding worktree IDs:
60
73
  WT=$(commandmate ls --branch feature/101 --quiet)
@@ -92,6 +105,9 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
92
105
 
93
106
  Prompt JSON output (exit 10):
94
107
  {"worktreeId":"...","cliToolId":"claude","type":"yes_no","question":"...","options":["yes","no"],"status":"pending"}
108
+ The payload IS the prompt -- read it from stdout before falling back to
109
+ capture. For type "selection_list", options is empty by design and the
110
+ question field carries the reason.
95
111
 
96
112
  --verify turns "the agent stopped" into "the work passes the repository's own
97
113
  checks". Verification only runs when completion was detected: a prompt (10) or
@@ -181,6 +197,12 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
181
197
  commandmate auto-yes <id> --disable # Disable
182
198
  commandmate auto-yes <id> --enable --instance codex-2 # Scoped to one instance
183
199
 
200
+ --stop-pattern matches new terminal output, not the commands an agent runs.
201
+ It cannot block a command; a build log that merely prints the pattern
202
+ (e.g. "rm -rf" in an npm script) also triggers it and stops auto-yes.
203
+ To suppress auto-responses for risky prompts, use the task contract's
204
+ autoYes.denyPatterns instead (docs/design/task-contract.md).
205
+
184
206
  ### commandmate instances <worktree-id> [action] [args]
185
207
  Discover and manage a worktree's agent-instance roster (1 agent, multiple sessions).
186
208
 
@@ -290,7 +312,7 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
290
312
 
291
313
  Worktree not found:
292
314
  commandmate ls --quiet # Check registered IDs
293
- curl -s -X POST http://localhost:3000/api/repositories/sync # Sync new worktrees
315
+ commandmate sync # Sync new worktrees (e.g. after git worktree add)
294
316
 
295
317
  Authentication:
296
318
  CM_AUTH_TOKEN=your-token commandmate ls
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA8D5C;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAkLtC"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAgE5C;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAmLtC"}
@@ -17,6 +17,8 @@ const issue_1 = require("./commands/issue");
17
17
  const docs_1 = require("./commands/docs");
18
18
  // Issue #518: Agent orchestration commands
19
19
  const ls_1 = require("./commands/ls");
20
+ // Issue #1680: Server-side worktree re-scan from the CLI
21
+ const sync_1 = require("./commands/sync");
20
22
  const send_1 = require("./commands/send");
21
23
  const wait_1 = require("./commands/wait");
22
24
  const respond_1 = require("./commands/respond");
@@ -201,6 +203,7 @@ function buildProgram() {
201
203
  // Issue #518: Agent orchestration commands [DR1-08] [IA3-07]
202
204
  // These commands enable CLI-based agent control for worktree operations.
203
205
  program.addCommand((0, ls_1.createLsCommand)());
206
+ program.addCommand((0, sync_1.createSyncCommand)());
204
207
  program.addCommand((0, send_1.createSendCommand)());
205
208
  program.addCommand((0, wait_1.createWaitCommand)());
206
209
  program.addCommand((0, respond_1.createRespondCommand)());
@@ -36,6 +36,16 @@ export interface WorktreeItem {
36
36
  }>>;
37
37
  agentInstances?: AgentInstance[];
38
38
  }
39
+ export interface RepositorySyncResponse {
40
+ success: boolean;
41
+ message: string;
42
+ worktreeCount: number;
43
+ repositoryCount: number;
44
+ repositories: string[];
45
+ deletedCount: number;
46
+ /** Sanitized, generic warnings only (SEC-MF-001); details stay in server logs. */
47
+ cleanupWarnings: string[];
48
+ }
39
49
  export interface AgentInstance {
40
50
  id: string;
41
51
  cliTool: string;
@@ -60,6 +70,13 @@ export interface CurrentOutputResponse {
60
70
  enabled: boolean;
61
71
  expiresAt: number | null;
62
72
  stopReason?: string;
73
+ lastSuppression?: {
74
+ reason: string;
75
+ mode: string | null;
76
+ promptType: string;
77
+ pattern?: string;
78
+ at: number;
79
+ } | null;
63
80
  };
64
81
  thinking: boolean;
65
82
  thinkingMessage: string | null;
@@ -79,12 +96,44 @@ export interface PromptData {
79
96
  question: string;
80
97
  options?: unknown[];
81
98
  status?: string;
99
+ answer?: string;
100
+ answeredAt?: string;
101
+ /** Mirrors: src/types/models.ts PromptAnsweredBy (Issue #1685) */
102
+ answeredBy?: string;
103
+ /** Human-facing context block preceding the prompt (Issue #235). */
104
+ instructionText?: string;
105
+ /**
106
+ * What this prompt asks approval for — the surface `autoYes.denyPatterns` are
107
+ * judged against (Issue #1699). Narrower than `instructionText` on purpose:
108
+ * the latter is a pane window and carries finished turns.
109
+ */
110
+ approvalTarget?: string;
82
111
  [key: string]: unknown;
83
112
  }
113
+ export interface PromptMessageResponse {
114
+ id: string;
115
+ worktreeId: string;
116
+ role: string;
117
+ content: string;
118
+ timestamp: string;
119
+ messageType: string;
120
+ promptData?: PromptData;
121
+ cliToolId?: string;
122
+ instanceId?: string;
123
+ archived: boolean;
124
+ }
84
125
  export interface PromptResponseResult {
85
126
  success: boolean;
86
127
  answer: string;
87
128
  reason?: string;
129
+ /** Issue #1681: detail accompanying reason 'unresolvable_answer' */
130
+ message?: string;
131
+ /** Issue #1681: how a semantic yes/no or --default answer was resolved */
132
+ resolved?: {
133
+ via: 'semantic' | 'default';
134
+ optionNumber?: number;
135
+ optionLabel: string;
136
+ };
88
137
  }
89
138
  /** wait exit 10 CLI extended output type */
90
139
  export interface WaitPromptOutput {
@@ -94,6 +143,25 @@ export interface WaitPromptOutput {
94
143
  question: string;
95
144
  options: unknown[];
96
145
  status: string;
146
+ /**
147
+ * What the prompt asks approval for, when the detector could attribute a block
148
+ * to it (Issue #1699). Present so a caller that reads only this payload can
149
+ * see what a `deny-pattern` verdict below was actually judged against.
150
+ */
151
+ approvalTarget?: string;
152
+ /**
153
+ * Set when the contract's autoYes policy withheld an answer for this session
154
+ * (Issue #1699). Without it, a prompt an operator has to answer by hand is
155
+ * indistinguishable on stdout from one nobody configured Auto-Yes for — which
156
+ * is why the #1699 suppression loop went unnoticed for an hour.
157
+ */
158
+ autoYesSuppression?: {
159
+ reason: string;
160
+ mode: string | null;
161
+ promptType: string;
162
+ pattern?: string;
163
+ ageSeconds: number;
164
+ };
97
165
  [key: string]: unknown;
98
166
  }
99
167
  export interface DailySummaryGetResponse {
@@ -389,6 +457,139 @@ export interface SkillUninstallPlan {
389
457
  export interface SkillUninstallPlanResponse {
390
458
  plan: SkillUninstallPlan;
391
459
  }
460
+ /** A typed reason an update is refused (Issue #1243). Paths are repository-relative. */
461
+ export interface SkillUpdateBlocker {
462
+ code: string;
463
+ path: string | null;
464
+ /** Underlying per-path finding, when one exists (e.g. a local modification). */
465
+ detail: string | null;
466
+ }
467
+ /** Mirrors: src/lib/skills/update-plan.ts SkillUpdatePlanDto (subset) [Issue #1243]. */
468
+ export interface SkillUpdatePlan {
469
+ /** Single-use token apply (#1244) will present unchanged. The CLI never inspects it. */
470
+ token: string;
471
+ expiresAt: string;
472
+ updatable: boolean;
473
+ blockers: SkillUpdateBlocker[];
474
+ nextActionKey: string;
475
+ requiresRiskAcknowledgement: boolean;
476
+ riskIncreased: boolean;
477
+ update: {
478
+ fromVersion: string;
479
+ toVersion: string;
480
+ latestVersion: string | null;
481
+ reasonCode: string;
482
+ prerelease: boolean;
483
+ };
484
+ target: {
485
+ worktreeId: string;
486
+ worktreeName: string;
487
+ repositoryName: string;
488
+ branch: string | null;
489
+ headState: string;
490
+ workingTreeDirty: boolean;
491
+ /** Repository-relative; the server never serves a machine-absolute path. */
492
+ installRoot: string;
493
+ /** Every recorded root the update rewrites, primary first (#1460). */
494
+ installRoots: string[];
495
+ };
496
+ skill: {
497
+ id: string;
498
+ name: string;
499
+ version: string;
500
+ effectiveRisk: string;
501
+ riskRationale: string;
502
+ declaredPermissions: string[];
503
+ scriptPaths: string[];
504
+ compatibility: {
505
+ commandmate: SkillCompatibilityView;
506
+ };
507
+ };
508
+ securityDiff: {
509
+ risk: {
510
+ from: {
511
+ effective: string;
512
+ };
513
+ to: {
514
+ effective: string;
515
+ };
516
+ increased: boolean;
517
+ };
518
+ permissions: {
519
+ added: string[];
520
+ removed: string[];
521
+ };
522
+ executables: {
523
+ added: string[];
524
+ removed: string[];
525
+ };
526
+ scripts: {
527
+ added: string[];
528
+ removed: string[];
529
+ };
530
+ changelogs: Array<{
531
+ version: string;
532
+ changelog: string;
533
+ }>;
534
+ };
535
+ files: Array<{
536
+ path: string;
537
+ change: string;
538
+ }>;
539
+ stats: {
540
+ added: number;
541
+ updated: number;
542
+ removed: number;
543
+ unchanged: number;
544
+ localModified: number;
545
+ localMissing: number;
546
+ localUnknown: number;
547
+ irregular: number;
548
+ };
549
+ warnings: string[];
550
+ }
551
+ /** Mirrors: src/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.ts POST response. */
552
+ export interface SkillUpdatePlanResponse {
553
+ plan: SkillUpdatePlan;
554
+ }
555
+ /**
556
+ * Mirrors: src/app/api/worktrees/[id]/skills/[skillId]/update/route.ts POST
557
+ * response [Issue #1244]. `update` is null when a replay finds no index row;
558
+ * `reload` and `rollback` are absent from the narrower replay body.
559
+ */
560
+ export interface SkillUpdateResponse {
561
+ operation: SkillOperationResult;
562
+ update: {
563
+ skillId: string;
564
+ fromVersion?: string;
565
+ toVersion?: string;
566
+ /** Present on the replay body instead of fromVersion/toVersion. */
567
+ version?: string;
568
+ installRoot: string;
569
+ installRoots?: string[];
570
+ pendingRoots?: string[];
571
+ } | null;
572
+ reload?: {
573
+ skillId: string;
574
+ version: string;
575
+ installRoot: string;
576
+ agents: Array<{
577
+ agent: string;
578
+ support: string;
579
+ messageKey: string;
580
+ }>;
581
+ };
582
+ rollback?: {
583
+ available: boolean;
584
+ backup: {
585
+ backupId: string;
586
+ fromVersion: string;
587
+ fileCount: number;
588
+ verified: boolean;
589
+ };
590
+ messageKey: string;
591
+ };
592
+ }
392
593
  /** Mirrors: src/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.ts POST response. */
393
594
  export interface SkillUninstallResponse {
394
595
  operation: SkillOperationResult;