commandmate 0.22.2 → 0.24.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 (841) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +383 -374
  3. package/.next/app-path-routes-manifest.json +16 -15
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/react-loadable-manifest.json +1 -1
  7. package/.next/required-server-files.json +1 -1
  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.js +1 -1
  37. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  38. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  40. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  41. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  43. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  44. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  46. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  47. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/external-apps/route.js +1 -1
  49. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  50. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/fs/browse/route.js +1 -1
  52. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  53. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/fs/recent-paths/route.js +1 -1
  55. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  56. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  58. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  59. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  61. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  62. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  64. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  65. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/metrics/vibe/route.js +1 -1
  67. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  68. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/push/escalation/route.js +1 -0
  71. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -0
  72. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  74. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  75. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/push/vapid/route.js +1 -1
  77. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  78. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  80. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  81. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  83. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  84. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  86. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  87. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  89. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  90. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/repositories/clone/route.js +1 -1
  92. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  93. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  95. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  96. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/repositories/restore/route.js +1 -1
  98. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  99. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/repositories/route.js +1 -1
  101. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  102. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/repositories/scan/route.js +1 -1
  104. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  105. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/repositories/sync/route.js +1 -1
  107. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  108. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  110. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  111. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/sidebar/group-order/route.js +1 -1
  113. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  114. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/skills/installations/route.js +1 -1
  117. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  118. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/skills/operations/route.js +1 -1
  120. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  121. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/skills/reindex/route.js +1 -1
  123. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  124. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -4
  128. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  129. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/tasks/[taskId]/route.js +1 -4
  131. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  132. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/templates/[id]/route.js +1 -1
  134. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  135. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/templates/route.js +1 -1
  137. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  138. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/todos/route.js +1 -1
  140. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  141. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  143. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  144. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/verification/runs/route.js +1 -1
  146. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  147. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  150. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  156. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  158. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  159. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  162. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  165. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  167. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  171. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  243. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  246. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  249. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  252. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +6 -6
  254. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  255. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  258. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  261. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  264. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  267. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  270. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  273. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  275. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  276. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  279. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
  281. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  282. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  285. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  288. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  291. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  294. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  297. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  300. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  302. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  303. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  304. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  305. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  306. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  309. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  311. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  312. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  314. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  315. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  316. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  317. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  318. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  319. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  320. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  321. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  322. package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
  323. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  324. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  325. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  326. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  327. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  328. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  329. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  330. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  331. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  332. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  333. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  334. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  335. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  336. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  337. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  338. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  339. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  340. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  341. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  342. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  343. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  344. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  345. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  346. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  347. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  348. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  349. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -4
  350. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  351. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  352. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  353. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  354. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  355. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  356. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  357. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  358. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  359. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  360. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  361. package/.next/server/app/api/worktrees/route.js +1 -1
  362. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  363. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  364. package/.next/server/app/chat/page.js +2 -2
  365. package/.next/server/app/chat/page.js.nft.json +1 -1
  366. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  367. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  368. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  369. package/.next/server/app/more/page.js +2 -2
  370. package/.next/server/app/more/page.js.nft.json +1 -1
  371. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  372. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  373. package/.next/server/app/page.js +1 -1
  374. package/.next/server/app/page.js.nft.json +1 -1
  375. package/.next/server/app/page_client-reference-manifest.js +1 -1
  376. package/.next/server/app/proxy/[...path]/route.js +1 -1
  377. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  378. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  379. package/.next/server/app/repositories/page.js +2 -2
  380. package/.next/server/app/repositories/page.js.nft.json +1 -1
  381. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  382. package/.next/server/app/review/page.js +1 -1
  383. package/.next/server/app/review/page.js.nft.json +1 -1
  384. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  385. package/.next/server/app/sessions/page.js +1 -1
  386. package/.next/server/app/sessions/page.js.nft.json +1 -1
  387. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  388. package/.next/server/app/skills/[skillId]/page.js +2 -2
  389. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  390. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  391. package/.next/server/app/skills/installed/page.js +2 -2
  392. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  393. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  394. package/.next/server/app/skills/page.js +1 -1
  395. package/.next/server/app/skills/page.js.nft.json +1 -1
  396. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  397. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
  398. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  399. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  400. package/.next/server/app/worktrees/[id]/page.js +6 -6
  401. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  402. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  403. package/.next/server/app/worktrees/[id]/terminal/page.js +1 -1
  404. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  405. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  406. package/.next/server/app-paths-manifest.json +16 -15
  407. package/.next/server/chunks/1029.js +1 -1
  408. package/.next/server/chunks/1068.js +1 -1
  409. package/.next/server/chunks/1296.js +1 -1
  410. package/.next/server/chunks/1366.js +1 -1
  411. package/.next/server/chunks/1601.js +7 -0
  412. package/.next/server/chunks/1825.js +1 -1
  413. package/.next/server/chunks/2119.js +1 -1
  414. package/.next/server/chunks/2404.js +1 -1
  415. package/.next/server/chunks/2445.js +1 -1
  416. package/.next/server/chunks/2546.js +1 -1
  417. package/.next/server/chunks/3241.js +1 -0
  418. package/.next/server/chunks/3417.js +1 -1
  419. package/.next/server/chunks/3451.js +1 -1
  420. package/.next/server/chunks/3480.js +1 -1
  421. package/.next/server/chunks/3543.js +1 -1
  422. package/.next/server/chunks/3945.js +1 -1
  423. package/.next/server/chunks/406.js +10 -6
  424. package/.next/server/chunks/4393.js +1 -0
  425. package/.next/server/chunks/4444.js +1 -1
  426. package/.next/server/chunks/4455.js +1 -0
  427. package/.next/server/chunks/5164.js +1 -0
  428. package/.next/server/chunks/5959.js +5 -6
  429. package/.next/server/chunks/5998.js +2 -13
  430. package/.next/server/chunks/6130.js +1 -1
  431. package/.next/server/chunks/6159.js +1 -1
  432. package/.next/server/chunks/6274.js +3 -3
  433. package/.next/server/chunks/6401.js +1 -1
  434. package/.next/server/chunks/6781.js +1 -0
  435. package/.next/server/chunks/7458.js +6 -0
  436. package/.next/server/chunks/{3753.js → 7970.js} +57 -32
  437. package/.next/server/chunks/8536.js +1 -1
  438. package/.next/server/chunks/880.js +21 -0
  439. package/.next/server/chunks/8807.js +250 -192
  440. package/.next/server/chunks/9058.js +1 -1
  441. package/.next/server/chunks/9067.js +1 -1
  442. package/.next/server/chunks/9123.js +8 -8
  443. package/.next/server/chunks/9358.js +1 -1
  444. package/.next/server/chunks/9360.js +1 -1
  445. package/.next/server/chunks/9373.js +3 -3
  446. package/.next/server/chunks/9687.js +2 -2
  447. package/.next/server/middleware-build-manifest.js +1 -1
  448. package/.next/server/middleware-manifest.json +5 -5
  449. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  450. package/.next/server/pages/500.html +1 -1
  451. package/.next/server/server-reference-manifest.json +1 -1
  452. package/.next/server/src/middleware.js.map +1 -1
  453. package/.next/static/chunks/4322-dfd5a7119b5ba4fc.js +1 -0
  454. package/.next/static/chunks/{4974-eaf66770bfa9dea0.js → 4974-35592ec312322124.js} +1 -1
  455. package/.next/static/chunks/5229-0610b4e3288e777d.js +1 -0
  456. package/.next/static/chunks/6381-18a6a02a94d00d76.js +1 -0
  457. package/.next/static/chunks/7229.7f0f5a7032b612b4.js +1 -0
  458. package/.next/static/chunks/{744-fa8c0ae444c8338c.js → 744-3ad06d8c8ca482fc.js} +1 -1
  459. package/.next/static/chunks/app/api/app/update/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
  460. package/.next/static/chunks/app/api/app/update-check/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
  461. package/.next/static/chunks/app/api/assistant/conversation/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
  462. package/.next/static/chunks/app/api/assistant/current-output/{route-973ec48531555712.js → route-fae89f8d4cc3ff97.js} +1 -1
  463. package/.next/static/chunks/app/api/assistant/messages/route-fae89f8d4cc3ff97.js +1 -0
  464. package/.next/static/chunks/app/api/assistant/session/route-fae89f8d4cc3ff97.js +1 -0
  465. package/.next/static/chunks/app/api/assistant/start/route-fae89f8d4cc3ff97.js +1 -0
  466. package/.next/static/chunks/app/api/assistant/terminal/route-fae89f8d4cc3ff97.js +1 -0
  467. package/.next/static/chunks/app/api/assistant/tools/route-fae89f8d4cc3ff97.js +1 -0
  468. package/.next/static/chunks/app/api/auth/login/route-fae89f8d4cc3ff97.js +1 -0
  469. package/.next/static/chunks/app/api/auth/logout/route-fae89f8d4cc3ff97.js +1 -0
  470. package/.next/static/chunks/app/api/auth/status/route-fae89f8d4cc3ff97.js +1 -0
  471. package/.next/static/chunks/app/api/daily-summary/route-fae89f8d4cc3ff97.js +1 -0
  472. package/.next/static/chunks/app/api/daily-summary/status/route-fae89f8d4cc3ff97.js +1 -0
  473. package/.next/static/chunks/app/api/external-apps/[id]/health/route-fae89f8d4cc3ff97.js +1 -0
  474. package/.next/static/chunks/app/api/external-apps/[id]/route-fae89f8d4cc3ff97.js +1 -0
  475. package/.next/static/chunks/app/api/external-apps/route-fae89f8d4cc3ff97.js +1 -0
  476. package/.next/static/chunks/app/api/fs/browse/route-fae89f8d4cc3ff97.js +1 -0
  477. package/.next/static/chunks/app/api/fs/recent-paths/route-fae89f8d4cc3ff97.js +1 -0
  478. package/.next/static/chunks/app/api/hooks/agent-event/route-fae89f8d4cc3ff97.js +1 -0
  479. package/.next/static/chunks/app/api/hooks/claude-done/route-fae89f8d4cc3ff97.js +1 -0
  480. package/.next/static/chunks/app/api/hooks/permission-request/route-fae89f8d4cc3ff97.js +1 -0
  481. package/.next/static/chunks/app/api/metrics/vibe/route-fae89f8d4cc3ff97.js +1 -0
  482. package/.next/static/chunks/app/api/ollama/models/route-fae89f8d4cc3ff97.js +1 -0
  483. package/.next/static/chunks/app/api/push/escalation/route-fae89f8d4cc3ff97.js +1 -0
  484. package/.next/static/chunks/app/api/push/subscriptions/route-fae89f8d4cc3ff97.js +1 -0
  485. package/.next/static/chunks/app/api/push/vapid/route-fae89f8d4cc3ff97.js +1 -0
  486. package/.next/static/chunks/app/api/repositories/[id]/route-fae89f8d4cc3ff97.js +1 -0
  487. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +1 -0
  488. package/.next/static/chunks/app/api/repositories/[id]/todos/route-fae89f8d4cc3ff97.js +1 -0
  489. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-fae89f8d4cc3ff97.js +1 -0
  490. package/.next/static/chunks/app/api/repositories/clone/route-fae89f8d4cc3ff97.js +1 -0
  491. package/.next/static/chunks/app/api/repositories/excluded/route-fae89f8d4cc3ff97.js +1 -0
  492. package/.next/static/chunks/app/api/repositories/restore/route-fae89f8d4cc3ff97.js +1 -0
  493. package/.next/static/chunks/app/api/repositories/route-fae89f8d4cc3ff97.js +1 -0
  494. package/.next/static/chunks/app/api/repositories/scan/route-fae89f8d4cc3ff97.js +1 -0
  495. package/.next/static/chunks/app/api/repositories/sync/route-fae89f8d4cc3ff97.js +1 -0
  496. package/.next/static/chunks/app/api/repositories/validate-path/route-fae89f8d4cc3ff97.js +1 -0
  497. package/.next/static/chunks/app/api/sidebar/group-order/route-fae89f8d4cc3ff97.js +1 -0
  498. package/.next/static/chunks/app/api/skills/[id]/route-fae89f8d4cc3ff97.js +1 -0
  499. package/.next/static/chunks/app/api/skills/installations/route-fae89f8d4cc3ff97.js +1 -0
  500. package/.next/static/chunks/app/api/skills/operations/route-fae89f8d4cc3ff97.js +1 -0
  501. package/.next/static/chunks/app/api/skills/reindex/route-fae89f8d4cc3ff97.js +1 -0
  502. package/.next/static/chunks/app/api/skills/route-fae89f8d4cc3ff97.js +1 -0
  503. package/.next/static/chunks/app/api/slash-commands/route-fae89f8d4cc3ff97.js +1 -0
  504. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-fae89f8d4cc3ff97.js +1 -0
  505. package/.next/static/chunks/app/api/tasks/[taskId]/route-fae89f8d4cc3ff97.js +1 -0
  506. package/.next/static/chunks/app/api/templates/[id]/route-fae89f8d4cc3ff97.js +1 -0
  507. package/.next/static/chunks/app/api/templates/route-fae89f8d4cc3ff97.js +1 -0
  508. package/.next/static/chunks/app/api/todos/route-fae89f8d4cc3ff97.js +1 -0
  509. package/.next/static/chunks/app/api/verification/runs/[runId]/route-fae89f8d4cc3ff97.js +1 -0
  510. package/.next/static/chunks/app/api/verification/runs/route-fae89f8d4cc3ff97.js +1 -0
  511. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-fae89f8d4cc3ff97.js +1 -0
  512. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-fae89f8d4cc3ff97.js +1 -0
  513. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-fae89f8d4cc3ff97.js +1 -0
  514. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-fae89f8d4cc3ff97.js +1 -0
  515. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-fae89f8d4cc3ff97.js +1 -0
  516. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-fae89f8d4cc3ff97.js +1 -0
  517. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-fae89f8d4cc3ff97.js +1 -0
  518. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-fae89f8d4cc3ff97.js +1 -0
  519. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-fae89f8d4cc3ff97.js +1 -0
  520. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-fae89f8d4cc3ff97.js +1 -0
  521. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-fae89f8d4cc3ff97.js +1 -0
  522. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-fae89f8d4cc3ff97.js +1 -0
  523. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-fae89f8d4cc3ff97.js +1 -0
  524. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-fae89f8d4cc3ff97.js +1 -0
  525. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-fae89f8d4cc3ff97.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-fae89f8d4cc3ff97.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-fae89f8d4cc3ff97.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-fae89f8d4cc3ff97.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-fae89f8d4cc3ff97.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-fae89f8d4cc3ff97.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-fae89f8d4cc3ff97.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-fae89f8d4cc3ff97.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-fae89f8d4cc3ff97.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-fae89f8d4cc3ff97.js +1 -0
  535. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-fae89f8d4cc3ff97.js +1 -0
  536. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-fae89f8d4cc3ff97.js +1 -0
  537. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-fae89f8d4cc3ff97.js +1 -0
  538. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-fae89f8d4cc3ff97.js +1 -0
  539. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-fae89f8d4cc3ff97.js +1 -0
  540. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-fae89f8d4cc3ff97.js +1 -0
  541. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-fae89f8d4cc3ff97.js +1 -0
  542. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-fae89f8d4cc3ff97.js +1 -0
  543. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-fae89f8d4cc3ff97.js +1 -0
  544. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-fae89f8d4cc3ff97.js +1 -0
  545. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-fae89f8d4cc3ff97.js +1 -0
  546. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-fae89f8d4cc3ff97.js +1 -0
  547. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-fae89f8d4cc3ff97.js +1 -0
  548. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-fae89f8d4cc3ff97.js +1 -0
  549. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-fae89f8d4cc3ff97.js +1 -0
  550. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-fae89f8d4cc3ff97.js +1 -0
  551. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-fae89f8d4cc3ff97.js +1 -0
  552. package/.next/static/chunks/app/api/worktrees/[id]/route-fae89f8d4cc3ff97.js +1 -0
  553. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-fae89f8d4cc3ff97.js +1 -0
  554. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-fae89f8d4cc3ff97.js +1 -0
  555. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-fae89f8d4cc3ff97.js +1 -0
  556. package/.next/static/chunks/app/api/worktrees/[id]/search/route-fae89f8d4cc3ff97.js +1 -0
  557. package/.next/static/chunks/app/api/worktrees/[id]/send/route-fae89f8d4cc3ff97.js +1 -0
  558. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-fae89f8d4cc3ff97.js +1 -0
  559. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-fae89f8d4cc3ff97.js +1 -0
  560. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-fae89f8d4cc3ff97.js +1 -0
  561. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-fae89f8d4cc3ff97.js +1 -0
  562. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-fae89f8d4cc3ff97.js +1 -0
  563. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-fae89f8d4cc3ff97.js +1 -0
  564. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-fae89f8d4cc3ff97.js +1 -0
  565. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-fae89f8d4cc3ff97.js +1 -0
  566. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-fae89f8d4cc3ff97.js +1 -0
  567. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-fae89f8d4cc3ff97.js +1 -0
  568. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-fae89f8d4cc3ff97.js +1 -0
  569. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-fae89f8d4cc3ff97.js +1 -0
  570. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-fae89f8d4cc3ff97.js +1 -0
  571. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-fae89f8d4cc3ff97.js +1 -0
  572. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-fae89f8d4cc3ff97.js +1 -0
  573. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +1 -0
  574. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-fae89f8d4cc3ff97.js +1 -0
  575. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-fae89f8d4cc3ff97.js +1 -0
  576. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-fae89f8d4cc3ff97.js +1 -0
  577. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-fae89f8d4cc3ff97.js +1 -0
  578. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-fae89f8d4cc3ff97.js +1 -0
  579. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-fae89f8d4cc3ff97.js +1 -0
  580. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-fae89f8d4cc3ff97.js +1 -0
  581. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-fae89f8d4cc3ff97.js +1 -0
  582. package/.next/static/chunks/app/api/worktrees/route-fae89f8d4cc3ff97.js +1 -0
  583. package/.next/static/chunks/app/chat/page-15d13fc024d78f5d.js +1 -0
  584. package/.next/static/chunks/app/layout-6a26ea22d5cf03dc.js +1 -0
  585. package/.next/static/chunks/app/manifest.webmanifest/route-fae89f8d4cc3ff97.js +1 -0
  586. package/.next/static/chunks/app/more/page-b8ba537baeac8d5b.js +1 -0
  587. package/.next/static/chunks/app/page-afc64708362f31e5.js +1 -0
  588. package/.next/static/chunks/app/proxy/[...path]/route-fae89f8d4cc3ff97.js +1 -0
  589. package/.next/static/chunks/app/repositories/page-3469dacb6be7842f.js +1 -0
  590. package/.next/static/chunks/app/review/page-2d9cb7e068f8f35a.js +1 -0
  591. package/.next/static/chunks/app/sessions/page-7470c2bfd89e0df9.js +1 -0
  592. package/.next/static/chunks/app/skills/[skillId]/page-5e24481162f7ea78.js +1 -0
  593. package/.next/static/chunks/app/skills/installed/page-efd2d710a27f9735.js +1 -0
  594. package/.next/static/chunks/app/skills/page-0498adfc6e48684b.js +1 -0
  595. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-9ddcb224594f620f.js +1 -0
  596. package/.next/static/chunks/app/worktrees/[id]/layout-fae89f8d4cc3ff97.js +1 -0
  597. package/.next/static/chunks/app/worktrees/[id]/page-e611d30e47989e5d.js +1 -0
  598. package/.next/static/chunks/{webpack-180bebdee221b6f4.js → webpack-3534d858912a6c92.js} +1 -1
  599. package/.next/static/css/3ac44cfc082d02ad.css +1 -0
  600. package/.next/static/smu4mnL7qMf8w38n9dQJE/_buildManifest.js +1 -0
  601. package/.next/trace +12 -12
  602. package/.next/types/app/api/push/escalation/route.ts +347 -0
  603. package/.next/types/routes.d.ts +2 -1
  604. package/.next/types/validator.ts +9 -0
  605. package/dist/cli/commands/capture.d.ts.map +1 -1
  606. package/dist/cli/commands/capture.js +6 -0
  607. package/dist/cli/commands/instances.d.ts.map +1 -1
  608. package/dist/cli/commands/instances.js +19 -1
  609. package/dist/cli/commands/task.d.ts.map +1 -1
  610. package/dist/cli/commands/task.js +6 -0
  611. package/dist/cli/commands/verify.js +6 -1
  612. package/dist/cli/types/api-responses.d.ts +46 -0
  613. package/dist/cli/types/api-responses.d.ts.map +1 -1
  614. package/dist/cli/utils/verify-runner.d.ts.map +1 -1
  615. package/dist/cli/utils/verify-runner.js +17 -1
  616. package/dist/server/locales/en/notifications.json +20 -1
  617. package/dist/server/locales/ja/notifications.json +20 -1
  618. package/dist/server/server.js +23 -0
  619. package/dist/server/src/config/log-config.js +10 -1
  620. package/dist/server/src/config/safe-directory.js +103 -0
  621. package/dist/server/src/config/system-directories.js +74 -9
  622. package/dist/server/src/lib/cli-tools/antigravity.js +19 -2
  623. package/dist/server/src/lib/cli-tools/codex.js +95 -1
  624. package/dist/server/src/lib/cli-tools/copilot.js +30 -1
  625. package/dist/server/src/lib/cli-tools/gemini.js +28 -2
  626. package/dist/server/src/lib/cli-tools/opencode.js +51 -2
  627. package/dist/server/src/lib/db/db.js +2 -1
  628. package/dist/server/src/lib/db/migrations/index.js +2 -0
  629. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  630. package/dist/server/src/lib/db/migrations/v56-gate-result-source.js +58 -0
  631. package/dist/server/src/lib/db/verification-db.js +26 -6
  632. package/dist/server/src/lib/detection/model-info-extractor.js +384 -0
  633. package/dist/server/src/lib/git/git-default-branch.js +59 -0
  634. package/dist/server/src/lib/hooks/agent-event-service.js +205 -0
  635. package/dist/server/src/lib/hooks/agent-event-types.js +7 -86
  636. package/dist/server/src/lib/hooks/hook-settings-generator.js +26 -11
  637. package/dist/server/src/lib/hooks/permission-decision-service.js +269 -0
  638. package/dist/server/src/lib/hooks/sources/abstain.js +78 -0
  639. package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +372 -0
  640. package/dist/server/src/lib/hooks/sources/antigravity/source.js +229 -0
  641. package/dist/server/src/lib/hooks/sources/antigravity/tool-id.js +16 -0
  642. package/dist/server/src/lib/hooks/sources/claude/source.js +150 -0
  643. package/dist/server/src/lib/hooks/sources/claude/tool-id.js +18 -0
  644. package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +465 -0
  645. package/dist/server/src/lib/hooks/sources/codex/source.js +143 -0
  646. package/dist/server/src/lib/hooks/sources/codex/tool-id.js +15 -0
  647. package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +473 -0
  648. package/dist/server/src/lib/hooks/sources/copilot/source.js +210 -0
  649. package/dist/server/src/lib/hooks/sources/copilot/tool-id.js +15 -0
  650. package/dist/server/src/lib/hooks/sources/define-source.js +177 -0
  651. package/dist/server/src/lib/hooks/sources/event-mapper.js +177 -0
  652. package/dist/server/src/lib/hooks/sources/gemini/event-vocabulary.js +102 -0
  653. package/dist/server/src/lib/hooks/sources/gemini/settings-generator.js +315 -0
  654. package/dist/server/src/lib/hooks/sources/gemini/shared-config-tree.js +103 -0
  655. package/dist/server/src/lib/hooks/sources/gemini/source.js +151 -0
  656. package/dist/server/src/lib/hooks/sources/gemini/tool-id.js +17 -0
  657. package/dist/server/src/lib/hooks/sources/hook-event-vocabulary.js +111 -0
  658. package/dist/server/src/lib/hooks/sources/index.js +62 -0
  659. package/dist/server/src/lib/hooks/sources/legacy-relay.js +84 -0
  660. package/dist/server/src/lib/hooks/sources/opencode/client.js +299 -0
  661. package/dist/server/src/lib/hooks/sources/opencode/ingest.js +267 -0
  662. package/dist/server/src/lib/hooks/sources/opencode/mappers.js +176 -0
  663. package/dist/server/src/lib/hooks/sources/opencode/payloads.js +189 -0
  664. package/dist/server/src/lib/hooks/sources/opencode/ports.js +295 -0
  665. package/dist/server/src/lib/hooks/sources/opencode/runtime.js +159 -0
  666. package/dist/server/src/lib/hooks/sources/opencode/source.js +253 -0
  667. package/dist/server/src/lib/hooks/sources/opencode/subscription.js +422 -0
  668. package/dist/server/src/lib/hooks/sources/opencode/tool-id.js +14 -0
  669. package/dist/server/src/lib/hooks/sources/opencode/turn-gate.js +193 -0
  670. package/dist/server/src/lib/hooks/sources/pending-decisions.js +127 -0
  671. package/dist/server/src/lib/hooks/sources/registry.js +111 -0
  672. package/dist/server/src/lib/hooks/sources/types.js +46 -0
  673. package/dist/server/src/lib/polling/response-checker.js +47 -0
  674. package/dist/server/src/lib/push/escalation-settings.js +114 -0
  675. package/dist/server/src/lib/push/index.js +21 -1
  676. package/dist/server/src/lib/push/notification-dedup.js +35 -0
  677. package/dist/server/src/lib/push/push-sender.js +66 -7
  678. package/dist/server/src/lib/push/waiting-push-notifier.js +231 -0
  679. package/dist/server/src/lib/realtime/waiting-broadcast.js +93 -0
  680. package/dist/server/src/lib/session/agent-event-state.js +260 -0
  681. package/dist/server/src/lib/session/agent-session-lifecycle.js +82 -0
  682. package/dist/server/src/lib/session/claude-session.js +10 -3
  683. package/dist/server/src/lib/session/current-output-builder.js +24 -0
  684. package/dist/server/src/lib/session/next-action-helper.js +93 -0
  685. package/dist/server/src/lib/session/prompt-waiting-composition.js +38 -0
  686. package/dist/server/src/lib/session/waiting-episode-state.js +136 -0
  687. package/dist/server/src/lib/session/waiting-kind.js +59 -0
  688. package/dist/server/src/lib/tasks/contract-message.js +218 -0
  689. package/dist/server/src/lib/tasks/contract-parser.js +58 -12
  690. package/dist/server/src/lib/verification/env-clean-gate.js +320 -0
  691. package/dist/server/src/lib/verification/env-snapshot.js +474 -0
  692. package/dist/server/src/lib/verification/gate-runner.js +844 -0
  693. package/dist/server/src/lib/verification/scope-gate.js +402 -0
  694. package/dist/server/src/lib/verification/verify-config.js +314 -0
  695. package/dist/server/src/lib/ws-server.js +9 -0
  696. package/dist/server/src/types/sidebar.js +68 -0
  697. package/package.json +1 -1
  698. package/scripts/hooks/cmate-agent-event.sh +73 -3
  699. package/.next/server/chunks/6283.js +0 -1
  700. package/.next/server/chunks/646.js +0 -21
  701. package/.next/server/chunks/8856.js +0 -4
  702. package/.next/static/XpKfn5x6H-mtTaXI9yNmb/_buildManifest.js +0 -1
  703. package/.next/static/chunks/4560-0917ae2e6a0e5400.js +0 -1
  704. package/.next/static/chunks/6488-53a3e1d78e4fe8f7.js +0 -1
  705. package/.next/static/chunks/7229.edb331fb9fbafa27.js +0 -1
  706. package/.next/static/chunks/app/api/assistant/messages/route-973ec48531555712.js +0 -1
  707. package/.next/static/chunks/app/api/assistant/session/route-973ec48531555712.js +0 -1
  708. package/.next/static/chunks/app/api/assistant/start/route-973ec48531555712.js +0 -1
  709. package/.next/static/chunks/app/api/assistant/terminal/route-973ec48531555712.js +0 -1
  710. package/.next/static/chunks/app/api/assistant/tools/route-973ec48531555712.js +0 -1
  711. package/.next/static/chunks/app/api/auth/login/route-973ec48531555712.js +0 -1
  712. package/.next/static/chunks/app/api/auth/logout/route-973ec48531555712.js +0 -1
  713. package/.next/static/chunks/app/api/auth/status/route-973ec48531555712.js +0 -1
  714. package/.next/static/chunks/app/api/daily-summary/route-973ec48531555712.js +0 -1
  715. package/.next/static/chunks/app/api/daily-summary/status/route-973ec48531555712.js +0 -1
  716. package/.next/static/chunks/app/api/external-apps/[id]/health/route-973ec48531555712.js +0 -1
  717. package/.next/static/chunks/app/api/external-apps/[id]/route-973ec48531555712.js +0 -1
  718. package/.next/static/chunks/app/api/external-apps/route-973ec48531555712.js +0 -1
  719. package/.next/static/chunks/app/api/fs/browse/route-973ec48531555712.js +0 -1
  720. package/.next/static/chunks/app/api/fs/recent-paths/route-973ec48531555712.js +0 -1
  721. package/.next/static/chunks/app/api/hooks/agent-event/route-973ec48531555712.js +0 -1
  722. package/.next/static/chunks/app/api/hooks/claude-done/route-973ec48531555712.js +0 -1
  723. package/.next/static/chunks/app/api/hooks/permission-request/route-973ec48531555712.js +0 -1
  724. package/.next/static/chunks/app/api/metrics/vibe/route-973ec48531555712.js +0 -1
  725. package/.next/static/chunks/app/api/ollama/models/route-973ec48531555712.js +0 -1
  726. package/.next/static/chunks/app/api/push/subscriptions/route-973ec48531555712.js +0 -1
  727. package/.next/static/chunks/app/api/push/vapid/route-973ec48531555712.js +0 -1
  728. package/.next/static/chunks/app/api/repositories/[id]/route-973ec48531555712.js +0 -1
  729. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-973ec48531555712.js +0 -1
  730. package/.next/static/chunks/app/api/repositories/[id]/todos/route-973ec48531555712.js +0 -1
  731. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-973ec48531555712.js +0 -1
  732. package/.next/static/chunks/app/api/repositories/clone/route-973ec48531555712.js +0 -1
  733. package/.next/static/chunks/app/api/repositories/excluded/route-973ec48531555712.js +0 -1
  734. package/.next/static/chunks/app/api/repositories/restore/route-973ec48531555712.js +0 -1
  735. package/.next/static/chunks/app/api/repositories/route-973ec48531555712.js +0 -1
  736. package/.next/static/chunks/app/api/repositories/scan/route-973ec48531555712.js +0 -1
  737. package/.next/static/chunks/app/api/repositories/sync/route-973ec48531555712.js +0 -1
  738. package/.next/static/chunks/app/api/repositories/validate-path/route-973ec48531555712.js +0 -1
  739. package/.next/static/chunks/app/api/sidebar/group-order/route-973ec48531555712.js +0 -1
  740. package/.next/static/chunks/app/api/skills/[id]/route-973ec48531555712.js +0 -1
  741. package/.next/static/chunks/app/api/skills/installations/route-973ec48531555712.js +0 -1
  742. package/.next/static/chunks/app/api/skills/operations/route-973ec48531555712.js +0 -1
  743. package/.next/static/chunks/app/api/skills/reindex/route-973ec48531555712.js +0 -1
  744. package/.next/static/chunks/app/api/skills/route-973ec48531555712.js +0 -1
  745. package/.next/static/chunks/app/api/slash-commands/route-973ec48531555712.js +0 -1
  746. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-973ec48531555712.js +0 -1
  747. package/.next/static/chunks/app/api/tasks/[taskId]/route-973ec48531555712.js +0 -1
  748. package/.next/static/chunks/app/api/templates/[id]/route-973ec48531555712.js +0 -1
  749. package/.next/static/chunks/app/api/templates/route-973ec48531555712.js +0 -1
  750. package/.next/static/chunks/app/api/todos/route-973ec48531555712.js +0 -1
  751. package/.next/static/chunks/app/api/verification/runs/[runId]/route-973ec48531555712.js +0 -1
  752. package/.next/static/chunks/app/api/verification/runs/route-973ec48531555712.js +0 -1
  753. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-973ec48531555712.js +0 -1
  754. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-973ec48531555712.js +0 -1
  755. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-973ec48531555712.js +0 -1
  756. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-973ec48531555712.js +0 -1
  757. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-973ec48531555712.js +0 -1
  758. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-973ec48531555712.js +0 -1
  759. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-973ec48531555712.js +0 -1
  760. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-973ec48531555712.js +0 -1
  761. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-973ec48531555712.js +0 -1
  762. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-973ec48531555712.js +0 -1
  763. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-973ec48531555712.js +0 -1
  764. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-973ec48531555712.js +0 -1
  765. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-973ec48531555712.js +0 -1
  766. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-973ec48531555712.js +0 -1
  767. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-973ec48531555712.js +0 -1
  768. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-973ec48531555712.js +0 -1
  769. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-973ec48531555712.js +0 -1
  770. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-973ec48531555712.js +0 -1
  771. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-973ec48531555712.js +0 -1
  772. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-973ec48531555712.js +0 -1
  773. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-973ec48531555712.js +0 -1
  774. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-973ec48531555712.js +0 -1
  775. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-973ec48531555712.js +0 -1
  776. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-973ec48531555712.js +0 -1
  777. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-973ec48531555712.js +0 -1
  778. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-973ec48531555712.js +0 -1
  779. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-973ec48531555712.js +0 -1
  780. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-973ec48531555712.js +0 -1
  781. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-973ec48531555712.js +0 -1
  782. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-973ec48531555712.js +0 -1
  783. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-973ec48531555712.js +0 -1
  784. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-973ec48531555712.js +0 -1
  785. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-973ec48531555712.js +0 -1
  786. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-973ec48531555712.js +0 -1
  787. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-973ec48531555712.js +0 -1
  788. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-973ec48531555712.js +0 -1
  789. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-973ec48531555712.js +0 -1
  790. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-973ec48531555712.js +0 -1
  791. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-973ec48531555712.js +0 -1
  792. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-973ec48531555712.js +0 -1
  793. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-973ec48531555712.js +0 -1
  794. package/.next/static/chunks/app/api/worktrees/[id]/route-973ec48531555712.js +0 -1
  795. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-973ec48531555712.js +0 -1
  796. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-973ec48531555712.js +0 -1
  797. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-973ec48531555712.js +0 -1
  798. package/.next/static/chunks/app/api/worktrees/[id]/search/route-973ec48531555712.js +0 -1
  799. package/.next/static/chunks/app/api/worktrees/[id]/send/route-973ec48531555712.js +0 -1
  800. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-973ec48531555712.js +0 -1
  801. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-973ec48531555712.js +0 -1
  802. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-973ec48531555712.js +0 -1
  803. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-973ec48531555712.js +0 -1
  804. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-973ec48531555712.js +0 -1
  805. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-973ec48531555712.js +0 -1
  806. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-973ec48531555712.js +0 -1
  807. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-973ec48531555712.js +0 -1
  808. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-973ec48531555712.js +0 -1
  809. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-973ec48531555712.js +0 -1
  810. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-973ec48531555712.js +0 -1
  811. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-973ec48531555712.js +0 -1
  812. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-973ec48531555712.js +0 -1
  813. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-973ec48531555712.js +0 -1
  814. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-973ec48531555712.js +0 -1
  815. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-973ec48531555712.js +0 -1
  816. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-973ec48531555712.js +0 -1
  817. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-973ec48531555712.js +0 -1
  818. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-973ec48531555712.js +0 -1
  819. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-973ec48531555712.js +0 -1
  820. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-973ec48531555712.js +0 -1
  821. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-973ec48531555712.js +0 -1
  822. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-973ec48531555712.js +0 -1
  823. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-973ec48531555712.js +0 -1
  824. package/.next/static/chunks/app/api/worktrees/route-973ec48531555712.js +0 -1
  825. package/.next/static/chunks/app/chat/page-83a2238ab453afaa.js +0 -1
  826. package/.next/static/chunks/app/layout-86574192bd3c0e6b.js +0 -1
  827. package/.next/static/chunks/app/manifest.webmanifest/route-973ec48531555712.js +0 -1
  828. package/.next/static/chunks/app/more/page-1619018cac999bbc.js +0 -1
  829. package/.next/static/chunks/app/page-a34d26812f085b6c.js +0 -1
  830. package/.next/static/chunks/app/proxy/[...path]/route-973ec48531555712.js +0 -1
  831. package/.next/static/chunks/app/repositories/page-202680fe6ec169c8.js +0 -1
  832. package/.next/static/chunks/app/review/page-b559bfb11c46931b.js +0 -1
  833. package/.next/static/chunks/app/sessions/page-3fa7e767d0ab3889.js +0 -1
  834. package/.next/static/chunks/app/skills/[skillId]/page-10d6f983e5f06ffb.js +0 -1
  835. package/.next/static/chunks/app/skills/installed/page-6641f95e6a6e5f9d.js +0 -1
  836. package/.next/static/chunks/app/skills/page-184f8e23e31a3667.js +0 -1
  837. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-6041d3c3db326317.js +0 -1
  838. package/.next/static/chunks/app/worktrees/[id]/layout-973ec48531555712.js +0 -1
  839. package/.next/static/chunks/app/worktrees/[id]/page-6dc0b8c4e808ea3e.js +0 -1
  840. package/.next/static/css/d3453a6876553d32.css +0 -1
  841. /package/.next/static/{XpKfn5x6H-mtTaXI9yNmb → smu4mnL7qMf8w38n9dQJE}/_ssgManifest.js +0 -0
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * When each agent instance started waiting, and the one place that edge is
4
+ * observed (Issue #1786).
5
+ *
6
+ * `isWaitingForResponse` is a level, and every question the display Issues ask
7
+ * is about the *edge*: #1787 wants "waiting for how long", #1788 wants to push a
8
+ * WebSocket frame the instant it flips, #1790 wants to fire a push notification
9
+ * on the same instant and not on the 200 polls that follow. A level cannot
10
+ * answer any of those, and three surfaces each keeping their own "was it waiting
11
+ * last time?" would be three chances to disagree about when a wait began.
12
+ *
13
+ * So the edge is detected exactly once, here, by {@link observeWaitingEdge}, and
14
+ * everything else either reads {@link getWaitingEpisode} or subscribes with
15
+ * {@link onWaitingTransition}. There is one caller today —
16
+ * `worktree-status-helper`, on the list API's per-instance probe — and it passes
17
+ * the *composed* verdict (scraper OR structured), so a wait that only the
18
+ * agent's own events can see opens an episode exactly like one the screen
19
+ * scraper read.
20
+ *
21
+ * ## Where #1788 / #1790 plug in
22
+ *
23
+ * `onWaitingTransition(listener)` — the listener receives every false→true and
24
+ * true→false crossing, with the instance it belongs to, the episode's `since`
25
+ * and its {@link WaitingKind}. #1788 broadcasts it (`broadcastToWorktree`),
26
+ * #1790 decides whether to send a push. Neither needs to touch this module's
27
+ * internals, and neither can move the timestamps the other reports.
28
+ *
29
+ * Listeners are called synchronously, inside the request that observed the edge,
30
+ * because the point of the seam is immediacy. A listener that throws is
31
+ * contained: this store is on the list API's hot path, and a broken notification
32
+ * sink must not take the status read down with it.
33
+ *
34
+ * In-memory (via `globalThis`, per Issue #1736 — see the note in
35
+ * `agent-event-state`) rather than SQLite, for the same reason the structured
36
+ * state is: it describes a live tmux session, and a wait does not outlive the
37
+ * server process that observed it.
38
+ *
39
+ * @module lib/session/waiting-episode-state
40
+ */
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.onWaitingTransition = onWaitingTransition;
43
+ exports.observeWaitingEdge = observeWaitingEdge;
44
+ exports.getWaitingEpisode = getWaitingEpisode;
45
+ exports.clearWaitingEpisodes = clearWaitingEpisodes;
46
+ exports.clearWaitingTransitionListeners = clearWaitingTransitionListeners;
47
+ const auto_yes_state_1 = require("../../lib/auto-yes-state");
48
+ const logger_1 = require("../../lib/logger");
49
+ const logger = (0, logger_1.createLogger)('waiting-episode-state');
50
+ /** compositeKey -> the wait currently in progress for that instance. */
51
+ const episodes = globalThis.__sessionWaitingEpisodes ??
52
+ (globalThis.__sessionWaitingEpisodes = new Map());
53
+ /** Subscribers to the edge. See the module docblock. */
54
+ const listeners = globalThis.__sessionWaitingTransitionListeners ??
55
+ (globalThis.__sessionWaitingTransitionListeners = new Set());
56
+ /**
57
+ * Subscribe to waiting edges.
58
+ *
59
+ * @returns An unsubscribe function. Idempotent — calling it twice is harmless.
60
+ */
61
+ function onWaitingTransition(listener) {
62
+ listeners.add(listener);
63
+ return () => {
64
+ listeners.delete(listener);
65
+ };
66
+ }
67
+ /** Notify subscribers, containing anything they throw. */
68
+ function emit(transition) {
69
+ for (const listener of listeners) {
70
+ try {
71
+ listener(transition);
72
+ }
73
+ catch (error) {
74
+ logger.error('waiting-transition-listener-failed', {
75
+ worktreeId: transition.worktreeId,
76
+ cliToolId: transition.cliToolId,
77
+ instanceId: transition.instanceId ?? transition.cliToolId,
78
+ waiting: transition.waiting,
79
+ error: error instanceof Error ? error.message : String(error),
80
+ });
81
+ }
82
+ }
83
+ }
84
+ /**
85
+ * Record this poll's waiting verdict and answer when the current wait began.
86
+ *
87
+ * The single writer of the edge, by design (Issue #1786). Idempotent for a
88
+ * level that has not changed: repeated `waiting: true` polls return the same
89
+ * `since` and emit nothing, so a listener hears one event per wait rather than
90
+ * one per poll.
91
+ *
92
+ * @returns The episode's `since` while waiting, or null when it is not.
93
+ */
94
+ function observeWaitingEdge({ worktreeId, cliToolId, instanceId, waiting, kind = null, structuredSince = null, now = Date.now(), }) {
95
+ const key = (0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId);
96
+ const existing = episodes.get(key);
97
+ if (!waiting) {
98
+ if (existing === undefined)
99
+ return null;
100
+ episodes.delete(key);
101
+ emit({ worktreeId, cliToolId, instanceId, waiting: false, since: null, kind: null, at: now });
102
+ return null;
103
+ }
104
+ if (existing !== undefined) {
105
+ // A wait can change character without ending — a permission dialog answered
106
+ // into a selection list is still one uninterrupted wait — so the kind is
107
+ // refreshed while `since` stays put.
108
+ existing.kind = kind;
109
+ return existing.since;
110
+ }
111
+ const since = structuredSince ?? now;
112
+ episodes.set(key, { since, kind });
113
+ emit({ worktreeId, cliToolId, instanceId, waiting: true, since, kind, at: now });
114
+ return since;
115
+ }
116
+ /**
117
+ * @returns The wait in progress for this instance, or null when it is not
118
+ * waiting. Read-only: observing the edge is {@link observeWaitingEdge}'s job.
119
+ */
120
+ function getWaitingEpisode(worktreeId, cliToolId, instanceId) {
121
+ return episodes.get((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId)) ?? null;
122
+ }
123
+ /**
124
+ * Drop every episode. Test seam.
125
+ *
126
+ * CI runs with `fileParallelism: false`, so one process holds this map for the
127
+ * whole suite: a test that opens an episode and does not clear it hands the next
128
+ * file a session that is already waiting.
129
+ */
130
+ function clearWaitingEpisodes() {
131
+ episodes.clear();
132
+ }
133
+ /** Drop every subscriber. Test seam, paired with {@link clearWaitingEpisodes}. */
134
+ function clearWaitingTransitionListeners() {
135
+ listeners.clear();
136
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * What *kind* of waiting a session is in (Issue #1786).
4
+ *
5
+ * `isWaitingForResponse` answers "does this session need a human?" and nothing
6
+ * else, so every surface that shows it has to render one orange dot for three
7
+ * situations a user would act on differently:
8
+ *
9
+ * - a y/n or numbered prompt the app itself can answer for them (`prompt`);
10
+ * - a selection list or a pager, which only the terminal can drive (`menu`);
11
+ * - a dialog only the agent's own events reported, or a frame neither layer
12
+ * could classify (`unclassified`).
13
+ *
14
+ * Kept a pure function of the detector's verdict — no clock, no store, no tmux —
15
+ * because it is the one piece of #1786 that the display Issues (#1787/#1788)
16
+ * will read literally and therefore the one piece that has to be pinned by unit
17
+ * tests rather than by a live session.
18
+ *
19
+ * @module lib/session/waiting-kind
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.deriveWaitingKind = deriveWaitingKind;
23
+ const status_detector_1 = require("../../lib/detection/status-detector");
24
+ /**
25
+ * Classify a waiting session, or answer null when it is not waiting.
26
+ *
27
+ * The order is a precedence, not a sequence of independent tests: a frame that
28
+ * carries an answerable prompt is a `prompt` even if the reason string would
29
+ * also pass the menu test, because "you can answer this from the app" is the
30
+ * more actionable fact.
31
+ *
32
+ * | condition | kind |
33
+ * |--------------------------------------------------|------------------|
34
+ * | not waiting | `null` |
35
+ * | `hasActivePrompt` | `'prompt'` |
36
+ * | scraper `waiting` + a {@link SELECTION_LIST_REASONS} reason | `'menu'` |
37
+ * | anything else that is still waiting | `'unclassified'` |
38
+ *
39
+ * The `menu` row is the same expression `current-output-builder` publishes as
40
+ * `isSelectionListActive`, and the pager (`codex_pager`) is a member of that set
41
+ * — so the pager lands in `menu` for the reason the Issue asks for, without a
42
+ * second copy of the membership test.
43
+ *
44
+ * `unclassified` is the honest fallback rather than a fourth guess. In practice
45
+ * it is reached when only the structured layer sees the dialog: every scraper
46
+ * `waiting` verdict is either `prompt_detected` (→ `prompt`) or a selection-list
47
+ * reason (→ `menu`), so a waiting session the scraper never classified is one it
48
+ * could not read at all.
49
+ */
50
+ function deriveWaitingKind(input) {
51
+ if (!input.waiting)
52
+ return null;
53
+ if (input.hasActivePrompt)
54
+ return 'prompt';
55
+ if (input.scraperStatus === 'waiting' && status_detector_1.SELECTION_LIST_REASONS.has(input.scraperReason)) {
56
+ return 'menu';
57
+ }
58
+ return 'unclassified';
59
+ }
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ /**
3
+ * Turn an execution contract into the message the agent actually receives, and
4
+ * cross-check it against the repository's verify.yaml (Issue #1545, Phase 2-1).
5
+ *
6
+ * Canonical spec: docs/design/task-contract.md §5
7
+ *
8
+ * The preamble spells the completion criterion out as the *real commands* the
9
+ * gates will run. A gate id alone tells the agent nothing about what will be
10
+ * executed, so a contract sent that way declares a criterion the recipient
11
+ * cannot evaluate.
12
+ *
13
+ * Server-only: consumes a loaded VerifyConfig.
14
+ *
15
+ * @module lib/tasks/contract-message
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.REQUIRE_COMMIT_SOURCE_CONTRACT = exports.REQUIRE_COMMIT_SOURCE_CONFIG = void 0;
19
+ exports.resolveRequireCommit = resolveRequireCommit;
20
+ exports.resolveContractGateIds = resolveContractGateIds;
21
+ exports.contractGateDefinitions = contractGateDefinitions;
22
+ exports.validateContractAgainstVerifyConfig = validateContractAgainstVerifyConfig;
23
+ exports.resolveGateCommands = resolveGateCommands;
24
+ exports.composeContractMessage = composeContractMessage;
25
+ const verify_config_1 = require("../../lib/verification/verify-config");
26
+ /**
27
+ * How the built-in gates read in the preamble; they run git plumbing, not shell
28
+ * commands.
29
+ *
30
+ * work-evidence has two readings because it has two behaviours. Leaving it on
31
+ * the permissive wording while `requireCommit` is in force would tell the agent
32
+ * a criterion the run does not apply — and stating the strict wording while it
33
+ * is not in force is the D-4 defect (#1628) this Issue closes.
34
+ */
35
+ const WORK_EVIDENCE_ANY_CHANGE_LABEL = `${verify_config_1.WORK_EVIDENCE_GATE_ID}(commit または未 commit の変更が存在すること)`;
36
+ const WORK_EVIDENCE_COMMIT_LABEL = `${verify_config_1.WORK_EVIDENCE_GATE_ID}(commit が存在すること。未 commit の変更は作業証跡として数えない)`;
37
+ const SCOPE_LABEL = `${verify_config_1.SCOPE_GATE_ID}(変更ファイルが scope.allow の内側に収まっていること)`;
38
+ /** The obligation line, in the two forms the pipeline can actually enforce. */
39
+ const COMMIT_REQUIRED_LINE = '- 作業完了後は必ず commit すること(未 commit の作業は未完了とみなされる)';
40
+ const COMMIT_EXPECTED_LINE = '- 作業完了後は commit すること(ただし work-evidence は未 commit の変更も作業証跡として' +
41
+ '認めるため、commit の有無そのものは検査されない)';
42
+ /** Named so a failing gate can say which declaration put it there. */
43
+ exports.REQUIRE_COMMIT_SOURCE_CONFIG = `options.requireCommit (${verify_config_1.VERIFY_CONFIG_RELATIVE_PATH})`;
44
+ exports.REQUIRE_COMMIT_SOURCE_CONTRACT = 'success.requireCommit (task contract)';
45
+ /**
46
+ * Combine the repository-wide and per-delegation commit requirements (#1642).
47
+ *
48
+ * OR, deliberately, rather than "the nearer declaration wins". The whole point
49
+ * of the contract-side flag is to stop a rule from being declared and never
50
+ * checked; letting a contract answer `false` to a repository that answered
51
+ * `true` would reopen exactly that hole one delegation at a time. A contract can
52
+ * only ever tighten.
53
+ *
54
+ * Lives here rather than in gate-runner because both callers need the same
55
+ * answer: this module writes the sentence the agent reads, gate-runner reaches
56
+ * the verdict, and the two disagreeing is the defect being fixed.
57
+ */
58
+ function resolveRequireCommit(contract, config) {
59
+ const sources = [];
60
+ if (config?.options.requireCommit)
61
+ sources.push(exports.REQUIRE_COMMIT_SOURCE_CONFIG);
62
+ if (contract?.success.requireCommit)
63
+ sources.push(exports.REQUIRE_COMMIT_SOURCE_CONTRACT);
64
+ return { required: sources.length > 0, sources };
65
+ }
66
+ /**
67
+ * The gate ids a contract asks for, or null for "every gate".
68
+ *
69
+ * The `success` flags — not the `verify.gates` list — decide whether the built-in
70
+ * gates run. A contract that required work evidence or a clean scope while
71
+ * listing only `[lint, unit]` would otherwise declare rules that nothing
72
+ * checked: the flags would read as enforced and the gates would never run.
73
+ */
74
+ function resolveContractGateIds(contract) {
75
+ const gates = contract.verify.gates;
76
+ if (!gates)
77
+ return null;
78
+ const builtIns = [
79
+ [verify_config_1.WORK_EVIDENCE_GATE_ID, contract.success.requireWorkEvidence],
80
+ [verify_config_1.SCOPE_GATE_ID, contract.success.requireScopeClean],
81
+ ];
82
+ // Built-ins are listed first and in their execution order even when the
83
+ // contract already named one, so the resolved list reads as the order the run
84
+ // will actually take rather than the order the contract happened to type.
85
+ const selected = builtIns
86
+ .filter(([id, required]) => required || gates.includes(id))
87
+ .map(([id]) => id);
88
+ const rest = gates.filter((id) => !builtIns.some(([builtIn]) => builtIn === id));
89
+ return [...selected, ...rest];
90
+ }
91
+ /**
92
+ * The gates this contract defines itself (#1791).
93
+ *
94
+ * Read through a helper because `contract` also arrives from
95
+ * `tasks.contract_json`, and a row written before the field existed parses back
96
+ * as `undefined` rather than an empty list. Every consumer reads it here so
97
+ * "an old task" and "a task that defines no gates" cannot behave differently.
98
+ */
99
+ function contractGateDefinitions(contract) {
100
+ return contract.verify.gateDefinitions ?? [];
101
+ }
102
+ /**
103
+ * Check that the contract's gates can actually be resolved, and that its own
104
+ * definitions do not collide with the repository's.
105
+ *
106
+ * A contract pointing at a gate id that does not exist would only be caught at
107
+ * verification time, by which point the agent has already been told a
108
+ * completion criterion that cannot be evaluated. Reporting it here makes
109
+ * "the contract was accepted" and "the contract's gates exist" the same moment.
110
+ *
111
+ * The collision check is the same discipline pointed the other way (#1791). A
112
+ * contract that redefined an id `.commandmate/verify.yaml` already declares
113
+ * would replace the repository's own definition of passing with one written per
114
+ * delegation — silently, since both spell the same id in the report. Reserved
115
+ * ids (`work-evidence` / `scope` / `env-clean`) are refused one step earlier, by
116
+ * the shared gate validator in the parser; both refusals happen at send.
117
+ *
118
+ * @returns issue strings, empty when the contract resolves cleanly
119
+ */
120
+ function validateContractAgainstVerifyConfig(contract, config) {
121
+ const gates = contract.verify.gates;
122
+ const definitions = contractGateDefinitions(contract);
123
+ const issues = [];
124
+ if (!config) {
125
+ // Fail-closed for definitions too: the runner refuses to start a run at all
126
+ // without a config, so accepting the contract would promise a criterion that
127
+ // can never be evaluated — the exact thing this function exists to prevent.
128
+ if (definitions.length > 0) {
129
+ issues.push(`verify.gateDefinitions: declared ${definitions.map((gate) => gate.id).join(', ')}, ` +
130
+ `but ${verify_config_1.VERIFY_CONFIG_RELATIVE_PATH} is missing or unreadable in this worktree, ` +
131
+ 'so no verification run can execute them');
132
+ }
133
+ if (gates) {
134
+ issues.push(`verify.gates: declared ${gates.join(', ')}, but ${verify_config_1.VERIFY_CONFIG_RELATIVE_PATH} ` +
135
+ 'is missing or unreadable in this worktree, so the gate ids cannot be resolved');
136
+ }
137
+ return issues;
138
+ }
139
+ const configIds = config.gates.map((gate) => gate.id);
140
+ const collisions = definitions
141
+ .map((gate) => gate.id)
142
+ .filter((id) => configIds.includes(id));
143
+ if (collisions.length > 0) {
144
+ issues.push(`verify.gateDefinitions: gate id(s) ${collisions.join(', ')} are already declared in ` +
145
+ `${verify_config_1.VERIFY_CONFIG_RELATIVE_PATH}. A contract may add gates, never redefine the ` +
146
+ "repository's own — rename the contract gate.");
147
+ }
148
+ if (gates) {
149
+ const known = new Set([verify_config_1.WORK_EVIDENCE_GATE_ID, verify_config_1.SCOPE_GATE_ID, ...configIds]);
150
+ const defined = new Set(definitions.map((gate) => gate.id));
151
+ const unknown = gates.filter((id) => !known.has(id) && !defined.has(id));
152
+ if (unknown.length > 0) {
153
+ const sources = [`Declared in ${verify_config_1.VERIFY_CONFIG_RELATIVE_PATH}: ${[...known].join(', ')}`];
154
+ if (defined.size > 0) {
155
+ sources.push(`in verify.gateDefinitions: ${[...defined].join(', ')}`);
156
+ }
157
+ issues.push(`verify.gates: unknown gate id(s) ${unknown.join(', ')}. ${sources.join('; ')}`);
158
+ }
159
+ }
160
+ return issues;
161
+ }
162
+ /**
163
+ * The commands the contract's gates will run, in the order they will run.
164
+ *
165
+ * Only ever called after {@link validateContractAgainstVerifyConfig} has
166
+ * accepted the contract, so an unresolvable id cannot reach here.
167
+ */
168
+ function resolveGateCommands(contract, config) {
169
+ if (!config)
170
+ return [];
171
+ const workEvidenceLabel = resolveRequireCommit(contract, config).required
172
+ ? WORK_EVIDENCE_COMMIT_LABEL
173
+ : WORK_EVIDENCE_ANY_CHANGE_LABEL;
174
+ const builtInLabels = new Map([
175
+ [verify_config_1.WORK_EVIDENCE_GATE_ID, workEvidenceLabel],
176
+ [verify_config_1.SCOPE_GATE_ID, SCOPE_LABEL],
177
+ ]);
178
+ // Contract-defined gates run after the repository's own, so the preamble
179
+ // lists them in that order too — the line claims to be "the commands that
180
+ // will run", and an order it invents would be the first thing to drift.
181
+ const declared = [...config.gates, ...contractGateDefinitions(contract)];
182
+ const selected = resolveContractGateIds(contract);
183
+ if (!selected) {
184
+ // An omitted gates list runs every gate, and the built-ins are still governed
185
+ // by the success flags rather than by the (absent) list.
186
+ const builtIns = [workEvidenceLabel];
187
+ if (contract.success.requireScopeClean)
188
+ builtIns.push(SCOPE_LABEL);
189
+ return [...builtIns, ...declared.map((gate) => gate.command)];
190
+ }
191
+ const byId = new Map(declared.map((gate) => [gate.id, gate.command]));
192
+ return selected.map((id) => builtInLabels.get(id) ?? byId.get(id));
193
+ }
194
+ /**
195
+ * Compose the message sent to the agent: contract preamble, then the goal.
196
+ *
197
+ * Every line states an obligation the pipeline can later check, so the agent is
198
+ * not asked to infer the rules from the goal text.
199
+ */
200
+ function composeContractMessage(contract, config) {
201
+ const lines = ['## 実行契約'];
202
+ lines.push(contract.scope.allow.length > 0
203
+ ? `- 変更してよいのは次のパスのみ: ${contract.scope.allow.join(', ')}`
204
+ : '- 変更パスの制限: なし(scope.allow が未宣言)');
205
+ if (contract.scope.deny.length > 0) {
206
+ lines.push(`- 変更してはならないパス: ${contract.scope.deny.join(', ')}`);
207
+ }
208
+ // The sentence follows the verdict, never the other way round: this line used
209
+ // to be a constant asserting "未 commit の作業は未完了とみなされる" while the
210
+ // gate passed on an uncommitted change alone (#1628 D-4, measured in the
211
+ // Epic #1585 acceptance run).
212
+ lines.push(resolveRequireCommit(contract, config).required ? COMMIT_REQUIRED_LINE : COMMIT_EXPECTED_LINE);
213
+ const commands = resolveGateCommands(contract, config);
214
+ lines.push(commands.length > 0
215
+ ? `- 完了条件: 次の検証コマンドがすべて成功すること: ${commands.join(' / ')}`
216
+ : `- 完了条件: ${verify_config_1.VERIFY_CONFIG_RELATIVE_PATH} に検証ゲートが宣言されていないため、検証コマンドは無い`);
217
+ return `${lines.join('\n')}\n\n## タスク\n${contract.goal}`;
218
+ }
@@ -23,13 +23,14 @@
23
23
  * @module lib/tasks/contract-parser
24
24
  */
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.TaskContractError = exports.MAX_ALLOW_PROMPT_TYPES = exports.MAX_DENY_PATTERNS = exports.MAX_GATE_IDS = exports.MAX_SCOPE_PATTERNS = exports.MAX_PATTERN_LENGTH = exports.MAX_GOAL_LENGTH = exports.MAX_TITLE_LENGTH = exports.PROMPT_TYPES = exports.AUTO_YES_MODES = exports.TASK_CONTRACT_DIR = void 0;
26
+ exports.TaskContractError = exports.MAX_ALLOW_PROMPT_TYPES = exports.MAX_DENY_PATTERNS = exports.MAX_GATE_DEFINITIONS = exports.MAX_GATE_IDS = exports.MAX_SCOPE_PATTERNS = exports.MAX_PATTERN_LENGTH = exports.MAX_GOAL_LENGTH = exports.MAX_TITLE_LENGTH = exports.PROMPT_TYPES = exports.AUTO_YES_MODES = exports.TASK_CONTRACT_DIR = void 0;
27
27
  exports.parseTaskContract = parseTaskContract;
28
28
  exports.loadTaskContract = loadTaskContract;
29
29
  const fs_1 = require("fs");
30
30
  const path_1 = require("path");
31
31
  const yaml_1 = require("yaml");
32
32
  const path_validator_1 = require("../../lib/security/path-validator");
33
+ const verify_config_1 = require("../../lib/verification/verify-config");
33
34
  /** Directory contracts live in, relative to the worktree root. */
34
35
  exports.TASK_CONTRACT_DIR = '.commandmate/tasks';
35
36
  /**
@@ -63,11 +64,13 @@ exports.MAX_GOAL_LENGTH = 8000;
63
64
  exports.MAX_PATTERN_LENGTH = 200;
64
65
  exports.MAX_SCOPE_PATTERNS = 200;
65
66
  exports.MAX_GATE_IDS = 32;
67
+ /** Matches {@link MAX_GATE_IDS}: a contract cannot select more gates than it may define. */
68
+ exports.MAX_GATE_DEFINITIONS = 32;
66
69
  exports.MAX_DENY_PATTERNS = 32;
67
70
  exports.MAX_ALLOW_PROMPT_TYPES = 16;
68
71
  const TOP_LEVEL_KEYS = ['version', 'title', 'goal', 'scope', 'verify', 'autoYes', 'success'];
69
72
  const SCOPE_KEYS = ['allow', 'deny'];
70
- const VERIFY_KEYS = ['gates'];
73
+ const VERIFY_KEYS = ['gates', 'gateDefinitions'];
71
74
  const AUTO_YES_KEYS = ['mode', 'allowPromptTypes', 'denyPatterns'];
72
75
  const SUCCESS_KEYS = [
73
76
  'requireWorkEvidence',
@@ -75,8 +78,6 @@ const SUCCESS_KEYS = [
75
78
  'requireCommit',
76
79
  'autoVerifyOnStop',
77
80
  ];
78
- /** Mirrors GATE_ID_PATTERN in verify-config.ts: a contract can only name ids that could exist. */
79
- const GATE_ID_PATTERN = /^[a-z0-9][a-z0-9-]{0,31}$/;
80
81
  class TaskContractError extends Error {
81
82
  issues;
82
83
  constructor(issues) {
@@ -198,30 +199,61 @@ function validateScope(value, issues) {
198
199
  }
199
200
  return scope;
200
201
  }
202
+ /**
203
+ * Validate `verify.gateDefinitions` (Issue #1791).
204
+ *
205
+ * Delegates every per-entry rule to verify-config's own gate validator, so a
206
+ * gate defined in a contract is held to exactly the constraints a gate declared
207
+ * in `.commandmate/verify.yaml` is — including the reserved ids, which is where
208
+ * a contract shadowing `work-evidence` or `scope` is rejected. That rejection
209
+ * lands here, at parse time, rather than in the verify.yaml cross-check: it
210
+ * needs no config to decide, and both run at send.
211
+ *
212
+ * An empty list is accepted as equivalent to omitting the key. Unlike
213
+ * `verify.gates: []` — which would read as "pass having run nothing" — a
214
+ * definition list with no entries has exactly one possible meaning, and an
215
+ * orchestrator that emits YAML programmatically should not have to special-case
216
+ * "this delegation happens to need no extra gate".
217
+ */
218
+ function validateGateDefinitions(value, issues) {
219
+ if (value === undefined || value === null)
220
+ return [];
221
+ if (Array.isArray(value) && value.length > exports.MAX_GATE_DEFINITIONS) {
222
+ issues.push(`verify.gateDefinitions: at most ${exports.MAX_GATE_DEFINITIONS} entries (got ${value.length})`);
223
+ return [];
224
+ }
225
+ return (0, verify_config_1.validateGateEntries)(value, 'verify.gateDefinitions', issues);
226
+ }
201
227
  function validateVerify(value, issues) {
228
+ const empty = () => ({ gates: null, gateDefinitions: [] });
202
229
  if (value === undefined || value === null)
203
- return { gates: null };
230
+ return empty();
204
231
  if (!isMapping(value)) {
205
232
  issues.push(`verify: must be a mapping (got ${describe(value)})`);
206
- return { gates: null };
233
+ return empty();
207
234
  }
208
235
  collectUnknownKeys(value, VERIFY_KEYS, 'verify', issues);
236
+ const gateDefinitions = validateGateDefinitions(value.gateDefinitions, issues);
237
+ const withDefinitions = (gates) => ({
238
+ gates,
239
+ gateDefinitions,
240
+ });
209
241
  if (value.gates === undefined || value.gates === null)
210
- return { gates: null };
242
+ return withDefinitions(null);
211
243
  const gates = validateStringList(value.gates, 'verify.gates', { maxEntries: exports.MAX_GATE_IDS, maxLength: 32 }, issues);
212
244
  if (!gates)
213
- return { gates: null };
245
+ return withDefinitions(null);
214
246
  // An empty list would read as "pass with no gates run". "Run everything" is
215
247
  // spelled by omitting the key, so the two can never be confused.
216
248
  if (Array.isArray(value.gates) && value.gates.length === 0) {
217
249
  issues.push('verify.gates: must name at least one gate (omit the key to run every gate)');
218
- return { gates: null };
250
+ return withDefinitions(null);
219
251
  }
220
252
  const valid = [];
221
253
  const seen = new Set();
222
254
  gates.forEach((id, index) => {
223
- if (!GATE_ID_PATTERN.test(id)) {
224
- issues.push(`verify.gates[${index}]: "${id}" must match ${GATE_ID_PATTERN.source}`);
255
+ if (!verify_config_1.GATE_ID_PATTERN.test(id)) {
256
+ issues.push(`verify.gates[${index}]: "${id}" must match ${verify_config_1.GATE_ID_PATTERN.source}`);
225
257
  return;
226
258
  }
227
259
  if (seen.has(id)) {
@@ -231,7 +263,7 @@ function validateVerify(value, issues) {
231
263
  seen.add(id);
232
264
  valid.push(id);
233
265
  });
234
- return { gates: valid.length > 0 ? valid : null };
266
+ return withDefinitions(valid.length > 0 ? valid : null);
235
267
  }
236
268
  function validateAutoYes(value, issues) {
237
269
  const autoYes = { mode: null, allowPromptTypes: [], denyPatterns: [] };
@@ -364,6 +396,20 @@ function parseTaskContract(raw, sourceLabel) {
364
396
  '(the commit requirement is judged by the work-evidence gate, which ' +
365
397
  'requireWorkEvidence: false switches off)');
366
398
  }
399
+ // Same rule again, for the gates this contract defines itself (#1791). A
400
+ // definition that `verify.gates` leaves out is a check the contract appears to
401
+ // add and never runs — and it is the *only* declaration of that gate, so
402
+ // unlike a verify.yaml gate there is no other run that would ever execute it.
403
+ // Selecting a subset is spelled by deleting the definition.
404
+ if (verify.gates) {
405
+ const unselected = verify.gateDefinitions
406
+ .map((gate) => gate.id)
407
+ .filter((id) => !verify.gates?.includes(id));
408
+ if (unselected.length > 0) {
409
+ issues.push(`verify.gateDefinitions: ${unselected.join(', ')} defined but not named in verify.gates, ` +
410
+ 'so nothing would ever run them (list them, or delete the definition)');
411
+ }
412
+ }
367
413
  if (issues.length > 0)
368
414
  throw new TaskContractError(issues);
369
415
  return { version: 1, title, goal, scope, verify, autoYes, success };