commandmate 0.46.0 → 0.47.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 (743) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +417 -410
  3. package/.next/app-path-routes-manifest.json +22 -21
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +12 -12
  6. package/.next/react-loadable-manifest.json +2 -2
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +8 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update/route.js +4 -2
  14. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/capabilities/route.js +1 -1
  20. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/daily-summary/route.js +1 -1
  22. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  23. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  25. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  26. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  33. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  34. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/hooks/claude-done/route.js +9 -9
  36. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  37. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  39. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  40. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/push/escalation/route.js +1 -7
  44. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  45. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/push/vapid/route.js +1 -7
  48. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  49. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  51. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  52. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/relays/route.js +1 -1
  54. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  55. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  59. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  60. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/repositories/clone/route.js +1 -1
  62. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  63. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/restore/route.js +1 -1
  66. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/route.js +1 -1
  69. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/scan/route.js +1 -1
  72. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  73. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/sync/route.js +1 -1
  75. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  79. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  80. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  97. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  100. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  103. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  108. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  111. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  114. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  119. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  147. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  150. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/logs/route.js +9 -9
  156. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -0
  172. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -0
  173. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -0
  174. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  183. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  189. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
  195. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  210. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  211. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/route.js +1 -1
  233. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  234. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  236. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  239. package/.next/server/app/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  243. package/.next/server/app/sessions/page.js +1 -1
  244. package/.next/server/app/sessions/page.js.nft.json +1 -1
  245. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  246. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  248. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  249. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  250. package/.next/server/app/worktrees/[id]/page.js +11 -11
  251. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  252. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  253. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  254. package/.next/server/app-paths-manifest.json +22 -21
  255. package/.next/server/chunks/1210.js +1 -1
  256. package/.next/server/chunks/1501.js +2 -2
  257. package/.next/server/chunks/1559.js +1 -1
  258. package/.next/server/chunks/1601.js +7 -0
  259. package/.next/server/chunks/1836.js +1 -0
  260. package/.next/server/chunks/1945.js +14 -0
  261. package/.next/server/chunks/2119.js +1 -1
  262. package/.next/server/chunks/2404.js +1 -1
  263. package/.next/server/chunks/2422.js +1 -0
  264. package/.next/server/chunks/2445.js +1 -1
  265. package/.next/server/chunks/2460.js +1 -1
  266. package/.next/server/chunks/2534.js +1 -1
  267. package/.next/server/chunks/3241.js +1 -1
  268. package/.next/server/chunks/{3077.js → 4194.js} +12 -12
  269. package/.next/server/chunks/4207.js +1 -1
  270. package/.next/server/chunks/4248.js +1 -1
  271. package/.next/server/chunks/5209.js +1 -1
  272. package/.next/server/chunks/5292.js +3 -3
  273. package/.next/server/chunks/5595.js +1 -1
  274. package/.next/server/chunks/5845.js +1 -1
  275. package/.next/server/chunks/6130.js +1 -1
  276. package/.next/server/chunks/6401.js +1 -1
  277. package/.next/server/chunks/{2283.js → 6486.js} +7 -7
  278. package/.next/server/chunks/6722.js +1 -1
  279. package/.next/server/chunks/6781.js +1 -1
  280. package/.next/server/chunks/6793.js +2 -2
  281. package/.next/server/chunks/7166.js +19 -0
  282. package/.next/server/chunks/7905.js +1 -1
  283. package/.next/server/chunks/8581.js +12 -12
  284. package/.next/server/chunks/8728.js +2 -2
  285. package/.next/server/chunks/8791.js +1 -1
  286. package/.next/server/chunks/8918.js +6 -6
  287. package/.next/server/chunks/9199.js +1 -0
  288. package/.next/server/chunks/936.js +1 -0
  289. package/.next/server/chunks/9390.js +1 -1
  290. package/.next/server/chunks/9540.js +1 -0
  291. package/.next/server/chunks/9627.js +3 -2
  292. package/.next/server/chunks/9731.js +3 -3
  293. package/.next/server/middleware-build-manifest.js +1 -1
  294. package/.next/server/middleware-manifest.json +5 -5
  295. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  296. package/.next/server/pages/500.html +1 -1
  297. package/.next/server/server-reference-manifest.json +1 -1
  298. package/.next/static/chunks/{2407-acb644c5487e1720.js → 2407-b2f524f99f7fc353.js} +1 -1
  299. package/.next/static/chunks/{2717.21abf5b6bbd45520.js → 2717.1583400c272dc1d9.js} +1 -1
  300. package/.next/static/chunks/5371-a549a0d2c2044d41.js +1 -0
  301. package/.next/static/chunks/5794-80ac3f06f098ea29.js +1 -0
  302. package/.next/static/chunks/602-1c1488959215e140.js +1 -0
  303. package/.next/static/chunks/{8407-9a72e6f07c5d5458.js → 8407-155f84e5ba05f1d5.js} +1 -1
  304. package/.next/static/chunks/9079-24f9fa549ed298f1.js +1 -0
  305. package/.next/static/chunks/app/api/agents/update/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  306. package/.next/static/chunks/app/api/agents/versions/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  307. package/.next/static/chunks/app/api/app/release-notes/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  308. package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +1 -0
  309. package/.next/static/chunks/app/api/app/update-check/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  310. package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +1 -0
  311. package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +1 -0
  312. package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +1 -0
  313. package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +1 -0
  314. package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +1 -0
  315. package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +1 -0
  316. package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +1 -0
  317. package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +1 -0
  318. package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +1 -0
  319. package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +1 -0
  320. package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +1 -0
  321. package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +1 -0
  322. package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +1 -0
  323. package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +1 -0
  324. package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +1 -0
  325. package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +1 -0
  326. package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +1 -0
  327. package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +1 -0
  328. package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +1 -0
  329. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +1 -0
  330. package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +1 -0
  331. package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +1 -0
  332. package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +1 -0
  333. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +1 -0
  334. package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +1 -0
  335. package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +1 -0
  336. package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +1 -0
  337. package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +1 -0
  338. package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +1 -0
  339. package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +1 -0
  340. package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +1 -0
  341. package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +1 -0
  342. package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +1 -0
  343. package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +1 -0
  344. package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +1 -0
  345. package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +1 -0
  346. package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +1 -0
  347. package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +1 -0
  348. package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +1 -0
  349. package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +1 -0
  350. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +1 -0
  351. package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +1 -0
  352. package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +1 -0
  353. package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +1 -0
  354. package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  355. package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +1 -0
  371. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +1 -0
  372. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +1 -0
  373. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +1 -0
  374. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +1 -0
  375. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +1 -0
  376. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +1 -0
  377. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +1 -0
  378. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +1 -0
  379. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +1 -0
  380. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +1 -0
  382. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +1 -0
  383. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +1 -0
  384. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +1 -0
  385. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +1 -0
  386. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +1 -0
  387. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +1 -0
  388. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +1 -0
  389. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +1 -0
  390. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +1 -0
  391. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +1 -0
  392. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +1 -0
  393. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +1 -0
  394. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +1 -0
  395. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +1 -0
  396. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +1 -0
  397. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +1 -0
  398. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +1 -0
  399. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +1 -0
  400. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +1 -0
  401. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +1 -0
  402. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +1 -0
  403. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +1 -0
  404. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +1 -0
  405. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +1 -0
  406. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +1 -0
  407. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +1 -0
  408. package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +1 -0
  409. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +1 -0
  410. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +1 -0
  434. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +1 -0
  435. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +1 -0
  436. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  437. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +1 -0
  438. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +1 -0
  439. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +1 -0
  440. package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +1 -0
  441. package/.next/static/chunks/app/layout-419eaf7de340f4ab.js +1 -0
  442. package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +1 -0
  443. package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +1 -0
  444. package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +1 -0
  445. package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +1 -0
  446. package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +1 -0
  447. package/.next/static/chunks/{webpack-c0b821f340afdebf.js → webpack-468b7b33030234b3.js} +1 -1
  448. package/.next/trace +13 -13
  449. package/.next/types/app/api/worktrees/[id]/prompt-response/strict/route.ts +347 -0
  450. package/.next/types/routes.d.ts +2 -1
  451. package/.next/types/validator.ts +9 -0
  452. package/dist/cli/commands/auto-yes.d.ts +19 -0
  453. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  454. package/dist/cli/commands/auto-yes.js +45 -0
  455. package/dist/cli/commands/instances.d.ts.map +1 -1
  456. package/dist/cli/commands/instances.js +23 -18
  457. package/dist/cli/commands/ls.d.ts +15 -1
  458. package/dist/cli/commands/ls.d.ts.map +1 -1
  459. package/dist/cli/commands/ls.js +39 -3
  460. package/dist/cli/commands/prompt.d.ts +42 -0
  461. package/dist/cli/commands/prompt.d.ts.map +1 -0
  462. package/dist/cli/commands/prompt.js +211 -0
  463. package/dist/cli/commands/relays.d.ts.map +1 -1
  464. package/dist/cli/commands/relays.js +13 -1
  465. package/dist/cli/commands/respond-strict.d.ts +31 -0
  466. package/dist/cli/commands/respond-strict.d.ts.map +1 -0
  467. package/dist/cli/commands/respond-strict.js +214 -0
  468. package/dist/cli/commands/respond.d.ts.map +1 -1
  469. package/dist/cli/commands/respond.js +38 -0
  470. package/dist/cli/commands/send.d.ts.map +1 -1
  471. package/dist/cli/commands/send.js +41 -5
  472. package/dist/cli/commands/start.d.ts.map +1 -1
  473. package/dist/cli/commands/start.js +2 -1
  474. package/dist/cli/commands/status.d.ts.map +1 -1
  475. package/dist/cli/commands/status.js +18 -0
  476. package/dist/cli/commands/wait.d.ts +21 -1
  477. package/dist/cli/commands/wait.d.ts.map +1 -1
  478. package/dist/cli/commands/wait.js +113 -12
  479. package/dist/cli/docs/agent-operations.d.ts +1 -1
  480. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  481. package/dist/cli/docs/agent-operations.js +63 -1
  482. package/dist/cli/program.d.ts.map +1 -1
  483. package/dist/cli/program.js +6 -2
  484. package/dist/cli/types/api-responses.d.ts +62 -6
  485. package/dist/cli/types/api-responses.d.ts.map +1 -1
  486. package/dist/cli/types/index.d.ts +30 -0
  487. package/dist/cli/types/index.d.ts.map +1 -1
  488. package/dist/cli/types/index.js +12 -1
  489. package/dist/cli/utils/api-client.d.ts +13 -1
  490. package/dist/cli/utils/api-client.d.ts.map +1 -1
  491. package/dist/cli/utils/api-client.js +10 -2
  492. package/dist/cli/utils/daemon-factory.d.ts.map +1 -1
  493. package/dist/cli/utils/daemon-factory.js +3 -1
  494. package/dist/cli/utils/daemon.d.ts +38 -1
  495. package/dist/cli/utils/daemon.d.ts.map +1 -1
  496. package/dist/cli/utils/daemon.js +161 -8
  497. package/dist/cli/utils/paths.d.ts +12 -0
  498. package/dist/cli/utils/paths.d.ts.map +1 -1
  499. package/dist/cli/utils/paths.js +17 -0
  500. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +55 -1
  501. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
  502. package/dist/lib/polling/auto-yes-suppression-reason.js +20 -0
  503. package/dist/lib/prompt-observation/kinds.d.ts +101 -0
  504. package/dist/lib/prompt-observation/kinds.d.ts.map +1 -0
  505. package/dist/lib/prompt-observation/kinds.js +123 -0
  506. package/dist/lib/prompt-observation/types.d.ts +271 -0
  507. package/dist/lib/prompt-observation/types.d.ts.map +1 -0
  508. package/dist/lib/prompt-observation/types.js +14 -0
  509. package/dist/lib/session/send-attempt-types.d.ts +66 -0
  510. package/dist/lib/session/send-attempt-types.d.ts.map +1 -0
  511. package/dist/lib/session/send-attempt-types.js +17 -0
  512. package/dist/server/locales/en/worktree.json +4 -0
  513. package/dist/server/locales/ja/worktree.json +4 -0
  514. package/dist/server/server.js +20 -1
  515. package/dist/server/src/config/auto-yes-config.js +11 -0
  516. package/dist/server/src/lib/assistant-response-saver.js +13 -0
  517. package/dist/server/src/lib/auto-yes-lifecycle.js +28 -2
  518. package/dist/server/src/lib/auto-yes-poller.js +593 -78
  519. package/dist/server/src/lib/auto-yes-shutdown-record.js +257 -0
  520. package/dist/server/src/lib/auto-yes-state.js +197 -4
  521. package/dist/server/src/lib/cli-tools/antigravity-startup-trust.js +135 -0
  522. package/dist/server/src/lib/cli-tools/antigravity.js +162 -29
  523. package/dist/server/src/lib/cli-tools/command-code.js +10 -2
  524. package/dist/server/src/lib/cli-tools/copilot.js +21 -10
  525. package/dist/server/src/lib/cli-tools/gemini.js +60 -13
  526. package/dist/server/src/lib/cli-tools/launch-dialog.js +203 -0
  527. package/dist/server/src/lib/cli-tools/launch-window.js +96 -0
  528. package/dist/server/src/lib/conversation-logger.js +14 -2
  529. package/dist/server/src/lib/db/chat-db.js +2 -1
  530. package/dist/server/src/lib/detection/selection-shape.js +35 -1
  531. package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -9
  532. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +88 -1
  533. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +41 -1
  534. package/dist/server/src/lib/detection/tools/claude/detect.js +60 -0
  535. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +63 -13
  536. package/dist/server/src/lib/detection/tools/copilot/patterns.js +7 -1
  537. package/dist/server/src/lib/history/user-turn-recorder.js +14 -0
  538. package/dist/server/src/lib/hooks/sources/antigravity/history.js +28 -0
  539. package/dist/server/src/lib/hooks/sources/claude/history.js +7 -0
  540. package/dist/server/src/lib/hooks/sources/codex/history.js +7 -0
  541. package/dist/server/src/lib/hooks/sources/command-code/history.js +7 -0
  542. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +11 -2
  543. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +5 -3
  544. package/dist/server/src/lib/hooks/sources/transcript-history.js +34 -0
  545. package/dist/server/src/lib/log-manager.js +7 -2
  546. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +15 -0
  547. package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +281 -0
  548. package/dist/server/src/lib/polling/auto-yes-confirm-page.js +56 -0
  549. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +8 -1
  550. package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +22 -3
  551. package/dist/server/src/lib/polling/auto-yes-policy.js +61 -7
  552. package/dist/server/src/lib/polling/auto-yes-poller-state.js +234 -0
  553. package/dist/server/src/lib/polling/auto-yes-poller-stop-reason.js +50 -0
  554. package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +220 -5
  555. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +20 -0
  556. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +10 -0
  557. package/dist/server/src/lib/polling/pending-scraped-response.js +119 -3
  558. package/dist/server/src/lib/polling/poller-owner.js +110 -0
  559. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +2 -2
  560. package/dist/server/src/lib/polling/response-checker.js +211 -39
  561. package/dist/server/src/lib/polling/response-dedup.js +8 -0
  562. package/dist/server/src/lib/polling/response-poller-core.js +226 -75
  563. package/dist/server/src/lib/polling/structured-history-gate.js +20 -1
  564. package/dist/server/src/lib/prompt-answer-sender.js +59 -12
  565. package/dist/server/src/lib/prompt-observation/kinds.js +123 -0
  566. package/dist/server/src/lib/prompt-observation/types.js +14 -0
  567. package/dist/server/src/lib/push/prompt-push-gate.js +195 -3
  568. package/dist/server/src/lib/push/waiting-push-notifier.js +74 -7
  569. package/dist/server/src/lib/realtime/terminal-broadcast.js +14 -0
  570. package/dist/server/src/lib/relay/relay-delivery-claims.js +46 -0
  571. package/dist/server/src/lib/relay/relay-delivery.js +76 -30
  572. package/dist/server/src/lib/schedule-manager.js +28 -0
  573. package/dist/server/src/lib/session/chat-turn-progress.js +57 -6
  574. package/dist/server/src/lib/session/cli-session.js +38 -3
  575. package/dist/server/src/lib/session/current-output-builder.js +19 -0
  576. package/dist/server/src/lib/session/send-attempt-state.js +155 -0
  577. package/dist/server/src/lib/session/send-attempt-types.js +17 -0
  578. package/dist/server/src/lib/session/send-user-message.js +46 -0
  579. package/dist/server/src/lib/session/worktree-session-reconcile.js +85 -11
  580. package/dist/server/src/lib/timer-manager.js +7 -0
  581. package/dist/server/src/lib/tmux/session-created-signal.js +76 -0
  582. package/dist/server/src/lib/tmux/tmux-capture-cache.js +58 -6
  583. package/dist/server/src/lib/tmux/tmux.js +28 -2
  584. package/dist/server/src/lib/verification/env-clean-gate.js +30 -2
  585. package/dist/server/src/lib/verification/scope-gate-format.js +100 -0
  586. package/dist/server/src/lib/verification/scope-gate-glob.js +185 -0
  587. package/dist/server/src/lib/verification/scope-gate.js +19 -271
  588. package/dist/server/src/lib/ws-server.js +48 -6
  589. package/docs/en/user-guide/cli-setup-guide.md +12 -1
  590. package/docs/en/user-guide/webapp-guide.md +2 -0
  591. package/package.json +1 -1
  592. package/release-notes/0.46.1.json +40 -0
  593. package/release-notes/0.47.0.json +118 -0
  594. package/.next/server/chunks/1789.js +0 -1
  595. package/.next/server/chunks/2908.js +0 -1
  596. package/.next/server/chunks/3718.js +0 -1
  597. package/.next/server/chunks/4837.js +0 -14
  598. package/.next/server/chunks/5625.js +0 -25
  599. package/.next/server/chunks/611.js +0 -1
  600. package/.next/server/chunks/850.js +0 -1
  601. package/.next/static/chunks/3201-c01f1feed69020e6.js +0 -1
  602. package/.next/static/chunks/5371-a94ed618148287a0.js +0 -1
  603. package/.next/static/chunks/5794-947fb4934d8be193.js +0 -1
  604. package/.next/static/chunks/602-25e45a2422d2a3ea.js +0 -1
  605. package/.next/static/chunks/app/api/app/update/route-0468c3c4baa46028.js +0 -1
  606. package/.next/static/chunks/app/api/auth/login/route-0468c3c4baa46028.js +0 -1
  607. package/.next/static/chunks/app/api/auth/logout/route-0468c3c4baa46028.js +0 -1
  608. package/.next/static/chunks/app/api/auth/status/route-0468c3c4baa46028.js +0 -1
  609. package/.next/static/chunks/app/api/capabilities/route-0468c3c4baa46028.js +0 -1
  610. package/.next/static/chunks/app/api/daily-summary/route-0468c3c4baa46028.js +0 -1
  611. package/.next/static/chunks/app/api/daily-summary/status/route-0468c3c4baa46028.js +0 -1
  612. package/.next/static/chunks/app/api/external-apps/[id]/health/route-0468c3c4baa46028.js +0 -1
  613. package/.next/static/chunks/app/api/external-apps/[id]/route-0468c3c4baa46028.js +0 -1
  614. package/.next/static/chunks/app/api/external-apps/route-0468c3c4baa46028.js +0 -1
  615. package/.next/static/chunks/app/api/fs/browse/route-0468c3c4baa46028.js +0 -1
  616. package/.next/static/chunks/app/api/fs/recent-paths/route-0468c3c4baa46028.js +0 -1
  617. package/.next/static/chunks/app/api/hooks/agent-event/route-0468c3c4baa46028.js +0 -1
  618. package/.next/static/chunks/app/api/hooks/claude-done/route-0468c3c4baa46028.js +0 -1
  619. package/.next/static/chunks/app/api/hooks/permission-request/route-0468c3c4baa46028.js +0 -1
  620. package/.next/static/chunks/app/api/metrics/vibe/route-0468c3c4baa46028.js +0 -1
  621. package/.next/static/chunks/app/api/ollama/models/route-0468c3c4baa46028.js +0 -1
  622. package/.next/static/chunks/app/api/push/escalation/route-0468c3c4baa46028.js +0 -1
  623. package/.next/static/chunks/app/api/push/subscriptions/route-0468c3c4baa46028.js +0 -1
  624. package/.next/static/chunks/app/api/push/vapid/route-0468c3c4baa46028.js +0 -1
  625. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-0468c3c4baa46028.js +0 -1
  626. package/.next/static/chunks/app/api/relays/route-0468c3c4baa46028.js +0 -1
  627. package/.next/static/chunks/app/api/remote/pair/route-0468c3c4baa46028.js +0 -1
  628. package/.next/static/chunks/app/api/repositories/[id]/route-0468c3c4baa46028.js +0 -1
  629. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-0468c3c4baa46028.js +0 -1
  630. package/.next/static/chunks/app/api/repositories/clone/route-0468c3c4baa46028.js +0 -1
  631. package/.next/static/chunks/app/api/repositories/excluded/route-0468c3c4baa46028.js +0 -1
  632. package/.next/static/chunks/app/api/repositories/restore/route-0468c3c4baa46028.js +0 -1
  633. package/.next/static/chunks/app/api/repositories/route-0468c3c4baa46028.js +0 -1
  634. package/.next/static/chunks/app/api/repositories/scan/route-0468c3c4baa46028.js +0 -1
  635. package/.next/static/chunks/app/api/repositories/sync/route-0468c3c4baa46028.js +0 -1
  636. package/.next/static/chunks/app/api/repositories/validate-path/route-0468c3c4baa46028.js +0 -1
  637. package/.next/static/chunks/app/api/settings/default-agents/route-0468c3c4baa46028.js +0 -1
  638. package/.next/static/chunks/app/api/settings/default-surface-mode/route-0468c3c4baa46028.js +0 -1
  639. package/.next/static/chunks/app/api/sidebar/group-order/route-0468c3c4baa46028.js +0 -1
  640. package/.next/static/chunks/app/api/skills/[id]/route-0468c3c4baa46028.js +0 -1
  641. package/.next/static/chunks/app/api/skills/installations/route-0468c3c4baa46028.js +0 -1
  642. package/.next/static/chunks/app/api/skills/operations/route-0468c3c4baa46028.js +0 -1
  643. package/.next/static/chunks/app/api/skills/reindex/route-0468c3c4baa46028.js +0 -1
  644. package/.next/static/chunks/app/api/skills/route-0468c3c4baa46028.js +0 -1
  645. package/.next/static/chunks/app/api/slash-commands/route-0468c3c4baa46028.js +0 -1
  646. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-0468c3c4baa46028.js +0 -1
  647. package/.next/static/chunks/app/api/tasks/[taskId]/route-0468c3c4baa46028.js +0 -1
  648. package/.next/static/chunks/app/api/templates/[id]/route-0468c3c4baa46028.js +0 -1
  649. package/.next/static/chunks/app/api/templates/route-0468c3c4baa46028.js +0 -1
  650. package/.next/static/chunks/app/api/verification/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  651. package/.next/static/chunks/app/api/verification/runs/route-0468c3c4baa46028.js +0 -1
  652. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-0468c3c4baa46028.js +0 -1
  653. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-0468c3c4baa46028.js +0 -1
  654. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-0468c3c4baa46028.js +0 -1
  655. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-0468c3c4baa46028.js +0 -1
  656. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-0468c3c4baa46028.js +0 -1
  657. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-0468c3c4baa46028.js +0 -1
  658. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-0468c3c4baa46028.js +0 -1
  659. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-0468c3c4baa46028.js +0 -1
  660. package/.next/static/chunks/app/api/worktrees/[id]/env/route-0468c3c4baa46028.js +0 -1
  661. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-0468c3c4baa46028.js +0 -1
  662. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-0468c3c4baa46028.js +0 -1
  663. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-0468c3c4baa46028.js +0 -1
  664. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-0468c3c4baa46028.js +0 -1
  665. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-0468c3c4baa46028.js +0 -1
  666. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-0468c3c4baa46028.js +0 -1
  667. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-0468c3c4baa46028.js +0 -1
  668. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-0468c3c4baa46028.js +0 -1
  669. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-0468c3c4baa46028.js +0 -1
  670. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-0468c3c4baa46028.js +0 -1
  671. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-0468c3c4baa46028.js +0 -1
  672. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-0468c3c4baa46028.js +0 -1
  673. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-0468c3c4baa46028.js +0 -1
  674. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-0468c3c4baa46028.js +0 -1
  675. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-0468c3c4baa46028.js +0 -1
  676. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-0468c3c4baa46028.js +0 -1
  677. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-0468c3c4baa46028.js +0 -1
  678. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-0468c3c4baa46028.js +0 -1
  679. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-0468c3c4baa46028.js +0 -1
  680. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-0468c3c4baa46028.js +0 -1
  681. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-0468c3c4baa46028.js +0 -1
  682. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-0468c3c4baa46028.js +0 -1
  683. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-0468c3c4baa46028.js +0 -1
  684. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-0468c3c4baa46028.js +0 -1
  685. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-0468c3c4baa46028.js +0 -1
  686. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-0468c3c4baa46028.js +0 -1
  687. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-0468c3c4baa46028.js +0 -1
  688. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-0468c3c4baa46028.js +0 -1
  689. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-0468c3c4baa46028.js +0 -1
  690. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-0468c3c4baa46028.js +0 -1
  691. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-0468c3c4baa46028.js +0 -1
  692. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-0468c3c4baa46028.js +0 -1
  693. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-0468c3c4baa46028.js +0 -1
  694. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-0468c3c4baa46028.js +0 -1
  695. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-0468c3c4baa46028.js +0 -1
  696. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-0468c3c4baa46028.js +0 -1
  697. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-0468c3c4baa46028.js +0 -1
  698. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-0468c3c4baa46028.js +0 -1
  699. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-0468c3c4baa46028.js +0 -1
  700. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-0468c3c4baa46028.js +0 -1
  701. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-0468c3c4baa46028.js +0 -1
  702. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-0468c3c4baa46028.js +0 -1
  703. package/.next/static/chunks/app/api/worktrees/[id]/route-0468c3c4baa46028.js +0 -1
  704. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-0468c3c4baa46028.js +0 -1
  705. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-0468c3c4baa46028.js +0 -1
  706. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-0468c3c4baa46028.js +0 -1
  707. package/.next/static/chunks/app/api/worktrees/[id]/search/route-0468c3c4baa46028.js +0 -1
  708. package/.next/static/chunks/app/api/worktrees/[id]/send/route-0468c3c4baa46028.js +0 -1
  709. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-0468c3c4baa46028.js +0 -1
  710. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-0468c3c4baa46028.js +0 -1
  711. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-0468c3c4baa46028.js +0 -1
  712. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-0468c3c4baa46028.js +0 -1
  713. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-0468c3c4baa46028.js +0 -1
  714. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-0468c3c4baa46028.js +0 -1
  715. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-0468c3c4baa46028.js +0 -1
  716. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-0468c3c4baa46028.js +0 -1
  717. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-0468c3c4baa46028.js +0 -1
  718. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-0468c3c4baa46028.js +0 -1
  719. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-0468c3c4baa46028.js +0 -1
  720. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-0468c3c4baa46028.js +0 -1
  721. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-0468c3c4baa46028.js +0 -1
  722. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-0468c3c4baa46028.js +0 -1
  723. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-0468c3c4baa46028.js +0 -1
  724. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-0468c3c4baa46028.js +0 -1
  725. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-0468c3c4baa46028.js +0 -1
  726. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-0468c3c4baa46028.js +0 -1
  727. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-0468c3c4baa46028.js +0 -1
  728. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-0468c3c4baa46028.js +0 -1
  729. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-0468c3c4baa46028.js +0 -1
  730. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-0468c3c4baa46028.js +0 -1
  731. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  732. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-0468c3c4baa46028.js +0 -1
  733. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-0468c3c4baa46028.js +0 -1
  734. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-0468c3c4baa46028.js +0 -1
  735. package/.next/static/chunks/app/api/worktrees/route-0468c3c4baa46028.js +0 -1
  736. package/.next/static/chunks/app/layout-ae30ce63569c22be.js +0 -1
  737. package/.next/static/chunks/app/manifest.webmanifest/route-0468c3c4baa46028.js +0 -1
  738. package/.next/static/chunks/app/proxy/[...path]/route-0468c3c4baa46028.js +0 -1
  739. package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +0 -1
  740. package/.next/static/chunks/app/worktrees/[id]/layout-0468c3c4baa46028.js +0 -1
  741. package/.next/static/chunks/app/worktrees/[id]/page-2eb1d0fd0a077b7e.js +0 -1
  742. /package/.next/static/{zI2nQ6WKboSbFbMF4EtrJ → b5BiQC9F6r_XFPdA9cuSj}/_buildManifest.js +0 -0
  743. /package/.next/static/{zI2nQ6WKboSbFbMF4EtrJ → b5BiQC9F6r_XFPdA9cuSj}/_ssgManifest.js +0 -0
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /**
3
+ * `log_tail` formatting for the built-in `scope` gate (Issue #3647: split out of
4
+ * scope-gate.ts, which re-exports everything public here).
5
+ *
6
+ * @module lib/verification/scope-gate-format
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SCOPE_PATTERN_ARROW = exports.MAX_REPORTED_VIOLATIONS = void 0;
10
+ exports.formatPatterns = formatPatterns;
11
+ exports.formatDecidedPath = formatDecidedPath;
12
+ exports.formatAdmitted = formatAdmitted;
13
+ exports.formatAgentStateExcluded = formatAgentStateExcluded;
14
+ exports.formatOrchestratorExcluded = formatOrchestratorExcluded;
15
+ /**
16
+ * Violations listed in `log_tail` before the rest are summarised as a count.
17
+ *
18
+ * A worker that ran in the wrong directory can put thousands of paths out of
19
+ * scope, and log_tail is stored per gate in SQLite.
20
+ */
21
+ exports.MAX_REPORTED_VIOLATIONS = 100;
22
+ /**
23
+ * Separator between a reported path and the pattern that decided it (#1841).
24
+ *
25
+ * Mirrored by the CLI's scope-evidence parser (`src/cli/commands/verify.ts`,
26
+ * SCOPE_PATTERN_ARROW): the gate's report is the only carrier for this evidence
27
+ * — `verification_gate_results` has columns for a status, an exit code and a log
28
+ * body, and nothing else — so the two constants have to agree. A round-trip
29
+ * test feeds a real `evaluateScope` report through that parser rather than
30
+ * trusting the two copies to be edited together.
31
+ *
32
+ * A path containing this exact three-character sequence would split wrongly on
33
+ * the way back. Nothing prevents such a filename; it is accepted because the
34
+ * alternative — encoding paths in a log a human reads first — costs every
35
+ * reader something to protect against a file no repository has.
36
+ */
37
+ exports.SCOPE_PATTERN_ARROW = ' \u2190 ';
38
+ function formatPatterns(patterns) {
39
+ return patterns.length > 0 ? patterns.join(', ') : '(none)';
40
+ }
41
+ /**
42
+ * One reported path, optionally naming the rule that decided it (#1841).
43
+ *
44
+ * Admitted paths lead with `+` rather than `-` so the two sections cannot be
45
+ * confused by a reader — or by a grep — that has only one line in front of it.
46
+ */
47
+ function formatDecidedPath(marker, path, pattern) {
48
+ if (pattern === null)
49
+ return ` ${marker} ${path}`;
50
+ return ` ${marker} ${path}${exports.SCOPE_PATTERN_ARROW}${pattern}`;
51
+ }
52
+ /**
53
+ * The `admitted:` section: what this run was allowed to change, and by which
54
+ * rule (#1841).
55
+ *
56
+ * With an `allow` of exact paths the pattern *is* the file and this adds
57
+ * nothing, but #1546 made globs legal, and `src/**` leaves no record of what it
58
+ * actually covered on the day it ran. The contract is the claim; this is the
59
+ * evidence for it, and it has to survive in `log_tail` because the run's own
60
+ * working tree will have moved on by the time anyone asks.
61
+ *
62
+ * Capped by the same rule as the violations, for the same reason (log_tail is
63
+ * stored per gate in SQLite), and the truncation is stated rather than silent —
64
+ * a list that stops at 100 with no marker reads as a complete one.
65
+ */
66
+ function formatAdmitted(admitted) {
67
+ if (admitted.length === 0)
68
+ return [];
69
+ const listed = admitted.slice(0, exports.MAX_REPORTED_VIOLATIONS);
70
+ const remainder = admitted.length - listed.length;
71
+ return [
72
+ 'admitted:',
73
+ ...listed.map((entry) => formatDecidedPath('+', entry.path, entry.pattern)),
74
+ // Worded `(+N more)` rather than the violations' `... and N more`: the two
75
+ // sections are capped independently and a reader scanning a truncated
76
+ // report should not have to work out which count belongs to which list.
77
+ ...(remainder > 0 ? [` ... (+${remainder} more)`] : []),
78
+ ];
79
+ }
80
+ /** The `excluded:` section naming agent-managed state files left out (#3126). */
81
+ function formatAgentStateExcluded(excluded) {
82
+ if (excluded.length === 0)
83
+ return [];
84
+ const listed = excluded.slice(0, exports.MAX_REPORTED_VIOLATIONS);
85
+ const remainder = excluded.length - listed.length;
86
+ return [
87
+ 'excluded (agent-managed state files, not counted as change):',
88
+ ...listed.map((path) => ` ~ ${path}`),
89
+ ...(remainder > 0 ? [` ... (+${remainder} more)`] : []),
90
+ ];
91
+ }
92
+ /** The `excluded:` section naming orchestrator-only committed paths (#3588). */
93
+ function formatOrchestratorExcluded(excluded) {
94
+ if (excluded.length === 0)
95
+ return [];
96
+ return [
97
+ 'excluded (changed only by orchestrator commits, not counted as change):',
98
+ ...excluded.map((path) => ` ~ ${path}`),
99
+ ];
100
+ }
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ /**
3
+ * Scope glob matching for the built-in `scope` gate (Issue #3647: split out of
4
+ * scope-gate.ts, which re-exports everything public here).
5
+ *
6
+ * @module lib/verification/scope-gate-glob
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ScopeMatcher = exports.SCOPE_EXEMPT_CONTRACT_PATH = exports.SCOPE_EXEMPT_ALWAYS_ALLOWED = exports.ALWAYS_ALLOWED_PREFIX = void 0;
10
+ /**
11
+ * Paths that are in scope no matter what the contract says.
12
+ *
13
+ * The contract file lives here, so a contract whose own `allow` list forgot to
14
+ * mention `.commandmate/` would fail the moment it was committed — the scope
15
+ * declaration would make its own storage a violation. The exemption covers the
16
+ * `allow` requirement only; an explicit `deny` still applies, because a deny is
17
+ * a deliberate prohibition and silently ignoring one is worse than the accident
18
+ * this exemption prevents.
19
+ */
20
+ exports.ALWAYS_ALLOWED_PREFIX = '.commandmate/';
21
+ /**
22
+ * Stand-ins for the two ways a path is admitted without matching `allow`.
23
+ *
24
+ * Parenthesised so they cannot be mistaken for a pattern the contract declared:
25
+ * a reader who greps the contract for `(exempt: .commandmate/)` should find
26
+ * nothing, because nothing there put it in scope.
27
+ */
28
+ exports.SCOPE_EXEMPT_ALWAYS_ALLOWED = `(exempt: ${exports.ALWAYS_ALLOWED_PREFIX})`;
29
+ exports.SCOPE_EXEMPT_CONTRACT_PATH = '(exempt: contract path)';
30
+ // =============================================================================
31
+ // Glob matching
32
+ // =============================================================================
33
+ /**
34
+ * Translate a scope glob into an anchored regular expression.
35
+ *
36
+ * Deliberately a small, documented subset rather than a glob library. The
37
+ * semantics are fixed in docs/design/task-contract.md §2.2:
38
+ *
39
+ * - `**` as a whole path segment crosses directory boundaries, including zero of
40
+ * them: `a/**` matches `a/b` and `a/b/c`, `**\/*.ts` matches `x.ts`.
41
+ * - `*` and `?` never cross `/`. Leading dots are ordinary characters, so
42
+ * `.github/**` and `*.md` behave the way they read.
43
+ * - `{a,b}` is alternation, nestable. Unbalanced braces are literal, as in a
44
+ * shell — `src/{a` is a path with a brace in it, not a syntax error.
45
+ * - `[` and `]` are **literal**. This repository routes through
46
+ * `src/app/proxy/[...path]/`, and treating those as character classes would
47
+ * make the pattern that names them match nothing at all — a silent no-match is
48
+ * the failure mode this gate exists to avoid.
49
+ * - A pattern that matches a directory also matches everything beneath it, so
50
+ * `src/lib`, `src/lib/` and `src/lib/**` all mean the same thing. Without this
51
+ * rule, `allow: ["src/lib/verification"]` — the way people write a directory —
52
+ * would put every file inside it out of scope.
53
+ */
54
+ function globToRegExp(rawPattern) {
55
+ // A trailing slash carries no information once the rule above applies.
56
+ const pattern = rawPattern.replace(/\/+$/, '');
57
+ const bracesBalanced = hasBalancedBraces(pattern);
58
+ let source = '';
59
+ let depth = 0;
60
+ let i = 0;
61
+ while (i < pattern.length) {
62
+ const char = pattern[i];
63
+ if (char === '*') {
64
+ let end = i;
65
+ while (pattern[end] === '*')
66
+ end += 1;
67
+ const isGlobstar = end - i > 1;
68
+ const atSegmentStart = i === 0 || pattern[i - 1] === '/';
69
+ if (isGlobstar && atSegmentStart && pattern[end] === '/') {
70
+ // Consume the following slash too: `a/**/b` has to match `a/b`.
71
+ source += '(?:[^/]*/)*';
72
+ i = end + 1;
73
+ continue;
74
+ }
75
+ if (isGlobstar && atSegmentStart && end === pattern.length) {
76
+ source += '.*';
77
+ i = end;
78
+ continue;
79
+ }
80
+ // `**` that is not a whole segment (`a**b`) cannot mean "cross
81
+ // directories" without also matching `a/x/b`, which the pattern does not
82
+ // say. Collapse it to a single-segment wildcard.
83
+ source += '[^/]*';
84
+ i = end;
85
+ continue;
86
+ }
87
+ if (char === '?') {
88
+ source += '[^/]';
89
+ i += 1;
90
+ continue;
91
+ }
92
+ if (bracesBalanced && char === '{') {
93
+ depth += 1;
94
+ source += '(?:';
95
+ i += 1;
96
+ continue;
97
+ }
98
+ if (bracesBalanced && char === '}' && depth > 0) {
99
+ depth -= 1;
100
+ source += ')';
101
+ i += 1;
102
+ continue;
103
+ }
104
+ if (bracesBalanced && char === ',' && depth > 0) {
105
+ source += '|';
106
+ i += 1;
107
+ continue;
108
+ }
109
+ source += char.replace(/[.*+?^${}()|[\]\\]/, '\\$&');
110
+ i += 1;
111
+ }
112
+ return new RegExp(`^${source}(?:/.*)?$`);
113
+ }
114
+ function hasBalancedBraces(pattern) {
115
+ let depth = 0;
116
+ for (const char of pattern) {
117
+ if (char === '{')
118
+ depth += 1;
119
+ else if (char === '}') {
120
+ depth -= 1;
121
+ if (depth < 0)
122
+ return false;
123
+ }
124
+ }
125
+ return depth === 0;
126
+ }
127
+ function compilePattern(pattern) {
128
+ return { pattern, regexp: globToRegExp(pattern) };
129
+ }
130
+ /**
131
+ * A scope declaration compiled once per run.
132
+ *
133
+ * Compiling per pattern per file would rebuild the same regexes for every one of
134
+ * potentially thousands of changed paths.
135
+ */
136
+ class ScopeMatcher {
137
+ contractPath;
138
+ allow;
139
+ deny;
140
+ /**
141
+ * @param contractPath the contract's own path, exempted alongside
142
+ * {@link ALWAYS_ALLOWED_PREFIX} for contracts kept outside `.commandmate/`
143
+ */
144
+ constructor(scope, contractPath = null) {
145
+ this.contractPath = contractPath;
146
+ this.allow = scope.allow.map(compilePattern);
147
+ this.deny = scope.deny.map(compilePattern);
148
+ }
149
+ /**
150
+ * Which declared rule decided `path`, and which way (#1841).
151
+ *
152
+ * The **first** matching pattern is reported, in the contract's declaration
153
+ * order, on both sides. Reporting the last would name a rule the reader
154
+ * cannot use: `allow: ["src/**", "src/lib/**"]` admits `src/lib/a.ts` under
155
+ * the first entry, and deleting the second changes nothing about the verdict.
156
+ *
157
+ * `path` is a repository-root-relative POSIX path as git reports it.
158
+ */
159
+ classify(path) {
160
+ const denied = this.deny.find((entry) => entry.regexp.test(path));
161
+ if (denied)
162
+ return { admitted: false, pattern: denied.pattern };
163
+ if (path.startsWith(exports.ALWAYS_ALLOWED_PREFIX)) {
164
+ return { admitted: true, pattern: exports.SCOPE_EXEMPT_ALWAYS_ALLOWED };
165
+ }
166
+ if (path === this.contractPath) {
167
+ return { admitted: true, pattern: exports.SCOPE_EXEMPT_CONTRACT_PATH };
168
+ }
169
+ const allowed = this.allow.find((entry) => entry.regexp.test(path));
170
+ return allowed
171
+ ? { admitted: true, pattern: allowed.pattern }
172
+ : { admitted: false, pattern: null };
173
+ }
174
+ /**
175
+ * Whether `path` is a scope violation.
176
+ *
177
+ * Delegates to {@link classify} rather than repeating the rules: the verdict
178
+ * and the evidence for it must never be able to disagree, and two copies of
179
+ * "deny wins, then the exemptions, then allow" is exactly how they would.
180
+ */
181
+ isViolation(path) {
182
+ return !this.classify(path).admitted;
183
+ }
184
+ }
185
+ exports.ScopeMatcher = ScopeMatcher;
@@ -30,7 +30,7 @@
30
30
  * @module lib/verification/scope-gate
