commandmate 0.46.1 → 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 (711) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +223 -216
  3. package/.next/app-path-routes-manifest.json +19 -18
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +8 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update/route.js +4 -2
  13. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/capabilities/route.js +1 -1
  19. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/daily-summary/route.js +1 -1
  21. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  22. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  24. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  32. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  33. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  35. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  36. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  39. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/push/escalation/route.js +1 -7
  43. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  44. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/push/vapid/route.js +1 -7
  47. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  48. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  50. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  51. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/relays/route.js +1 -1
  53. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  54. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  58. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  59. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/clone/route.js +1 -1
  61. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  62. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/repositories/restore/route.js +1 -1
  65. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  66. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/route.js +1 -1
  68. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  69. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/repositories/scan/route.js +1 -1
  71. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  72. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/sync/route.js +1 -1
  74. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  75. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  78. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  79. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  96. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  99. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  102. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  107. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  110. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  113. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  118. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  149. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  152. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  162. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  165. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -0
  170. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -0
  171. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -0
  172. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  175. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  178. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  181. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
  193. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  205. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  208. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  225. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/worktrees/route.js +1 -1
  231. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  234. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  236. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  237. package/.next/server/app/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  241. package/.next/server/app/sessions/page.js +1 -1
  242. package/.next/server/app/sessions/page.js.nft.json +1 -1
  243. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  244. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  245. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  246. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  248. package/.next/server/app/worktrees/[id]/page.js +11 -11
  249. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  250. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  251. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  252. package/.next/server/app-paths-manifest.json +19 -18
  253. package/.next/server/chunks/1210.js +1 -1
  254. package/.next/server/chunks/1559.js +1 -1
  255. package/.next/server/chunks/1601.js +7 -0
  256. package/.next/server/chunks/1836.js +1 -0
  257. package/.next/server/chunks/1945.js +14 -0
  258. package/.next/server/chunks/2119.js +1 -1
  259. package/.next/server/chunks/2404.js +1 -1
  260. package/.next/server/chunks/2422.js +1 -0
  261. package/.next/server/chunks/2445.js +1 -1
  262. package/.next/server/chunks/2460.js +1 -1
  263. package/.next/server/chunks/2534.js +1 -1
  264. package/.next/server/chunks/3241.js +1 -1
  265. package/.next/server/chunks/{3077.js → 4194.js} +12 -12
  266. package/.next/server/chunks/4207.js +1 -1
  267. package/.next/server/chunks/4248.js +1 -1
  268. package/.next/server/chunks/5209.js +1 -1
  269. package/.next/server/chunks/5292.js +1 -1
  270. package/.next/server/chunks/5595.js +1 -1
  271. package/.next/server/chunks/5845.js +1 -1
  272. package/.next/server/chunks/6130.js +1 -1
  273. package/.next/server/chunks/6401.js +1 -1
  274. package/.next/server/chunks/{2283.js → 6486.js} +7 -7
  275. package/.next/server/chunks/6722.js +1 -1
  276. package/.next/server/chunks/6781.js +1 -1
  277. package/.next/server/chunks/6793.js +2 -2
  278. package/.next/server/chunks/7166.js +19 -0
  279. package/.next/server/chunks/7905.js +1 -1
  280. package/.next/server/chunks/8581.js +10 -10
  281. package/.next/server/chunks/8728.js +2 -2
  282. package/.next/server/chunks/8791.js +1 -1
  283. package/.next/server/chunks/8918.js +4 -4
  284. package/.next/server/chunks/9199.js +1 -0
  285. package/.next/server/chunks/936.js +1 -0
  286. package/.next/server/chunks/9390.js +1 -1
  287. package/.next/server/chunks/9540.js +1 -0
  288. package/.next/server/chunks/9627.js +1 -1
  289. package/.next/server/chunks/9731.js +3 -3
  290. package/.next/server/middleware-manifest.json +5 -5
  291. package/.next/server/pages/500.html +1 -1
  292. package/.next/server/server-reference-manifest.json +1 -1
  293. package/.next/static/chunks/{2407-9703c569370b8a9d.js → 2407-b2f524f99f7fc353.js} +1 -1
  294. package/.next/static/chunks/5371-a549a0d2c2044d41.js +1 -0
  295. package/.next/static/chunks/{5794-4eee51ff1e878aa6.js → 5794-80ac3f06f098ea29.js} +1 -1
  296. package/.next/static/chunks/602-1c1488959215e140.js +1 -0
  297. package/.next/static/chunks/9079-24f9fa549ed298f1.js +1 -0
  298. package/.next/static/chunks/app/api/agents/update/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  299. package/.next/static/chunks/app/api/agents/versions/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  300. package/.next/static/chunks/app/api/app/release-notes/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  301. package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +1 -0
  302. package/.next/static/chunks/app/api/app/update-check/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  303. package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +1 -0
  304. package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +1 -0
  305. package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +1 -0
  306. package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +1 -0
  307. package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +1 -0
  308. package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +1 -0
  309. package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +1 -0
  310. package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +1 -0
  311. package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +1 -0
  312. package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +1 -0
  313. package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +1 -0
  314. package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +1 -0
  315. package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +1 -0
  316. package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +1 -0
  317. package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +1 -0
  318. package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +1 -0
  319. package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +1 -0
  320. package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +1 -0
  321. package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +1 -0
  322. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +1 -0
  323. package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +1 -0
  324. package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +1 -0
  325. package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +1 -0
  326. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +1 -0
  327. package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +1 -0
  328. package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +1 -0
  329. package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +1 -0
  330. package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +1 -0
  331. package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +1 -0
  332. package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +1 -0
  333. package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +1 -0
  334. package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +1 -0
  335. package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +1 -0
  336. package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +1 -0
  337. package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +1 -0
  338. package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +1 -0
  339. package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +1 -0
  340. package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +1 -0
  341. package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +1 -0
  342. package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +1 -0
  343. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +1 -0
  344. package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +1 -0
  345. package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +1 -0
  346. package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +1 -0
  347. package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  348. package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +1 -0
  349. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +1 -0
  350. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +1 -0
  351. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +1 -0
  352. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +1 -0
  353. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +1 -0
  354. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +1 -0
  355. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +1 -0
  371. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +1 -0
  372. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +1 -0
  373. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +1 -0
  374. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +1 -0
  375. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +1 -0
  376. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +1 -0
  377. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +1 -0
  378. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +1 -0
  379. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +1 -0
  380. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +1 -0
  382. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +1 -0
  383. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +1 -0
  384. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +1 -0
  385. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +1 -0
  386. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +1 -0
  387. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +1 -0
  388. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +1 -0
  389. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +1 -0
  390. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +1 -0
  391. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +1 -0
  392. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +1 -0
  393. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +1 -0
  394. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +1 -0
  395. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +1 -0
  396. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +1 -0
  397. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +1 -0
  398. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +1 -0
  399. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +1 -0
  400. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +1 -0
  401. package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +1 -0
  402. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +1 -0
  403. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +1 -0
  404. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +1 -0
  405. package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +1 -0
  406. package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +1 -0
  407. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +1 -0
  408. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +1 -0
  409. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +1 -0
  410. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +1 -0
  434. package/.next/static/chunks/app/layout-419eaf7de340f4ab.js +1 -0
  435. package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +1 -0
  436. package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +1 -0
  437. package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +1 -0
  438. package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +1 -0
  439. package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +1 -0
  440. package/.next/trace +13 -13
  441. package/.next/types/app/api/worktrees/[id]/prompt-response/strict/route.ts +347 -0
  442. package/.next/types/routes.d.ts +2 -1
  443. package/.next/types/validator.ts +9 -0
  444. package/dist/cli/commands/auto-yes.d.ts +19 -0
  445. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  446. package/dist/cli/commands/auto-yes.js +45 -0
  447. package/dist/cli/commands/instances.d.ts.map +1 -1
  448. package/dist/cli/commands/instances.js +23 -18
  449. package/dist/cli/commands/ls.d.ts +15 -1
  450. package/dist/cli/commands/ls.d.ts.map +1 -1
  451. package/dist/cli/commands/ls.js +39 -3
  452. package/dist/cli/commands/prompt.d.ts +42 -0
  453. package/dist/cli/commands/prompt.d.ts.map +1 -0
  454. package/dist/cli/commands/prompt.js +211 -0
  455. package/dist/cli/commands/relays.d.ts.map +1 -1
  456. package/dist/cli/commands/relays.js +13 -1
  457. package/dist/cli/commands/respond-strict.d.ts +31 -0
  458. package/dist/cli/commands/respond-strict.d.ts.map +1 -0
  459. package/dist/cli/commands/respond-strict.js +214 -0
  460. package/dist/cli/commands/respond.d.ts.map +1 -1
  461. package/dist/cli/commands/respond.js +38 -0
  462. package/dist/cli/commands/send.d.ts.map +1 -1
  463. package/dist/cli/commands/send.js +41 -5
  464. package/dist/cli/commands/start.d.ts.map +1 -1
  465. package/dist/cli/commands/start.js +2 -1
  466. package/dist/cli/commands/status.d.ts.map +1 -1
  467. package/dist/cli/commands/status.js +18 -0
  468. package/dist/cli/commands/wait.d.ts +21 -1
  469. package/dist/cli/commands/wait.d.ts.map +1 -1
  470. package/dist/cli/commands/wait.js +108 -12
  471. package/dist/cli/docs/agent-operations.d.ts +1 -1
  472. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  473. package/dist/cli/docs/agent-operations.js +63 -1
  474. package/dist/cli/program.d.ts.map +1 -1
  475. package/dist/cli/program.js +6 -2
  476. package/dist/cli/types/api-responses.d.ts +54 -0
  477. package/dist/cli/types/api-responses.d.ts.map +1 -1
  478. package/dist/cli/types/index.d.ts +30 -0
  479. package/dist/cli/types/index.d.ts.map +1 -1
  480. package/dist/cli/types/index.js +12 -1
  481. package/dist/cli/utils/api-client.d.ts +13 -1
  482. package/dist/cli/utils/api-client.d.ts.map +1 -1
  483. package/dist/cli/utils/api-client.js +10 -2
  484. package/dist/cli/utils/daemon-factory.d.ts.map +1 -1
  485. package/dist/cli/utils/daemon-factory.js +3 -1
  486. package/dist/cli/utils/daemon.d.ts +38 -1
  487. package/dist/cli/utils/daemon.d.ts.map +1 -1
  488. package/dist/cli/utils/daemon.js +161 -8
  489. package/dist/cli/utils/paths.d.ts +12 -0
  490. package/dist/cli/utils/paths.d.ts.map +1 -1
  491. package/dist/cli/utils/paths.js +17 -0
  492. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +43 -1
  493. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
  494. package/dist/lib/polling/auto-yes-suppression-reason.js +18 -1
  495. package/dist/lib/prompt-observation/kinds.d.ts +101 -0
  496. package/dist/lib/prompt-observation/kinds.d.ts.map +1 -0
  497. package/dist/lib/prompt-observation/kinds.js +123 -0
  498. package/dist/lib/prompt-observation/types.d.ts +271 -0
  499. package/dist/lib/prompt-observation/types.d.ts.map +1 -0
  500. package/dist/lib/prompt-observation/types.js +14 -0
  501. package/dist/lib/session/send-attempt-types.d.ts +66 -0
  502. package/dist/lib/session/send-attempt-types.d.ts.map +1 -0
  503. package/dist/lib/session/send-attempt-types.js +17 -0
  504. package/dist/server/locales/en/worktree.json +4 -0
  505. package/dist/server/locales/ja/worktree.json +4 -0
  506. package/dist/server/server.js +20 -1
  507. package/dist/server/src/config/auto-yes-config.js +11 -0
  508. package/dist/server/src/lib/auto-yes-lifecycle.js +28 -2
  509. package/dist/server/src/lib/auto-yes-poller.js +345 -28
  510. package/dist/server/src/lib/auto-yes-shutdown-record.js +257 -0
  511. package/dist/server/src/lib/auto-yes-state.js +197 -4
  512. package/dist/server/src/lib/cli-tools/antigravity-startup-trust.js +135 -0
  513. package/dist/server/src/lib/cli-tools/antigravity.js +162 -29
  514. package/dist/server/src/lib/cli-tools/command-code.js +10 -2
  515. package/dist/server/src/lib/cli-tools/copilot.js +21 -10
  516. package/dist/server/src/lib/cli-tools/gemini.js +60 -13
  517. package/dist/server/src/lib/cli-tools/launch-dialog.js +203 -0
  518. package/dist/server/src/lib/cli-tools/launch-window.js +96 -0
  519. package/dist/server/src/lib/detection/selection-shape.js +35 -1
  520. package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -9
  521. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +88 -1
  522. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +41 -1
  523. package/dist/server/src/lib/detection/tools/claude/detect.js +60 -0
  524. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +63 -13
  525. package/dist/server/src/lib/detection/tools/copilot/patterns.js +7 -1
  526. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +11 -2
  527. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +5 -3
  528. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +15 -0
  529. package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +281 -0
  530. package/dist/server/src/lib/polling/auto-yes-confirm-page.js +56 -0
  531. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +8 -1
  532. package/dist/server/src/lib/polling/auto-yes-policy.js +61 -7
  533. package/dist/server/src/lib/polling/auto-yes-poller-stop-reason.js +50 -0
  534. package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +220 -5
  535. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +18 -1
  536. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +10 -0
  537. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +2 -2
  538. package/dist/server/src/lib/polling/response-checker.js +9 -0
  539. package/dist/server/src/lib/polling/response-poller-core.js +136 -104
  540. package/dist/server/src/lib/prompt-observation/kinds.js +123 -0
  541. package/dist/server/src/lib/prompt-observation/types.js +14 -0
  542. package/dist/server/src/lib/push/prompt-push-gate.js +195 -3
  543. package/dist/server/src/lib/push/waiting-push-notifier.js +74 -7
  544. package/dist/server/src/lib/relay/relay-delivery-claims.js +46 -0
  545. package/dist/server/src/lib/relay/relay-delivery.js +76 -30
  546. package/dist/server/src/lib/schedule-manager.js +28 -0
  547. package/dist/server/src/lib/session/cli-session.js +38 -3
  548. package/dist/server/src/lib/session/send-attempt-state.js +155 -0
  549. package/dist/server/src/lib/session/send-attempt-types.js +17 -0
  550. package/dist/server/src/lib/session/send-user-message.js +46 -0
  551. package/dist/server/src/lib/session/worktree-session-reconcile.js +2 -1
  552. package/dist/server/src/lib/tmux/session-created-signal.js +76 -0
  553. package/dist/server/src/lib/tmux/tmux-capture-cache.js +58 -6
  554. package/dist/server/src/lib/tmux/tmux.js +4 -0
  555. package/dist/server/src/lib/verification/scope-gate-format.js +100 -0
  556. package/dist/server/src/lib/verification/scope-gate-glob.js +185 -0
  557. package/dist/server/src/lib/verification/scope-gate.js +19 -271
  558. package/dist/server/src/lib/ws-server.js +48 -6
  559. package/docs/en/user-guide/cli-setup-guide.md +12 -1
  560. package/docs/en/user-guide/webapp-guide.md +2 -0
  561. package/package.json +1 -1
  562. package/release-notes/0.47.0.json +118 -0
  563. package/.next/server/chunks/1789.js +0 -1
  564. package/.next/server/chunks/2908.js +0 -1
  565. package/.next/server/chunks/2984.js +0 -25
  566. package/.next/server/chunks/3718.js +0 -1
  567. package/.next/server/chunks/4837.js +0 -14
  568. package/.next/server/chunks/611.js +0 -1
  569. package/.next/server/chunks/850.js +0 -1
  570. package/.next/static/chunks/3201-c01f1feed69020e6.js +0 -1
  571. package/.next/static/chunks/5371-0dc947683e46e78c.js +0 -1
  572. package/.next/static/chunks/602-25e45a2422d2a3ea.js +0 -1
  573. package/.next/static/chunks/app/api/app/update/route-0468c3c4baa46028.js +0 -1
  574. package/.next/static/chunks/app/api/auth/login/route-0468c3c4baa46028.js +0 -1
  575. package/.next/static/chunks/app/api/auth/logout/route-0468c3c4baa46028.js +0 -1
  576. package/.next/static/chunks/app/api/auth/status/route-0468c3c4baa46028.js +0 -1
  577. package/.next/static/chunks/app/api/capabilities/route-0468c3c4baa46028.js +0 -1
  578. package/.next/static/chunks/app/api/daily-summary/route-0468c3c4baa46028.js +0 -1
  579. package/.next/static/chunks/app/api/daily-summary/status/route-0468c3c4baa46028.js +0 -1
  580. package/.next/static/chunks/app/api/external-apps/[id]/health/route-0468c3c4baa46028.js +0 -1
  581. package/.next/static/chunks/app/api/external-apps/[id]/route-0468c3c4baa46028.js +0 -1
  582. package/.next/static/chunks/app/api/external-apps/route-0468c3c4baa46028.js +0 -1
  583. package/.next/static/chunks/app/api/fs/browse/route-0468c3c4baa46028.js +0 -1
  584. package/.next/static/chunks/app/api/fs/recent-paths/route-0468c3c4baa46028.js +0 -1
  585. package/.next/static/chunks/app/api/hooks/agent-event/route-0468c3c4baa46028.js +0 -1
  586. package/.next/static/chunks/app/api/hooks/claude-done/route-0468c3c4baa46028.js +0 -1
  587. package/.next/static/chunks/app/api/hooks/permission-request/route-0468c3c4baa46028.js +0 -1
  588. package/.next/static/chunks/app/api/metrics/vibe/route-0468c3c4baa46028.js +0 -1
  589. package/.next/static/chunks/app/api/ollama/models/route-0468c3c4baa46028.js +0 -1
  590. package/.next/static/chunks/app/api/push/escalation/route-0468c3c4baa46028.js +0 -1
  591. package/.next/static/chunks/app/api/push/subscriptions/route-0468c3c4baa46028.js +0 -1
  592. package/.next/static/chunks/app/api/push/vapid/route-0468c3c4baa46028.js +0 -1
  593. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-0468c3c4baa46028.js +0 -1
  594. package/.next/static/chunks/app/api/relays/route-0468c3c4baa46028.js +0 -1
  595. package/.next/static/chunks/app/api/remote/pair/route-0468c3c4baa46028.js +0 -1
  596. package/.next/static/chunks/app/api/repositories/[id]/route-0468c3c4baa46028.js +0 -1
  597. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-0468c3c4baa46028.js +0 -1
  598. package/.next/static/chunks/app/api/repositories/clone/route-0468c3c4baa46028.js +0 -1
  599. package/.next/static/chunks/app/api/repositories/excluded/route-0468c3c4baa46028.js +0 -1
  600. package/.next/static/chunks/app/api/repositories/restore/route-0468c3c4baa46028.js +0 -1
  601. package/.next/static/chunks/app/api/repositories/route-0468c3c4baa46028.js +0 -1
  602. package/.next/static/chunks/app/api/repositories/scan/route-0468c3c4baa46028.js +0 -1
  603. package/.next/static/chunks/app/api/repositories/sync/route-0468c3c4baa46028.js +0 -1
  604. package/.next/static/chunks/app/api/repositories/validate-path/route-0468c3c4baa46028.js +0 -1
  605. package/.next/static/chunks/app/api/settings/default-agents/route-0468c3c4baa46028.js +0 -1
  606. package/.next/static/chunks/app/api/settings/default-surface-mode/route-0468c3c4baa46028.js +0 -1
  607. package/.next/static/chunks/app/api/sidebar/group-order/route-0468c3c4baa46028.js +0 -1
  608. package/.next/static/chunks/app/api/skills/[id]/route-0468c3c4baa46028.js +0 -1
  609. package/.next/static/chunks/app/api/skills/installations/route-0468c3c4baa46028.js +0 -1
  610. package/.next/static/chunks/app/api/skills/operations/route-0468c3c4baa46028.js +0 -1
  611. package/.next/static/chunks/app/api/skills/reindex/route-0468c3c4baa46028.js +0 -1
  612. package/.next/static/chunks/app/api/skills/route-0468c3c4baa46028.js +0 -1
  613. package/.next/static/chunks/app/api/slash-commands/route-0468c3c4baa46028.js +0 -1
  614. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-0468c3c4baa46028.js +0 -1
  615. package/.next/static/chunks/app/api/tasks/[taskId]/route-0468c3c4baa46028.js +0 -1
  616. package/.next/static/chunks/app/api/templates/[id]/route-0468c3c4baa46028.js +0 -1
  617. package/.next/static/chunks/app/api/templates/route-0468c3c4baa46028.js +0 -1
  618. package/.next/static/chunks/app/api/verification/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  619. package/.next/static/chunks/app/api/verification/runs/route-0468c3c4baa46028.js +0 -1
  620. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-0468c3c4baa46028.js +0 -1
  621. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-0468c3c4baa46028.js +0 -1
  622. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-0468c3c4baa46028.js +0 -1
  623. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-0468c3c4baa46028.js +0 -1
  624. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-0468c3c4baa46028.js +0 -1
  625. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-0468c3c4baa46028.js +0 -1
  626. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-0468c3c4baa46028.js +0 -1
  627. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-0468c3c4baa46028.js +0 -1
  628. package/.next/static/chunks/app/api/worktrees/[id]/env/route-0468c3c4baa46028.js +0 -1
  629. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-0468c3c4baa46028.js +0 -1
  630. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-0468c3c4baa46028.js +0 -1
  631. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-0468c3c4baa46028.js +0 -1
  632. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-0468c3c4baa46028.js +0 -1
  633. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-0468c3c4baa46028.js +0 -1
  634. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-0468c3c4baa46028.js +0 -1
  635. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-0468c3c4baa46028.js +0 -1
  636. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-0468c3c4baa46028.js +0 -1
  637. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-0468c3c4baa46028.js +0 -1
  638. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-0468c3c4baa46028.js +0 -1
  639. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-0468c3c4baa46028.js +0 -1
  640. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-0468c3c4baa46028.js +0 -1
  641. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-0468c3c4baa46028.js +0 -1
  642. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-0468c3c4baa46028.js +0 -1
  643. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-0468c3c4baa46028.js +0 -1
  644. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-0468c3c4baa46028.js +0 -1
  645. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-0468c3c4baa46028.js +0 -1
  646. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-0468c3c4baa46028.js +0 -1
  647. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-0468c3c4baa46028.js +0 -1
  648. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-0468c3c4baa46028.js +0 -1
  649. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-0468c3c4baa46028.js +0 -1
  650. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-0468c3c4baa46028.js +0 -1
  651. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-0468c3c4baa46028.js +0 -1
  652. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-0468c3c4baa46028.js +0 -1
  653. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-0468c3c4baa46028.js +0 -1
  654. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-0468c3c4baa46028.js +0 -1
  655. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-0468c3c4baa46028.js +0 -1
  656. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-0468c3c4baa46028.js +0 -1
  657. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-0468c3c4baa46028.js +0 -1
  658. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-0468c3c4baa46028.js +0 -1
  659. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-0468c3c4baa46028.js +0 -1
  660. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-0468c3c4baa46028.js +0 -1
  661. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-0468c3c4baa46028.js +0 -1
  662. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-0468c3c4baa46028.js +0 -1
  663. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-0468c3c4baa46028.js +0 -1
  664. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-0468c3c4baa46028.js +0 -1
  665. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-0468c3c4baa46028.js +0 -1
  666. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-0468c3c4baa46028.js +0 -1
  667. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-0468c3c4baa46028.js +0 -1
  668. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-0468c3c4baa46028.js +0 -1
  669. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-0468c3c4baa46028.js +0 -1
  670. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-0468c3c4baa46028.js +0 -1
  671. package/.next/static/chunks/app/api/worktrees/[id]/route-0468c3c4baa46028.js +0 -1
  672. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-0468c3c4baa46028.js +0 -1
  673. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-0468c3c4baa46028.js +0 -1
  674. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-0468c3c4baa46028.js +0 -1
  675. package/.next/static/chunks/app/api/worktrees/[id]/search/route-0468c3c4baa46028.js +0 -1
  676. package/.next/static/chunks/app/api/worktrees/[id]/send/route-0468c3c4baa46028.js +0 -1
  677. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-0468c3c4baa46028.js +0 -1
  678. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-0468c3c4baa46028.js +0 -1
  679. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-0468c3c4baa46028.js +0 -1
  680. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-0468c3c4baa46028.js +0 -1
  681. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-0468c3c4baa46028.js +0 -1
  682. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-0468c3c4baa46028.js +0 -1
  683. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-0468c3c4baa46028.js +0 -1
  684. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-0468c3c4baa46028.js +0 -1
  685. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-0468c3c4baa46028.js +0 -1
  686. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-0468c3c4baa46028.js +0 -1
  687. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-0468c3c4baa46028.js +0 -1
  688. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-0468c3c4baa46028.js +0 -1
  689. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-0468c3c4baa46028.js +0 -1
  690. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-0468c3c4baa46028.js +0 -1
  691. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-0468c3c4baa46028.js +0 -1
  692. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-0468c3c4baa46028.js +0 -1
  693. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-0468c3c4baa46028.js +0 -1
  694. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-0468c3c4baa46028.js +0 -1
  695. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-0468c3c4baa46028.js +0 -1
  696. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-0468c3c4baa46028.js +0 -1
  697. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-0468c3c4baa46028.js +0 -1
  698. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-0468c3c4baa46028.js +0 -1
  699. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  700. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-0468c3c4baa46028.js +0 -1
  701. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-0468c3c4baa46028.js +0 -1
  702. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-0468c3c4baa46028.js +0 -1
  703. package/.next/static/chunks/app/api/worktrees/route-0468c3c4baa46028.js +0 -1
  704. package/.next/static/chunks/app/layout-3e357690446cd2da.js +0 -1
  705. package/.next/static/chunks/app/manifest.webmanifest/route-0468c3c4baa46028.js +0 -1
  706. package/.next/static/chunks/app/proxy/[...path]/route-0468c3c4baa46028.js +0 -1
  707. package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +0 -1
  708. package/.next/static/chunks/app/worktrees/[id]/layout-0468c3c4baa46028.js +0 -1
  709. package/.next/static/chunks/app/worktrees/[id]/page-effbf0796881dd5a.js +0 -1
  710. /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → b5BiQC9F6r_XFPdA9cuSj}/_buildManifest.js +0 -0
  711. /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → b5BiQC9F6r_XFPdA9cuSj}/_ssgManifest.js +0 -0
