commandmate 0.16.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +298 -228
  3. package/.next/app-path-routes-manifest.json +39 -29
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +12 -12
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +57 -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.js +1 -1
  13. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  14. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  16. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  17. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/assistant/messages/route.js +1 -1
  19. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  20. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/assistant/session/route.js +1 -1
  22. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  23. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/assistant/start/route.js +1 -1
  25. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  26. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/assistant/terminal/route.js +3 -3
  28. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  29. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/assistant/tools/route.js +1 -1
  31. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  32. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/fs/recent-paths/route.js +1 -1
  43. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/hooks/agent-event/route.js +1 -0
  45. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -0
  46. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -0
  47. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  48. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  49. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/metrics/vibe/route.js +37 -0
  51. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -0
  52. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -0
  53. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  55. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  59. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  61. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  63. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/clone/route.js +1 -1
  66. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/restore/route.js +1 -1
  70. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  71. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/repositories/route.js +1 -1
  73. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  74. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/scan/route.js +1 -1
  76. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  77. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/repositories/sync/route.js +1 -1
  79. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  80. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +4 -0
  90. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -0
  91. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -0
  92. package/.next/server/app/api/tasks/[taskId]/route.js +4 -0
  93. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -0
  94. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -0
  95. package/.next/server/app/api/templates/[id]/route.js +1 -1
  96. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/templates/route.js +1 -1
  98. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/todos/route.js +1 -1
  100. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -0
  102. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -0
  103. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -0
  104. package/.next/server/app/api/verification/runs/route.js +1 -0
  105. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -0
  106. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -0
  107. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  109. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  112. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  119. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  123. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  192. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  195. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  204. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/skills/route.js +2 -2
  218. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  223. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  226. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/tasks/route.js +6 -0
  228. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -0
  229. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -0
  230. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  237. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/verify/route.js +4 -0
  249. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -0
  250. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -0
  251. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -0
  252. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -0
  253. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -0
  254. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -0
  255. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -0
  256. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -0
  257. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/route.js +1 -1
  260. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  261. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  263. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  264. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  265. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  266. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  267. package/.next/server/app/page_client-reference-manifest.js +1 -1
  268. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  269. package/.next/server/app/repositories/page.js +1 -1
  270. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  271. package/.next/server/app/review/page.js +1 -1
  272. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  273. package/.next/server/app/sessions/page.js +1 -1
  274. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  275. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  276. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  277. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  278. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  279. package/.next/server/app/worktrees/[id]/page.js +2 -2
  280. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  281. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  282. package/.next/server/app-paths-manifest.json +39 -29
  283. package/.next/server/chunks/1068.js +1 -1
  284. package/.next/server/chunks/1117.js +1 -1
  285. package/.next/server/chunks/1503.js +2 -0
  286. package/.next/server/chunks/2366.js +1 -0
  287. package/.next/server/chunks/3042.js +1 -1
  288. package/.next/server/chunks/3736.js +1 -1
  289. package/.next/server/chunks/4444.js +1 -1
  290. package/.next/server/chunks/4689.js +25 -0
  291. package/.next/server/chunks/5381.js +50 -10
  292. package/.next/server/chunks/5959.js +3 -3
  293. package/.next/server/chunks/6130.js +1 -1
  294. package/.next/server/chunks/6274.js +13 -0
  295. package/.next/server/chunks/646.js +1 -1
  296. package/.next/server/chunks/8681.js +1 -1
  297. package/.next/server/chunks/8807.js +194 -51
  298. package/.next/server/chunks/8856.js +4 -0
  299. package/.next/server/chunks/9687.js +2 -2
  300. package/.next/server/middleware-manifest.json +5 -5
  301. package/.next/server/pages/500.html +1 -1
  302. package/.next/server/server-reference-manifest.json +1 -1
  303. package/.next/static/-BSmW0Ae2YsxyCl_ue7_d/_buildManifest.js +1 -0
  304. package/.next/static/chunks/{4560-8ffb0bb19f2ba998.js → 4560-0917ae2e6a0e5400.js} +1 -1
  305. package/.next/static/chunks/{6488-c2a968ec806975c2.js → 6488-109e3825c7249e47.js} +1 -1
  306. package/.next/static/chunks/app/api/app/update/route-8440b6c72bed83a1.js +1 -0
  307. package/.next/static/chunks/app/api/app/update-check/route-8440b6c72bed83a1.js +1 -0
  308. package/.next/static/chunks/app/api/assistant/conversation/route-8440b6c72bed83a1.js +1 -0
  309. package/.next/static/chunks/app/api/assistant/current-output/route-8440b6c72bed83a1.js +1 -0
  310. package/.next/static/chunks/app/api/assistant/messages/route-8440b6c72bed83a1.js +1 -0
  311. package/.next/static/chunks/app/api/assistant/session/route-8440b6c72bed83a1.js +1 -0
  312. package/.next/static/chunks/app/api/assistant/start/route-8440b6c72bed83a1.js +1 -0
  313. package/.next/static/chunks/app/api/assistant/terminal/route-8440b6c72bed83a1.js +1 -0
  314. package/.next/static/chunks/app/api/assistant/tools/route-8440b6c72bed83a1.js +1 -0
  315. package/.next/static/chunks/app/api/auth/login/route-8440b6c72bed83a1.js +1 -0
  316. package/.next/static/chunks/app/api/auth/logout/route-8440b6c72bed83a1.js +1 -0
  317. package/.next/static/chunks/app/api/auth/status/route-8440b6c72bed83a1.js +1 -0
  318. package/.next/static/chunks/app/api/daily-summary/route-8440b6c72bed83a1.js +1 -0
  319. package/.next/static/chunks/app/api/daily-summary/status/route-8440b6c72bed83a1.js +1 -0
  320. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8440b6c72bed83a1.js +1 -0
  321. package/.next/static/chunks/app/api/external-apps/[id]/route-8440b6c72bed83a1.js +1 -0
  322. package/.next/static/chunks/app/api/external-apps/route-8440b6c72bed83a1.js +1 -0
  323. package/.next/static/chunks/app/api/fs/browse/route-8440b6c72bed83a1.js +1 -0
  324. package/.next/static/chunks/app/api/fs/recent-paths/route-8440b6c72bed83a1.js +1 -0
  325. package/.next/static/chunks/app/api/hooks/agent-event/route-8440b6c72bed83a1.js +1 -0
  326. package/.next/static/chunks/app/api/hooks/claude-done/route-8440b6c72bed83a1.js +1 -0
  327. package/.next/static/chunks/app/api/metrics/vibe/route-8440b6c72bed83a1.js +1 -0
  328. package/.next/static/chunks/app/api/ollama/models/route-8440b6c72bed83a1.js +1 -0
  329. package/.next/static/chunks/app/api/push/subscriptions/route-8440b6c72bed83a1.js +1 -0
  330. package/.next/static/chunks/app/api/push/vapid/route-8440b6c72bed83a1.js +1 -0
  331. package/.next/static/chunks/app/api/repositories/[id]/route-8440b6c72bed83a1.js +1 -0
  332. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +1 -0
  333. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8440b6c72bed83a1.js +1 -0
  334. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8440b6c72bed83a1.js +1 -0
  335. package/.next/static/chunks/app/api/repositories/clone/route-8440b6c72bed83a1.js +1 -0
  336. package/.next/static/chunks/app/api/repositories/excluded/route-8440b6c72bed83a1.js +1 -0
  337. package/.next/static/chunks/app/api/repositories/restore/route-8440b6c72bed83a1.js +1 -0
  338. package/.next/static/chunks/app/api/repositories/route-8440b6c72bed83a1.js +1 -0
  339. package/.next/static/chunks/app/api/repositories/scan/route-8440b6c72bed83a1.js +1 -0
  340. package/.next/static/chunks/app/api/repositories/sync/route-8440b6c72bed83a1.js +1 -0
  341. package/.next/static/chunks/app/api/repositories/validate-path/route-8440b6c72bed83a1.js +1 -0
  342. package/.next/static/chunks/app/api/sidebar/group-order/route-8440b6c72bed83a1.js +1 -0
  343. package/.next/static/chunks/app/api/skills/[id]/route-8440b6c72bed83a1.js +1 -0
  344. package/.next/static/chunks/app/api/skills/installations/route-8440b6c72bed83a1.js +1 -0
  345. package/.next/static/chunks/app/api/skills/operations/route-8440b6c72bed83a1.js +1 -0
  346. package/.next/static/chunks/app/api/skills/reindex/route-8440b6c72bed83a1.js +1 -0
  347. package/.next/static/chunks/app/api/skills/route-8440b6c72bed83a1.js +1 -0
  348. package/.next/static/chunks/app/api/slash-commands/route-8440b6c72bed83a1.js +1 -0
  349. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8440b6c72bed83a1.js +1 -0
  350. package/.next/static/chunks/app/api/tasks/[taskId]/route-8440b6c72bed83a1.js +1 -0
  351. package/.next/static/chunks/app/api/templates/[id]/route-8440b6c72bed83a1.js +1 -0
  352. package/.next/static/chunks/app/api/templates/route-8440b6c72bed83a1.js +1 -0
  353. package/.next/static/chunks/app/api/todos/route-8440b6c72bed83a1.js +1 -0
  354. package/.next/static/chunks/app/api/verification/runs/[runId]/route-8440b6c72bed83a1.js +1 -0
  355. package/.next/static/chunks/app/api/verification/runs/route-8440b6c72bed83a1.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8440b6c72bed83a1.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8440b6c72bed83a1.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8440b6c72bed83a1.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8440b6c72bed83a1.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8440b6c72bed83a1.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8440b6c72bed83a1.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8440b6c72bed83a1.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8440b6c72bed83a1.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8440b6c72bed83a1.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8440b6c72bed83a1.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8440b6c72bed83a1.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8440b6c72bed83a1.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8440b6c72bed83a1.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8440b6c72bed83a1.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8440b6c72bed83a1.js +1 -0
  371. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8440b6c72bed83a1.js +1 -0
  372. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8440b6c72bed83a1.js +1 -0
  373. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8440b6c72bed83a1.js +1 -0
  374. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8440b6c72bed83a1.js +1 -0
  375. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8440b6c72bed83a1.js +1 -0
  376. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8440b6c72bed83a1.js +1 -0
  377. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8440b6c72bed83a1.js +1 -0
  378. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8440b6c72bed83a1.js +1 -0
  379. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8440b6c72bed83a1.js +1 -0
  380. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8440b6c72bed83a1.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8440b6c72bed83a1.js +1 -0
  382. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8440b6c72bed83a1.js +1 -0
  383. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8440b6c72bed83a1.js +1 -0
  384. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8440b6c72bed83a1.js +1 -0
  385. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8440b6c72bed83a1.js +1 -0
  386. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8440b6c72bed83a1.js +1 -0
  387. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8440b6c72bed83a1.js +1 -0
  388. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8440b6c72bed83a1.js +1 -0
  389. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8440b6c72bed83a1.js +1 -0
  390. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8440b6c72bed83a1.js +1 -0
  391. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8440b6c72bed83a1.js +1 -0
  392. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8440b6c72bed83a1.js +1 -0
  393. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8440b6c72bed83a1.js +1 -0
  394. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8440b6c72bed83a1.js +1 -0
  395. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8440b6c72bed83a1.js +1 -0
  396. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8440b6c72bed83a1.js +1 -0
  397. package/.next/static/chunks/app/api/worktrees/[id]/route-8440b6c72bed83a1.js +1 -0
  398. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8440b6c72bed83a1.js +1 -0
  399. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8440b6c72bed83a1.js +1 -0
  400. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8440b6c72bed83a1.js +1 -0
  401. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8440b6c72bed83a1.js +1 -0
  402. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8440b6c72bed83a1.js +1 -0
  403. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8440b6c72bed83a1.js +1 -0
  404. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8440b6c72bed83a1.js +1 -0
  405. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8440b6c72bed83a1.js +1 -0
  406. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8440b6c72bed83a1.js +1 -0
  407. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8440b6c72bed83a1.js +1 -0
  408. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8440b6c72bed83a1.js +1 -0
  409. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8440b6c72bed83a1.js +1 -0
  410. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8440b6c72bed83a1.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8440b6c72bed83a1.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8440b6c72bed83a1.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8440b6c72bed83a1.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8440b6c72bed83a1.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8440b6c72bed83a1.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8440b6c72bed83a1.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8440b6c72bed83a1.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8440b6c72bed83a1.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8440b6c72bed83a1.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8440b6c72bed83a1.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8440b6c72bed83a1.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8440b6c72bed83a1.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8440b6c72bed83a1.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/route-8440b6c72bed83a1.js +1 -0
  426. package/.next/static/chunks/app/manifest.webmanifest/route-8440b6c72bed83a1.js +1 -0
  427. package/.next/static/chunks/app/proxy/[...path]/route-8440b6c72bed83a1.js +1 -0
  428. package/.next/static/chunks/app/repositories/page-1ed1e5a542ecc168.js +1 -0
  429. package/.next/static/chunks/app/review/{page-f431d630097c2e85.js → page-b559bfb11c46931b.js} +1 -1
  430. package/.next/static/chunks/app/sessions/{page-20f07a99db64d2ca.js → page-3fa7e767d0ab3889.js} +1 -1
  431. package/.next/static/chunks/app/worktrees/[id]/page-12b3c5f32fc6094e.js +1 -0
  432. package/.next/trace +12 -11
  433. package/.next/types/app/api/hooks/agent-event/route.ts +347 -0
  434. package/.next/types/app/api/metrics/vibe/route.ts +347 -0
  435. package/.next/types/app/api/tasks/[taskId]/cancel/route.ts +347 -0
  436. package/.next/types/app/api/tasks/[taskId]/route.ts +347 -0
  437. package/.next/types/app/api/verification/runs/[runId]/route.ts +347 -0
  438. package/.next/types/app/api/verification/runs/route.ts +347 -0
  439. package/.next/types/app/api/worktrees/[id]/tasks/route.ts +347 -0
  440. package/.next/types/app/api/worktrees/[id]/verify/route.ts +347 -0
  441. package/.next/types/app/api/worktrees/[id]/verify/runs/[runId]/route.ts +347 -0
  442. package/.next/types/app/api/worktrees/[id]/verify/runs/route.ts +347 -0
  443. package/.next/types/routes.d.ts +11 -1
  444. package/.next/types/validator.ts +90 -0
  445. package/dist/cli/commands/report.d.ts +1 -0
  446. package/dist/cli/commands/report.d.ts.map +1 -1
  447. package/dist/cli/commands/report.js +54 -0
  448. package/dist/cli/commands/send.d.ts.map +1 -1
  449. package/dist/cli/commands/send.js +116 -14
  450. package/dist/cli/commands/task.d.ts +11 -0
  451. package/dist/cli/commands/task.d.ts.map +1 -0
  452. package/dist/cli/commands/task.js +126 -0
  453. package/dist/cli/commands/verify.d.ts +19 -0
  454. package/dist/cli/commands/verify.d.ts.map +1 -0
  455. package/dist/cli/commands/verify.js +229 -0
  456. package/dist/cli/commands/wait.d.ts +2 -0
  457. package/dist/cli/commands/wait.d.ts.map +1 -1
  458. package/dist/cli/commands/wait.js +128 -13
  459. package/dist/cli/docs/agent-operations.d.ts +2 -2
  460. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  461. package/dist/cli/docs/agent-operations.js +92 -3
  462. package/dist/cli/program.d.ts.map +1 -1
  463. package/dist/cli/program.js +6 -0
  464. package/dist/cli/types/api-responses.d.ts +180 -0
  465. package/dist/cli/types/api-responses.d.ts.map +1 -1
  466. package/dist/cli/types/index.d.ts +82 -0
  467. package/dist/cli/types/index.d.ts.map +1 -1
  468. package/dist/cli/types/index.js +30 -1
  469. package/dist/cli/utils/api-client.d.ts +8 -0
  470. package/dist/cli/utils/api-client.d.ts.map +1 -1
  471. package/dist/cli/utils/verify-runner.d.ts +63 -0
  472. package/dist/cli/utils/verify-runner.d.ts.map +1 -0
  473. package/dist/cli/utils/verify-runner.js +175 -0
  474. package/dist/server/server.js +15 -0
  475. package/dist/server/src/config/auto-yes-config.js +22 -0
  476. package/dist/server/src/lib/auto-yes-poller.js +34 -2
  477. package/dist/server/src/lib/auto-yes-state.js +6 -19
  478. package/dist/server/src/lib/db/db.js +34 -1
  479. package/dist/server/src/lib/db/migrations/index.js +6 -0
  480. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  481. package/dist/server/src/lib/db/migrations/v49-verification-runs.js +86 -0
  482. package/dist/server/src/lib/db/migrations/v50-tasks.js +68 -0
  483. package/dist/server/src/lib/db/migrations/v51-task-events.js +58 -0
  484. package/dist/server/src/lib/db/task-events-db.js +59 -0
  485. package/dist/server/src/lib/db/tasks-db.js +263 -0
  486. package/dist/server/src/lib/db/verification-db.js +290 -0
  487. package/dist/server/src/lib/polling/auto-yes-policy.js +117 -0
  488. package/dist/server/src/lib/polling/auto-yes-resolver.js +144 -4
  489. package/dist/server/src/lib/polling/response-checker.js +8 -0
  490. package/dist/server/src/lib/session/agent-event-state.js +46 -0
  491. package/dist/server/src/lib/session/current-output-builder.js +4 -0
  492. package/dist/server/src/lib/session/status-mapping.js +146 -0
  493. package/dist/server/src/lib/tasks/contract-parser.js +385 -0
  494. package/dist/server/src/lib/tasks/task-state-machine.js +183 -0
  495. package/dist/server/src/lib/tasks/task-transition-service.js +106 -0
  496. package/dist/server/src/lib/verification/verification-reconciler.js +49 -0
  497. package/dist/server/src/types/sidebar.js +7 -20
  498. package/package.json +5 -2
  499. package/scripts/hooks/cmate-agent-event.sh +175 -0
  500. package/.next/server/chunks/2064.js +0 -2
  501. package/.next/static/AKqbAyuzbFfg05qpbCI_K/_buildManifest.js +0 -1
  502. package/.next/static/chunks/app/api/app/update/route-55e398bd20e2d7a9.js +0 -1
  503. package/.next/static/chunks/app/api/app/update-check/route-55e398bd20e2d7a9.js +0 -1
  504. package/.next/static/chunks/app/api/assistant/conversation/route-55e398bd20e2d7a9.js +0 -1
  505. package/.next/static/chunks/app/api/assistant/current-output/route-55e398bd20e2d7a9.js +0 -1
  506. package/.next/static/chunks/app/api/assistant/messages/route-55e398bd20e2d7a9.js +0 -1
  507. package/.next/static/chunks/app/api/assistant/session/route-55e398bd20e2d7a9.js +0 -1
  508. package/.next/static/chunks/app/api/assistant/start/route-55e398bd20e2d7a9.js +0 -1
  509. package/.next/static/chunks/app/api/assistant/terminal/route-55e398bd20e2d7a9.js +0 -1
  510. package/.next/static/chunks/app/api/assistant/tools/route-55e398bd20e2d7a9.js +0 -1
  511. package/.next/static/chunks/app/api/auth/login/route-55e398bd20e2d7a9.js +0 -1
  512. package/.next/static/chunks/app/api/auth/logout/route-55e398bd20e2d7a9.js +0 -1
  513. package/.next/static/chunks/app/api/auth/status/route-55e398bd20e2d7a9.js +0 -1
  514. package/.next/static/chunks/app/api/daily-summary/route-55e398bd20e2d7a9.js +0 -1
  515. package/.next/static/chunks/app/api/daily-summary/status/route-55e398bd20e2d7a9.js +0 -1
  516. package/.next/static/chunks/app/api/external-apps/[id]/health/route-55e398bd20e2d7a9.js +0 -1
  517. package/.next/static/chunks/app/api/external-apps/[id]/route-55e398bd20e2d7a9.js +0 -1
  518. package/.next/static/chunks/app/api/external-apps/route-55e398bd20e2d7a9.js +0 -1
  519. package/.next/static/chunks/app/api/fs/browse/route-55e398bd20e2d7a9.js +0 -1
  520. package/.next/static/chunks/app/api/fs/recent-paths/route-55e398bd20e2d7a9.js +0 -1
  521. package/.next/static/chunks/app/api/hooks/claude-done/route-55e398bd20e2d7a9.js +0 -1
  522. package/.next/static/chunks/app/api/ollama/models/route-55e398bd20e2d7a9.js +0 -1
  523. package/.next/static/chunks/app/api/push/subscriptions/route-55e398bd20e2d7a9.js +0 -1
  524. package/.next/static/chunks/app/api/push/vapid/route-55e398bd20e2d7a9.js +0 -1
  525. package/.next/static/chunks/app/api/repositories/[id]/route-55e398bd20e2d7a9.js +0 -1
  526. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-55e398bd20e2d7a9.js +0 -1
  527. package/.next/static/chunks/app/api/repositories/[id]/todos/route-55e398bd20e2d7a9.js +0 -1
  528. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-55e398bd20e2d7a9.js +0 -1
  529. package/.next/static/chunks/app/api/repositories/clone/route-55e398bd20e2d7a9.js +0 -1
  530. package/.next/static/chunks/app/api/repositories/excluded/route-55e398bd20e2d7a9.js +0 -1
  531. package/.next/static/chunks/app/api/repositories/restore/route-55e398bd20e2d7a9.js +0 -1
  532. package/.next/static/chunks/app/api/repositories/route-55e398bd20e2d7a9.js +0 -1
  533. package/.next/static/chunks/app/api/repositories/scan/route-55e398bd20e2d7a9.js +0 -1
  534. package/.next/static/chunks/app/api/repositories/sync/route-55e398bd20e2d7a9.js +0 -1
  535. package/.next/static/chunks/app/api/repositories/validate-path/route-55e398bd20e2d7a9.js +0 -1
  536. package/.next/static/chunks/app/api/sidebar/group-order/route-55e398bd20e2d7a9.js +0 -1
  537. package/.next/static/chunks/app/api/skills/[id]/route-55e398bd20e2d7a9.js +0 -1
  538. package/.next/static/chunks/app/api/skills/installations/route-55e398bd20e2d7a9.js +0 -1
  539. package/.next/static/chunks/app/api/skills/operations/route-55e398bd20e2d7a9.js +0 -1
  540. package/.next/static/chunks/app/api/skills/reindex/route-55e398bd20e2d7a9.js +0 -1
  541. package/.next/static/chunks/app/api/skills/route-55e398bd20e2d7a9.js +0 -1
  542. package/.next/static/chunks/app/api/slash-commands/route-55e398bd20e2d7a9.js +0 -1
  543. package/.next/static/chunks/app/api/templates/[id]/route-55e398bd20e2d7a9.js +0 -1
  544. package/.next/static/chunks/app/api/templates/route-55e398bd20e2d7a9.js +0 -1
  545. package/.next/static/chunks/app/api/todos/route-55e398bd20e2d7a9.js +0 -1
  546. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-55e398bd20e2d7a9.js +0 -1
  547. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-55e398bd20e2d7a9.js +0 -1
  548. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-55e398bd20e2d7a9.js +0 -1
  549. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-55e398bd20e2d7a9.js +0 -1
  550. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-55e398bd20e2d7a9.js +0 -1
  551. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-55e398bd20e2d7a9.js +0 -1
  552. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-55e398bd20e2d7a9.js +0 -1
  553. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-55e398bd20e2d7a9.js +0 -1
  554. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-55e398bd20e2d7a9.js +0 -1
  555. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-55e398bd20e2d7a9.js +0 -1
  556. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-55e398bd20e2d7a9.js +0 -1
  557. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-55e398bd20e2d7a9.js +0 -1
  558. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-55e398bd20e2d7a9.js +0 -1
  559. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-55e398bd20e2d7a9.js +0 -1
  560. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-55e398bd20e2d7a9.js +0 -1
  561. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-55e398bd20e2d7a9.js +0 -1
  562. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-55e398bd20e2d7a9.js +0 -1
  563. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-55e398bd20e2d7a9.js +0 -1
  564. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-55e398bd20e2d7a9.js +0 -1
  565. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-55e398bd20e2d7a9.js +0 -1
  566. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-55e398bd20e2d7a9.js +0 -1
  567. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-55e398bd20e2d7a9.js +0 -1
  568. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-55e398bd20e2d7a9.js +0 -1
  569. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-55e398bd20e2d7a9.js +0 -1
  570. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-55e398bd20e2d7a9.js +0 -1
  571. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-55e398bd20e2d7a9.js +0 -1
  572. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-55e398bd20e2d7a9.js +0 -1
  573. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-55e398bd20e2d7a9.js +0 -1
  574. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-55e398bd20e2d7a9.js +0 -1
  575. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-55e398bd20e2d7a9.js +0 -1
  576. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-55e398bd20e2d7a9.js +0 -1
  577. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-55e398bd20e2d7a9.js +0 -1
  578. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-55e398bd20e2d7a9.js +0 -1
  579. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-55e398bd20e2d7a9.js +0 -1
  580. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-55e398bd20e2d7a9.js +0 -1
  581. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-55e398bd20e2d7a9.js +0 -1
  582. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-55e398bd20e2d7a9.js +0 -1
  583. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-55e398bd20e2d7a9.js +0 -1
  584. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-55e398bd20e2d7a9.js +0 -1
  585. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-55e398bd20e2d7a9.js +0 -1
  586. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-55e398bd20e2d7a9.js +0 -1
  587. package/.next/static/chunks/app/api/worktrees/[id]/route-55e398bd20e2d7a9.js +0 -1
  588. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-55e398bd20e2d7a9.js +0 -1
  589. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-55e398bd20e2d7a9.js +0 -1
  590. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-55e398bd20e2d7a9.js +0 -1
  591. package/.next/static/chunks/app/api/worktrees/[id]/search/route-55e398bd20e2d7a9.js +0 -1
  592. package/.next/static/chunks/app/api/worktrees/[id]/send/route-55e398bd20e2d7a9.js +0 -1
  593. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-55e398bd20e2d7a9.js +0 -1
  594. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-55e398bd20e2d7a9.js +0 -1
  595. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-55e398bd20e2d7a9.js +0 -1
  596. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-55e398bd20e2d7a9.js +0 -1
  597. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-55e398bd20e2d7a9.js +0 -1
  598. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-55e398bd20e2d7a9.js +0 -1
  599. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-55e398bd20e2d7a9.js +0 -1
  600. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-55e398bd20e2d7a9.js +0 -1
  601. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-55e398bd20e2d7a9.js +0 -1
  602. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-55e398bd20e2d7a9.js +0 -1
  603. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-55e398bd20e2d7a9.js +0 -1
  604. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-55e398bd20e2d7a9.js +0 -1
  605. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-55e398bd20e2d7a9.js +0 -1
  606. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-55e398bd20e2d7a9.js +0 -1
  607. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-55e398bd20e2d7a9.js +0 -1
  608. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-55e398bd20e2d7a9.js +0 -1
  609. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-55e398bd20e2d7a9.js +0 -1
  610. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-55e398bd20e2d7a9.js +0 -1
  611. package/.next/static/chunks/app/api/worktrees/route-55e398bd20e2d7a9.js +0 -1
  612. package/.next/static/chunks/app/manifest.webmanifest/route-55e398bd20e2d7a9.js +0 -1
  613. package/.next/static/chunks/app/proxy/[...path]/route-55e398bd20e2d7a9.js +0 -1
  614. package/.next/static/chunks/app/repositories/page-3c4fb889da48ce24.js +0 -1
  615. package/.next/static/chunks/app/worktrees/[id]/page-59a63a2c013ec1eb.js +0 -1
  616. /package/.next/static/{AKqbAyuzbFfg05qpbCI_K → -BSmW0Ae2YsxyCl_ue7_d}/_ssgManifest.js +0 -0
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/" | "/chat" | "/login" | "/more" | "/offline" | "/repositories" | "/review" | "/sessions" | "/skills" | "/skills/[skillId]" | "/skills/installed" | "/worktrees/[id]" | "/worktrees/[id]/files/[...path]" | "/worktrees/[id]/terminal"
5
- type AppRouteHandlerRoutes = "/api/app/update" | "/api/app/update-check" | "/api/assistant/conversation" | "/api/assistant/current-output" | "/api/assistant/messages" | "/api/assistant/session" | "/api/assistant/start" | "/api/assistant/terminal" | "/api/assistant/tools" | "/api/auth/login" | "/api/auth/logout" | "/api/auth/status" | "/api/daily-summary" | "/api/daily-summary/status" | "/api/external-apps" | "/api/external-apps/[id]" | "/api/external-apps/[id]/health" | "/api/fs/browse" | "/api/fs/recent-paths" | "/api/hooks/claude-done" | "/api/ollama/models" | "/api/push/subscriptions" | "/api/push/vapid" | "/api/repositories" | "/api/repositories/[id]" | "/api/repositories/[id]/todos" | "/api/repositories/[id]/todos/[todoId]" | "/api/repositories/clone" | "/api/repositories/clone/[jobId]" | "/api/repositories/excluded" | "/api/repositories/restore" | "/api/repositories/scan" | "/api/repositories/sync" | "/api/repositories/validate-path" | "/api/sidebar/group-order" | "/api/skills" | "/api/skills/[id]" | "/api/skills/installations" | "/api/skills/operations" | "/api/skills/reindex" | "/api/slash-commands" | "/api/templates" | "/api/templates/[id]" | "/api/todos" | "/api/worktrees" | "/api/worktrees/[id]" | "/api/worktrees/[id]/auto-yes" | "/api/worktrees/[id]/capture" | "/api/worktrees/[id]/cli-tool" | "/api/worktrees/[id]/cmate/schedules" | "/api/worktrees/[id]/current-output" | "/api/worktrees/[id]/execution-logs" | "/api/worktrees/[id]/execution-logs/[logId]" | "/api/worktrees/[id]/files/[...path]" | "/api/worktrees/[id]/git/branch/create" | "/api/worktrees/[id]/git/branch/delete" | "/api/worktrees/[id]/git/branches" | "/api/worktrees/[id]/git/checkout" | "/api/worktrees/[id]/git/commit" | "/api/worktrees/[id]/git/diff" | "/api/worktrees/[id]/git/fetch" | "/api/worktrees/[id]/git/log" | "/api/worktrees/[id]/git/pull" | "/api/worktrees/[id]/git/push" | "/api/worktrees/[id]/git/reset" | "/api/worktrees/[id]/git/revert" | "/api/worktrees/[id]/git/show/[commitHash]" | "/api/worktrees/[id]/git/stage" | "/api/worktrees/[id]/git/staged" | "/api/worktrees/[id]/git/stash" | "/api/worktrees/[id]/git/stash/[index]" | "/api/worktrees/[id]/git/stash/apply" | "/api/worktrees/[id]/git/stash/pop" | "/api/worktrees/[id]/git/stash/push" | "/api/worktrees/[id]/git/status" | "/api/worktrees/[id]/git/unstage" | "/api/worktrees/[id]/git/working-diff" | "/api/worktrees/[id]/interrupt" | "/api/worktrees/[id]/kill-session" | "/api/worktrees/[id]/logs" | "/api/worktrees/[id]/logs/[filename]" | "/api/worktrees/[id]/marp-render" | "/api/worktrees/[id]/memos" | "/api/worktrees/[id]/memos/[memoId]" | "/api/worktrees/[id]/messages" | "/api/worktrees/[id]/prompt-response" | "/api/worktrees/[id]/respond" | "/api/worktrees/[id]/schedules" | "/api/worktrees/[id]/schedules/[scheduleId]" | "/api/worktrees/[id]/schedules/active" | "/api/worktrees/[id]/search" | "/api/worktrees/[id]/send" | "/api/worktrees/[id]/skills" | "/api/worktrees/[id]/skills/[skillId]/git-workflow" | "/api/worktrees/[id]/skills/[skillId]/install" | "/api/worktrees/[id]/skills/[skillId]/plan" | "/api/worktrees/[id]/skills/[skillId]/uninstall" | "/api/worktrees/[id]/skills/[skillId]/uninstall-plan" | "/api/worktrees/[id]/slash-commands" | "/api/worktrees/[id]/special-keys" | "/api/worktrees/[id]/start-polling" | "/api/worktrees/[id]/terminal" | "/api/worktrees/[id]/timers" | "/api/worktrees/[id]/timers/history" | "/api/worktrees/[id]/todos" | "/api/worktrees/[id]/todos/[todoId]" | "/api/worktrees/[id]/tree" | "/api/worktrees/[id]/tree/[...path]" | "/api/worktrees/[id]/upload/[...path]" | "/api/worktrees/[id]/viewed" | "/proxy/[...path]"
5
+ type AppRouteHandlerRoutes = "/api/app/update" | "/api/app/update-check" | "/api/assistant/conversation" | "/api/assistant/current-output" | "/api/assistant/messages" | "/api/assistant/session" | "/api/assistant/start" | "/api/assistant/terminal" | "/api/assistant/tools" | "/api/auth/login" | "/api/auth/logout" | "/api/auth/status" | "/api/daily-summary" | "/api/daily-summary/status" | "/api/external-apps" | "/api/external-apps/[id]" | "/api/external-apps/[id]/health" | "/api/fs/browse" | "/api/fs/recent-paths" | "/api/hooks/agent-event" | "/api/hooks/claude-done" | "/api/metrics/vibe" | "/api/ollama/models" | "/api/push/subscriptions" | "/api/push/vapid" | "/api/repositories" | "/api/repositories/[id]" | "/api/repositories/[id]/todos" | "/api/repositories/[id]/todos/[todoId]" | "/api/repositories/clone" | "/api/repositories/clone/[jobId]" | "/api/repositories/excluded" | "/api/repositories/restore" | "/api/repositories/scan" | "/api/repositories/sync" | "/api/repositories/validate-path" | "/api/sidebar/group-order" | "/api/skills" | "/api/skills/[id]" | "/api/skills/installations" | "/api/skills/operations" | "/api/skills/reindex" | "/api/slash-commands" | "/api/tasks/[taskId]" | "/api/tasks/[taskId]/cancel" | "/api/templates" | "/api/templates/[id]" | "/api/todos" | "/api/verification/runs" | "/api/verification/runs/[runId]" | "/api/worktrees" | "/api/worktrees/[id]" | "/api/worktrees/[id]/auto-yes" | "/api/worktrees/[id]/capture" | "/api/worktrees/[id]/cli-tool" | "/api/worktrees/[id]/cmate/schedules" | "/api/worktrees/[id]/current-output" | "/api/worktrees/[id]/execution-logs" | "/api/worktrees/[id]/execution-logs/[logId]" | "/api/worktrees/[id]/files/[...path]" | "/api/worktrees/[id]/git/branch/create" | "/api/worktrees/[id]/git/branch/delete" | "/api/worktrees/[id]/git/branches" | "/api/worktrees/[id]/git/checkout" | "/api/worktrees/[id]/git/commit" | "/api/worktrees/[id]/git/diff" | "/api/worktrees/[id]/git/fetch" | "/api/worktrees/[id]/git/log" | "/api/worktrees/[id]/git/pull" | "/api/worktrees/[id]/git/push" | "/api/worktrees/[id]/git/reset" | "/api/worktrees/[id]/git/revert" | "/api/worktrees/[id]/git/show/[commitHash]" | "/api/worktrees/[id]/git/stage" | "/api/worktrees/[id]/git/staged" | "/api/worktrees/[id]/git/stash" | "/api/worktrees/[id]/git/stash/[index]" | "/api/worktrees/[id]/git/stash/apply" | "/api/worktrees/[id]/git/stash/pop" | "/api/worktrees/[id]/git/stash/push" | "/api/worktrees/[id]/git/status" | "/api/worktrees/[id]/git/unstage" | "/api/worktrees/[id]/git/working-diff" | "/api/worktrees/[id]/interrupt" | "/api/worktrees/[id]/kill-session" | "/api/worktrees/[id]/logs" | "/api/worktrees/[id]/logs/[filename]" | "/api/worktrees/[id]/marp-render" | "/api/worktrees/[id]/memos" | "/api/worktrees/[id]/memos/[memoId]" | "/api/worktrees/[id]/messages" | "/api/worktrees/[id]/prompt-response" | "/api/worktrees/[id]/respond" | "/api/worktrees/[id]/schedules" | "/api/worktrees/[id]/schedules/[scheduleId]" | "/api/worktrees/[id]/schedules/active" | "/api/worktrees/[id]/search" | "/api/worktrees/[id]/send" | "/api/worktrees/[id]/skills" | "/api/worktrees/[id]/skills/[skillId]/git-workflow" | "/api/worktrees/[id]/skills/[skillId]/install" | "/api/worktrees/[id]/skills/[skillId]/plan" | "/api/worktrees/[id]/skills/[skillId]/uninstall" | "/api/worktrees/[id]/skills/[skillId]/uninstall-plan" | "/api/worktrees/[id]/slash-commands" | "/api/worktrees/[id]/special-keys" | "/api/worktrees/[id]/start-polling" | "/api/worktrees/[id]/tasks" | "/api/worktrees/[id]/terminal" | "/api/worktrees/[id]/timers" | "/api/worktrees/[id]/timers/history" | "/api/worktrees/[id]/todos" | "/api/worktrees/[id]/todos/[todoId]" | "/api/worktrees/[id]/tree" | "/api/worktrees/[id]/tree/[...path]" | "/api/worktrees/[id]/upload/[...path]" | "/api/worktrees/[id]/verify" | "/api/worktrees/[id]/verify/runs" | "/api/worktrees/[id]/verify/runs/[runId]" | "/api/worktrees/[id]/viewed" | "/proxy/[...path]"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -31,7 +31,9 @@ interface ParamMap {
31
31
  "/api/external-apps/[id]/health": { "id": string; }
32
32
  "/api/fs/browse": {}
33
33
  "/api/fs/recent-paths": {}
34
+ "/api/hooks/agent-event": {}
34
35
  "/api/hooks/claude-done": {}
36
+ "/api/metrics/vibe": {}
35
37
  "/api/ollama/models": {}
36
38
  "/api/push/subscriptions": {}
37
39
  "/api/push/vapid": {}
@@ -53,9 +55,13 @@ interface ParamMap {
53
55
  "/api/skills/operations": {}
54
56
  "/api/skills/reindex": {}
55
57
  "/api/slash-commands": {}
58
+ "/api/tasks/[taskId]": { "taskId": string; }
59
+ "/api/tasks/[taskId]/cancel": { "taskId": string; }
56
60
  "/api/templates": {}
57
61
  "/api/templates/[id]": { "id": string; }
58
62
  "/api/todos": {}
63
+ "/api/verification/runs": {}
64
+ "/api/verification/runs/[runId]": { "runId": string; }
59
65
  "/api/worktrees": {}
60
66
  "/api/worktrees/[id]": { "id": string; }
61
67
  "/api/worktrees/[id]/auto-yes": { "id": string; }
@@ -113,6 +119,7 @@ interface ParamMap {
113
119
  "/api/worktrees/[id]/slash-commands": { "id": string; }
114
120
  "/api/worktrees/[id]/special-keys": { "id": string; }
115
121
  "/api/worktrees/[id]/start-polling": { "id": string; }
122
+ "/api/worktrees/[id]/tasks": { "id": string; }
116
123
  "/api/worktrees/[id]/terminal": { "id": string; }
117
124
  "/api/worktrees/[id]/timers": { "id": string; }
118
125
  "/api/worktrees/[id]/timers/history": { "id": string; }
@@ -121,6 +128,9 @@ interface ParamMap {
121
128
  "/api/worktrees/[id]/tree": { "id": string; }
122
129
  "/api/worktrees/[id]/tree/[...path]": { "id": string; "path": string[]; }
123
130
  "/api/worktrees/[id]/upload/[...path]": { "id": string; "path": string[]; }
131
+ "/api/worktrees/[id]/verify": { "id": string; }
132
+ "/api/worktrees/[id]/verify/runs": { "id": string; }
133
+ "/api/worktrees/[id]/verify/runs/[runId]": { "id": string; "runId": string; }
124
134
  "/api/worktrees/[id]/viewed": { "id": string; }
125
135
  "/chat": {}
126
136
  "/login": {}
@@ -344,6 +344,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
344
344
  type __Unused = __Check
345
345
  }
346
346
 
347
+ // Validate ../../src/app/api/hooks/agent-event/route.ts
348
+ {
349
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/hooks/agent-event">> = Specific
350
+ const handler = {} as typeof import("../../src/app/api/hooks/agent-event/route.js")
351
+ type __Check = __IsExpected<typeof handler>
352
+ // @ts-ignore
353
+ type __Unused = __Check
354
+ }
355
+
347
356
  // Validate ../../src/app/api/hooks/claude-done/route.ts
348
357
  {
349
358
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/hooks/claude-done">> = Specific
@@ -353,6 +362,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
353
362
  type __Unused = __Check
354
363
  }
355
364
 
365
+ // Validate ../../src/app/api/metrics/vibe/route.ts
366
+ {
367
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/metrics/vibe">> = Specific
368
+ const handler = {} as typeof import("../../src/app/api/metrics/vibe/route.js")
369
+ type __Check = __IsExpected<typeof handler>
370
+ // @ts-ignore
371
+ type __Unused = __Check
372
+ }
373
+
356
374
  // Validate ../../src/app/api/ollama/models/route.ts
357
375
  {
358
376
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/ollama/models">> = Specific
@@ -542,6 +560,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
542
560
  type __Unused = __Check
543
561
  }
544
562
 
563
+ // Validate ../../src/app/api/tasks/[taskId]/cancel/route.ts
564
+ {
565
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/[taskId]/cancel">> = Specific
566
+ const handler = {} as typeof import("../../src/app/api/tasks/[taskId]/cancel/route.js")
567
+ type __Check = __IsExpected<typeof handler>
568
+ // @ts-ignore
569
+ type __Unused = __Check
570
+ }
571
+
572
+ // Validate ../../src/app/api/tasks/[taskId]/route.ts
573
+ {
574
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/[taskId]">> = Specific
575
+ const handler = {} as typeof import("../../src/app/api/tasks/[taskId]/route.js")
576
+ type __Check = __IsExpected<typeof handler>
577
+ // @ts-ignore
578
+ type __Unused = __Check
579
+ }
580
+
545
581
  // Validate ../../src/app/api/templates/[id]/route.ts
546
582
  {
547
583
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/templates/[id]">> = Specific
@@ -569,6 +605,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
569
605
  type __Unused = __Check
570
606
  }
571
607
 
608
+ // Validate ../../src/app/api/verification/runs/[runId]/route.ts
609
+ {
610
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/verification/runs/[runId]">> = Specific
611
+ const handler = {} as typeof import("../../src/app/api/verification/runs/[runId]/route.js")
612
+ type __Check = __IsExpected<typeof handler>
613
+ // @ts-ignore
614
+ type __Unused = __Check
615
+ }
616
+
617
+ // Validate ../../src/app/api/verification/runs/route.ts
618
+ {
619
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/verification/runs">> = Specific
620
+ const handler = {} as typeof import("../../src/app/api/verification/runs/route.js")
621
+ type __Check = __IsExpected<typeof handler>
622
+ // @ts-ignore
623
+ type __Unused = __Check
624
+ }
625
+
572
626
  // Validate ../../src/app/api/worktrees/[id]/auto-yes/route.ts
573
627
  {
574
628
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/auto-yes">> = Specific
@@ -1073,6 +1127,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
1073
1127
  type __Unused = __Check
1074
1128
  }
1075
1129
 
1130
+ // Validate ../../src/app/api/worktrees/[id]/tasks/route.ts
1131
+ {
1132
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/tasks">> = Specific
1133
+ const handler = {} as typeof import("../../src/app/api/worktrees/[id]/tasks/route.js")
1134
+ type __Check = __IsExpected<typeof handler>
1135
+ // @ts-ignore
1136
+ type __Unused = __Check
1137
+ }
1138
+
1076
1139
  // Validate ../../src/app/api/worktrees/[id]/terminal/route.ts
1077
1140
  {
1078
1141
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/terminal">> = Specific
@@ -1145,6 +1208,33 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
1145
1208
  type __Unused = __Check
1146
1209
  }
1147
1210
 
1211
+ // Validate ../../src/app/api/worktrees/[id]/verify/route.ts
1212
+ {
1213
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/verify">> = Specific
1214
+ const handler = {} as typeof import("../../src/app/api/worktrees/[id]/verify/route.js")
1215
+ type __Check = __IsExpected<typeof handler>
1216
+ // @ts-ignore
1217
+ type __Unused = __Check
1218
+ }
1219
+
1220
+ // Validate ../../src/app/api/worktrees/[id]/verify/runs/[runId]/route.ts
1221
+ {
1222
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/verify/runs/[runId]">> = Specific
1223
+ const handler = {} as typeof import("../../src/app/api/worktrees/[id]/verify/runs/[runId]/route.js")
1224
+ type __Check = __IsExpected<typeof handler>
1225
+ // @ts-ignore
1226
+ type __Unused = __Check
1227
+ }
1228
+
1229
+ // Validate ../../src/app/api/worktrees/[id]/verify/runs/route.ts
1230
+ {
1231
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/verify/runs">> = Specific
1232
+ const handler = {} as typeof import("../../src/app/api/worktrees/[id]/verify/runs/route.js")
1233
+ type __Check = __IsExpected<typeof handler>
1234
+ // @ts-ignore
1235
+ type __Unused = __Check
1236
+ }
1237
+
1148
1238
  // Validate ../../src/app/api/worktrees/[id]/viewed/route.ts
1149
1239
  {
1150
1240
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/viewed">> = Specific
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * report Command - Generate, show, and list daily reports
3
3
  * Issue #636: CLI report generate/show/list
4
+ * Issue #1551: report metrics (Eval metrics)
4
5
  */
5
6
  import { Command } from 'commander';
6
7
  export declare function createReportCommand(): Command;
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,mBAAmB,IAAI,OAAO,CA8I7C"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiFpC,wBAAgB,mBAAmB,IAAI,OAAO,CA6K7C"}
@@ -2,6 +2,7 @@
2
2
  /**
3
3
  * report Command - Generate, show, and list daily reports
4
4
  * Issue #636: CLI report generate/show/list
5
+ * Issue #1551: report metrics (Eval metrics)
5
6
  */
6
7
  Object.defineProperty(exports, "__esModule", { value: true });
7
8
  exports.createReportCommand = createReportCommand;
@@ -39,6 +40,32 @@ function getDateDaysAgo(daysAgo) {
39
40
  const d = String(date.getDate()).padStart(2, '0');
40
41
  return `${y}-${m}-${d}`;
41
42
  }
43
+ /** Longest metrics window the API accepts. Mirrors MAX_METRICS_DAYS. */
44
+ const MAX_METRICS_DAYS = 90;
45
+ /**
46
+ * A 0..1 rate as a percentage, or `n/a`.
47
+ *
48
+ * `n/a` rather than `0.0%`: a null rate means the denominator was zero, and
49
+ * printing "0.0%" for "nothing happened" reports a catastrophe that did not
50
+ * occur.
51
+ */
52
+ function formatRate(value) {
53
+ return value === null ? 'n/a' : `${(value * 100).toFixed(1)}%`;
54
+ }
55
+ function formatVibeMetrics(m) {
56
+ const { tasks, verification, intervention } = m;
57
+ const topFails = verification.gateFailBreakdown
58
+ .map((g) => `${g.gateId} x${g.failCount}`)
59
+ .join(', ');
60
+ const topFailsSuffix = topFails ? ` (top fails: ${topFails})` : '';
61
+ return [
62
+ `Vibe Metrics (last ${m.periodDays} days)`,
63
+ `Tasks: ${tasks.total} total / ${tasks.succeeded} succeeded / ${tasks.failed} failed / ${tasks.notStarted} not-started (success ${formatRate(tasks.successRate)})`,
64
+ `Verification: ${verification.runs} runs, pass ${formatRate(verification.passRate)}${topFailsSuffix}`,
65
+ `Intervention: ${intervention.humanResponds} human responds / ${intervention.autoAnswered} auto answered`,
66
+ `Retry loops: ${tasks.avgRetryLoops === null ? 'n/a' : `avg ${tasks.avgRetryLoops.toFixed(1)}`} per failed task`,
67
+ ].join('\n');
68
+ }
42
69
  function createReportCommand() {
43
70
  const cmd = new commander_1.Command('report');
44
71
  cmd.description('Generate, show, and list daily reports');
@@ -165,5 +192,32 @@ function createReportCommand() {
165
192
  (0, command_helpers_1.handleCommandError)(error);
166
193
  }
167
194
  });
195
+ // ---- report metrics ----
196
+ cmd
197
+ .command('metrics')
198
+ .description('Show Eval metrics (task success rate, human interventions)')
199
+ .option('--days <days>', 'Window length in days (default: 7)', parseInt)
200
+ .option('--json', 'JSON output')
201
+ .option('--token <token>', command_helpers_1.TOKEN_WARNING)
202
+ .action(async (options) => {
203
+ try {
204
+ const days = options.days ?? 7;
205
+ if (!Number.isInteger(days) || days < 1 || days > MAX_METRICS_DAYS) {
206
+ console.error(`Error: --days must be an integer between 1 and ${MAX_METRICS_DAYS}.`);
207
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
208
+ }
209
+ const client = new api_client_1.ApiClient({ token: options.token });
210
+ const data = await client.get(`/api/metrics/vibe?days=${encodeURIComponent(String(days))}`);
211
+ if (options.json) {
212
+ console.log(JSON.stringify(data.metrics, null, 2));
213
+ }
214
+ else {
215
+ console.log(formatVibeMetrics(data.metrics));
216
+ }
217
+ }
218
+ catch (error) {
219
+ (0, command_helpers_1.handleCommandError)(error);
220
+ }
221
+ });
168
222
  return cmd;
169
223
  }
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+EpC,wBAAgB,iBAAiB,IAAI,OAAO,CA6G3C"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4JpC,wBAAgB,iBAAiB,IAAI,OAAO,CA4J3C"}
@@ -13,22 +13,33 @@ const duration_constants_1 = require("../config/duration-constants");
13
13
  const cli_tool_ids_1 = require("../config/cli-tool-ids");