31
31
  */
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.SCOPE_SKIP_NOT_REQUIRED = exports.SCOPE_SKIP_NO_CONTRACT = exports.ScopeMatcher = exports.ORCHESTRATOR_FOLD_TRAILER_VALUE = exports.ORCHESTRATOR_FOLD_TRAILER_KEY = exports.ORCHESTRATOR_FILES = exports.CONTRACT_DIR_PREFIX = exports.SCOPE_EXEMPT_CONTRACT_PATH = exports.SCOPE_EXEMPT_ALWAYS_ALLOWED = exports.SCOPE_PATTERN_ARROW = exports.ALWAYS_ALLOWED_PREFIX = exports.SCOPE_ALLOW_GUIDANCE = exports.MAX_REPORTED_VIOLATIONS = void 0;
33
+ exports.SCOPE_SKIP_NOT_REQUIRED = exports.SCOPE_SKIP_NO_CONTRACT = exports.ORCHESTRATOR_FOLD_TRAILER_VALUE = exports.ORCHESTRATOR_FOLD_TRAILER_KEY = exports.ORCHESTRATOR_FILES = exports.CONTRACT_DIR_PREFIX = exports.SCOPE_ALLOW_GUIDANCE = exports.ScopeMatcher = exports.SCOPE_EXEMPT_CONTRACT_PATH = exports.SCOPE_EXEMPT_ALWAYS_ALLOWED = exports.ALWAYS_ALLOWED_PREFIX = exports.SCOPE_PATTERN_ARROW = exports.MAX_REPORTED_VIOLATIONS = void 0;
34
34
  exports.isOrchestratorOnlyCommit = isOrchestratorOnlyCommit;
