commandmate 0.15.0 → 0.17.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 (711) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +425 -310
  3. package/.next/app-path-routes-manifest.json +35 -20
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +15 -15
  6. package/.next/react-loadable-manifest.json +11 -11
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +72 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update-check/route.js +1 -1
  12. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  14. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  15. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  17. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  18. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/messages/route.js +1 -1
  20. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  21. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/assistant/session/route.js +1 -1
  23. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  24. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/assistant/start/route.js +1 -1
  26. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  27. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/assistant/terminal/route.js +3 -3
  29. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  30. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/assistant/tools/route.js +1 -1
  32. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  33. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/daily-summary/route.js +1 -1
  38. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  39. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  41. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  42. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/fs/recent-paths/route.js +1 -1
  48. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/hooks/agent-event/route.js +1 -0
  50. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -0
  51. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -0
  52. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  53. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  54. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/metrics/vibe/route.js +37 -0
  56. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -0
  57. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -0
  58. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  60. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  64. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  66. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  68. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  69. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/repositories/clone/route.js +1 -1
  71. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  72. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/restore/route.js +1 -1
  75. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/route.js +1 -1
  78. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  79. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/repositories/scan/route.js +1 -1
  81. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  82. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/repositories/sync/route.js +1 -1
  84. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  85. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/skills/[id]/route.js +1 -1
  89. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/skills/installations/route.js +23 -0
  91. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -0
  92. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -0
  93. package/.next/server/app/api/skills/operations/route.js +13 -0
  94. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -0
  95. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -0
  96. package/.next/server/app/api/skills/reindex/route.js +23 -0
  97. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -0
  98. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -0
  99. package/.next/server/app/api/skills/route.js +1 -1
  100. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +4 -0
  103. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -0
  104. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -0
  105. package/.next/server/app/api/tasks/[taskId]/route.js +4 -0
  106. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -0
  107. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -0
  108. package/.next/server/app/api/templates/[id]/route.js +1 -1
  109. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/templates/route.js +1 -1
  111. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/todos/route.js +1 -1
  113. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -0
  115. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -0
  116. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -0
  117. package/.next/server/app/api/verification/runs/route.js +1 -0
  118. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -0
  119. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -0
  120. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  122. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  125. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  132. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  136. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  210. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  228. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  231. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  234. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  240. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +18 -0
  247. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -0
  248. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -0
  249. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/route.js +2 -2
  262. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  267. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  270. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/tasks/route.js +6 -0
  272. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -0
  273. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -0
  274. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  276. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/verify/route.js +4 -0
  293. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -0
  294. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -0
  295. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -0
  296. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -0
  297. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -0
  298. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -0
  299. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -0
  300. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -0
  301. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  302. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/route.js +1 -1
  304. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  305. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  307. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  308. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/more/page.js +1 -1
  310. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  311. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  312. package/.next/server/app/page_client-reference-manifest.js +1 -1
  313. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  314. package/.next/server/app/repositories/page.js +1 -1
  315. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  316. package/.next/server/app/review/page.js +1 -1
  317. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  318. package/.next/server/app/sessions/page.js +1 -1
  319. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  320. package/.next/server/app/skills/[skillId]/page.js +1 -1
  321. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  322. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  323. package/.next/server/app/skills/installed/page.js +2 -0
  324. package/.next/server/app/skills/installed/page.js.nft.json +1 -0
  325. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -0
  326. package/.next/server/app/skills/page.js +2 -2
  327. package/.next/server/app/skills/page.js.nft.json +1 -1
  328. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  329. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  330. package/.next/server/app/worktrees/[id]/page.js +4 -4
  331. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  332. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  333. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  334. package/.next/server/app-paths-manifest.json +35 -20
  335. package/.next/server/chunks/1068.js +1 -1
  336. package/.next/server/chunks/1117.js +1 -1
  337. package/.next/server/chunks/1185.js +1 -0
  338. package/.next/server/chunks/1239.js +1 -0
  339. package/.next/server/chunks/1503.js +2 -0
  340. package/.next/server/chunks/22.js +1 -1
  341. package/.next/server/chunks/2328.js +1 -1
  342. package/.next/server/chunks/2366.js +1 -0
  343. package/.next/server/chunks/2710.js +2 -0
  344. package/.next/server/chunks/28.js +35 -0
  345. package/.next/server/chunks/3042.js +1 -2
  346. package/.next/server/chunks/3736.js +1 -1
  347. package/.next/server/chunks/4440.js +2 -0
  348. package/.next/server/chunks/4444.js +1 -1
  349. package/.next/server/chunks/4548.js +1 -0
  350. package/.next/server/chunks/4689.js +25 -0
  351. package/.next/server/chunks/5064.js +1 -1
  352. package/.next/server/chunks/5381.js +50 -10
  353. package/.next/server/chunks/5456.js +1 -1
  354. package/.next/server/chunks/5737.js +1 -0
  355. package/.next/server/chunks/5793.js +1 -0
  356. package/.next/server/chunks/5959.js +3 -3
  357. package/.next/server/chunks/6130.js +1 -1
  358. package/.next/server/chunks/6274.js +13 -0
  359. package/.next/server/chunks/646.js +1 -1
  360. package/.next/server/chunks/8681.js +1 -1
  361. package/.next/server/chunks/8807.js +255 -51
  362. package/.next/server/chunks/8856.js +4 -0
  363. package/.next/server/chunks/9051.js +1 -0
  364. package/.next/server/chunks/9687.js +2 -2
  365. package/.next/server/middleware-build-manifest.js +1 -1
  366. package/.next/server/middleware-manifest.json +5 -5
  367. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  368. package/.next/server/pages/500.html +1 -1
  369. package/.next/server/server-reference-manifest.json +1 -1
  370. package/.next/static/chunks/2751-7fabd91275b14ca3.js +1 -0
  371. package/.next/static/chunks/{4459.03172449db395039.js → 4459.a94b52985a76509a.js} +1 -1
  372. package/.next/static/chunks/{4560-8ffb0bb19f2ba998.js → 4560-0917ae2e6a0e5400.js} +1 -1
  373. package/.next/static/chunks/{6488-93870a55f4a3e3cd.js → 6488-f4e447464c9e0e22.js} +1 -1
  374. package/.next/static/chunks/{7485.43871aedf3dbb980.js → 7485.442b21101fca7257.js} +1 -1
  375. package/.next/static/chunks/8562-6e2ab32452f4fa5b.js +1 -0
  376. package/.next/static/chunks/app/api/app/update/route-8440b6c72bed83a1.js +1 -0
  377. package/.next/static/chunks/app/api/app/update-check/route-8440b6c72bed83a1.js +1 -0
  378. package/.next/static/chunks/app/api/assistant/conversation/route-8440b6c72bed83a1.js +1 -0
  379. package/.next/static/chunks/app/api/assistant/current-output/route-8440b6c72bed83a1.js +1 -0
  380. package/.next/static/chunks/app/api/assistant/messages/route-8440b6c72bed83a1.js +1 -0
  381. package/.next/static/chunks/app/api/assistant/session/route-8440b6c72bed83a1.js +1 -0
  382. package/.next/static/chunks/app/api/assistant/start/route-8440b6c72bed83a1.js +1 -0
  383. package/.next/static/chunks/app/api/assistant/terminal/route-8440b6c72bed83a1.js +1 -0
  384. package/.next/static/chunks/app/api/assistant/tools/route-8440b6c72bed83a1.js +1 -0
  385. package/.next/static/chunks/app/api/auth/login/route-8440b6c72bed83a1.js +1 -0
  386. package/.next/static/chunks/app/api/auth/logout/route-8440b6c72bed83a1.js +1 -0
  387. package/.next/static/chunks/app/api/auth/status/route-8440b6c72bed83a1.js +1 -0
  388. package/.next/static/chunks/app/api/daily-summary/route-8440b6c72bed83a1.js +1 -0
  389. package/.next/static/chunks/app/api/daily-summary/status/route-8440b6c72bed83a1.js +1 -0
  390. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8440b6c72bed83a1.js +1 -0
  391. package/.next/static/chunks/app/api/external-apps/[id]/route-8440b6c72bed83a1.js +1 -0
  392. package/.next/static/chunks/app/api/external-apps/route-8440b6c72bed83a1.js +1 -0
  393. package/.next/static/chunks/app/api/fs/browse/route-8440b6c72bed83a1.js +1 -0
  394. package/.next/static/chunks/app/api/fs/recent-paths/route-8440b6c72bed83a1.js +1 -0
  395. package/.next/static/chunks/app/api/hooks/agent-event/route-8440b6c72bed83a1.js +1 -0
  396. package/.next/static/chunks/app/api/hooks/claude-done/route-8440b6c72bed83a1.js +1 -0
  397. package/.next/static/chunks/app/api/metrics/vibe/route-8440b6c72bed83a1.js +1 -0
  398. package/.next/static/chunks/app/api/ollama/models/route-8440b6c72bed83a1.js +1 -0
  399. package/.next/static/chunks/app/api/push/subscriptions/route-8440b6c72bed83a1.js +1 -0
  400. package/.next/static/chunks/app/api/push/vapid/route-8440b6c72bed83a1.js +1 -0
  401. package/.next/static/chunks/app/api/repositories/[id]/route-8440b6c72bed83a1.js +1 -0
  402. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +1 -0
  403. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8440b6c72bed83a1.js +1 -0
  404. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8440b6c72bed83a1.js +1 -0
  405. package/.next/static/chunks/app/api/repositories/clone/route-8440b6c72bed83a1.js +1 -0
  406. package/.next/static/chunks/app/api/repositories/excluded/route-8440b6c72bed83a1.js +1 -0
  407. package/.next/static/chunks/app/api/repositories/restore/route-8440b6c72bed83a1.js +1 -0
  408. package/.next/static/chunks/app/api/repositories/route-8440b6c72bed83a1.js +1 -0
  409. package/.next/static/chunks/app/api/repositories/scan/route-8440b6c72bed83a1.js +1 -0
  410. package/.next/static/chunks/app/api/repositories/sync/route-8440b6c72bed83a1.js +1 -0
  411. package/.next/static/chunks/app/api/repositories/validate-path/route-8440b6c72bed83a1.js +1 -0
  412. package/.next/static/chunks/app/api/sidebar/group-order/route-8440b6c72bed83a1.js +1 -0
  413. package/.next/static/chunks/app/api/skills/[id]/route-8440b6c72bed83a1.js +1 -0
  414. package/.next/static/chunks/app/api/skills/installations/route-8440b6c72bed83a1.js +1 -0
  415. package/.next/static/chunks/app/api/skills/operations/route-8440b6c72bed83a1.js +1 -0
  416. package/.next/static/chunks/app/api/skills/reindex/route-8440b6c72bed83a1.js +1 -0
  417. package/.next/static/chunks/app/api/skills/route-8440b6c72bed83a1.js +1 -0
  418. package/.next/static/chunks/app/api/slash-commands/route-8440b6c72bed83a1.js +1 -0
  419. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8440b6c72bed83a1.js +1 -0
  420. package/.next/static/chunks/app/api/tasks/[taskId]/route-8440b6c72bed83a1.js +1 -0
  421. package/.next/static/chunks/app/api/templates/[id]/route-8440b6c72bed83a1.js +1 -0
  422. package/.next/static/chunks/app/api/templates/route-8440b6c72bed83a1.js +1 -0
  423. package/.next/static/chunks/app/api/todos/route-8440b6c72bed83a1.js +1 -0
  424. package/.next/static/chunks/app/api/verification/runs/[runId]/route-8440b6c72bed83a1.js +1 -0
  425. package/.next/static/chunks/app/api/verification/runs/route-8440b6c72bed83a1.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8440b6c72bed83a1.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8440b6c72bed83a1.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8440b6c72bed83a1.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8440b6c72bed83a1.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8440b6c72bed83a1.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8440b6c72bed83a1.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8440b6c72bed83a1.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8440b6c72bed83a1.js +1 -0
  434. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8440b6c72bed83a1.js +1 -0
  435. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8440b6c72bed83a1.js +1 -0
  436. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8440b6c72bed83a1.js +1 -0
  437. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8440b6c72bed83a1.js +1 -0
  438. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8440b6c72bed83a1.js +1 -0
  439. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8440b6c72bed83a1.js +1 -0
  440. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8440b6c72bed83a1.js +1 -0
  441. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8440b6c72bed83a1.js +1 -0
  442. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8440b6c72bed83a1.js +1 -0
  443. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8440b6c72bed83a1.js +1 -0
  444. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8440b6c72bed83a1.js +1 -0
  445. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8440b6c72bed83a1.js +1 -0
  446. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8440b6c72bed83a1.js +1 -0
  447. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8440b6c72bed83a1.js +1 -0
  448. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8440b6c72bed83a1.js +1 -0
  449. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8440b6c72bed83a1.js +1 -0
  450. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8440b6c72bed83a1.js +1 -0
  451. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8440b6c72bed83a1.js +1 -0
  452. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8440b6c72bed83a1.js +1 -0
  453. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8440b6c72bed83a1.js +1 -0
  454. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8440b6c72bed83a1.js +1 -0
  455. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8440b6c72bed83a1.js +1 -0
  456. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8440b6c72bed83a1.js +1 -0
  457. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8440b6c72bed83a1.js +1 -0
  458. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8440b6c72bed83a1.js +1 -0
  459. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8440b6c72bed83a1.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8440b6c72bed83a1.js +1 -0
  461. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8440b6c72bed83a1.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8440b6c72bed83a1.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8440b6c72bed83a1.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8440b6c72bed83a1.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8440b6c72bed83a1.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8440b6c72bed83a1.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/route-8440b6c72bed83a1.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8440b6c72bed83a1.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8440b6c72bed83a1.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8440b6c72bed83a1.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8440b6c72bed83a1.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8440b6c72bed83a1.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8440b6c72bed83a1.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8440b6c72bed83a1.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8440b6c72bed83a1.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8440b6c72bed83a1.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8440b6c72bed83a1.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8440b6c72bed83a1.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8440b6c72bed83a1.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8440b6c72bed83a1.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8440b6c72bed83a1.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8440b6c72bed83a1.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8440b6c72bed83a1.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8440b6c72bed83a1.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8440b6c72bed83a1.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8440b6c72bed83a1.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8440b6c72bed83a1.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8440b6c72bed83a1.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8440b6c72bed83a1.js +1 -0
  491. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8440b6c72bed83a1.js +1 -0
  492. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8440b6c72bed83a1.js +1 -0
  493. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8440b6c72bed83a1.js +1 -0
  494. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8440b6c72bed83a1.js +1 -0
  495. package/.next/static/chunks/app/api/worktrees/route-8440b6c72bed83a1.js +1 -0
  496. package/.next/static/chunks/app/manifest.webmanifest/route-8440b6c72bed83a1.js +1 -0
  497. package/.next/static/chunks/app/more/{page-082d4ae496f9a36e.js → page-1619018cac999bbc.js} +1 -1
  498. package/.next/static/chunks/app/proxy/[...path]/route-8440b6c72bed83a1.js +1 -0
  499. package/.next/static/chunks/app/repositories/page-1ed1e5a542ecc168.js +1 -0
  500. package/.next/static/chunks/app/review/{page-f431d630097c2e85.js → page-b559bfb11c46931b.js} +1 -1
  501. package/.next/static/chunks/app/sessions/{page-20f07a99db64d2ca.js → page-3fa7e767d0ab3889.js} +1 -1
  502. package/.next/static/chunks/app/skills/[skillId]/page-6008b904225ebb25.js +1 -0
  503. package/.next/static/chunks/app/skills/installed/page-6641f95e6a6e5f9d.js +1 -0
  504. package/.next/static/chunks/app/skills/page-184f8e23e31a3667.js +1 -0
  505. package/.next/static/chunks/app/worktrees/[id]/page-5ffc84094830babb.js +1 -0
  506. package/.next/static/chunks/{webpack-6b35d37d50302d27.js → webpack-180bebdee221b6f4.js} +1 -1
  507. package/.next/static/css/{5127edd9aa8f3b49.css → d3453a6876553d32.css} +1 -1
  508. package/.next/static/gR8Sh86RrTynJON8SWkWK/_buildManifest.js +1 -0
  509. package/.next/trace +12 -11
  510. package/.next/types/app/api/hooks/agent-event/route.ts +347 -0
  511. package/.next/types/app/api/metrics/vibe/route.ts +347 -0
  512. package/.next/types/app/api/skills/installations/route.ts +347 -0
  513. package/.next/types/app/api/skills/operations/route.ts +347 -0
  514. package/.next/types/app/api/skills/reindex/route.ts +347 -0
  515. package/.next/types/app/api/tasks/[taskId]/cancel/route.ts +347 -0
  516. package/.next/types/app/api/tasks/[taskId]/route.ts +347 -0
  517. package/.next/types/app/api/verification/runs/[runId]/route.ts +347 -0
  518. package/.next/types/app/api/verification/runs/route.ts +347 -0
  519. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.ts +347 -0
  520. package/.next/types/app/api/worktrees/[id]/tasks/route.ts +347 -0
  521. package/.next/types/app/api/worktrees/[id]/verify/route.ts +347 -0
  522. package/.next/types/app/api/worktrees/[id]/verify/runs/[runId]/route.ts +347 -0
  523. package/.next/types/app/api/worktrees/[id]/verify/runs/route.ts +347 -0
  524. package/.next/types/app/skills/installed/page.ts +84 -0
  525. package/.next/types/routes.d.ts +17 -2
  526. package/.next/types/validator.ts +135 -0
  527. package/dist/cli/commands/report.d.ts +1 -0
  528. package/dist/cli/commands/report.d.ts.map +1 -1
  529. package/dist/cli/commands/report.js +54 -0
  530. package/dist/cli/commands/send.d.ts.map +1 -1
  531. package/dist/cli/commands/send.js +86 -3
  532. package/dist/cli/commands/skill.d.ts +2 -1
  533. package/dist/cli/commands/skill.d.ts.map +1 -1
  534. package/dist/cli/commands/skill.js +136 -2
  535. package/dist/cli/commands/task.d.ts +11 -0
  536. package/dist/cli/commands/task.d.ts.map +1 -0
  537. package/dist/cli/commands/task.js +126 -0
  538. package/dist/cli/commands/verify.d.ts +19 -0
  539. package/dist/cli/commands/verify.d.ts.map +1 -0
  540. package/dist/cli/commands/verify.js +229 -0
  541. package/dist/cli/commands/wait.d.ts +2 -0
  542. package/dist/cli/commands/wait.d.ts.map +1 -1
  543. package/dist/cli/commands/wait.js +78 -13
  544. package/dist/cli/docs/agent-operations.d.ts +2 -2
  545. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  546. package/dist/cli/docs/agent-operations.js +92 -3
  547. package/dist/cli/program.d.ts.map +1 -1
  548. package/dist/cli/program.js +6 -0
  549. package/dist/cli/types/api-responses.d.ts +210 -0
  550. package/dist/cli/types/api-responses.d.ts.map +1 -1
  551. package/dist/cli/types/index.d.ts +88 -0
  552. package/dist/cli/types/index.d.ts.map +1 -1
  553. package/dist/cli/types/index.js +30 -1
  554. package/dist/cli/utils/api-client.d.ts +8 -0
  555. package/dist/cli/utils/api-client.d.ts.map +1 -1
  556. package/dist/cli/utils/verify-runner.d.ts +57 -0
  557. package/dist/cli/utils/verify-runner.d.ts.map +1 -0
  558. package/dist/cli/utils/verify-runner.js +174 -0
  559. package/dist/server/server.js +15 -0
  560. package/dist/server/src/config/auto-yes-config.js +22 -0
  561. package/dist/server/src/lib/auto-yes-poller.js +34 -2
  562. package/dist/server/src/lib/auto-yes-state.js +6 -19
  563. package/dist/server/src/lib/db/db.js +34 -1
  564. package/dist/server/src/lib/db/migrations/index.js +8 -0
  565. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  566. package/dist/server/src/lib/db/migrations/v48-skill-operations-audit-index.js +117 -0
  567. package/dist/server/src/lib/db/migrations/v49-verification-runs.js +86 -0
  568. package/dist/server/src/lib/db/migrations/v50-tasks.js +68 -0
  569. package/dist/server/src/lib/db/migrations/v51-task-events.js +58 -0
  570. package/dist/server/src/lib/db/task-events-db.js +59 -0
  571. package/dist/server/src/lib/db/tasks-db.js +218 -0
  572. package/dist/server/src/lib/db/verification-db.js +272 -0
  573. package/dist/server/src/lib/polling/auto-yes-policy.js +117 -0
  574. package/dist/server/src/lib/polling/auto-yes-resolver.js +144 -4
  575. package/dist/server/src/lib/polling/response-checker.js +8 -0
  576. package/dist/server/src/lib/session/agent-event-state.js +46 -0
  577. package/dist/server/src/lib/session/current-output-builder.js +4 -0
  578. package/dist/server/src/lib/session/status-mapping.js +146 -0
  579. package/dist/server/src/lib/skills/compatibility-matrix.js +256 -0
  580. package/dist/server/src/lib/skills/compatibility.js +132 -11
  581. package/dist/server/src/lib/skills/operation-audit.js +85 -15
  582. package/dist/server/src/lib/skills/operation-journal.js +14 -1
  583. package/dist/server/src/lib/tasks/contract-parser.js +385 -0
  584. package/dist/server/src/lib/tasks/task-state-machine.js +183 -0
  585. package/dist/server/src/lib/tasks/task-transition-service.js +106 -0
  586. package/dist/server/src/lib/verification/verification-reconciler.js +49 -0
  587. package/dist/server/src/types/sidebar.js +7 -20
  588. package/package.json +5 -2
  589. package/scripts/hooks/cmate-agent-event.sh +175 -0
  590. package/.next/server/chunks/1808.js +0 -1
  591. package/.next/server/chunks/2064.js +0 -2
  592. package/.next/server/chunks/5226.js +0 -28
  593. package/.next/server/chunks/5306.js +0 -2
  594. package/.next/server/chunks/593.js +0 -1
  595. package/.next/server/chunks/9192.js +0 -1
  596. package/.next/static/MqlW91_Se_kEW6mtm-1x0/_buildManifest.js +0 -1
  597. package/.next/static/chunks/3418-7e47651340d940b0.js +0 -1
  598. package/.next/static/chunks/9142-41b13a2f278529cc.js +0 -1
  599. package/.next/static/chunks/app/api/app/update/route-8c8bebe20cebf964.js +0 -1
  600. package/.next/static/chunks/app/api/app/update-check/route-8c8bebe20cebf964.js +0 -1
  601. package/.next/static/chunks/app/api/assistant/conversation/route-8c8bebe20cebf964.js +0 -1
  602. package/.next/static/chunks/app/api/assistant/current-output/route-8c8bebe20cebf964.js +0 -1
  603. package/.next/static/chunks/app/api/assistant/messages/route-8c8bebe20cebf964.js +0 -1
  604. package/.next/static/chunks/app/api/assistant/session/route-8c8bebe20cebf964.js +0 -1
  605. package/.next/static/chunks/app/api/assistant/start/route-8c8bebe20cebf964.js +0 -1
  606. package/.next/static/chunks/app/api/assistant/terminal/route-8c8bebe20cebf964.js +0 -1
  607. package/.next/static/chunks/app/api/assistant/tools/route-8c8bebe20cebf964.js +0 -1
  608. package/.next/static/chunks/app/api/auth/login/route-8c8bebe20cebf964.js +0 -1
  609. package/.next/static/chunks/app/api/auth/logout/route-8c8bebe20cebf964.js +0 -1
  610. package/.next/static/chunks/app/api/auth/status/route-8c8bebe20cebf964.js +0 -1
  611. package/.next/static/chunks/app/api/daily-summary/route-8c8bebe20cebf964.js +0 -1
  612. package/.next/static/chunks/app/api/daily-summary/status/route-8c8bebe20cebf964.js +0 -1
  613. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8c8bebe20cebf964.js +0 -1
  614. package/.next/static/chunks/app/api/external-apps/[id]/route-8c8bebe20cebf964.js +0 -1
  615. package/.next/static/chunks/app/api/external-apps/route-8c8bebe20cebf964.js +0 -1
  616. package/.next/static/chunks/app/api/fs/browse/route-8c8bebe20cebf964.js +0 -1
  617. package/.next/static/chunks/app/api/fs/recent-paths/route-8c8bebe20cebf964.js +0 -1
  618. package/.next/static/chunks/app/api/hooks/claude-done/route-8c8bebe20cebf964.js +0 -1
  619. package/.next/static/chunks/app/api/ollama/models/route-8c8bebe20cebf964.js +0 -1
  620. package/.next/static/chunks/app/api/push/subscriptions/route-8c8bebe20cebf964.js +0 -1
  621. package/.next/static/chunks/app/api/push/vapid/route-8c8bebe20cebf964.js +0 -1
  622. package/.next/static/chunks/app/api/repositories/[id]/route-8c8bebe20cebf964.js +0 -1
  623. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +0 -1
  624. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8c8bebe20cebf964.js +0 -1
  625. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8c8bebe20cebf964.js +0 -1
  626. package/.next/static/chunks/app/api/repositories/clone/route-8c8bebe20cebf964.js +0 -1
  627. package/.next/static/chunks/app/api/repositories/excluded/route-8c8bebe20cebf964.js +0 -1
  628. package/.next/static/chunks/app/api/repositories/restore/route-8c8bebe20cebf964.js +0 -1
  629. package/.next/static/chunks/app/api/repositories/route-8c8bebe20cebf964.js +0 -1
  630. package/.next/static/chunks/app/api/repositories/scan/route-8c8bebe20cebf964.js +0 -1
  631. package/.next/static/chunks/app/api/repositories/sync/route-8c8bebe20cebf964.js +0 -1
  632. package/.next/static/chunks/app/api/repositories/validate-path/route-8c8bebe20cebf964.js +0 -1
  633. package/.next/static/chunks/app/api/sidebar/group-order/route-8c8bebe20cebf964.js +0 -1
  634. package/.next/static/chunks/app/api/skills/[id]/route-8c8bebe20cebf964.js +0 -1
  635. package/.next/static/chunks/app/api/skills/route-8c8bebe20cebf964.js +0 -1
  636. package/.next/static/chunks/app/api/slash-commands/route-8c8bebe20cebf964.js +0 -1
  637. package/.next/static/chunks/app/api/templates/[id]/route-8c8bebe20cebf964.js +0 -1
  638. package/.next/static/chunks/app/api/templates/route-8c8bebe20cebf964.js +0 -1
  639. package/.next/static/chunks/app/api/todos/route-8c8bebe20cebf964.js +0 -1
  640. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8c8bebe20cebf964.js +0 -1
  641. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8c8bebe20cebf964.js +0 -1
  642. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8c8bebe20cebf964.js +0 -1
  643. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8c8bebe20cebf964.js +0 -1
  644. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8c8bebe20cebf964.js +0 -1
  645. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8c8bebe20cebf964.js +0 -1
  646. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8c8bebe20cebf964.js +0 -1
  647. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8c8bebe20cebf964.js +0 -1
  648. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8c8bebe20cebf964.js +0 -1
  649. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8c8bebe20cebf964.js +0 -1
  650. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8c8bebe20cebf964.js +0 -1
  651. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8c8bebe20cebf964.js +0 -1
  652. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8c8bebe20cebf964.js +0 -1
  653. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8c8bebe20cebf964.js +0 -1
  654. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8c8bebe20cebf964.js +0 -1
  655. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8c8bebe20cebf964.js +0 -1
  656. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8c8bebe20cebf964.js +0 -1
  657. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8c8bebe20cebf964.js +0 -1
  658. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8c8bebe20cebf964.js +0 -1
  659. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8c8bebe20cebf964.js +0 -1
  660. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8c8bebe20cebf964.js +0 -1
  661. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8c8bebe20cebf964.js +0 -1
  662. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8c8bebe20cebf964.js +0 -1
  663. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8c8bebe20cebf964.js +0 -1
  664. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8c8bebe20cebf964.js +0 -1
  665. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8c8bebe20cebf964.js +0 -1
  666. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8c8bebe20cebf964.js +0 -1
  667. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8c8bebe20cebf964.js +0 -1
  668. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8c8bebe20cebf964.js +0 -1
  669. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8c8bebe20cebf964.js +0 -1
  670. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8c8bebe20cebf964.js +0 -1
  671. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8c8bebe20cebf964.js +0 -1
  672. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8c8bebe20cebf964.js +0 -1
  673. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8c8bebe20cebf964.js +0 -1
  674. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8c8bebe20cebf964.js +0 -1
  675. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8c8bebe20cebf964.js +0 -1
  676. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8c8bebe20cebf964.js +0 -1
  677. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8c8bebe20cebf964.js +0 -1
  678. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8c8bebe20cebf964.js +0 -1
  679. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8c8bebe20cebf964.js +0 -1
  680. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8c8bebe20cebf964.js +0 -1
  681. package/.next/static/chunks/app/api/worktrees/[id]/route-8c8bebe20cebf964.js +0 -1
  682. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8c8bebe20cebf964.js +0 -1
  683. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8c8bebe20cebf964.js +0 -1
  684. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8c8bebe20cebf964.js +0 -1
  685. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8c8bebe20cebf964.js +0 -1
  686. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8c8bebe20cebf964.js +0 -1
  687. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8c8bebe20cebf964.js +0 -1
  688. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8c8bebe20cebf964.js +0 -1
  689. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8c8bebe20cebf964.js +0 -1
  690. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8c8bebe20cebf964.js +0 -1
  691. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8c8bebe20cebf964.js +0 -1
  692. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8c8bebe20cebf964.js +0 -1
  693. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8c8bebe20cebf964.js +0 -1
  694. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8c8bebe20cebf964.js +0 -1
  695. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8c8bebe20cebf964.js +0 -1
  696. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8c8bebe20cebf964.js +0 -1
  697. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8c8bebe20cebf964.js +0 -1
  698. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +0 -1
  699. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8c8bebe20cebf964.js +0 -1
  700. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8c8bebe20cebf964.js +0 -1
  701. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8c8bebe20cebf964.js +0 -1
  702. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8c8bebe20cebf964.js +0 -1
  703. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8c8bebe20cebf964.js +0 -1
  704. package/.next/static/chunks/app/api/worktrees/route-8c8bebe20cebf964.js +0 -1
  705. package/.next/static/chunks/app/manifest.webmanifest/route-8c8bebe20cebf964.js +0 -1
  706. package/.next/static/chunks/app/proxy/[...path]/route-8c8bebe20cebf964.js +0 -1
  707. package/.next/static/chunks/app/repositories/page-3c4fb889da48ce24.js +0 -1
  708. package/.next/static/chunks/app/skills/[skillId]/page-8c40c9683f242207.js +0 -1
  709. package/.next/static/chunks/app/skills/page-46242c428ee8bccf.js +0 -1
  710. package/.next/static/chunks/app/worktrees/[id]/page-6da38f0a06dfd9db.js +0 -1
  711. /package/.next/static/{MqlW91_Se_kEW6mtm-1x0 → gR8Sh86RrTynJON8SWkWK}/_ssgManifest.js +0 -0