@@ -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');
@@ -502,6 +502,7 @@ function setupWebSocket(server, options) {
502
502
  ws,
503
503
  worktreeIds: new Set(),
504
504
  terminalSubscription: null,
505
+ terminalSubscriptionSeq: 0,
505
506
  isAlive: true,
506
507
  };
507
508
  clients.set(ws, clientInfo);
@@ -733,6 +734,9 @@ function handleDisconnect(ws) {
733
734
  }
734
735
  }
735
736
  });
737
+ // Issue #3733: a subscribe still in flight finds this moved and releases
738
+ // what it obtains instead of registering it on a socket that is gone.
739
+ clientInfo.terminalSubscriptionSeq += 1;
736
740
  if (clientInfo.terminalSubscription) {
737
741
  void clientInfo.terminalSubscription.unsubscribe();
738
742
  clientInfo.terminalSubscription = null;
@@ -779,14 +783,25 @@ async function handleTerminalSubscribe(ws, message) {
779
783
  });
780
784
  return;
781
785
  }
782
- if (clientInfo.terminalSubscription) {
783
- await clientInfo.terminalSubscription.unsubscribe();
786
+ // Issue #3733: from here on this request is the one the socket wants; every
787
+ // await below is followed by a look at whether it still is.
788
+ const seq = ++clientInfo.terminalSubscriptionSeq;
789
+ const isCurrent = () => clients.get(ws) === clientInfo && clientInfo.terminalSubscriptionSeq === seq;
790
+ const previous = clientInfo.terminalSubscription;
791
+ if (previous) {
792
+ // Detached before the await, so a request arriving meanwhile neither
793
+ // releases it a second time nor has its own registration cleared by ours.
784
794
  clientInfo.terminalSubscription = null;
795
+ await previous.unsubscribe();
785
796
  }
797
+ if (!isCurrent())
798
+ return;
786
799
  const sessionName = (0, session_name_1.resolveSessionName)(cliToolId, worktreeId);
787
800
  // Issue #2865: never stream a same-named session another CommandMate server
788
801
  // created (its `#{session_path}` is not this worktree's directory).
789
802
  const ownership = await (0, session_ownership_1.checkSessionOwnership)(sessionName, worktree.path);
803
+ if (!isCurrent())
804
+ return;
790
805
  if (ownership.verdict === 'foreign') {
791
806
  sendTerminalEvent(ws, {
792
807
  type: 'terminal_error',
@@ -806,6 +821,8 @@ async function handleTerminalSubscribe(ws, message) {
806
821
  const startedAt = Date.now();
807
822
  const subscription = await transport.subscribe(sessionName, {
808
823
  onOutput: (data) => {
824
+ if (!isCurrent())
825
+ return;
809
826
  if (!firstOutputObserved) {
810
827
  firstOutputObserved = true;
811
828
  (0, tmux_control_mode_metrics_1.observeTmuxControlFirstOutputLatency)(Date.now() - startedAt);
@@ -813,6 +830,8 @@ async function handleTerminalSubscribe(ws, message) {
813
830
  sendTerminalEvent(ws, { type: 'terminal_output', data });
814
831
  },
815
832
  onExit: ({ exitCode }) => {
833
+ if (!isCurrent())
834
+ return;
816
835
  sendTerminalEvent(ws, { type: 'terminal_exit', exitCode });
817
836
  },
818
837
  onError: (error) => {
@@ -825,7 +844,9 @@ async function handleTerminalSubscribe(ws, message) {
825
844
  const snapshot = await transport.captureSnapshot(sessionName, {
826
845
  startLine: TERMINAL_FALLBACK_CAPTURE_LINES,
827
846
  });
828
- if (snapshot.length > 0) {
847
+ // Issue #3733: the reads above awaited; a subscription released
848
+ // or replaced meanwhile has nothing left to say to this socket.
849
+ if (snapshot.length > 0 && isCurrent()) {
829
850
  sendTerminalEvent(ws, {
830
851
  type: 'terminal_output',
831
852
  data: snapshot,
@@ -837,6 +858,8 @@ async function handleTerminalSubscribe(ws, message) {
837
858
  catch {
838
859
  // Best-effort snapshot fallback. The original control-mode error is still reported.
839
860
  }
861
+ if (!isCurrent())
862
+ return;
840
863
  sendTerminalEvent(ws, {
841
864
  type: 'terminal_error',
842
865
  error: error.message,
@@ -845,6 +868,17 @@ async function handleTerminalSubscribe(ws, message) {
845
868
  })();
846
869
  },
847
870
  });
871
+ if (!isCurrent()) {
872
+ // Disconnected, unsubscribed or superseded while subscribing: nobody else
873
+ // holds this handle, so release it now or the registry keeps it forever.
874
+ try {
875
+ await subscription.unsubscribe();
876
+ }
877
+ catch {
878
+ // Best-effort cleanup of a subscription nobody wants.
879
+ }
880
+ return;
881
+ }
848
882
  clientInfo.terminalSubscription = {
849
883
  worktreeId,
850
884
  cliToolId,
@@ -934,16 +968,23 @@ async function runTerminalResize(ws, message) {
934
968
  }
935
969
  async function handleTerminalUnsubscribe(ws) {
936
970
  const clientInfo = clients.get(ws);
937
- if (!clientInfo?.terminalSubscription) {
971
+ if (!clientInfo)
972
+ return;
973
+ // Issue #3733: also withdraws a subscribe still in flight, which would
974
+ // otherwise register after this and keep streaming.
975
+ clientInfo.terminalSubscriptionSeq += 1;
976
+ const subscription = clientInfo.terminalSubscription;
977
+ if (!subscription) {
938
978
  return;
939
979
  }
980
+ // Detached before the await so a subscribe arriving meanwhile is not cleared.
981
+ clientInfo.terminalSubscription = null;
940
982
  try {
941
- await clientInfo.terminalSubscription.unsubscribe();
983
+ await subscription.unsubscribe();
942
984
  }
943
985
  catch {
944
986
  // Best-effort cleanup during terminal unsubscribe.
945
987
  }
946
- clientInfo.terminalSubscription = null;
947
988
  sendTerminalEvent(ws, { type: 'terminal_status', connected: false });
948
989
  }
949
990
  // ---------------------------------------------------------------------------
@@ -1281,6 +1322,7 @@ exports.__internal = {
1281
1322
  ws,
1282
1323
  worktreeIds: new Set(),
1283
1324
  terminalSubscription: null,
1325
+ terminalSubscriptionSeq: 0,
1284
1326
  isAlive,
1285
1327
  });
1286
1328
  },
@@ -404,6 +404,8 @@ commandmate status [options]
404
404
  | `-i, --issue <number>` | Show status for a specific issue worktree (Issue #136) |
405
405
  | `-a, --all` | Show status for all servers (main + worktrees) |
406
406
 
407
+ For a running server (or one with a stale PID file) it also prints a `Log:` line with the file `start --daemon` writes the server's output to.
408
+
407
409
  ### commandmate update
408
410
 
409
411
  Update CommandMate to the latest version (stop -> `npm install -g commandmate@latest` -> restart).
@@ -532,10 +534,19 @@ commandmate status
532
534
  commandmate stop --force
533
535
  commandmate start --daemon
534
536
 
535
- # Check logs (in config directory)
537
+ # Check logs (in config directory; commandmate status also prints the path on its Log: line)
536
538
  tail -f ~/.commandmate/logs/server.log
539
+ # a parallel server started with --issue 135 has its own file
540
+ tail -f ~/.commandmate/logs/server-135.log
537
541
  ```
538
542
 
543
+ `commandmate start --daemon` (and `commandmate update`, which restarts through it) appends the server's stdout and stderr to `logs/server.log` in the config directory (`logs/server-<N>.log` for an `--issue <N>` server). The file is owner-only (0600), and so are the rotated `server.log.1` and later generations (an existing 0640 file written by `scripts/start.sh` is tightened to 0600 when the CLI daemon opens or rotates it). Each start writes a separator line (`=== <timestamp> commandmate start --daemon ... ===`).
544
+
545
+ - **Rotation**: at start, a log of 10MB or more is moved to `server.log.1`, shifting older generations to `.2` and `.3` (three generations kept, the same approach as `scripts/build-and-start.sh`). It is not rotated while the server runs, so a long-running server's log can grow past 10MB.
546
+ - If the log file cannot be opened (the directory cannot be created, a symbolic link is in the way, etc.), a warning is printed and the server starts with its output discarded.
547
+ - `CM_LOG_DIR` does not move this file (`CM_LOG_DIR` is a separate setting, used by the server for conversation logs and by the CLI for its security log).
548
+ - A foreground start (`commandmate start`) prints to the terminal only and does not write this file.
549
+
539
550
  ### Dependency Errors
540
551
 
541
552
  ```bash
@@ -268,6 +268,7 @@ See [Agent event hooks](./agent-event-hooks.md) for the per-route technical deta
268
268
  - Important changes (file deletions, etc.) are also auto-approved, so use with caution
269
269
  - You can disable it by turning off the toggle
270
270
  - Auto Yes automatically turns OFF after the selected duration
271
+ - **When the server restarts (`/rebuild`, `commandmate stop`, etc.), an active Auto Yes is turned OFF and does not come back.** The affected instance shows **"Released by restart"** (「再起動で解除」 in the Japanese UI). The label stays until the original grant's deadline, and disappears when you turn the toggle on again or turn it off manually (it is not shown after SIGKILL or a crash). A manual OFF or an expiry does not show it
271
272
  - **Security best practices**:
272
273
  - Select the **minimum time** needed for your work (1 hour recommended when in doubt)
273
274
  - Limit `CM_ROOT_DIR` to the target worktree directory
@@ -499,6 +500,7 @@ that kind of screen directly under it. You answer it without leaving chat.
499
500
  | A selection list is open | Arrow keys plus Enter / Esc. Depending on the screen, number keys or "This session only" / "Set as default" are added (see "The buttons a selection list gets" below) |
500
501
  | A screen nothing could classify | Arrows and Esc (Navigate) plus the digits 1-9, y / n and Enter |
501
502
  | Waiting, with options nobody could read | The digits 1-9, y / n and Enter |
503
+ | Trust confirmation (agy) | The banner reads "Terminal action needed (trust confirmation). The agent will not continue until you answer whether to trust this folder, and Auto-Yes does not answer this screen. Pick with the arrows and press Enter, or answer it in the terminal." You can send the arrows and Enter from here |
502
504
 
503
505
  **Press the number or y/n while reading the card.** Enter confirms whatever the CLI has
504
506
  currently highlighted, so on a numbered dialog an Enter meant as "no" can land as an
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "commandmate",
3
- "version": "0.46.1",
3
+ "version": "0.47.0",
4
4
  "description": "No long blocks of time? Run an AI team from your phone. Git worktree sessions, task contracts and verification gates for Claude Code, Codex, Gemini CLI, Copilot, OpenCode, Antigravity and Command Code.",
5
5
  "keywords": [
6
6
  "ai-agents",
@@ -0,0 +1,118 @@
1
+ {
2
+ "version": "0.47.0",
3
+ "date": "2026-10-21",
4
+ "highlight": {
5
+ "ja": "Auto-Yes が答えずに止まった確認を、CLI から画面を確かめたうえで直接答えられるようになりました。あわせて、Auto-Yes が答えてはいけない画面に答えたり、答えずに止まったりする問題を多数直しました。",
6
+ "en": "You can now answer a prompt that Auto-Yes left waiting directly from the CLI, after checking the screen. Many issues where Auto-Yes answered the wrong screen or stopped without answering are also fixed."
7
+ },
8
+ "added": [
9
+ {
10
+ "ja": "止まっている画面を CLI から 1 回観測して、種類・質問・選択肢を確かめられる commandmate prompt を追加しました。",
11
+ "en": "Added commandmate prompt, which observes a waiting screen once so you can check its kind, question and choices from the CLI."
12
+ },
13
+ {
14
+ "ja": "観測した画面にだけ答える厳格な respond を追加しました。画面が変わっていれば何も送りません。",
15
+ "en": "Added a strict respond mode that answers only the screen you observed, and sends nothing if the screen has changed."
16
+ },
17
+ {
18
+ "ja": "直前の送信が「未送信・送信済み・不確定」のどれかを、prompt の出力と送信の失敗メッセージで確かめられるようになりました。",
19
+ "en": "The prompt output and send error messages now tell you whether the last message was not sent, sent, or indeterminate."
20
+ },
21
+ {
22
+ "ja": "Codex の /config をスラッシュコマンドの一覧に追加しました。",
23
+ "en": "Added Codex's /config to the slash command list."
24
+ }
25
+ ],
26
+ "improved": [
27
+ {
28
+ "ja": "サーバーの再起動で外れた Auto-Yes を「再起動で解除」と表示するようになりました。",
29
+ "en": "Auto-Yes that was turned off by a server restart is now shown as Released by restart."
30
+ },
31
+ {
32
+ "ja": "契約で Auto-Yes が止められているとき、有効化の時点と一覧・画面でそのことが分かるようになりました。",
33
+ "en": "When a contract stops Auto-Yes, this is now shown when you enable it and in the lists and screens."
34
+ },
35
+ {
36
+ "ja": "Antigravity の信頼の確認で止まっているとき、画面に「端末で操作が必要」と表示するようになりました。",
37
+ "en": "When Antigravity is waiting on its folder trust prompt, the screen now says the terminal needs your input."
38
+ },
39
+ {
40
+ "ja": "start --daemon で起動したサーバーの出力を logs/server.log に残すようになりました。",
41
+ "en": "A server started with start --daemon now keeps its output in logs/server.log."
42
+ }
43
+ ],
44
+ "fixed": [
45
+ {
46
+ "ja": "Antigravity のログイン方法の画面や、表示が切れた許可の画面に、Auto-Yes が番号で答えうる問題を直しました。",
47
+ "en": "Fixed Auto-Yes possibly answering Antigravity's login method screen, or a cut-off permission screen, with a number."
48
+ },
49
+ {
50
+ "ja": "Antigravity の確認に Auto-Yes が答えないまま長時間止まることがある問題を直しました。",
51
+ "en": "Fixed Auto-Yes sometimes leaving an Antigravity prompt unanswered for a long time."
52
+ },
53
+ {
54
+ "ja": "Antigravity で答えた確認が画面に残り続けたとき、Auto-Yes が理由を残さずに黙る問題を直しました。",
55
+ "en": "Fixed Auto-Yes going silent without a reason when an answered Antigravity prompt stayed on screen."
56
+ },
57
+ {
58
+ "ja": "厳格な respond で、Antigravity の許可の確認のカーソル以外の選択肢を選べるようになりました。",
59
+ "en": "Strict respond can now choose options other than the highlighted one on Antigravity's permission prompt."
60
+ },
61
+ {
62
+ "ja": "厳格な respond で信頼の確認に No, exit と答えたとき、終了を正しく読み取るようになりました。",
63
+ "en": "Strict respond now correctly reports the session ending after answering No, exit on the trust prompt."
64
+ },
65
+ {
66
+ "ja": "Antigravity のターミナル画面が黒く見える問題を直しました。",
67
+ "en": "Fixed the Antigravity terminal view appearing blank."
68
+ },
69
+ {
70
+ "ja": "Submit と Cancel の確認画面に、Auto-Yes が答えないようにしました。",
71
+ "en": "Auto-Yes no longer answers Submit and Cancel confirmation pages."
72
+ },
73
+ {
74
+ "ja": "Gemini と Antigravity の起動時の信頼の確認を、安全な選択肢のときだけ通し、Auto-Yes と二重に答えないようにしました。",
75
+ "en": "Gemini and Antigravity startup trust prompts are now confirmed only on the safe option, and never answered twice with Auto-Yes."
76
+ },
77
+ {
78
+ "ja": "Copilot の信頼の確認に、Auto-Yes の入力がメッセージとして送られることがある問題を直しました。",
79
+ "en": "Fixed Auto-Yes input sometimes being sent as a message on Copilot's folder trust prompt."
80
+ },
81
+ {
82
+ "ja": "Antigravity の起動の後に出た信頼の確認が処理されず、通知も出ない問題を直しました。",
83
+ "en": "Fixed an Antigravity trust prompt shown after startup going unhandled without a notification."
84
+ },
85
+ {
86
+ "ja": "Auto-Yes が答える前に、答えていないという通知が誤って出ることがある問題を直しました。",
87
+ "en": "Fixed a not-answered notification sometimes being shown before Auto-Yes had a chance to answer."
88
+ },
89
+ {
90
+ "ja": "契約が止めた確認について、hooks の設定が原因であるかのような案内が出る問題を直しました。",
91
+ "en": "Fixed a hint that blamed the hooks setup for a prompt that a contract had stopped."
92
+ },
93
+ {
94
+ "ja": "再起動で解除された Auto-Yes の表示が、消えるべきときに消えないなどの問題を直しました。",
95
+ "en": "Fixed the released-by-restart Auto-Yes label not clearing when it should, among other display issues."
96
+ },
97
+ {
98
+ "ja": "Command Code の plan review で送信が断られたとき、未送信と表示するようにしました。",
99
+ "en": "A message refused by Command Code's plan review is now shown as not sent."
100
+ },
101
+ {
102
+ "ja": "送信の直後に、送信前の古い画面が表示されることがある問題を直しました。",
103
+ "en": "Fixed the screen sometimes showing the old content from before a message was sent."
104
+ },
105
+ {
106
+ "ja": "取り消した返答の受け渡しが、依頼元に届いてしまうことがある問題を直しました。",
107
+ "en": "Fixed a cancelled reply relay sometimes still being delivered."
108
+ },
109
+ {
110
+ "ja": "削除した worktree やサーバー停止の後に、スケジュールが作り直されることがある問題を直しました。",
111
+ "en": "Fixed schedules sometimes being recreated after a worktree was removed or the server was stopped."
112
+ },
113
+ {
114
+ "ja": "ターミナルの購読が残り続け、上限に達することがある問題を直しました。",
115
+ "en": "Fixed terminal subscriptions sometimes piling up until the limit was reached."
116
+ }
117
+ ]
118
+ }