35
35
  exports.parseBranchCommits = parseBranchCommits;
36
36
  exports.isFoldCommit = isFoldCommit;
@@ -46,13 +46,16 @@ exports.evaluateScope = evaluateScope;
46
46
  const child_process_1 = require("child_process");
47
47
  const receipt_owned_paths_1 = require("../../lib/skills/receipt-owned-paths");
48
48
  const agent_state_paths_1 = require("../../lib/skills/agent-state-paths");
49
- /**
50
- * Violations listed in `log_tail` before the rest are summarised as a count.
51
- *
52
- * A worker that ran in the wrong directory can put thousands of paths out of
53
- * scope, and log_tail is stored per gate in SQLite.
54
- */
55
- exports.MAX_REPORTED_VIOLATIONS = 100;
49
+ const scope_gate_format_1 = require("./scope-gate-format");
50
+ const scope_gate_glob_1 = require("./scope-gate-glob");
51
+ var scope_gate_format_2 = require("./scope-gate-format");
52
+ Object.defineProperty(exports, "MAX_REPORTED_VIOLATIONS", { enumerable: true, get: function () { return scope_gate_format_2.MAX_REPORTED_VIOLATIONS; } });
53
+ Object.defineProperty(exports, "SCOPE_PATTERN_ARROW", { enumerable: true, get: function () { return scope_gate_format_2.SCOPE_PATTERN_ARROW; } });
54
+ var scope_gate_glob_2 = require("./scope-gate-glob");
55
+ Object.defineProperty(exports, "ALWAYS_ALLOWED_PREFIX", { enumerable: true, get: function () { return scope_gate_glob_2.ALWAYS_ALLOWED_PREFIX; } });
56
+ Object.defineProperty(exports, "SCOPE_EXEMPT_ALWAYS_ALLOWED", { enumerable: true, get: function () { return scope_gate_glob_2.SCOPE_EXEMPT_ALWAYS_ALLOWED; } });
57
+ Object.defineProperty(exports, "SCOPE_EXEMPT_CONTRACT_PATH", { enumerable: true, get: function () { return scope_gate_glob_2.SCOPE_EXEMPT_CONTRACT_PATH; } });
58
+ Object.defineProperty(exports, "ScopeMatcher", { enumerable: true, get: function () { return scope_gate_glob_2.ScopeMatcher; } });
56
59
  /**
57
60
  * Actionable coda appended to every scope failure report (#1683).
58
61
  *
@@ -69,42 +72,6 @@ exports.SCOPE_ALLOW_GUIDANCE = "To allow this diff, add the paths above to the c
69
72
  'is judged from the send-time snapshot, so editing the contract file alone ' +
70
73
  'changes nothing. A path matching deny: is a deliberate prohibition; revert ' +
71
74
  'it instead.';
72
- /**
73
- * Paths that are in scope no matter what the contract says.
74
- *
75
- * The contract file lives here, so a contract whose own `allow` list forgot to
76
- * mention `.commandmate/` would fail the moment it was committed — the scope
77
- * declaration would make its own storage a violation. The exemption covers the
78
- * `allow` requirement only; an explicit `deny` still applies, because a deny is
79
- * a deliberate prohibition and silently ignoring one is worse than the accident
80
- * this exemption prevents.
81
- */
82
- exports.ALWAYS_ALLOWED_PREFIX = '.commandmate/';
83
- /**
84
- * Separator between a reported path and the pattern that decided it (#1841).
85
- *
86
- * Mirrored by the CLI's scope-evidence parser (`src/cli/commands/verify.ts`,
87
- * SCOPE_PATTERN_ARROW): the gate's report is the only carrier for this evidence
88
- * — `verification_gate_results` has columns for a status, an exit code and a log
89
- * body, and nothing else — so the two constants have to agree. A round-trip
90
- * test feeds a real `evaluateScope` report through that parser rather than
91
- * trusting the two copies to be edited together.
92
- *
93
- * A path containing this exact three-character sequence would split wrongly on
94
- * the way back. Nothing prevents such a filename; it is accepted because the
95
- * alternative — encoding paths in a log a human reads first — costs every
96
- * reader something to protect against a file no repository has.
97
- */
98
- exports.SCOPE_PATTERN_ARROW = ' \u2190 ';
99
- /**
100
- * Stand-ins for the two ways a path is admitted without matching `allow`.
101
- *
102
- * Parenthesised so they cannot be mistaken for a pattern the contract declared:
103
- * a reader who greps the contract for `(exempt: .commandmate/)` should find
104
- * nothing, because nothing there put it in scope.
105
- */
106
- exports.SCOPE_EXEMPT_ALWAYS_ALLOWED = `(exempt: ${exports.ALWAYS_ALLOWED_PREFIX})`;
107
- exports.SCOPE_EXEMPT_CONTRACT_PATH = '(exempt: contract path)';
108
75
  /**
109
76
  * Execution contracts, dropped from both gates' change sets entirely (#1580).
110
77
  *
@@ -209,162 +176,6 @@ function isContractPath(path) {
209
176
  return path.startsWith(exports.CONTRACT_DIR_PREFIX);
210
177
  }
211
178
  // =============================================================================
212
- // Glob matching
213
- // =============================================================================
214
- /**
215
- * Translate a scope glob into an anchored regular expression.
216
- *
217
- * Deliberately a small, documented subset rather than a glob library. The
218
- * semantics are fixed in docs/design/task-contract.md §2.2:
219
- *
220
- * - `**` as a whole path segment crosses directory boundaries, including zero of
221
- * them: `a/**` matches `a/b` and `a/b/c`, `**\/*.ts` matches `x.ts`.
222
- * - `*` and `?` never cross `/`. Leading dots are ordinary characters, so
223
- * `.github/**` and `*.md` behave the way they read.
224
- * - `{a,b}` is alternation, nestable. Unbalanced braces are literal, as in a
225
- * shell — `src/{a` is a path with a brace in it, not a syntax error.
226
- * - `[` and `]` are **literal**. This repository routes through
227
- * `src/app/proxy/[...path]/`, and treating those as character classes would
228
- * make the pattern that names them match nothing at all — a silent no-match is
229
- * the failure mode this gate exists to avoid.
230
- * - A pattern that matches a directory also matches everything beneath it, so
231
- * `src/lib`, `src/lib/` and `src/lib/**` all mean the same thing. Without this
232
- * rule, `allow: ["src/lib/verification"]` — the way people write a directory —
233
- * would put every file inside it out of scope.
234
- */
235
- function globToRegExp(rawPattern) {
236
- // A trailing slash carries no information once the rule above applies.
237
- const pattern = rawPattern.replace(/\/+$/, '');
238
- const bracesBalanced = hasBalancedBraces(pattern);
239
- let source = '';
240
- let depth = 0;
241
- let i = 0;
242
- while (i < pattern.length) {
243
- const char = pattern[i];
244
- if (char === '*') {
245
- let end = i;
246
- while (pattern[end] === '*')
247
- end += 1;
248
- const isGlobstar = end - i > 1;
249
- const atSegmentStart = i === 0 || pattern[i - 1] === '/';
250
- if (isGlobstar && atSegmentStart && pattern[end] === '/') {
251
- // Consume the following slash too: `a/**/b` has to match `a/b`.
252
- source += '(?:[^/]*/)*';
253
- i = end + 1;
254
- continue;
255
- }
256
- if (isGlobstar && atSegmentStart && end === pattern.length) {
257
- source += '.*';
258
- i = end;
259
- continue;
260
- }
261
- // `**` that is not a whole segment (`a**b`) cannot mean "cross
262
- // directories" without also matching `a/x/b`, which the pattern does not
263
- // say. Collapse it to a single-segment wildcard.
264
- source += '[^/]*';
265
- i = end;
266
- continue;
267
- }
268
- if (char === '?') {
269
- source += '[^/]';
270
- i += 1;
271
- continue;
272
- }
273
- if (bracesBalanced && char === '{') {
274
- depth += 1;
275
- source += '(?:';
276
- i += 1;
277
- continue;
278
- }
279
- if (bracesBalanced && char === '}' && depth > 0) {
280
- depth -= 1;
281
- source += ')';
282
- i += 1;
283
- continue;
284
- }
285
- if (bracesBalanced && char === ',' && depth > 0) {
286
- source += '|';
287
- i += 1;
288
- continue;
289
- }
290
- source += char.replace(/[.*+?^${}()|[\]\\]/, '\\$&');
291
- i += 1;
292
- }
293
- return new RegExp(`^${source}(?:/.*)?$`);
294
- }
295
- function hasBalancedBraces(pattern) {
296
- let depth = 0;
297
- for (const char of pattern) {
298
- if (char === '{')
299
- depth += 1;
300
- else if (char === '}') {
301
- depth -= 1;
302
- if (depth < 0)
303
- return false;
304
- }
305
- }
306
- return depth === 0;
307
- }
308
- function compilePattern(pattern) {
309
- return { pattern, regexp: globToRegExp(pattern) };
310
- }
311
- /**
312
- * A scope declaration compiled once per run.
313
- *
314
- * Compiling per pattern per file would rebuild the same regexes for every one of
315
- * potentially thousands of changed paths.
316
- */
317
- class ScopeMatcher {
318
- contractPath;
319
- allow;
320
- deny;
321
- /**
322
- * @param contractPath the contract's own path, exempted alongside
323
- * {@link ALWAYS_ALLOWED_PREFIX} for contracts kept outside `.commandmate/`
324
- */
325
- constructor(scope, contractPath = null) {
326
- this.contractPath = contractPath;
327
- this.allow = scope.allow.map(compilePattern);
328
- this.deny = scope.deny.map(compilePattern);
329
- }
330
- /**
331
- * Which declared rule decided `path`, and which way (#1841).
332
- *
333
- * The **first** matching pattern is reported, in the contract's declaration
334
- * order, on both sides. Reporting the last would name a rule the reader
335
- * cannot use: `allow: ["src/**", "src/lib/**"]` admits `src/lib/a.ts` under
336
- * the first entry, and deleting the second changes nothing about the verdict.
337
- *
338
- * `path` is a repository-root-relative POSIX path as git reports it.
339
- */
340
- classify(path) {
341
- const denied = this.deny.find((entry) => entry.regexp.test(path));
342
- if (denied)
343
- return { admitted: false, pattern: denied.pattern };
344
- if (path.startsWith(exports.ALWAYS_ALLOWED_PREFIX)) {
345
- return { admitted: true, pattern: exports.SCOPE_EXEMPT_ALWAYS_ALLOWED };
346
- }
347
- if (path === this.contractPath) {
348
- return { admitted: true, pattern: exports.SCOPE_EXEMPT_CONTRACT_PATH };
349
- }
350
- const allowed = this.allow.find((entry) => entry.regexp.test(path));
351
- return allowed
352
- ? { admitted: true, pattern: allowed.pattern }
353
- : { admitted: false, pattern: null };
354
- }
355
- /**
356
- * Whether `path` is a scope violation.
357
- *
358
- * Delegates to {@link classify} rather than repeating the rules: the verdict
359
- * and the evidence for it must never be able to disagree, and two copies of
360
- * "deny wins, then the exemptions, then allow" is exactly how they would.
361
- */
362
- isViolation(path) {
363
- return !this.classify(path).admitted;
364
- }
365
- }
366
- exports.ScopeMatcher = ScopeMatcher;
367
- // =============================================================================
368
179
  // Changed-path collection