@@ -11,7 +11,7 @@
11
11
  * auto-yes-poller.ts -> auto-yes-state.ts -> path-validator.ts
12
12
  */
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.THINKING_CHECK_LINE_COUNT = exports.MAX_CONCURRENT_POLLERS = exports.MAX_CONSECUTIVE_ERRORS = exports.MAX_BACKOFF_MS = exports.DUPLICATE_RETRY_EXPIRY_MS = exports.COOLDOWN_INTERVAL_MS = exports.POLLING_INTERVAL_MS = exports.COMPOSITE_KEY_SEPARATOR = void 0;
14
+ exports.THINKING_CHECK_LINE_COUNT = exports.MAX_CONCURRENT_POLLERS = exports.MAX_CONSECUTIVE_ERRORS = exports.MAX_BACKOFF_MS = exports.DUPLICATE_RETRY_EXPIRY_MS = exports.COOLDOWN_INTERVAL_MS = exports.POLLING_INTERVAL_MS = exports.executeRegexWithTimeout = exports.COMPOSITE_KEY_SEPARATOR = void 0;
15
15
  exports.buildCompositeKey = buildCompositeKey;
16
16
  exports.extractWorktreeId = extractWorktreeId;
17
17
  exports.extractCliToolId = extractCliToolId;
@@ -21,7 +21,6 @@ exports.getAutoYesState = getAutoYesState;
21
21
  exports.setAutoYesEnabled = setAutoYesEnabled;
