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,402 @@
1
+ "use strict";
2
+ /**
3
+ * Built-in `scope` gate: reconcile what actually changed in the worktree against
4
+ * the contract's `scope.allow` / `scope.deny` (Issue #1546, Phase 2-2).
5
+ *
6
+ * Canonical spec: docs/design/task-contract.md §2.2
7
+ *
8
+ * A parallel worker that edits a shared config file, or quietly rewrites a
9
+ * module another worker owns, produces a green run and a broken integration.
10
+ * The contract already declares which paths the task may touch; this gate is
11
+ * what makes that declaration something other than a comment.
12
+ *
13
+ * Promoted from `.claude/skills/orchestrate-monitor/scripts/verify-scope.sh`.
14
+ * That script is a *grep* guard over one file rather than a diff-versus-glob
15
+ * check, so what carries over is not its logic but the two ways it false-reported
16
+ * (both recorded in feedback_orchestrate_monitor_started_guard):
17
+ *
18
+ * 1. It matched a forbidden pattern that appeared only in explanatory prose.
19
+ * The analogue here is judging text instead of paths, so nothing in this
20
+ * module ever greps content: the file set comes from git plumbing, and the
21
+ * verdict comes from matching whole paths.
22
+ * 2. Its `grep -c ... || echo 0` idiom emitted a two-line "0\n0" that the
23
+ * caller read as a count. The analogue is git output that parses into
24
+ * phantom entries, so every git call here is `-z`: the human formats quote
25
+ * and arrow-join paths, and splitting those on whitespace invents files
26
+ * that do not exist.
27
+ *
28
+ * Server-only: spawns git and is called from the verification engine.
29
+ *
30
+ * @module lib/verification/scope-gate
31
+ */
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.SCOPE_SKIP_NOT_REQUIRED = exports.SCOPE_SKIP_NO_CONTRACT = exports.ScopeMatcher = exports.CONTRACT_DIR_PREFIX = exports.ALWAYS_ALLOWED_PREFIX = exports.SCOPE_ALLOW_GUIDANCE = exports.MAX_REPORTED_VIOLATIONS = void 0;
34
+ exports.isContractPath = isContractPath;
35
+ exports.parsePorcelainEntries = parsePorcelainEntries;
36
+ exports.collectChangedPaths = collectChangedPaths;
37
+ exports.scopeSkipDetachedContract = scopeSkipDetachedContract;
38
+ exports.evaluateScope = evaluateScope;
39
+ const child_process_1 = require("child_process");
40
+ /**
41
+ * Violations listed in `log_tail` before the rest are summarised as a count.
42
+ *
43
+ * A worker that ran in the wrong directory can put thousands of paths out of
44
+ * scope, and log_tail is stored per gate in SQLite.
45
+ */
46
+ exports.MAX_REPORTED_VIOLATIONS = 100;
47
+ /**
48
+ * Actionable coda appended to every scope failure report (#1683).
49
+ *
50
+ * The violating paths alone say *what* failed but not what to do about it —
51
+ * #1678 B-2 is a worker structurally unable to pass because a lockfile was
52
+ * missing from the issue's target-file list, and nothing in the output said so.
53
+ * The wording answers both directions a violation can resolve: widen the
54
+ * declared scope when the diff is intended, revert when it is not. Re-sending
55
+ * is named because scope is judged from the contract's send-time snapshot, so
56
+ * editing the YAML in place changes nothing.
57
+ */
58
+ exports.SCOPE_ALLOW_GUIDANCE = "To allow this diff, add the paths above to the contract's scope.allow (the " +
59
+ "issue's target-file list) and re-send the task (`send --contract`) — scope " +
60
+ 'is judged from the send-time snapshot, so editing the contract file alone ' +
61
+ 'changes nothing. A path matching deny: is a deliberate prohibition; revert ' +
62
+ 'it instead.';
63
+ /**
64
+ * Paths that are in scope no matter what the contract says.
65
+ *
66
+ * The contract file lives here, so a contract whose own `allow` list forgot to
67
+ * mention `.commandmate/` would fail the moment it was committed — the scope
68
+ * declaration would make its own storage a violation. The exemption covers the
69
+ * `allow` requirement only; an explicit `deny` still applies, because a deny is
70
+ * a deliberate prohibition and silently ignoring one is worse than the accident
71
+ * this exemption prevents.
72
+ */
73
+ exports.ALWAYS_ALLOWED_PREFIX = '.commandmate/';
74
+ /**
75
+ * Execution contracts, dropped from both gates' change sets entirely (#1580).
76
+ *
77
+ * An orchestrator writes `.commandmate/tasks/<task>.yaml` into a worktree and
78
+ * sends immediately, without committing it. Counting that file as change makes
79
+ * an agent that did nothing indistinguishable from one that did something:
80
+ * work-evidence sees a dirty tree and passes, and the run that should have been
81
+ * `not_started` collects a row of green gates instead.
82
+ *
83
+ * Dropping it is tamper-safe because the contract is snapshotted into
84
+ * `tasks.contract_json` at send time (src/lib/db/tasks-db.ts), so editing the
85
+ * file afterwards cannot change what the run is judged against.
86
+ * `.commandmate/verify.yaml` has no such snapshot — the gates are re-read from
87
+ * the file on every run — so it stays in the change set, where a contract's
88
+ * explicit `deny` can still catch an agent weakening its own gates.
89
+ */
90
+ exports.CONTRACT_DIR_PREFIX = '.commandmate/tasks/';
91
+ /** Whether git reported a path that {@link CONTRACT_DIR_PREFIX} excludes. */
92
+ function isContractPath(path) {
93
+ return path.startsWith(exports.CONTRACT_DIR_PREFIX);
94
+ }
95
+ // =============================================================================
96
+ // Glob matching
97
+ // =============================================================================
98
+ /**
99
+ * Translate a scope glob into an anchored regular expression.
100
+ *
101
+ * Deliberately a small, documented subset rather than a glob library. The
102
+ * semantics are fixed in docs/design/task-contract.md §2.2:
103
+ *
104
+ * - `**` as a whole path segment crosses directory boundaries, including zero of
105
+ * them: `a/**` matches `a/b` and `a/b/c`, `**\/*.ts` matches `x.ts`.
106
+ * - `*` and `?` never cross `/`. Leading dots are ordinary characters, so
107
+ * `.github/**` and `*.md` behave the way they read.
108
+ * - `{a,b}` is alternation, nestable. Unbalanced braces are literal, as in a
109
+ * shell — `src/{a` is a path with a brace in it, not a syntax error.
110
+ * - `[` and `]` are **literal**. This repository routes through
111
+ * `src/app/proxy/[...path]/`, and treating those as character classes would
112
+ * make the pattern that names them match nothing at all — a silent no-match is
113
+ * the failure mode this gate exists to avoid.
114
+ * - A pattern that matches a directory also matches everything beneath it, so
115
+ * `src/lib`, `src/lib/` and `src/lib/**` all mean the same thing. Without this
116
+ * rule, `allow: ["src/lib/verification"]` — the way people write a directory —
117
+ * would put every file inside it out of scope.
118
+ */
119
+ function globToRegExp(rawPattern) {
120
+ // A trailing slash carries no information once the rule above applies.
121
+ const pattern = rawPattern.replace(/\/+$/, '');
122
+ const bracesBalanced = hasBalancedBraces(pattern);
123
+ let source = '';
124
+ let depth = 0;
125
+ let i = 0;
126
+ while (i < pattern.length) {
127
+ const char = pattern[i];
128
+ if (char === '*') {
129
+ let end = i;
130
+ while (pattern[end] === '*')
131
+ end += 1;
132
+ const isGlobstar = end - i > 1;
133
+ const atSegmentStart = i === 0 || pattern[i - 1] === '/';
134
+ if (isGlobstar && atSegmentStart && pattern[end] === '/') {
135
+ // Consume the following slash too: `a/**/b` has to match `a/b`.
136
+ source += '(?:[^/]*/)*';
137
+ i = end + 1;
138
+ continue;
139
+ }
140
+ if (isGlobstar && atSegmentStart && end === pattern.length) {
141
+ source += '.*';
142
+ i = end;
143
+ continue;
144
+ }
145
+ // `**` that is not a whole segment (`a**b`) cannot mean "cross
146
+ // directories" without also matching `a/x/b`, which the pattern does not
147
+ // say. Collapse it to a single-segment wildcard.
148
+ source += '[^/]*';
149
+ i = end;
150
+ continue;
151
+ }
152
+ if (char === '?') {
153
+ source += '[^/]';
154
+ i += 1;
155
+ continue;
156
+ }
157
+ if (bracesBalanced && char === '{') {
158
+ depth += 1;
159
+ source += '(?:';
160
+ i += 1;
161
+ continue;
162
+ }
163
+ if (bracesBalanced && char === '}' && depth > 0) {
164
+ depth -= 1;
165
+ source += ')';
166
+ i += 1;
167
+ continue;
168
+ }
169
+ if (bracesBalanced && char === ',' && depth > 0) {
170
+ source += '|';
171
+ i += 1;
172
+ continue;
173
+ }
174
+ source += char.replace(/[.*+?^${}()|[\]\\]/, '\\$&');
175
+ i += 1;
176
+ }
177
+ return new RegExp(`^${source}(?:/.*)?$`);
178
+ }
179
+ function hasBalancedBraces(pattern) {
180
+ let depth = 0;
181
+ for (const char of pattern) {
182
+ if (char === '{')
183
+ depth += 1;
184
+ else if (char === '}') {
185
+ depth -= 1;
186
+ if (depth < 0)
187
+ return false;
188
+ }
189
+ }
190
+ return depth === 0;
191
+ }
192
+ /**
193
+ * A scope declaration compiled once per run.
194
+ *
195
+ * Compiling per pattern per file would rebuild the same regexes for every one of
196
+ * potentially thousands of changed paths.
197
+ */
198
+ class ScopeMatcher {
199
+ contractPath;
200
+ allow;
201
+ deny;
202
+ /**
203
+ * @param contractPath the contract's own path, exempted alongside
204
+ * {@link ALWAYS_ALLOWED_PREFIX} for contracts kept outside `.commandmate/`
205
+ */
206
+ constructor(scope, contractPath = null) {
207
+ this.contractPath = contractPath;
208
+ this.allow = scope.allow.map(globToRegExp);
209
+ this.deny = scope.deny.map(globToRegExp);
210
+ }
211
+ /**
212
+ * Whether `path` is a scope violation.
213
+ *
214
+ * `path` is a repository-root-relative POSIX path as git reports it.
215
+ */
216
+ isViolation(path) {
217
+ if (this.deny.some((pattern) => pattern.test(path)))
218
+ return true;
219
+ if (path.startsWith(exports.ALWAYS_ALLOWED_PREFIX) || path === this.contractPath)
220
+ return false;
221
+ return !this.allow.some((pattern) => pattern.test(path));
222
+ }
223
+ }
224
+ exports.ScopeMatcher = ScopeMatcher;
225
+ // =============================================================================
226
+ // Changed-path collection
227
+ // =============================================================================
228
+ /** Run a git plumbing command. No shell: every argument here is code-supplied. */
229
+ function runGit(args, cwd) {
230
+ return new Promise((resolve) => {
231
+ let stdout = '';
232
+ let stderr = '';
233
+ const child = (0, child_process_1.spawn)('git', args, { cwd, stdio: ['ignore', 'pipe', 'pipe'] });
234
+ child.stdout?.on('data', (chunk) => {
235
+ stdout += chunk.toString('utf8');
236
+ });
237
+ child.stderr?.on('data', (chunk) => {
238
+ stderr += chunk.toString('utf8');
239
+ });
240
+ child.on('error', (error) => resolve({ code: null, stdout: '', stderr: error.message }));
241
+ child.on('close', (code) => resolve({ code, stdout, stderr }));
242
+ });
243
+ }
244
+ function splitNul(output) {
245
+ return output.split('\0').filter((field) => field !== '');
246
+ }
247
+ /**
248
+ * Paths in `git status --porcelain -z -uall` output.
249
+ *
250
+ * Measured format (git 2.49): every record is `XY<space><path>NUL`, and a
251
+ * rename or copy appends the original path as the *next* NUL field —
252
+ * `R new.txt\0old.txt\0`. Note that this is the reverse of the human
253
+ * `old -> new` rendering, and that `-z` writes paths verbatim while the human
254
+ * format C-quotes anything containing a space. Both paths of a rename are
255
+ * returned: moving a file *out of* a permitted directory is a change to that
256
+ * directory, and judging only the destination would miss it.
257
+ *
258
+ * Grouped per entry rather than flattened because work-evidence counts entries,
259
+ * and a rename that moved a contract file into real work has to stay countable
260
+ * as one change (#1580).
261
+ */
262
+ function parsePorcelainEntries(output) {
263
+ const fields = output.split('\0');
264
+ const entries = [];
265
+ let i = 0;
266
+ while (i < fields.length) {
267
+ const entry = fields[i];
268
+ i += 1;
269
+ // "XY " plus at least one path character.
270
+ if (entry.length < 4)
271
+ continue;
272
+ const paths = [entry.slice(3)];
273
+ const [x, y] = entry;
274
+ if (x === 'R' || x === 'C' || y === 'R' || y === 'C') {
275
+ const original = fields[i];
276
+ i += 1;
277
+ if (original)
278
+ paths.push(original);
279
+ }
280
+ entries.push(paths);
281
+ }
282
+ return entries;
283
+ }
284
+ /**
285
+ * Every path this worktree changed relative to `baseRef`.
286
+ *
287
+ * The union of committed and uncommitted change is deliberate: looking only at
288
+ * commits misses a deviation the agent has not committed yet, and looking only
289
+ * at the working tree misses everything it did commit.
290
+ *
291
+ * @returns the paths, or a message describing which git call could not answer
292
+ */
293
+ async function collectChangedPaths(worktreePath, baseRef) {
294
+ const mergeBase = await runGit(['merge-base', baseRef, 'HEAD'], worktreePath);
295
+ if (mergeBase.code !== 0 || mergeBase.stdout.trim() === '') {
296
+ return {
297
+ error: `'git merge-base ${baseRef} HEAD' failed; base ref is unreachable from this worktree.` +
298
+ (mergeBase.stderr.trim() ? `\n${mergeBase.stderr.trim()}` : ''),
299
+ };
300
+ }
301
+ const base = mergeBase.stdout.trim();
302
+ // --no-renames so a committed rename reports both paths (--name-only alone
303
+ // reports the destination only, once rename detection folds the pair).
304
+ const diff = await runGit(['diff', '--name-only', '-z', '--no-renames', base, 'HEAD'], worktreePath);
305
+ if (diff.code !== 0) {
306
+ return {
307
+ error: `'git diff --name-only ${base} HEAD' failed.` +
308
+ (diff.stderr.trim() ? `\n${diff.stderr.trim()}` : ''),
309
+ };
310
+ }
311
+ // -uall: without it a new directory collapses to a single `?? dir/` entry, and
312
+ // the gate would judge a directory name instead of the files inside it.
313
+ const status = await runGit(['status', '--porcelain', '-z', '--untracked-files=all'], worktreePath);
314
+ if (status.code !== 0) {
315
+ return {
316
+ error: "'git status --porcelain' failed." +
317
+ (status.stderr.trim() ? `\n${status.stderr.trim()}` : ''),
318
+ };
319
+ }
320
+ // Both sides are filtered, not just the working tree: an orchestrator may
321
+ // also have committed the contract as a setup commit (#1580).
322
+ const paths = new Set([...splitNul(diff.stdout), ...parsePorcelainEntries(status.stdout).flat()].filter((path) => !isContractPath(path)));
323
+ return { paths: [...paths].sort(), mergeBase: base };
324
+ }
325
+ // =============================================================================
326
+ // Gate evaluation
327
+ // =============================================================================
328
+ function formatPatterns(patterns) {
329
+ return patterns.length > 0 ? patterns.join(', ') : '(none)';
330
+ }
331
+ /**
332
+ * Reasons the gate has nothing to judge, phrased for `log_tail`.
333
+ *
334
+ * A skip is recorded rather than omitted: a run with no scope row at all is
335
+ * indistinguishable from a run predating the gate, and "we looked and no
336
+ * contract declared a scope" is the answer the reader needs.
337
+ */
338
+ exports.SCOPE_SKIP_NO_CONTRACT = 'scope: no contract is attached to this run, so no scope is declared to check.';
339
+ exports.SCOPE_SKIP_NOT_REQUIRED = 'scope: the contract sets success.requireScopeClean: false.';
340
+ /**
341
+ * The skip that is *not* harmless: a contract exists and this run could not be
342
+ * attached to it (#1620).
343
+ *
344
+ * Worded apart from {@link SCOPE_SKIP_NO_CONTRACT} on purpose. Both are skips,
345
+ * but only one of them means "there was nothing to judge" — reporting the other
346
+ * with the same sentence is what let a run whose scope was never checked read
347
+ * as a repository that simply does not use contracts. The task id is named so
348
+ * the reader can go and look at what was not judged.
349
+ */
350
+ function scopeSkipDetachedContract(taskId, status) {
351
+ return (`scope: task ${taskId} declares a scope for this worktree, but it is ${status} and ` +
352
+ 'this run was not attached to it, so its scope was NOT judged. ' +
353
+ 'Name the task when starting the run (`wait --verify` does this automatically).');
354
+ }
355
+ /**
356
+ * Judge the worktree's changes against a contract's scope.
357
+ *
358
+ * @param scope declared scope, or null when no contract is attached to the run
359
+ * @param requireScopeClean the contract's `success.requireScopeClean`
360
+ * @param baseRef ref the change set is computed against; null when unresolved
361
+ * @param contractPath the contract's own path, always exempt from `allow`
362
+ */
363
+ async function evaluateScope(worktreePath, scope, requireScopeClean, baseRef, contractPath = null) {
364
+ const startedAt = Date.now();
365
+ const done = (status, logTail, exitCode) => ({
366
+ status,
367
+ exitCode,
368
+ startedAt,
369
+ durationMs: Date.now() - startedAt,
370
+ logTail,
371
+ });
372
+ if (!scope)
373
+ return done('skipped', exports.SCOPE_SKIP_NO_CONTRACT, null);
374
+ if (!requireScopeClean)
375
+ return done('skipped', exports.SCOPE_SKIP_NOT_REQUIRED, null);
376
+ if (!baseRef) {
377
+ return done('error', 'scope: no base ref, so there is nothing to diff against. Set options.baseRef in ' +
378
+ '.commandmate/verify.yaml; origin/HEAD did not resolve a default branch.', null);
379
+ }
380
+ const changed = await collectChangedPaths(worktreePath, baseRef);
381
+ if ('error' in changed)
382
+ return done('error', `scope: ${changed.error}`, null);
383
+ const matcher = new ScopeMatcher(scope, contractPath);
384
+ const violations = changed.paths.filter((path) => matcher.isViolation(path));
385
+ const summary = `scope: baseRef=${baseRef} changed=${changed.paths.length} violations=${violations.length}\n` +
386
+ `allow: ${formatPatterns(scope.allow)}\ndeny: ${formatPatterns(scope.deny)}`;
387
+ if (violations.length === 0) {
388
+ // An empty change set passes: work-evidence is the gate that judges "nothing
389
+ // happened", and failing here too would report one problem as two.
390
+ return done('passed', summary, 0);
391
+ }
392
+ const listed = violations.slice(0, exports.MAX_REPORTED_VIOLATIONS);
393
+ const remainder = violations.length - listed.length;
394
+ const report = [
395
+ summary,
396
+ 'out of scope:',
397
+ ...listed.map((path) => ` - ${path}`),
398
+ ...(remainder > 0 ? [` ... and ${remainder} more`] : []),
399
+ exports.SCOPE_ALLOW_GUIDANCE,
400
+ ].join('\n');
401
+ return done('failed', report, 1);
402
+ }