369
180
  // =============================================================================
370
181
  /** Run a git plumbing command. No shell: every argument here is code-supplied. */
@@ -572,69 +383,6 @@ async function collectChangedPaths(worktreePath, baseRef) {
572
383
  // =============================================================================
573
384
  // Gate evaluation
574
385
  // =============================================================================
575
- function formatPatterns(patterns) {
576
- return patterns.length > 0 ? patterns.join(', ') : '(none)';
577
- }
578
- /**
579
- * One reported path, optionally naming the rule that decided it (#1841).
580
- *
581
- * Admitted paths lead with `+` rather than `-` so the two sections cannot be
582
- * confused by a reader — or by a grep — that has only one line in front of it.
583
- */
584
- function formatDecidedPath(marker, path, pattern) {
585
- if (pattern === null)
586
- return ` ${marker} ${path}`;
587
- return ` ${marker} ${path}${exports.SCOPE_PATTERN_ARROW}${pattern}`;
588
- }
589
- /**
590
- * The `admitted:` section: what this run was allowed to change, and by which
591
- * rule (#1841).
592
- *
593
- * With an `allow` of exact paths the pattern *is* the file and this adds
594
- * nothing, but #1546 made globs legal, and `src/**` leaves no record of what it
595
- * actually covered on the day it ran. The contract is the claim; this is the
596
- * evidence for it, and it has to survive in `log_tail` because the run's own
597
- * working tree will have moved on by the time anyone asks.
598
- *
599
- * Capped by the same rule as the violations, for the same reason (log_tail is
600
- * stored per gate in SQLite), and the truncation is stated rather than silent —
601
- * a list that stops at 100 with no marker reads as a complete one.
602
- */
603
- function formatAdmitted(admitted) {
604
- if (admitted.length === 0)
605
- return [];
606
- const listed = admitted.slice(0, exports.MAX_REPORTED_VIOLATIONS);
607
- const remainder = admitted.length - listed.length;
608
- return [
609
- 'admitted:',
610
- ...listed.map((entry) => formatDecidedPath('+', entry.path, entry.pattern)),
611
- // Worded `(+N more)` rather than the violations' `... and N more`: the two
612
- // sections are capped independently and a reader scanning a truncated
613
- // report should not have to work out which count belongs to which list.
614
- ...(remainder > 0 ? [` ... (+${remainder} more)`] : []),
615
- ];
616
- }
617
- /** The `excluded:` section naming agent-managed state files left out (#3126). */
618
- function formatAgentStateExcluded(excluded) {
619
- if (excluded.length === 0)
620
- return [];
621
- const listed = excluded.slice(0, exports.MAX_REPORTED_VIOLATIONS);
622
- const remainder = excluded.length - listed.length;
623
- return [
624
- 'excluded (agent-managed state files, not counted as change):',
625
- ...listed.map((path) => ` ~ ${path}`),
626
- ...(remainder > 0 ? [` ... (+${remainder} more)`] : []),
627
- ];
628
- }
629
- /** The `excluded:` section naming orchestrator-only committed paths (#3588). */
630
- function formatOrchestratorExcluded(excluded) {
631
- if (excluded.length === 0)
632
- return [];
633
- return [
634
- 'excluded (changed only by orchestrator commits, not counted as change):',
635
- ...excluded.map((path) => ` ~ ${path}`),
636
- ];
637
- }
638
386
  /**
639
387
  * Reasons the gate has nothing to judge, phrased for `log_tail`.
640
388
  *
@@ -688,7 +436,7 @@ async function evaluateScope(worktreePath, scope, requireScopeClean, baseRef, co
688
436
  const changed = await collectChangedPaths(worktreePath, baseRef);
689
437
  if ('error' in changed)
690
438
  return done('error', `scope: ${changed.error}`, null);
691
- const matcher = new ScopeMatcher(scope, contractPath);
439
+ const matcher = new scope_gate_glob_1.ScopeMatcher(scope, contractPath);
692
440
  // Every changed path is classified, whether or not it will fit in the report:
693
441
  // the cap below is a display rule, and a violation withheld from the listing
694
442
  // still counts toward the verdict.
@@ -707,18 +455,18 @@ async function evaluateScope(worktreePath, scope, requireScopeClean, baseRef, co
707
455
  }
708
456
  const summary = [
709
457
  `scope: baseRef=${baseRef} changed=${changed.paths.length} violations=${violations.length}`,
710
- `allow: ${formatPatterns(scope.allow)}`,
711
- `deny: ${formatPatterns(scope.deny)}`,
712
- ...formatAdmitted(admitted),
713
- ...formatAgentStateExcluded(changed.agentStateExcluded),
714
- ...formatOrchestratorExcluded(changed.orchestratorExcluded),
458
+ `allow: ${(0, scope_gate_format_1.formatPatterns)(scope.allow)}`,
459
+ `deny: ${(0, scope_gate_format_1.formatPatterns)(scope.deny)}`,
460
+ ...(0, scope_gate_format_1.formatAdmitted)(admitted),
461
+ ...(0, scope_gate_format_1.formatAgentStateExcluded)(changed.agentStateExcluded),
462
+ ...(0, scope_gate_format_1.formatOrchestratorExcluded)(changed.orchestratorExcluded),
715
463
  ].join('\n');
716
464
  if (violations.length === 0) {
717
465
  // An empty change set passes: work-evidence is the gate that judges "nothing
718
466
  // happened", and failing here too would report one problem as two.
719
467
  return done('passed', summary, 0);
720
468
  }
721
- const listed = violations.slice(0, exports.MAX_REPORTED_VIOLATIONS);
469
+ const listed = violations.slice(0, scope_gate_format_1.MAX_REPORTED_VIOLATIONS);
722
470
  const remainder = violations.length - listed.length;
723
471
  const report = [
724
472
  summary,
@@ -727,7 +475,7 @@ async function evaluateScope(worktreePath, scope, requireScopeClean, baseRef, co
727
475
  // contract declared, not which of those entries this path tripped, and a
728
476
  // violation the reader must revert reads differently from one they could
729
477
  // fix by widening `allow`.
730
- ...listed.map((path) => formatDecidedPath('-', path, rejectedBy.get(path) ?? null)),
478
+ ...listed.map((path) => (0, scope_gate_format_1.formatDecidedPath)('-', path, rejectedBy.get(path) ?? null)),
731
479
  ...(remainder > 0 ? [` ... and ${remainder} more`] : []),
732
480
  exports.SCOPE_ALLOW_GUIDANCE,
733
481
  ].join('\n');