22
22
  exports.disableAutoYes = disableAutoYes;
23
23
  exports.clearAllAutoYesStates = clearAllAutoYesStates;
24
- exports.executeRegexWithTimeout = executeRegexWithTimeout;
25
24
  exports.checkStopCondition = checkStopCondition;
26
25
  exports.deleteAutoYesState = deleteAutoYesState;
27
26
  exports.getAutoYesStateCompositeKeys = getAutoYesStateCompositeKeys;
@@ -230,23 +229,11 @@ function clearAllAutoYesStates() {
230
229
  // Stop Condition (Issue #314)
231
230
  // =============================================================================
232
231
  /**
233
- * Execute a regex test with timeout protection.
234
- * Uses synchronous execution with safe-regex2 pre-validation as the primary defense.
235
- *
236
- * @internal Exported for testing purposes only.
237
- * @param regex - Pre-compiled RegExp to test
238
- * @param text - Text to test against
239
- * @param _timeoutMs - Reserved for future timeout implementation (default: 100ms)
240
- * @returns true/false for match result, null if execution failed
232
+ * Re-exported from the shared auto-yes config (Issue #1547 moved it there so the
233
+ * client-safe auto-yes resolver can share the same guarded execution path).
241
234
  */
242
- function executeRegexWithTimeout(regex, text, _timeoutMs = 100) {
243
- try {
244
- return regex.test(text);
245
- }
246
- catch {
247
- return null;
248
- }
249
- }
235
+ var auto_yes_config_2 = require("../config/auto-yes-config");
236
+ Object.defineProperty(exports, "executeRegexWithTimeout", { enumerable: true, get: function () { return auto_yes_config_2.executeRegexWithTimeout; } });
250
237
  /**
251
238
  * Check if the terminal output matches the stop condition pattern.
252
239
  * If matched, disables auto-yes for the worktree/agent.
@@ -279,7 +266,7 @@ function checkStopCondition(compositeKey, cleanOutput, onStopMatched) {
279
266
  }
280
267
  try {
281
268
  const regex = new RegExp(autoYesState.stopPattern);
282
- const matched = executeRegexWithTimeout(regex, cleanOutput);
269
+ const matched = (0, auto_yes_config_1.executeRegexWithTimeout)(regex, cleanOutput);
283
270
  if (matched === null) {
284
271
  // Execution failed - disable to prevent future errors
285
272
  logger.warn('stop-condition-check', { detail: String({ compositeKey }) });
@@ -12,7 +12,7 @@
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.removeAgentInstance = exports.addAgentInstance = exports.setAgentInstances = exports.countAgentInstances = exports.getAgentInstance = exports.getAgentInstances = exports.deleteSessionState = exports.clearInProgressMessageId = exports.setInProgressMessageId = exports.updateSessionState = exports.getSessionState = exports.getMessagesByDateRange = exports.ACTIVE_FILTER = exports.markPendingPromptsAsAnswered = exports.updatePromptData = exports.getMessageById = exports.recomputeLastUserMessage = exports.clearLastUserMessage = exports.updateLastUserMessage = exports.deleteMessagesByInstance = exports.deleteMessagesByCliTool = exports.deleteMessageById = exports.deleteAllMessages = exports.getLastMessage = exports.getLastUserMessage = exports.getMessages = exports.updateMessageContent = exports.createMessage = exports.getLastAssistantMessageAt = exports.deleteWorktreesByIds = exports.deleteRepositoryWorktrees = exports.migrateWorktreeIdPreservingChildren = exports.getWorktreesByRepository = exports.getWorktreeIdsByRepository = exports.getInitialBranch = exports.saveInitialBranch = exports.updateVibeLocalContextWindow = exports.updateVibeLocalModel = exports.updateSelectedAgents = exports.updateCliToolId = exports.updateStatus = exports.updateFavorite = exports.updateLastViewedAt = exports.updateWorktreeLink = exports.updateWorktreeDescription = exports.upsertWorktree = exports.getWorktreeById = exports.getRepositories = exports.getWorktrees = exports.initDatabase = void 0;
14
14
  exports.getAssistantExecutionById = exports.updateAssistantExecution = exports.createAssistantExecution = exports.archiveAssistantMessagesFrom = exports.archiveAllAssistantMessages = exports.getAssistantMessageById = exports.getAssistantMessages = exports.updateAssistantMessageStatus = exports.createAssistantMessage = exports.updateAssistantConversation = exports.createAssistantConversation = exports.getAssistantConversationByRepositoryAndCliTool = exports.getAssistantConversationById = exports.updateDailyReportContent = exports.saveDailyReport = exports.getDailyReport = exports.recoverStuckSendingTimers = exports.clearTimerHistory = exports.cleanupOldTimers = exports.getPendingTimerCountByWorktree = exports.cancelTimersByWorktree = exports.cancelTimer = exports.updateTimerStatus = exports.getPendingTimers = exports.getTimerById = exports.getTimersByWorktree = exports.createTimer = exports.WORKTREE_TODO_STATUSES = exports.isWorktreeTodoStatus = exports.reorderWorktreeTodos = exports.deleteWorktreeTodo = exports.updateWorktreeTodo = exports.createWorktreeTodo = exports.getWorktreeTodoById = exports.getTodosByWorktreeId = exports.deleteTodo = exports.updateTodo = exports.createTodo = exports.getTodoById = exports.getAllTodos = exports.getTodosByRepositoryId = exports.MemoDbError = exports.reorderMemos = exports.deleteMemo = exports.updateMemo = exports.createMemo = exports.getMemoById = exports.getMemosByWorktreeId = exports.InvalidAgentInstanceError = exports.AgentInstanceLimitError = void 0;
15
- exports.deletePushSubscriptionByEndpoint = exports.updatePushSubscriptionPreferences = exports.getPushSubscriptionsForKind = exports.getAllPushSubscriptions = exports.getPushSubscriptionByEndpoint = exports.upsertPushSubscription = exports.deleteAssistantSessionState = exports.updateAssistantSessionState = exports.getAssistantSessionState = exports.listRunningAssistantExecutions = exports.getRunningAssistantExecutionByConversation = exports.getLatestAssistantExecutionByConversation = void 0;
15
+ exports.listTaskEvents = exports.ACTIVE_TASK_STATUSES = exports.TERMINAL_TASK_STATUSES = exports.TASK_STATUSES = exports.isTerminalTaskStatus = exports.getActiveTaskForInstance = exports.getActiveTask = exports.listTasks = exports.getTask = exports.createTask = exports.VERIFICATION_TRIGGERS = exports.MAX_RUN_HISTORY_DAYS = exports.MAX_RUN_HISTORY_LIMIT = exports.DEFAULT_RUN_HISTORY_LIMIT = exports.listVerificationRunsForPeriod = exports.listRunningVerificationRuns = exports.getRunningVerificationRun = exports.listVerificationRuns = exports.getVerificationRun = exports.finishGateResult = exports.createGateResult = exports.finishVerificationRun = exports.createVerificationRun = exports.deletePushSubscriptionByEndpoint = exports.updatePushSubscriptionPreferences = exports.getPushSubscriptionsForKind = exports.getAllPushSubscriptions = exports.getPushSubscriptionByEndpoint = exports.upsertPushSubscription = exports.deleteAssistantSessionState = exports.updateAssistantSessionState = exports.getAssistantSessionState = exports.listRunningAssistantExecutions = exports.getRunningAssistantExecutionByConversation = exports.getLatestAssistantExecutionByConversation = void 0;
16
16
  // init-db
17
17
  var init_db_1 = require("./init-db");
18
18
  Object.defineProperty(exports, "initDatabase", { enumerable: true, get: function () { return init_db_1.initDatabase; } });
@@ -150,3 +150,36 @@ Object.defineProperty(exports, "getAllPushSubscriptions", { enumerable: true, ge
150
150
  Object.defineProperty(exports, "getPushSubscriptionsForKind", { enumerable: true, get: function () { return push_subscriptions_db_1.getPushSubscriptionsForKind; } });
151
151
  Object.defineProperty(exports, "updatePushSubscriptionPreferences", { enumerable: true, get: function () { return push_subscriptions_db_1.updatePushSubscriptionPreferences; } });
152
152
  Object.defineProperty(exports, "deletePushSubscriptionByEndpoint", { enumerable: true, get: function () { return push_subscriptions_db_1.deletePushSubscriptionByEndpoint; } });
153
+ // verification-db (verification gate runs, Issue #1542)
154
+ var verification_db_1 = require("./verification-db");
155
+ Object.defineProperty(exports, "createVerificationRun", { enumerable: true, get: function () { return verification_db_1.createVerificationRun; } });
156
+ Object.defineProperty(exports, "finishVerificationRun", { enumerable: true, get: function () { return verification_db_1.finishVerificationRun; } });
157
+ Object.defineProperty(exports, "createGateResult", { enumerable: true, get: function () { return verification_db_1.createGateResult; } });
158
+ Object.defineProperty(exports, "finishGateResult", { enumerable: true, get: function () { return verification_db_1.finishGateResult; } });
159
+ Object.defineProperty(exports, "getVerificationRun", { enumerable: true, get: function () { return verification_db_1.getVerificationRun; } });
160
+ Object.defineProperty(exports, "listVerificationRuns", { enumerable: true, get: function () { return verification_db_1.listVerificationRuns; } });
161
+ Object.defineProperty(exports, "getRunningVerificationRun", { enumerable: true, get: function () { return verification_db_1.getRunningVerificationRun; } });
162
+ Object.defineProperty(exports, "listRunningVerificationRuns", { enumerable: true, get: function () { return verification_db_1.listRunningVerificationRuns; } });
163
+ Object.defineProperty(exports, "listVerificationRunsForPeriod", { enumerable: true, get: function () { return verification_db_1.listVerificationRunsForPeriod; } });
164
+ Object.defineProperty(exports, "DEFAULT_RUN_HISTORY_LIMIT", { enumerable: true, get: function () { return verification_db_1.DEFAULT_RUN_HISTORY_LIMIT; } });
165
+ Object.defineProperty(exports, "MAX_RUN_HISTORY_LIMIT", { enumerable: true, get: function () { return verification_db_1.MAX_RUN_HISTORY_LIMIT; } });
166
+ Object.defineProperty(exports, "MAX_RUN_HISTORY_DAYS", { enumerable: true, get: function () { return verification_db_1.MAX_RUN_HISTORY_DAYS; } });
167
+ Object.defineProperty(exports, "VERIFICATION_TRIGGERS", { enumerable: true, get: function () { return verification_db_1.VERIFICATION_TRIGGERS; } });
168
+ // tasks-db (execution contracts, Issue #1545)
169
+ var tasks_db_1 = require("./tasks-db");
170
+ Object.defineProperty(exports, "createTask", { enumerable: true, get: function () { return tasks_db_1.createTask; } });
171
+ Object.defineProperty(exports, "getTask", { enumerable: true, get: function () { return tasks_db_1.getTask; } });
172
+ Object.defineProperty(exports, "listTasks", { enumerable: true, get: function () { return tasks_db_1.listTasks; } });
173
+ Object.defineProperty(exports, "getActiveTask", { enumerable: true, get: function () { return tasks_db_1.getActiveTask; } });
174
+ Object.defineProperty(exports, "getActiveTaskForInstance", { enumerable: true, get: function () { return tasks_db_1.getActiveTaskForInstance; } });
175
+ Object.defineProperty(exports, "isTerminalTaskStatus", { enumerable: true, get: function () { return tasks_db_1.isTerminalTaskStatus; } });
176
+ Object.defineProperty(exports, "TASK_STATUSES", { enumerable: true, get: function () { return tasks_db_1.TASK_STATUSES; } });
177
+ Object.defineProperty(exports, "TERMINAL_TASK_STATUSES", { enumerable: true, get: function () { return tasks_db_1.TERMINAL_TASK_STATUSES; } });
178
+ Object.defineProperty(exports, "ACTIVE_TASK_STATUSES", { enumerable: true, get: function () { return tasks_db_1.ACTIVE_TASK_STATUSES; } });
179
+ // task-events-db (task state machine log, Issue #1548).
180
+ // `updateTaskStatus` and `insertTaskEvent` are intentionally absent from this
181
+ // barrel: `applyTaskEvent` (@/lib/tasks/task-transition-service) is the only
182
+ // writer of either, and reaching around it would put a status in the table with
183
+ // no event explaining it.
184
+ var task_events_db_1 = require("./task-events-db");
185
+ Object.defineProperty(exports, "listTaskEvents", { enumerable: true, get: function () { return task_events_db_1.listTaskEvents; } });
@@ -31,6 +31,10 @@ const v44_skill_operations_1 = require("./v44-skill-operations");
31
31
  const v45_skill_installations_1 = require("./v45-skill-installations");
32
32
  const v46_skill_installations_cascade_1 = require("./v46-skill-installations-cascade");
33
33
  const v47_skill_installations_roots_1 = require("./v47-skill-installations-roots");
34
+ const v48_skill_operations_audit_index_1 = require("./v48-skill-operations-audit-index");
35
+ const v49_verification_runs_1 = require("./v49-verification-runs");
36
+ const v50_tasks_1 = require("./v50-tasks");
37
+ const v51_task_events_1 = require("./v51-task-events");
34
38
  /**
35
39
  * Complete ordered list of all migrations.
36
40
  * Used internally by the barrel file (db-migrations.ts); NOT exported from the barrel (DR2-004).
@@ -65,4 +69,8 @@ exports.migrations = [
65
69
  ...v45_skill_installations_1.v45_migrations,
66
70
  ...v46_skill_installations_cascade_1.v46_migrations,
67
71
  ...v47_skill_installations_roots_1.v47_migrations,
72
+ ...v48_skill_operations_audit_index_1.v48_migrations,
73
+ ...v49_verification_runs_1.v49_migrations,
74
+ ...v50_tasks_1.v50_migrations,
75
+ ...v51_task_events_1.v51_migrations,
68
76
  ];
@@ -17,7 +17,7 @@ const path_1 = __importDefault(require("path"));
17
17
  * Current schema version
18
18
  * Increment this when adding new migrations
19
19
  */
20
- exports.CURRENT_SCHEMA_VERSION = 47;
20
+ exports.CURRENT_SCHEMA_VERSION = 51;
21
21
  /**
22
22
  * Get current schema version from database
23
23
  */
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v48: audit version transition and feed indexes (Issue #1248).
4
+ *
5
+ * Two things the applied-state dashboard needs that v44 does not provide.
6
+ *
7
+ * **`from_version` / `to_version`.** v44 records a single `skill_version`, which
8
+ * answers "what version was this operation about" but not "what replaced what".
9
+ * An update is exactly a transition, and reading one out of two adjacent audit
10
+ * rows is guesswork the log should not require. Both columns are nullable
11
+ * because the ends of the timeline are genuinely open: an install onto an empty
12
+ * target has no `from`, an uninstall has no `to`.
13
+ *
14
+ * **Feed indexes.** The existing `idx_skill_operations_target` leads with
15
+ * `worktree_id`, so it cannot serve the dashboard's cross-worktree "newest
16
+ * first" query, and the "show me only the failures" filter has no index at all.
17
+ * Both are added here rather than left to a full scan that grows with history —
18
+ * the table is append-only, so it only ever gets longer.
19
+ *
20
+ * `ALTER TABLE ... ADD COLUMN` is DDL and does not fire the v44 append-only
21
+ * triggers, so existing rows are preserved and read back with NULL transitions.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.v48_migrations = void 0;
25
+ exports.v48_migrations = [
26
+ {
27
+ version: 48,
28
+ name: 'add-skill-operations-audit-index',
29
+ up: (db) => {
30
+ db.exec('ALTER TABLE skill_operations ADD COLUMN from_version TEXT;');
31
+ db.exec('ALTER TABLE skill_operations ADD COLUMN to_version TEXT;');
32
+ db.exec(`
33
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_recent
34
+ ON skill_operations(recorded_at DESC, id DESC);
35
+ `);
36
+ db.exec(`
37
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_result
38
+ ON skill_operations(result, recorded_at DESC);
39
+ `);
40
+ },
41
+ down: (db) => {
42
+ db.exec('DROP INDEX IF EXISTS idx_skill_operations_result;');
43
+ db.exec('DROP INDEX IF EXISTS idx_skill_operations_recent;');
44
+ // SQLite < 3.35 cannot DROP COLUMN; rebuild without the two columns. The
45
+ // append-only triggers are recreated afterwards: DROP TABLE removes the
46
+ // triggers bound to the old table, and a log without them is not the log.
47
+ db.exec('DROP TRIGGER IF EXISTS skill_operations_no_delete;');
48
+ db.exec('DROP TRIGGER IF EXISTS skill_operations_no_update;');
49
+ db.exec(`
50
+ CREATE TABLE skill_operations__v47 (
51
+ id TEXT PRIMARY KEY,
52
+ operation_id TEXT NOT NULL,
53
+ idempotency_key TEXT NOT NULL,
54
+ binding_hash TEXT NOT NULL,
55
+ operation TEXT NOT NULL,
56
+ state TEXT NOT NULL,
57
+ result TEXT NOT NULL,
58
+ actor_type TEXT NOT NULL,
59
+ actor_id TEXT,
60
+ worktree_id TEXT NOT NULL,
61
+ skill_id TEXT NOT NULL,
62
+ skill_version TEXT,
63
+ source_origin TEXT,
64
+ source_repository TEXT,
65
+ source_ref TEXT,
66
+ source_commit TEXT,
67
+ artifact_sha256 TEXT,
68
+ error_code TEXT,
69
+ error_message TEXT,
70
+ recorded_at INTEGER NOT NULL
71
+ );
72
+ `);
73
+ db.exec(`
74
+ INSERT INTO skill_operations__v47 (
75
+ id, operation_id, idempotency_key, binding_hash, operation, state, result,
76
+ actor_type, actor_id, worktree_id, skill_id, skill_version,
77
+ source_origin, source_repository, source_ref, source_commit, artifact_sha256,
78
+ error_code, error_message, recorded_at
79
+ )
80
+ SELECT
81
+ id, operation_id, idempotency_key, binding_hash, operation, state, result,
82
+ actor_type, actor_id, worktree_id, skill_id, skill_version,
83
+ source_origin, source_repository, source_ref, source_commit, artifact_sha256,
84
+ error_code, error_message, recorded_at
85
+ FROM skill_operations;
86
+ `);
87
+ db.exec('DROP TABLE skill_operations;');
88
+ db.exec('ALTER TABLE skill_operations__v47 RENAME TO skill_operations;');
89
+ db.exec(`
90
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_operation_id
91
+ ON skill_operations(operation_id);
92
+ `);
93
+ db.exec(`
94
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_idempotency_key
95
+ ON skill_operations(idempotency_key);
96
+ `);
97
+ db.exec(`
98
+ CREATE INDEX IF NOT EXISTS idx_skill_operations_target
99
+ ON skill_operations(worktree_id, skill_id, recorded_at);
100
+ `);
101
+ db.exec(`
102
+ CREATE TRIGGER IF NOT EXISTS skill_operations_no_update
103
+ BEFORE UPDATE ON skill_operations
104
+ BEGIN
105
+ SELECT RAISE(ABORT, 'skill_operations is append-only');
106
+ END;
107
+ `);
108
+ db.exec(`
109
+ CREATE TRIGGER IF NOT EXISTS skill_operations_no_delete
110
+ BEFORE DELETE ON skill_operations
111
+ BEGIN
112
+ SELECT RAISE(ABORT, 'skill_operations is append-only');
113
+ END;
114
+ `);
115
+ },
116
+ },
117
+ ];
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v49: verification_runs / verification_gate_results (Issue #1542).
4
+ *
5
+ * The first place an *interactive* agent's work gets a recorded verdict.
6
+ * `execution_logs` already stores status + exit_code + result, but only for
7
+ * scheduled executions; interactive sessions leave nothing behind but
8
+ * `chat_messages`, so "the agent finished" has never been distinguishable from
9
+ * "the agent produced something that passes".
10
+ *
11
+ * One run per verification attempt, one gate result per command inside it.
12
+ * Gate results cascade with their run: a run is the only thing that gives a
13
+ * gate result meaning, so an orphan row is not a record, it is noise.
14
+ *
15
+ * Both status vocabularies are CHECK-constrained rather than validated in the
16
+ * writer alone. The distinctions they encode are the point of the table and a
17
+ * typo that lands as a new status value would silently create a bucket nothing
18
+ * queries:
19
+ * run.not_started — the work-evidence gate failed (no commits, no diff);
20
+ * distinct from `failed`, which means the work was judged.
21
+ * run.error — the runner broke before any gate ran (bad config, spawn
22
+ * failure); no verdict was reached about the work at all.
23
+ * gate.skipped — deliberately not run (e.g. skipInPrimaryCheckout); the
24
+ * reason belongs in log_tail so a skip is never mistaken
25
+ * for a pass.
26
+ *
27
+ * `task_id` is a free column, not a foreign key: the `tasks` table arrives in
28
+ * Phase 2 (#1545). Declaring a REFERENCES clause against a table that does not
29
+ * exist yet would make every insert fail once foreign_keys is ON.
30
+ *
31
+ * Timestamps are epoch milliseconds (INTEGER), matching v44 onward.
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.v49_migrations = void 0;
35
+ exports.v49_migrations = [
36
+ {
37
+ version: 49,
38
+ name: 'add-verification-runs',
39
+ up: (db) => {
40
+ db.exec(`
41
+ CREATE TABLE IF NOT EXISTS verification_runs (
42
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
43
+ worktree_id TEXT NOT NULL,
44
+ instance_id TEXT,
45
+ task_id TEXT,
46
+ trigger TEXT NOT NULL CHECK (trigger IN ('manual','wait','api','task')),
47
+ status TEXT NOT NULL CHECK (status IN ('running','passed','failed','not_started','error','cancelled')),
48
+ base_ref TEXT,
49
+ started_at INTEGER NOT NULL,
50
+ finished_at INTEGER
51
+ );
52
+ `);
53
+ db.exec(`
54
+ CREATE TABLE IF NOT EXISTS verification_gate_results (
55
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
56
+ run_id INTEGER NOT NULL REFERENCES verification_runs(id) ON DELETE CASCADE,
57
+ gate_id TEXT NOT NULL,
58
+ command TEXT NOT NULL,
59
+ status TEXT NOT NULL CHECK (status IN ('running','passed','failed','timeout','skipped','error')),
60
+ exit_code INTEGER,
61
+ duration_ms INTEGER,
62
+ log_tail TEXT,
63
+ started_at INTEGER NOT NULL,
64
+ finished_at INTEGER
65
+ );
66
+ `);
67
+ db.exec(`
68
+ CREATE INDEX IF NOT EXISTS idx_verification_runs_worktree
69
+ ON verification_runs(worktree_id, started_at DESC);
70
+ `);
71
+ db.exec(`
72
+ CREATE INDEX IF NOT EXISTS idx_verification_gate_results_run
73
+ ON verification_gate_results(run_id);
74
+ `);
75
+ },
76
+ down: (db) => {
77
+ // Child first, mirroring the dependency direction. Under
78
+ // PRAGMA foreign_keys = ON (how db-instance.ts opens the database) the
79
+ // reverse order also works today, but only because the cascade absorbs
80
+ // the parent's implicit DELETE — that is a property of the cascade, not
81
+ // of DROP TABLE.
82
+ db.exec('DROP TABLE IF EXISTS verification_gate_results;');
83
+ db.exec('DROP TABLE IF EXISTS verification_runs;');
84
+ },
85
+ },
86
+ ];
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v50: tasks (Issue #1545, Phase 2-1).
4
+ *
5
+ * The table the execution contract lands in. Until now a message sent to an
6
+ * agent left only a `chat_messages` row: what the agent was *supposed* to do,
7
+ * which paths it was allowed to touch, and what would count as done existed
8
+ * nowhere the system could read back. A task row is that record.
9
+ *
10
+ * `contract_json` is a parsed snapshot, not a path to re-read. A contract file
11
+ * edited after the send must not retroactively change what the running task
12
+ * agreed to — otherwise "did it meet the contract?" has no fixed answer.
13
+ * `contract_path` is kept alongside it for provenance only.
14
+ *
15
+ * The `status` vocabulary is CHECK-constrained because the distinctions are the
16
+ * point of the table and a typo landing as a new value would create a bucket
17
+ * nothing queries:
18
+ * pending — row exists, message not sent yet
19
+ * running — sent; the agent is working
20
+ * waiting_input — blocked on a prompt (used by the Phase 3-1 state machine)
21
+ * verifying — a verification run is in flight for this task
22
+ * succeeded — that run came back `passed`
23
+ * failed — the run came back `failed`, or no verdict was reachable
24
+ * not_started — the run came back `not_started` (no work evidence at all)
25
+ * cancelled — abandoned explicitly
26
+ *
27
+ * `last_verification_run_id` deliberately carries no REFERENCES clause, for the
28
+ * same reason `verification_runs.task_id` (v49) does not point here: the two
29
+ * tables reference each other, so a foreign key in either direction would order
30
+ * the migrations against themselves. Application code keeps them consistent.
31
+ *
32
+ * Timestamps are epoch milliseconds (INTEGER), matching v44 onward.
33
+ */
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.v50_migrations = void 0;
36
+ exports.v50_migrations = [
37
+ {
38
+ version: 50,
39
+ name: 'add-tasks',
40
+ up: (db) => {
41
+ db.exec(`
42
+ CREATE TABLE IF NOT EXISTS tasks (
43
+ id TEXT PRIMARY KEY,
44
+ worktree_id TEXT NOT NULL,
45
+ cli_tool_id TEXT NOT NULL,
46
+ instance_id TEXT,
47
+ title TEXT NOT NULL,
48
+ goal TEXT NOT NULL,
49
+ contract_path TEXT,
50
+ contract_json TEXT NOT NULL,
51
+ status TEXT NOT NULL CHECK (status IN ('pending','running','waiting_input','verifying','succeeded','failed','not_started','cancelled')),
52
+ last_verification_run_id INTEGER,
53
+ created_at INTEGER NOT NULL,
54
+ updated_at INTEGER NOT NULL,
55
+ started_at INTEGER,
56
+ finished_at INTEGER
57
+ );
58
+ `);
59
+ db.exec(`
60
+ CREATE INDEX IF NOT EXISTS idx_tasks_worktree
61
+ ON tasks(worktree_id, created_at DESC);
62
+ `);
63
+ },
64
+ down: (db) => {
65
+ db.exec('DROP TABLE IF EXISTS tasks;');
66
+ },
67
+ },
68
+ ];
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v51: task_events (Issue #1548, Phase 3-1).
4
+ *
5
+ * An append-only log of every attempt to move a task's status. v50 recorded
6
+ * where a task *is*; this records how it got there — which is what "how many
7
+ * times did a human have to intervene" and "how many re-instruction loops did
8
+ * this take" are computed from (Phase 4 Eval). Neither question is answerable
9
+ * from a status column that only ever holds the latest value.
10
+ *
11
+ * `to_status` is nullable on purpose: a rejected transition is written with
12
+ * `to_status = NULL`. An event the state machine refused is evidence that some
13
+ * caller believed a transition was possible when it was not, and silently
14
+ * dropping it would hide exactly the wiring bug worth finding.
15
+ *
16
+ * No CHECK constraint on `event`, unlike `tasks.status` in v50. The status
17
+ * vocabulary is written by many callers and read by queries that branch on it;
18
+ * events have a single writer (`applyTaskEvent`) whose input is a closed
19
+ * TypeScript union, so a CHECK here would only add a migration to the cost of
20
+ * adding an event without closing a hole the type system leaves open.
21
+ *
22
+ * No foreign key to `tasks` for the same reason v50's
23
+ * `last_verification_run_id` has none: this table is history, and history that
24
+ * disappears when its subject is deleted cannot be audited afterwards.
25
+ *
26
+ * Timestamps are epoch milliseconds (INTEGER), matching v44 onward.
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.v51_migrations = void 0;
30
+ exports.v51_migrations = [
31
+ {
32
+ version: 51,
33
+ name: 'add-task-events',
34
+ up: (db) => {
35
+ db.exec(`
36
+ CREATE TABLE IF NOT EXISTS task_events (
37
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
38
+ task_id TEXT NOT NULL,
39
+ event TEXT NOT NULL,
40
+ from_status TEXT NOT NULL,
41
+ to_status TEXT,
42
+ payload_json TEXT,
43
+ created_at INTEGER NOT NULL
44
+ );
45
+ `);
46
+ // (task_id, created_at) is the only read pattern: one task's history in
47
+ // order. id breaks ties, because same-millisecond events are ordinary —
48
+ // a rejected transition and its retry can land in the same tick.
49
+ db.exec(`
50
+ CREATE INDEX IF NOT EXISTS idx_task_events_task
51
+ ON task_events(task_id, created_at);
52
+ `);
53
+ },
54
+ down: (db) => {
55
+ db.exec('DROP TABLE IF EXISTS task_events;');
56
+ },
57
+ },
58
+ ];
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * task_events row I/O (Issue #1548, migration v51).
4
+ *
5
+ * `insertTaskEvent` is deliberately NOT re-exported from the `@/lib/db` barrel.
6
+ * The log is only meaningful if every row was produced by a real state-machine
7
+ * decision, so the sole writer is `applyTaskEvent`
8
+ * (`@/lib/tasks/task-transition-service`), which imports this module directly.
9
+ * A caller reaching for the barrel gets the reader and nothing else.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.insertTaskEvent = insertTaskEvent;
13
+ exports.listTaskEvents = listTaskEvents;
14
+ function mapRow(row) {
15
+ return {
16
+ id: row.id,
17
+ taskId: row.task_id,
18
+ event: row.event,
19
+ fromStatus: row.from_status,
20
+ toStatus: row.to_status,
21
+ payload: row.payload_json === null ? null : JSON.parse(row.payload_json),
22
+ createdAt: new Date(row.created_at),
23
+ };
24
+ }
25
+ /** Append one event. See the module comment for why this is not barrel-exported. */
26
+ function insertTaskEvent(db, input) {
27
+ // An empty payload is stored as NULL rather than '{}': "nothing was attached"
28
+ // and "an empty object was attached" are the same fact, and one of them makes
29
+ // the column readable at a glance.
30
+ const payloadJson = input.payload === undefined || Object.keys(input.payload).length === 0
31
+ ? null
32
+ : JSON.stringify(input.payload);
33
+ const info = db
34
+ .prepare(`
35
+ INSERT INTO task_events (task_id, event, from_status, to_status, payload_json, created_at)
36
+ VALUES (?, ?, ?, ?, ?, ?)
37
+ `)
38
+ .run(input.taskId, input.event, input.fromStatus, input.toStatus, payloadJson, input.createdAt);
39
+ return Number(info.lastInsertRowid);
40
+ }
41
+ /**
42
+ * One task's history, oldest first.
43
+ *
44
+ * `id ASC` breaks ties rather than leaving same-millisecond rows in an arbitrary
45
+ * order — a rejected transition and the retry that followed it routinely share a
46
+ * timestamp, and reading them out of order inverts the story they tell.
47
+ */
48
+ function listTaskEvents(db, taskId, limit = 200) {
49
+ const rows = db
50
+ .prepare(`
51
+ SELECT id, task_id, event, from_status, to_status, payload_json, created_at
52
+ FROM task_events
53
+ WHERE task_id = ?
54
+ ORDER BY created_at ASC, id ASC
55
+ LIMIT ?
56
+ `)
57
+ .all(taskId, limit);
58
+ return rows.map(mapRow);
59
+ }