14
14
  const model_validation_1 = require("../config/model-validation");
15
15
  const agent_instances_1 = require("../utils/agent-instances");
16
+ /** Auto-yes duration used when --duration is omitted. */
17
+ const DEFAULT_AUTO_YES_DURATION = '1h';
16
18
  /**
17
- * Build auto-yes request body and send it to the API (DRY extraction).
18
- * Validates duration and exits on invalid input.
19
+ * Resolve --duration to milliseconds, exiting on an invalid value.
19
20
  *
20
- * @param client - API client instance
21
- * @param worktreeId - Target worktree ID
22
- * @param options - Send command options containing auto-yes settings
21
+ * Issue #1608: this is called from the option-validation block at the top of
22
+ * the action, not from enableAutoYes(). enableAutoYes() runs after --contract
23
+ * has already created the task row, so validating there left a `pending` task
24
+ * behind for a message that was never sent.
23
25
  */
24
- async function enableAutoYes(client, worktreeId, options) {
25
- const durationMs = options.duration
26
- ? (0, duration_constants_1.parseDurationToMs)(options.duration)
27
- : (0, duration_constants_1.parseDurationToMs)('1h'); // default 1h
26
+ function resolveAutoYesDurationMs(duration) {
27
+ const durationMs = (0, duration_constants_1.parseDurationToMs)(duration ?? DEFAULT_AUTO_YES_DURATION);
28
28
  if (durationMs === null) {
29
29
  console.error(`Error: Invalid duration. Must be one of: ${duration_constants_1.ALLOWED_DURATIONS.join(', ')}`);
30
30
  process.exit(types_1.ExitCode.CONFIG_ERROR);
31
31
  }
32
+ return durationMs;
33
+ }
34
+ /**
35
+ * Build auto-yes request body and send it to the API (DRY extraction).
36
+ *
37
+ * @param client - API client instance
38
+ * @param worktreeId - Target worktree ID
39
+ * @param options - Send command options containing auto-yes settings
40
+ * @param durationMs - Duration already validated by resolveAutoYesDurationMs()
41
+ */
42
+ async function enableAutoYes(client, worktreeId, options, durationMs) {
32
43
  const autoYesBody = {
33
44
  enabled: true,
34
45
  duration: durationMs,
@@ -66,12 +77,59 @@ async function registerInstance(client, worktreeId, instanceId, cliTool) {
66
77
  await (0, agent_instances_1.saveAgentInstances)(client, worktreeId, next);
67
78
  console.error(`Instance registered in roster: ${instanceId}`);
68
79
  }
80
+ /**
81
+ * Create the task row for `--contract` and get the message to send back.
82
+ *
83
+ * The contract is parsed server-side: the path is relative to the worktree,
84
+ * which only the server can resolve, and the completion criterion is expanded
85
+ * from that worktree's verify.yaml. Every violation the server found is printed
86
+ * before exiting, so a broken contract is fixed in one pass (Issue #1545).
87
+ */
88
+ async function createContractTask(client, worktreeId, options) {
89
+ const body = { contractPath: options.contract };
90
+ if (options.agent) {
91
+ body.cliToolId = options.agent;
92
+ }
93
+ if (options.instance) {
94
+ body.instanceId = options.instance;
95
+ }
96
+ try {
97
+ const response = await client.post(`/api/worktrees/${worktreeId}/tasks`, body);
98
+ const created = (0, api_client_1.assertResponseShape)(response, ['task', 'message'], 'POST /api/worktrees/:id/tasks');
99
+ return { taskId: created.task.id, message: created.message };
100
+ }
101
+ catch (error) {
102
+ if (error instanceof api_client_1.ApiError && error.statusCode === 400 && error.payload?.issues?.length) {
103
+ console.error('Error: invalid task contract:');
104
+ for (const issue of error.payload.issues) {
105
+ console.error(` - ${issue}`);
106
+ }
107
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
108
+ }
109
+ throw error;
110
+ }
111
+ }
112
+ /**
113
+ * Report a task transition to the server, best effort.
114
+ *
115
+ * A failure here is worth a warning but not the command's exit code: the
116
+ * message either reached the agent or it did not, and that outcome is what the
117
+ * caller is waiting on.
118
+ */
119
+ async function reportTaskStatus(client, taskId, status) {
120
+ try {
121
+ await client.patch(`/api/tasks/${taskId}`, { status });
122
+ }
123
+ catch {
124
+ console.error(`Warning: could not record task ${taskId} as ${status}.`);
125
+ }
126
+ }
69
127
  function createSendCommand() {
70
128
  const cmd = new commander_1.Command('send');
71
129
  cmd
72
130
  .description('Send a message to a worktree agent')
73
131
  .argument('<worktree-id>', 'Worktree ID')
74
- .argument('<message>', 'Message to send')
132
+ .argument('[message]', 'Message to send (omit when using --contract)')
75
133
  .option('--agent <agent>', 'CLI tool agent (claude, codex, gemini, vibe-local, opencode, copilot, antigravity)')
76
134
  .option('--instance <id>', 'Agent instance ID: <agent> or <agent>-<n> (e.g. claude-2). Defaults to the agent\'s primary instance.')
77
135
  .option('--register', 'Register the --instance session into the agent-instance roster (Issue #1000)')
@@ -79,6 +137,7 @@ function createSendCommand() {
79
137
  .option('--auto-yes', 'Enable auto-yes before sending')
80
138
  .option('--duration <duration>', `Auto-yes duration (${duration_constants_1.ALLOWED_DURATIONS.join(', ')})`)
81
139
  .option('--stop-pattern <pattern>', 'Auto-yes stop pattern (regex)')
140
+ .option('--contract <path>', 'Execution contract path relative to the worktree root (e.g. .commandmate/tasks/my-task.yaml). Records a task and sends the contract preamble plus its goal.')
82
141
  .option('--token <token>', command_helpers_1.TOKEN_WARNING)
83
142
  .action(async (worktreeId, message, options) => {
84
143
  try {
@@ -87,6 +146,16 @@ function createSendCommand() {
87
146
  console.error('Error: Invalid worktree ID format.');
88
147
  process.exit(types_1.ExitCode.CONFIG_ERROR);
89
148
  }
149
+ // Issue #1545: the contract supplies the message, so accepting both
150
+ // would leave which one the agent receives ambiguous.
151
+ if (options.contract && message !== undefined) {
152
+ console.error('Error: --contract supplies the message; do not pass a message argument as well.');
153
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
154
+ }
155
+ if (!options.contract && message === undefined) {
156
+ console.error('Error: a message argument is required unless --contract is given.');
157
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
158
+ }
90
159
  // Validate agent if provided
91
160
  if (options.agent && !(0, cli_tool_ids_1.isCliToolId)(options.agent)) {
92
161
  console.error(`Error: Invalid agent. Must be one of: ${cli_tool_ids_1.CLI_TOOL_IDS.join(', ')}`);
@@ -129,13 +198,33 @@ function createSendCommand() {
129
198
  process.exit(types_1.ExitCode.CONFIG_ERROR);
130
199
  }
131
200
  }
201
+ // Issue #1608: every option that can be judged from its own value is
202
+ // judged here, before the first side effect. --duration used to be the
203
+ // exception: enableAutoYes() validated it, and that runs after
204
+ // --contract has already created the task row, so `--duration 2h` left
205
+ // a `pending` task for a message that was never sent. Validated
206
+ // unconditionally, like --stop-pattern and --model above: a value the
207
+ // CLI cannot honour is an error whether or not --auto-yes accompanies it.
208
+ const autoYesDurationMs = resolveAutoYesDurationMs(options.duration);
132
209
  const client = new api_client_1.ApiClient({ token: options.token });
210
+ // Issue #1545: resolve the contract before anything with a side effect,
211
+ // so an invalid contract cannot leave auto-yes enabled for a message
212
+ // that was never sent.
213
+ let taskId;
214
+ let content = message;
215
+ if (options.contract) {
216
+ const task = await createContractTask(client, worktreeId, options);
217
+ taskId = task.taskId;
218
+ content = task.message;
219
+ console.error(`Task created: ${taskId}`);
220
+ console.log(taskId);
221
+ }
133
222
  // --auto-yes: enable auto-yes first (unless --model is specified, then after send) [DR2-02]
134
223
  if (options.autoYes && !options.model) {
135
- await enableAutoYes(client, worktreeId, options);
224
+ await enableAutoYes(client, worktreeId, options, autoYesDurationMs);
136
225
  }
137
226
  // [DR2-05] Send API uses "content" not "message"
138
- const sendBody = { content: message };
227
+ const sendBody = { content };
139
228
  if (options.agent) {
140
229
  sendBody.cliToolId = options.agent;
141
230
  }
@@ -147,8 +236,21 @@ function createSendCommand() {
147
236
  if (options.model) {
148
237
  sendBody.model = options.model;
149
238
  }
150
- await client.post(`/api/worktrees/${worktreeId}/send`, sendBody);
239
+ try {
240
+ await client.post(`/api/worktrees/${worktreeId}/send`, sendBody);
241
+ }
242
+ catch (error) {
243
+ // A task whose message never arrived is a failed task, not a pending
244
+ // one: nothing is working on it and nothing ever will.
245
+ if (taskId) {
246
+ await reportTaskStatus(client, taskId, 'failed');
247
+ }
248
+ throw error;
249
+ }
151
250
  console.error('Message sent.');
251
+ if (taskId) {
252
+ await reportTaskStatus(client, taskId, 'running');
253
+ }
152
254
  // Issue #1000: register the ad-hoc instance into the roster after the
153
255
  // session has started, so a follow-up `commandmate instances` lists it.
154
256
  if (options.register && options.instance) {
@@ -157,7 +259,7 @@ function createSendCommand() {
157
259
  // Issue #576: Enable auto-yes AFTER send when --model is specified
158
260
  // This avoids auto-yes interfering with the /model command interaction
159
261
  if (options.autoYes && options.model) {
160
- await enableAutoYes(client, worktreeId, options);
262
+ await enableAutoYes(client, worktreeId, options, autoYesDurationMs);
161
263
  }
162
264
  }
163
265
  catch (error) {
@@ -0,0 +1,11 @@
1
+ /**
2
+ * task Command - Inspect execution contracts and their outcomes
3
+ * Issue #1545 (Phase 2-1)
4
+ *
5
+ * `task list` answers "what was this worktree asked to do", `task show` answers
6
+ * "what did the gates say about it" — the two halves of a contract that used to
7
+ * exist only inside the message text.
8
+ */
9
+ import { Command } from 'commander';
10
+ export declare function createTaskCommand(): Command;
11
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,iBAAiB,IAAI,OAAO,CAmH3C"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /**
3
+ * task Command - Inspect execution contracts and their outcomes
4
+ * Issue #1545 (Phase 2-1)
5
+ *
6
+ * `task list` answers "what was this worktree asked to do", `task show` answers
7
+ * "what did the gates say about it" — the two halves of a contract that used to
8
+ * exist only inside the message text.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.createTaskCommand = createTaskCommand;
12
+ const commander_1 = require("commander");
13
+ const types_1 = require("../types");
14
+ const api_client_1 = require("../utils/api-client");
15
+ const command_helpers_1 = require("../utils/command-helpers");
16
+ const MAX_LIST_LIMIT = 100;
17
+ /** crypto.randomUUID() output; mirrors TASK_ID_PATTERN in the API route. */
18
+ const TASK_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
19
+ function formatTimestamp(value) {
20
+ return value ?? '-';
21
+ }
22
+ function printTaskLine(task) {
23
+ const gates = task.contract.verify.gates;
24
+ console.log([
25
+ task.id,
26
+ task.status,
27
+ task.cliToolId + (task.instanceId ? `/${task.instanceId}` : ''),
28
+ gates ? gates.join('+') : 'all-gates',
29
+ task.title,
30
+ ].join('\t'));
31
+ }
32
+ function createTaskCommand() {
33
+ const cmd = new commander_1.Command('task');
34
+ cmd.description('List and inspect execution contracts (tasks)');
35
+ // ---- task list ----
36
+ cmd
37
+ .command('list')
38
+ .description('List tasks for a worktree, newest first')
39
+ .argument('<worktree-id>', 'Worktree ID')
40
+ .option('--limit <n>', `Maximum tasks to list (1..${MAX_LIST_LIMIT})`, parseInt)
41
+ .option('--json', 'JSON output')
42
+ .option('--token <token>', command_helpers_1.TOKEN_WARNING)
43
+ .action(async (worktreeId, options) => {
44
+ try {
45
+ if (!(0, api_client_1.isValidWorktreeId)(worktreeId)) {
46
+ console.error('Error: Invalid worktree ID format.');
47
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
48
+ return;
49
+ }
50
+ if (options.limit !== undefined &&
51
+ (!Number.isInteger(options.limit) || options.limit < 1 || options.limit > MAX_LIST_LIMIT)) {
52
+ console.error(`Error: --limit must be an integer 1..${MAX_LIST_LIMIT}.`);
53
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
54
+ return;
55
+ }
56
+ const client = new api_client_1.ApiClient({ token: options.token });
57
+ const query = options.limit === undefined ? '' : `?limit=${options.limit}`;
58
+ const response = await client.get(`/api/worktrees/${worktreeId}/tasks${query}`);
59
+ const { tasks } = (0, api_client_1.assertResponseShape)(response, ['tasks'], 'GET /api/worktrees/:id/tasks');
60
+ if (options.json) {
61
+ console.log(JSON.stringify(tasks));
62
+ return;
63
+ }
64
+ if (tasks.length === 0) {
65
+ console.error(`No tasks recorded for worktree '${worktreeId}'.`);
66
+ return;
67
+ }
68
+ tasks.forEach(printTaskLine);
69
+ }
70
+ catch (error) {
71
+ (0, command_helpers_1.handleCommandError)(error);
72
+ }
73
+ });
74
+ // ---- task show ----
75
+ cmd
76
+ .command('show')
77
+ .description('Show one task with the verification run that last judged it')
78
+ .argument('<task-id>', 'Task ID')
79
+ .option('--json', 'JSON output')
80
+ .option('--token <token>', command_helpers_1.TOKEN_WARNING)
81
+ .action(async (taskId, options) => {
82
+ try {
83
+ if (!TASK_ID_PATTERN.test(taskId)) {
84
+ console.error('Error: Invalid task ID format.');
85
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
86
+ return;
87
+ }
88
+ const client = new api_client_1.ApiClient({ token: options.token });
89
+ const response = await client.get(`/api/tasks/${taskId}`);
90
+ const detail = (0, api_client_1.assertResponseShape)(response, ['task', 'lastVerificationRun'], 'GET /api/tasks/:taskId');
91
+ if (options.json) {
92
+ console.log(JSON.stringify(detail));
93
+ return;
94
+ }
95
+ const { task, lastVerificationRun } = detail;
96
+ console.log(`ID: ${task.id}`);
97
+ console.log(`STATUS: ${task.status}`);
98
+ console.log(`WORKTREE: ${task.worktreeId}`);
99
+ console.log(`AGENT: ${task.cliToolId}${task.instanceId ? `/${task.instanceId}` : ''}`);
100
+ console.log(`TITLE: ${task.title}`);
101
+ console.log(`CONTRACT: ${task.contractPath ?? '-'}`);
102
+ console.log(`SCOPE: ${task.contract.scope.allow.join(', ') || '-'}`);
103
+ if (task.contract.scope.deny.length > 0) {
104
+ console.log(`DENY: ${task.contract.scope.deny.join(', ')}`);
105
+ }
106
+ console.log(`GATES: ${task.contract.verify.gates?.join(', ') ?? 'all-gates'}`);
107
+ console.log(`AUTO-YES: ${task.contract.autoYes.mode ?? 'unset'}`);
108
+ console.log(`CREATED: ${task.createdAt}`);
109
+ console.log(`STARTED: ${formatTimestamp(task.startedAt)}`);
110
+ console.log(`FINISHED: ${formatTimestamp(task.finishedAt)}`);
111
+ if (!lastVerificationRun) {
112
+ console.log('VERIFY: (no verification run yet)');
113
+ return;
114
+ }
115
+ console.log(`VERIFY: run ${lastVerificationRun.id} ${lastVerificationRun.status}`);
116
+ for (const gate of lastVerificationRun.gates) {
117
+ const exit = gate.exitCode === null ? '-' : String(gate.exitCode);
118
+ console.log(` GATE ${gate.gateId} ${gate.status} (exit=${exit})`);
119
+ }
120
+ }
121
+ catch (error) {
122
+ (0, command_helpers_1.handleCommandError)(error);
123
+ }
124
+ });
125
+ return cmd;
126
+ }