commandmate 0.46.1 → 0.47.2

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 (999) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +587 -580
  3. package/.next/app-path-routes-manifest.json +31 -30
  4. package/.next/build-manifest.json +8 -8
  5. package/.next/diagnostics/framework.json +1 -1
  6. package/.next/next-minimal-server.js.nft.json +1 -1
  7. package/.next/next-server.js.nft.json +1 -1
  8. package/.next/prerender-manifest.json +12 -12
  9. package/.next/react-loadable-manifest.json +1 -1
  10. package/.next/required-server-files.json +1 -1
  11. package/.next/routes-manifest.json +8 -0
  12. package/.next/server/app/_not-found/page.js +2 -2
  13. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/agents/update/route.js +2 -2
  16. package/.next/server/app/api/agents/update/route.js.nft.json +1 -1
  17. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/agents/versions/route.js +1 -1
  19. package/.next/server/app/api/agents/versions/route.js.nft.json +1 -1
  20. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/app/release-notes/route.js +1 -1
  22. package/.next/server/app/api/app/release-notes/route.js.nft.json +1 -1
  23. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/app/update/route.js +6 -4
  25. package/.next/server/app/api/app/update/route.js.nft.json +1 -1
  26. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/app/update-check/route.js +1 -1
  28. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  29. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/auth/login/route.js +1 -1
  31. package/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  32. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/auth/logout/route.js +1 -1
  34. package/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  35. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/auth/status/route.js +1 -1
  37. package/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  38. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/capabilities/route.js +1 -1
  40. package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
  41. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/daily-summary/route.js +1 -1
  43. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  44. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  46. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  47. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  49. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  50. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  52. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  53. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/external-apps/route.js +1 -1
  55. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  56. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/fs/browse/route.js +1 -1
  58. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  59. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/fs/recent-paths/route.js +1 -1
  61. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  62. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  64. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  65. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  67. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  68. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  70. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  71. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/metrics/vibe/route.js +2 -2
  73. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  74. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/ollama/models/route.js +1 -1
  76. package/.next/server/app/api/ollama/models/route.js.nft.json +1 -1
  77. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/push/escalation/route.js +1 -7
  79. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  80. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  82. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  83. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/push/vapid/route.js +1 -7
  85. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  86. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  88. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  89. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/relays/route.js +1 -1
  91. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  92. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/remote/pair/route.js +2 -2
  94. package/.next/server/app/api/remote/pair/route.js.nft.json +1 -1
  95. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  97. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  98. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  100. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  101. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/repositories/clone/route.js +1 -1
  103. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  104. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  106. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  107. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/repositories/restore/route.js +1 -1
  109. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  110. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/repositories/route.js +1 -1
  112. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  113. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/repositories/scan/route.js +1 -1
  115. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  116. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/repositories/sync/route.js +1 -1
  118. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  119. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  121. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  122. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  124. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  125. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/settings/default-surface-mode/route.js +1 -1
  127. package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -1
  128. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/sidebar/group-order/route.js +1 -1
  130. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  131. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/skills/[id]/route.js +1 -1
  133. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  134. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/skills/installations/route.js +1 -1
  136. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  137. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/skills/operations/route.js +2 -2
  139. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  140. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/skills/reindex/route.js +1 -1
  142. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  143. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/skills/route.js +1 -1
  145. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  146. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/slash-commands/route.js +1 -1
  148. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  149. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
  151. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  152. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  154. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  155. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/templates/[id]/route.js +1 -1
  157. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  158. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/templates/route.js +1 -1
  160. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  161. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  163. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  164. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/verification/runs/route.js +1 -1
  166. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  167. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +7 -7
  184. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  185. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/env/route.js +2 -2
  193. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +3 -3
  199. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  278. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  284. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  287. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  290. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +3 -3
  292. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  293. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  296. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  299. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  304. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  305. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  308. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  311. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -0
  316. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -0
  317. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -0
  318. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  319. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  320. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  322. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  323. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  325. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  326. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  327. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  328. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  329. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  331. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  332. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  333. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
  334. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  335. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  336. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  337. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  338. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  339. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  340. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  341. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  342. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +5 -5
  343. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  344. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  345. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  346. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  347. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  348. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  349. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  350. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  351. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  352. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  353. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  354. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  355. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  356. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  357. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  358. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  359. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  360. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  361. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  362. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  363. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  364. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  365. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  366. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  367. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  368. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  369. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  370. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  371. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  372. package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
  373. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  374. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  375. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  376. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  377. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  378. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  379. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  380. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  381. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  382. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  383. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  384. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  385. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  386. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  387. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  388. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  389. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  390. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  391. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  392. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  393. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  394. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  395. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  396. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  397. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  398. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  399. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +2 -2
  400. package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -1
  401. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  402. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  403. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  404. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  405. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  406. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  407. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  408. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  409. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  410. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  411. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  412. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  413. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  414. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  415. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  416. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  417. package/.next/server/app/api/worktrees/apply-default-agents/route.js +1 -1
  418. package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -1
  419. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  420. package/.next/server/app/api/worktrees/route.js +1 -1
  421. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  422. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  423. package/.next/server/app/apple-icon.png/route.js +1 -1
  424. package/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
  425. package/.next/server/app/apple-icon.png.meta +1 -1
  426. package/.next/server/app/icon.png/route.js +1 -1
  427. package/.next/server/app/icon.png/route.js.nft.json +1 -1
  428. package/.next/server/app/icon.png.meta +1 -1
  429. package/.next/server/app/icon1.png/route.js +1 -1
  430. package/.next/server/app/icon1.png/route.js.nft.json +1 -1
  431. package/.next/server/app/icon1.png.meta +1 -1
  432. package/.next/server/app/icon2.png/route.js +1 -1
  433. package/.next/server/app/icon2.png/route.js.nft.json +1 -1
  434. package/.next/server/app/icon2.png.meta +1 -1
  435. package/.next/server/app/login/page.js +2 -2
  436. package/.next/server/app/login/page.js.nft.json +1 -1
  437. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  438. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  439. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  440. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  441. package/.next/server/app/manifest.webmanifest.meta +1 -1
  442. package/.next/server/app/more/page.js +2 -2
  443. package/.next/server/app/more/page.js.nft.json +1 -1
  444. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  445. package/.next/server/app/offline/page.js +2 -2
  446. package/.next/server/app/offline/page.js.nft.json +1 -1
  447. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  448. package/.next/server/app/page.js +2 -2
  449. package/.next/server/app/page.js.nft.json +1 -1
  450. package/.next/server/app/page_client-reference-manifest.js +1 -1
  451. package/.next/server/app/proxy/[...path]/route.js +1 -1
  452. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  453. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  454. package/.next/server/app/repositories/page.js +2 -2
  455. package/.next/server/app/repositories/page.js.nft.json +1 -1
  456. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  457. package/.next/server/app/review/page.js +2 -2
  458. package/.next/server/app/review/page.js.nft.json +1 -1
  459. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  460. package/.next/server/app/sessions/page.js +2 -2
  461. package/.next/server/app/sessions/page.js.nft.json +1 -1
  462. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  463. package/.next/server/app/skills/[skillId]/page.js +2 -2
  464. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  465. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  466. package/.next/server/app/skills/installed/page.js +2 -2
  467. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  468. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  469. package/.next/server/app/skills/page.js +2 -2
  470. package/.next/server/app/skills/page.js.nft.json +1 -1
  471. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  472. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  473. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  474. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  475. package/.next/server/app/worktrees/[id]/page.js +12 -12
  476. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  477. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  478. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  479. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  480. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  481. package/.next/server/app-paths-manifest.json +31 -30
  482. package/.next/server/chunks/{5048.js → 1185.js} +1 -1
  483. package/.next/server/chunks/1210.js +1 -1
  484. package/.next/server/chunks/1559.js +1 -1
  485. package/.next/server/chunks/1601.js +7 -0
  486. package/.next/server/chunks/1656.js +19 -0
  487. package/.next/server/chunks/1945.js +14 -0
  488. package/.next/server/chunks/2119.js +1 -1
  489. package/.next/server/chunks/2404.js +1 -1
  490. package/.next/server/chunks/2422.js +1 -0
  491. package/.next/server/chunks/2445.js +1 -1
  492. package/.next/server/chunks/2460.js +1 -1
  493. package/.next/server/chunks/2534.js +1 -1
  494. package/.next/server/chunks/255.js +1 -0
  495. package/.next/server/chunks/3241.js +1 -1
  496. package/.next/server/chunks/3505.js +7 -0
  497. package/.next/server/chunks/3897.js +22 -0
  498. package/.next/server/chunks/4072.js +5 -5
  499. package/.next/server/chunks/{3077.js → 4194.js} +12 -12
  500. package/.next/server/chunks/4207.js +1 -1
  501. package/.next/server/chunks/4248.js +1 -1
  502. package/.next/server/chunks/463.js +1 -0
  503. package/.next/server/chunks/5209.js +1 -1
  504. package/.next/server/chunks/5595.js +1 -1
  505. package/.next/server/chunks/5611.js +1 -1
  506. package/.next/server/chunks/5845.js +1 -1
  507. package/.next/server/chunks/610.js +1 -0
  508. package/.next/server/chunks/6119.js +1 -0
  509. package/.next/server/chunks/6130.js +1 -1
  510. package/.next/server/chunks/6345.js +1 -1
  511. package/.next/server/chunks/6401.js +1 -1
  512. package/.next/server/chunks/{2283.js → 6486.js} +7 -7
  513. package/.next/server/chunks/6722.js +1 -1
  514. package/.next/server/chunks/6781.js +1 -1
  515. package/.next/server/chunks/6784.js +1 -0
  516. package/.next/server/chunks/6793.js +2 -2
  517. package/.next/server/chunks/7905.js +1 -1
  518. package/.next/server/chunks/8581.js +10 -10
  519. package/.next/server/chunks/8728.js +2 -2
  520. package/.next/server/chunks/8791.js +1 -1
  521. package/.next/server/chunks/8918.js +4 -4
  522. package/.next/server/chunks/9130.js +1 -1
  523. package/.next/server/chunks/936.js +1 -0
  524. package/.next/server/chunks/9390.js +1 -1
  525. package/.next/server/chunks/9540.js +1 -0
  526. package/.next/server/chunks/9627.js +2 -2
  527. package/.next/server/chunks/9731.js +3 -3
  528. package/.next/server/middleware-build-manifest.js +1 -1
  529. package/.next/server/middleware-manifest.json +5 -5
  530. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  531. package/.next/server/pages/500.html +1 -1
  532. package/.next/server/pages/_document.js.nft.json +1 -1
  533. package/.next/server/pages/_error.js +3 -3
  534. package/.next/server/pages/_error.js.nft.json +1 -1
  535. package/.next/server/server-reference-manifest.json +1 -1
  536. package/.next/server/src/middleware.js.map +1 -1
  537. package/.next/static/chunks/{1111.5ab4f0ffb0d944e5.js → 1111.1b653d4a9816a0a7.js} +8 -8
  538. package/.next/static/chunks/{1255-7e5873f06b25e129.js → 1255-a85690d352f4f8fd.js} +1 -1
  539. package/.next/static/chunks/{2407-9703c569370b8a9d.js → 2407-a6533805a86d05bd.js} +1 -1
  540. package/.next/static/chunks/5371-a549a0d2c2044d41.js +1 -0
  541. package/.next/static/chunks/{5794-4eee51ff1e878aa6.js → 5794-80ac3f06f098ea29.js} +1 -1
  542. package/.next/static/chunks/602-1c1488959215e140.js +1 -0
  543. package/.next/static/chunks/9079-24f9fa549ed298f1.js +1 -0
  544. package/.next/static/chunks/9465-b59bb255b376c813.js +1 -0
  545. package/.next/static/chunks/app/api/agents/update/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  546. package/.next/static/chunks/app/api/agents/versions/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  547. package/.next/static/chunks/app/api/app/release-notes/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  548. package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +1 -0
  549. package/.next/static/chunks/app/api/app/update-check/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  550. package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +1 -0
  551. package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +1 -0
  552. package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +1 -0
  553. package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +1 -0
  554. package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +1 -0
  555. package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +1 -0
  556. package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +1 -0
  557. package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +1 -0
  558. package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +1 -0
  559. package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +1 -0
  560. package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +1 -0
  561. package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +1 -0
  562. package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +1 -0
  563. package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +1 -0
  564. package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +1 -0
  565. package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +1 -0
  566. package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +1 -0
  567. package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +1 -0
  568. package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +1 -0
  569. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +1 -0
  570. package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +1 -0
  571. package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +1 -0
  572. package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +1 -0
  573. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +1 -0
  574. package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +1 -0
  575. package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +1 -0
  576. package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +1 -0
  577. package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +1 -0
  578. package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +1 -0
  579. package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +1 -0
  580. package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +1 -0
  581. package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +1 -0
  582. package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +1 -0
  583. package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +1 -0
  584. package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +1 -0
  585. package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +1 -0
  586. package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +1 -0
  587. package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +1 -0
  588. package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +1 -0
  589. package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +1 -0
  590. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +1 -0
  591. package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +1 -0
  592. package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +1 -0
  593. package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +1 -0
  594. package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  595. package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +1 -0
  596. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +1 -0
  597. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +1 -0
  598. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +1 -0
  599. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +1 -0
  600. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +1 -0
  601. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +1 -0
  602. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +1 -0
  603. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +1 -0
  604. package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +1 -0
  605. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +1 -0
  606. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +1 -0
  607. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +1 -0
  608. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +1 -0
  609. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +1 -0
  610. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +1 -0
  611. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +1 -0
  612. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +1 -0
  613. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +1 -0
  614. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +1 -0
  615. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +1 -0
  616. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +1 -0
  617. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +1 -0
  618. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +1 -0
  619. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +1 -0
  620. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +1 -0
  621. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +1 -0
  622. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +1 -0
  623. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +1 -0
  624. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +1 -0
  625. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +1 -0
  626. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +1 -0
  627. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +1 -0
  628. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +1 -0
  629. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +1 -0
  630. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +1 -0
  631. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +1 -0
  632. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +1 -0
  633. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +1 -0
  634. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +1 -0
  635. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +1 -0
  636. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +1 -0
  637. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +1 -0
  638. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +1 -0
  639. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +1 -0
  640. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +1 -0
  641. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +1 -0
  642. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +1 -0
  643. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +1 -0
  644. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +1 -0
  645. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +1 -0
  646. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +1 -0
  647. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +1 -0
  648. package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +1 -0
  649. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +1 -0
  650. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +1 -0
  651. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +1 -0
  652. package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +1 -0
  653. package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +1 -0
  654. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +1 -0
  655. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +1 -0
  656. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +1 -0
  657. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +1 -0
  658. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +1 -0
  659. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +1 -0
  660. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +1 -0
  661. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +1 -0
  662. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +1 -0
  663. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +1 -0
  664. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +1 -0
  665. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +1 -0
  666. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +1 -0
  667. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +1 -0
  668. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +1 -0
  669. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +1 -0
  670. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +1 -0
  671. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +1 -0
  672. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +1 -0
  673. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +1 -0
  674. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +1 -0
  675. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +1 -0
  676. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  677. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +1 -0
  678. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +1 -0
  679. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +1 -0
  680. package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +1 -0
  681. package/.next/static/chunks/app/layout-538d8d2746ad1588.js +1 -0
  682. package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +1 -0
  683. package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +1 -0
  684. package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +1 -0
  685. package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +1 -0
  686. package/.next/static/chunks/app/worktrees/[id]/page-46aced20b2b1c010.js +1 -0
  687. package/.next/static/chunks/main-37ca13e38030fe8b.js +1 -0
  688. package/.next/static/chunks/{webpack-468b7b33030234b3.js → webpack-838df0273b03af19.js} +1 -1
  689. package/.next/trace +13 -13
  690. package/.next/types/app/api/worktrees/[id]/prompt-response/strict/route.ts +347 -0
  691. package/.next/types/routes.d.ts +2 -1
  692. package/.next/types/validator.ts +9 -0
  693. package/dist/cli/commands/auto-yes.d.ts +19 -0
  694. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  695. package/dist/cli/commands/auto-yes.js +45 -0
  696. package/dist/cli/commands/instances.d.ts.map +1 -1
  697. package/dist/cli/commands/instances.js +23 -18
  698. package/dist/cli/commands/ls.d.ts +15 -1
  699. package/dist/cli/commands/ls.d.ts.map +1 -1
  700. package/dist/cli/commands/ls.js +39 -3
  701. package/dist/cli/commands/prompt.d.ts +42 -0
  702. package/dist/cli/commands/prompt.d.ts.map +1 -0
  703. package/dist/cli/commands/prompt.js +223 -0
  704. package/dist/cli/commands/relays.d.ts.map +1 -1
  705. package/dist/cli/commands/relays.js +13 -1
  706. package/dist/cli/commands/respond-strict.d.ts +31 -0
  707. package/dist/cli/commands/respond-strict.d.ts.map +1 -0
  708. package/dist/cli/commands/respond-strict.js +214 -0
  709. package/dist/cli/commands/respond.d.ts.map +1 -1
  710. package/dist/cli/commands/respond.js +38 -0
  711. package/dist/cli/commands/send.d.ts.map +1 -1
  712. package/dist/cli/commands/send.js +41 -5
  713. package/dist/cli/commands/start.d.ts.map +1 -1
  714. package/dist/cli/commands/start.js +2 -1
  715. package/dist/cli/commands/status.d.ts.map +1 -1
  716. package/dist/cli/commands/status.js +18 -0
  717. package/dist/cli/commands/wait.d.ts +21 -1
  718. package/dist/cli/commands/wait.d.ts.map +1 -1
  719. package/dist/cli/commands/wait.js +114 -12
  720. package/dist/cli/docs/agent-operations.d.ts +1 -1
  721. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  722. package/dist/cli/docs/agent-operations.js +63 -1
  723. package/dist/cli/program.d.ts.map +1 -1
  724. package/dist/cli/program.js +6 -2
  725. package/dist/cli/types/api-responses.d.ts +69 -2
  726. package/dist/cli/types/api-responses.d.ts.map +1 -1
  727. package/dist/cli/types/index.d.ts +30 -0
  728. package/dist/cli/types/index.d.ts.map +1 -1
  729. package/dist/cli/types/index.js +12 -1
  730. package/dist/cli/utils/api-client.d.ts +13 -1
  731. package/dist/cli/utils/api-client.d.ts.map +1 -1
  732. package/dist/cli/utils/api-client.js +10 -2
  733. package/dist/cli/utils/daemon-factory.d.ts.map +1 -1
  734. package/dist/cli/utils/daemon-factory.js +3 -1
  735. package/dist/cli/utils/daemon.d.ts +38 -1
  736. package/dist/cli/utils/daemon.d.ts.map +1 -1
  737. package/dist/cli/utils/daemon.js +161 -8
  738. package/dist/cli/utils/paths.d.ts +12 -0
  739. package/dist/cli/utils/paths.d.ts.map +1 -1
  740. package/dist/cli/utils/paths.js +17 -0
  741. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +54 -1
  742. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
  743. package/dist/lib/polling/auto-yes-suppression-reason.js +21 -1
  744. package/dist/lib/prompt-observation/kinds.d.ts +101 -0
  745. package/dist/lib/prompt-observation/kinds.d.ts.map +1 -0
  746. package/dist/lib/prompt-observation/kinds.js +123 -0
  747. package/dist/lib/prompt-observation/types.d.ts +271 -0
  748. package/dist/lib/prompt-observation/types.d.ts.map +1 -0
  749. package/dist/lib/prompt-observation/types.js +14 -0
  750. package/dist/lib/session/send-attempt-types.d.ts +66 -0
  751. package/dist/lib/session/send-attempt-types.d.ts.map +1 -0
  752. package/dist/lib/session/send-attempt-types.js +17 -0
  753. package/dist/server/locales/en/worktree.json +4 -0
  754. package/dist/server/locales/ja/worktree.json +4 -0
  755. package/dist/server/server.js +20 -1
  756. package/dist/server/src/config/auto-yes-config.js +11 -0
  757. package/dist/server/src/lib/auto-yes-lifecycle.js +28 -2
  758. package/dist/server/src/lib/auto-yes-poller.js +401 -369
  759. package/dist/server/src/lib/auto-yes-shutdown-record.js +257 -0
  760. package/dist/server/src/lib/auto-yes-state.js +197 -4
  761. package/dist/server/src/lib/cli-tools/antigravity-startup-trust.js +135 -0
  762. package/dist/server/src/lib/cli-tools/antigravity.js +162 -29
  763. package/dist/server/src/lib/cli-tools/command-code.js +10 -2
  764. package/dist/server/src/lib/cli-tools/copilot.js +21 -10
  765. package/dist/server/src/lib/cli-tools/gemini.js +60 -13
  766. package/dist/server/src/lib/cli-tools/launch-dialog.js +203 -0
  767. package/dist/server/src/lib/cli-tools/launch-window.js +96 -0
  768. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +88 -6
  769. package/dist/server/src/lib/detection/prompt-detector.js +1 -1
  770. package/dist/server/src/lib/detection/selection-shape.js +35 -1
  771. package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -9
  772. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +89 -2
  773. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +41 -1
  774. package/dist/server/src/lib/detection/tools/claude/detect.js +60 -0
  775. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +63 -13
  776. package/dist/server/src/lib/detection/tools/copilot/patterns.js +7 -1
  777. package/dist/server/src/lib/hooks/permission-adjudication.js +26 -0
  778. package/dist/server/src/lib/hooks/permission-decision-service.js +42 -4
  779. package/dist/server/src/lib/hooks/permission-request-payload.js +20 -0
  780. package/dist/server/src/lib/hooks/sources/antigravity/source.js +21 -0
  781. package/dist/server/src/lib/hooks/sources/claude/source.js +3 -0
  782. package/dist/server/src/lib/hooks/sources/codex/source.js +2 -0
  783. package/dist/server/src/lib/hooks/sources/command-code/source.js +2 -0
  784. package/dist/server/src/lib/hooks/sources/copilot/source.js +2 -0
  785. package/dist/server/src/lib/hooks/sources/gemini/source.js +2 -0
  786. package/dist/server/src/lib/hooks/sources/legacy-relay.js +2 -0
  787. package/dist/server/src/lib/hooks/sources/opencode/ingest.js +6 -0
  788. package/dist/server/src/lib/hooks/sources/opencode/source.js +2 -0
  789. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +11 -2
  790. package/dist/server/src/lib/hooks/sources/opencode-v2/ingest.js +6 -0
  791. package/dist/server/src/lib/hooks/sources/opencode-v2/source.js +2 -0
  792. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +5 -3
  793. package/dist/server/src/lib/hooks/sources/pending-decisions.js +14 -2
  794. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +29 -3
  795. package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +301 -0
  796. package/dist/server/src/lib/polling/auto-yes-confirm-page.js +56 -0
  797. package/dist/server/src/lib/polling/auto-yes-confirmation-ledger-types.js +114 -0
  798. package/dist/server/src/lib/polling/auto-yes-confirmation-ledger.js +1060 -0
  799. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +8 -1
  800. package/dist/server/src/lib/polling/auto-yes-ledger-records.js +143 -0
  801. package/dist/server/src/lib/polling/auto-yes-policy.js +96 -13
  802. package/dist/server/src/lib/polling/auto-yes-poller-capture.js +50 -0
  803. package/dist/server/src/lib/polling/auto-yes-poller-enter-fallback.js +37 -0
  804. package/dist/server/src/lib/polling/auto-yes-poller-generation.js +151 -0
  805. package/dist/server/src/lib/polling/auto-yes-poller-receipt-log.js +287 -0
  806. package/dist/server/src/lib/polling/auto-yes-poller-state.js +75 -6
  807. package/dist/server/src/lib/polling/auto-yes-poller-steps.js +109 -0
  808. package/dist/server/src/lib/polling/auto-yes-poller-stop-reason.js +50 -0
  809. package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +231 -5
  810. package/dist/server/src/lib/polling/auto-yes-resolver.js +21 -1
  811. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +21 -1
  812. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +10 -0
  813. package/dist/server/src/lib/polling/response-checker-blank-response.js +30 -0
  814. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +2 -2
  815. package/dist/server/src/lib/polling/response-checker.js +14 -10
  816. package/dist/server/src/lib/polling/response-poller-core.js +136 -104
  817. package/dist/server/src/lib/prompt-observation/appearance.js +165 -0
  818. package/dist/server/src/lib/prompt-observation/kinds.js +123 -0
  819. package/dist/server/src/lib/prompt-observation/types.js +14 -0
  820. package/dist/server/src/lib/push/prompt-push-gate.js +195 -3
  821. package/dist/server/src/lib/push/waiting-push-notifier.js +74 -7
  822. package/dist/server/src/lib/relay/relay-delivery-claims.js +46 -0
  823. package/dist/server/src/lib/relay/relay-delivery.js +76 -30
  824. package/dist/server/src/lib/schedule-manager.js +28 -0
  825. package/dist/server/src/lib/session/cli-session.js +38 -3
  826. package/dist/server/src/lib/session/send-attempt-state.js +155 -0
  827. package/dist/server/src/lib/session/send-attempt-types.js +17 -0
  828. package/dist/server/src/lib/session/send-user-message.js +46 -0
  829. package/dist/server/src/lib/session/worktree-session-reconcile.js +2 -1
  830. package/dist/server/src/lib/tmux/session-created-signal.js +76 -0
  831. package/dist/server/src/lib/tmux/tmux-capture-cache.js +58 -6
  832. package/dist/server/src/lib/tmux/tmux.js +4 -0
  833. package/dist/server/src/lib/verification/scope-gate-format.js +100 -0
  834. package/dist/server/src/lib/verification/scope-gate-glob.js +185 -0
  835. package/dist/server/src/lib/verification/scope-gate.js +19 -271
  836. package/dist/server/src/lib/ws-server.js +48 -6
  837. package/docs/en/user-guide/cli-setup-guide.md +12 -1
  838. package/docs/en/user-guide/webapp-guide.md +2 -0
  839. package/package.json +2 -2
  840. package/release-notes/0.47.0.json +118 -0
  841. package/release-notes/0.47.1.json +20 -0
  842. package/release-notes/0.47.2.json +20 -0
  843. package/scripts/hooks/cmate-agent-event.sh +22 -0
  844. package/.next/server/chunks/1331.js +0 -22
  845. package/.next/server/chunks/1789.js +0 -1
  846. package/.next/server/chunks/1944.js +0 -1
  847. package/.next/server/chunks/2328.js +0 -1
  848. package/.next/server/chunks/2908.js +0 -1
  849. package/.next/server/chunks/2984.js +0 -25
  850. package/.next/server/chunks/3718.js +0 -1
  851. package/.next/server/chunks/4837.js +0 -14
  852. package/.next/server/chunks/5292.js +0 -7
  853. package/.next/server/chunks/611.js +0 -1
  854. package/.next/server/chunks/850.js +0 -1
  855. package/.next/server/chunks/9051.js +0 -1
  856. package/.next/static/chunks/3201-c01f1feed69020e6.js +0 -1
  857. package/.next/static/chunks/5371-0dc947683e46e78c.js +0 -1
  858. package/.next/static/chunks/602-25e45a2422d2a3ea.js +0 -1
  859. package/.next/static/chunks/9465-e5a351baa941f31b.js +0 -1
  860. package/.next/static/chunks/app/api/app/update/route-0468c3c4baa46028.js +0 -1
  861. package/.next/static/chunks/app/api/auth/login/route-0468c3c4baa46028.js +0 -1
  862. package/.next/static/chunks/app/api/auth/logout/route-0468c3c4baa46028.js +0 -1
  863. package/.next/static/chunks/app/api/auth/status/route-0468c3c4baa46028.js +0 -1
  864. package/.next/static/chunks/app/api/capabilities/route-0468c3c4baa46028.js +0 -1
  865. package/.next/static/chunks/app/api/daily-summary/route-0468c3c4baa46028.js +0 -1
  866. package/.next/static/chunks/app/api/daily-summary/status/route-0468c3c4baa46028.js +0 -1
  867. package/.next/static/chunks/app/api/external-apps/[id]/health/route-0468c3c4baa46028.js +0 -1
  868. package/.next/static/chunks/app/api/external-apps/[id]/route-0468c3c4baa46028.js +0 -1
  869. package/.next/static/chunks/app/api/external-apps/route-0468c3c4baa46028.js +0 -1
  870. package/.next/static/chunks/app/api/fs/browse/route-0468c3c4baa46028.js +0 -1
  871. package/.next/static/chunks/app/api/fs/recent-paths/route-0468c3c4baa46028.js +0 -1
  872. package/.next/static/chunks/app/api/hooks/agent-event/route-0468c3c4baa46028.js +0 -1
  873. package/.next/static/chunks/app/api/hooks/claude-done/route-0468c3c4baa46028.js +0 -1
  874. package/.next/static/chunks/app/api/hooks/permission-request/route-0468c3c4baa46028.js +0 -1
  875. package/.next/static/chunks/app/api/metrics/vibe/route-0468c3c4baa46028.js +0 -1
  876. package/.next/static/chunks/app/api/ollama/models/route-0468c3c4baa46028.js +0 -1
  877. package/.next/static/chunks/app/api/push/escalation/route-0468c3c4baa46028.js +0 -1
  878. package/.next/static/chunks/app/api/push/subscriptions/route-0468c3c4baa46028.js +0 -1
  879. package/.next/static/chunks/app/api/push/vapid/route-0468c3c4baa46028.js +0 -1
  880. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-0468c3c4baa46028.js +0 -1
  881. package/.next/static/chunks/app/api/relays/route-0468c3c4baa46028.js +0 -1
  882. package/.next/static/chunks/app/api/remote/pair/route-0468c3c4baa46028.js +0 -1
  883. package/.next/static/chunks/app/api/repositories/[id]/route-0468c3c4baa46028.js +0 -1
  884. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-0468c3c4baa46028.js +0 -1
  885. package/.next/static/chunks/app/api/repositories/clone/route-0468c3c4baa46028.js +0 -1
  886. package/.next/static/chunks/app/api/repositories/excluded/route-0468c3c4baa46028.js +0 -1
  887. package/.next/static/chunks/app/api/repositories/restore/route-0468c3c4baa46028.js +0 -1
  888. package/.next/static/chunks/app/api/repositories/route-0468c3c4baa46028.js +0 -1
  889. package/.next/static/chunks/app/api/repositories/scan/route-0468c3c4baa46028.js +0 -1
  890. package/.next/static/chunks/app/api/repositories/sync/route-0468c3c4baa46028.js +0 -1
  891. package/.next/static/chunks/app/api/repositories/validate-path/route-0468c3c4baa46028.js +0 -1
  892. package/.next/static/chunks/app/api/settings/default-agents/route-0468c3c4baa46028.js +0 -1
  893. package/.next/static/chunks/app/api/settings/default-surface-mode/route-0468c3c4baa46028.js +0 -1
  894. package/.next/static/chunks/app/api/sidebar/group-order/route-0468c3c4baa46028.js +0 -1
  895. package/.next/static/chunks/app/api/skills/[id]/route-0468c3c4baa46028.js +0 -1
  896. package/.next/static/chunks/app/api/skills/installations/route-0468c3c4baa46028.js +0 -1
  897. package/.next/static/chunks/app/api/skills/operations/route-0468c3c4baa46028.js +0 -1
  898. package/.next/static/chunks/app/api/skills/reindex/route-0468c3c4baa46028.js +0 -1
  899. package/.next/static/chunks/app/api/skills/route-0468c3c4baa46028.js +0 -1
  900. package/.next/static/chunks/app/api/slash-commands/route-0468c3c4baa46028.js +0 -1
  901. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-0468c3c4baa46028.js +0 -1
  902. package/.next/static/chunks/app/api/tasks/[taskId]/route-0468c3c4baa46028.js +0 -1
  903. package/.next/static/chunks/app/api/templates/[id]/route-0468c3c4baa46028.js +0 -1
  904. package/.next/static/chunks/app/api/templates/route-0468c3c4baa46028.js +0 -1
  905. package/.next/static/chunks/app/api/verification/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  906. package/.next/static/chunks/app/api/verification/runs/route-0468c3c4baa46028.js +0 -1
  907. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-0468c3c4baa46028.js +0 -1
  908. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-0468c3c4baa46028.js +0 -1
  909. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-0468c3c4baa46028.js +0 -1
  910. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-0468c3c4baa46028.js +0 -1
  911. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-0468c3c4baa46028.js +0 -1
  912. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-0468c3c4baa46028.js +0 -1
  913. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-0468c3c4baa46028.js +0 -1
  914. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-0468c3c4baa46028.js +0 -1
  915. package/.next/static/chunks/app/api/worktrees/[id]/env/route-0468c3c4baa46028.js +0 -1
  916. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-0468c3c4baa46028.js +0 -1
  917. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-0468c3c4baa46028.js +0 -1
  918. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-0468c3c4baa46028.js +0 -1
  919. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-0468c3c4baa46028.js +0 -1
  920. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-0468c3c4baa46028.js +0 -1
  921. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-0468c3c4baa46028.js +0 -1
  922. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-0468c3c4baa46028.js +0 -1
  923. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-0468c3c4baa46028.js +0 -1
  924. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-0468c3c4baa46028.js +0 -1
  925. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-0468c3c4baa46028.js +0 -1
  926. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-0468c3c4baa46028.js +0 -1
  927. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-0468c3c4baa46028.js +0 -1
  928. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-0468c3c4baa46028.js +0 -1
  929. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-0468c3c4baa46028.js +0 -1
  930. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-0468c3c4baa46028.js +0 -1
  931. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-0468c3c4baa46028.js +0 -1
  932. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-0468c3c4baa46028.js +0 -1
  933. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-0468c3c4baa46028.js +0 -1
  934. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-0468c3c4baa46028.js +0 -1
  935. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-0468c3c4baa46028.js +0 -1
  936. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-0468c3c4baa46028.js +0 -1
  937. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-0468c3c4baa46028.js +0 -1
  938. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-0468c3c4baa46028.js +0 -1
  939. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-0468c3c4baa46028.js +0 -1
  940. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-0468c3c4baa46028.js +0 -1
  941. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-0468c3c4baa46028.js +0 -1
  942. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-0468c3c4baa46028.js +0 -1
  943. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-0468c3c4baa46028.js +0 -1
  944. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-0468c3c4baa46028.js +0 -1
  945. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-0468c3c4baa46028.js +0 -1
  946. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-0468c3c4baa46028.js +0 -1
  947. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-0468c3c4baa46028.js +0 -1
  948. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-0468c3c4baa46028.js +0 -1
  949. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-0468c3c4baa46028.js +0 -1
  950. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-0468c3c4baa46028.js +0 -1
  951. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-0468c3c4baa46028.js +0 -1
  952. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-0468c3c4baa46028.js +0 -1
  953. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-0468c3c4baa46028.js +0 -1
  954. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-0468c3c4baa46028.js +0 -1
  955. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-0468c3c4baa46028.js +0 -1
  956. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-0468c3c4baa46028.js +0 -1
  957. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-0468c3c4baa46028.js +0 -1
  958. package/.next/static/chunks/app/api/worktrees/[id]/route-0468c3c4baa46028.js +0 -1
  959. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-0468c3c4baa46028.js +0 -1
  960. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-0468c3c4baa46028.js +0 -1
  961. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-0468c3c4baa46028.js +0 -1
  962. package/.next/static/chunks/app/api/worktrees/[id]/search/route-0468c3c4baa46028.js +0 -1
  963. package/.next/static/chunks/app/api/worktrees/[id]/send/route-0468c3c4baa46028.js +0 -1
  964. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-0468c3c4baa46028.js +0 -1
  965. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-0468c3c4baa46028.js +0 -1
  966. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-0468c3c4baa46028.js +0 -1
  967. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-0468c3c4baa46028.js +0 -1
  968. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-0468c3c4baa46028.js +0 -1
  969. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-0468c3c4baa46028.js +0 -1
  970. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-0468c3c4baa46028.js +0 -1
  971. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-0468c3c4baa46028.js +0 -1
  972. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-0468c3c4baa46028.js +0 -1
  973. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-0468c3c4baa46028.js +0 -1
  974. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-0468c3c4baa46028.js +0 -1
  975. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-0468c3c4baa46028.js +0 -1
  976. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-0468c3c4baa46028.js +0 -1
  977. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-0468c3c4baa46028.js +0 -1
  978. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-0468c3c4baa46028.js +0 -1
  979. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-0468c3c4baa46028.js +0 -1
  980. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-0468c3c4baa46028.js +0 -1
  981. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-0468c3c4baa46028.js +0 -1
  982. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-0468c3c4baa46028.js +0 -1
  983. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-0468c3c4baa46028.js +0 -1
  984. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-0468c3c4baa46028.js +0 -1
  985. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-0468c3c4baa46028.js +0 -1
  986. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  987. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-0468c3c4baa46028.js +0 -1
  988. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-0468c3c4baa46028.js +0 -1
  989. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-0468c3c4baa46028.js +0 -1
  990. package/.next/static/chunks/app/api/worktrees/route-0468c3c4baa46028.js +0 -1
  991. package/.next/static/chunks/app/layout-3e357690446cd2da.js +0 -1
  992. package/.next/static/chunks/app/manifest.webmanifest/route-0468c3c4baa46028.js +0 -1
  993. package/.next/static/chunks/app/proxy/[...path]/route-0468c3c4baa46028.js +0 -1
  994. package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +0 -1
  995. package/.next/static/chunks/app/worktrees/[id]/layout-0468c3c4baa46028.js +0 -1
  996. package/.next/static/chunks/app/worktrees/[id]/page-effbf0796881dd5a.js +0 -1
  997. package/.next/static/chunks/main-ac91ed6e71380841.js +0 -1
  998. /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → etorRtpxbQqqOzdUeXdw2}/_buildManifest.js +0 -0
  999. /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → etorRtpxbQqqOzdUeXdw2}/_ssgManifest.js +0 -0
@@ -533,6 +533,135 @@ function splitPollerKey(pollerKey) {
533
533
  instanceId: pollerKey.slice(separatorIndex + 1),
534
534
  };
535
535
  }
536
+ /** Old worktree ID -> new worktree ID, skipping empty and no-op pairs. */
537
+ function collectRenameTargets(renames) {
538
+ const targets = new Map();
539
+ for (const { oldId, newId } of renames) {
540
+ if (!oldId || !newId || oldId === newId)
541
+ continue;
542
+ targets.set(oldId, newId);
543
+ }
544
+ return targets;
545
+ }
546
+ /** Sort every running poller under a renamed ID into a move or an abandoned stop. */
547
+ function planRunningPollerMoves(targets, resolveCliToolId) {
548
+ const moves = [];
549
+ const abandoned = [];
550
+ for (const pollerKey of Array.from(exports.activePollers.keys())) {
551
+ const parts = splitPollerKey(pollerKey);
552
+ if (!parts)
553
+ continue;
554
+ const newWorktreeId = targets.get(parts.worktreeId);
555
+ if (!newWorktreeId)
556
+ continue;
557
+ const cliToolId = resolveCliToolId(parts.worktreeId, parts.instanceId);
558
+ if (!cliToolId) {
559
+ abandoned.push({ pollerKey, newWorktreeId });
560
+ continue;
561
+ }
562
+ moves.push({
563
+ oldKey: pollerKey,
564
+ newKey: getPollerKey(newWorktreeId, cliToolId, parts.instanceId),
565
+ newWorktreeId,
566
+ cliToolId,
567
+ instanceId: parts.instanceId,
568
+ });
569
+ }
570
+ return { moves, abandoned };
571
+ }
572
+ /** Phase 1 of the migration for the moved pollers (see the caller). */
573
+ function liftMovedPollers(moves, carried) {
574
+ for (const move of moves) {
575
+ const timerId = exports.activePollers.get(move.oldKey);
576
+ if (timerId)
577
+ clearTimeout(timerId);
578
+ exports.activePollers.delete(move.oldKey);
579
+ // Issue #2223: retire the ownership token as well. A tick that is inside
580
+ // `checkForResponse()` right now cannot be cancelled by `clearTimeout`, and
581
+ // without this it would resume, find its key gone and — before #2223 —
582
+ // still be able to act on the old worktree ID. Marked superseded rather
583
+ // than merely stopped: Phase 2 below arms a replacement chain, so the old
584
+ // tick's snapshot would land on top of the new one's.
585
+ const retired = coordinator.owners.get(move.oldKey);
586
+ if (retired) {
587
+ retired.superseded = true;
588
+ retired.stopped = true;
589
+ coordinator.owners.delete(move.oldKey);
590
+ }
591
+ coordinator.pendingRestart.delete(move.oldKey);
592
+ carried.set(move.newKey, { startedAt: exports.pollingStartTimes.get(move.oldKey) });
593
+ exports.pollingStartTimes.delete(move.oldKey);
594
+ (0, tui_accumulator_1.clearTuiAccumulator)(move.oldKey);
595
+ }
596
+ }
597
+ /** The paused chains under a renamed ID, keyed old -> new (see the caller). */
598
+ function collectPausedMoves(targets) {
599
+ const pausedMoves = [];
600
+ for (const pollerKey of Array.from(coordinator.pausedOnPrompt)) {
601
+ const parts = splitPollerKey(pollerKey);
602
+ if (!parts)
603
+ continue;
604
+ const newWorktreeId = targets.get(parts.worktreeId);
605
+ if (!newWorktreeId)
606
+ continue;
607
+ pausedMoves.push({ oldKey: pollerKey, newKey: `${newWorktreeId}:${parts.instanceId}` });
608
+ }
609
+ return pausedMoves;
610
+ }
611
+ /** The held scrapes under a renamed ID, keyed old -> new (see the caller). */
612
+ function collectPendingMoves(targets, abandonedKeys) {
613
+ const pendingMoves = [];
614
+ for (const pollerKey of (0, pending_scraped_response_1.listPendingScrapedResponseKeys)()) {
615
+ if (abandonedKeys.has(pollerKey))
616
+ continue;
617
+ const parts = splitPollerKey(pollerKey);
618
+ if (!parts)
619
+ continue;
620
+ const newWorktreeId = targets.get(parts.worktreeId);
621
+ if (!newWorktreeId)
622
+ continue;
623
+ pendingMoves.push({ oldKey: pollerKey, newKey: `${newWorktreeId}:${parts.instanceId}`, newWorktreeId });
624
+ }
625
+ return pendingMoves;
626
+ }
627
+ /** Stop the chains on destinations that no source vacates (see the caller). */
628
+ function stopDisplacedPollers(moves, pausedMoves, pendingMoves, abandonedKeys) {
629
+ const vacated = new Set([
630
+ ...moves.map((move) => move.oldKey),
631
+ ...pausedMoves.map((move) => move.oldKey),
632
+ ...pendingMoves.map((move) => move.oldKey),
633
+ ]);
634
+ // A held scrape moved on its own (no chain, no pause) changes the key's
635
+ // owner just the same, so its destination is handled alike (#3663 review).
636
+ const occupied = new Set([
637
+ ...moves.map((move) => move.newKey),
638
+ ...pausedMoves.map((move) => move.newKey),
639
+ ...pendingMoves.map((move) => move.newKey),
640
+ ]);
641
+ for (const pollerKey of occupied) {
642
+ if (vacated.has(pollerKey) || abandonedKeys.has(pollerKey))
643
+ continue;
644
+ const held = coordinator.owners.has(pollerKey) ||
645
+ exports.activePollers.has(pollerKey) ||
646
+ coordinator.pausedOnPrompt.has(pollerKey) ||
647
+ (0, pending_scraped_response_1.hasPendingScrapedResponse)(pollerKey);
648
+ if (!held)
649
+ continue;
650
+ stopPollingByKey(pollerKey);
651
+ logger.warn('poller:migrate-displaced', { pollerKey });
652
+ }
653
+ }
654
+ /** Phase 2 of the migration: restart each moved poller (see the caller). */
655
+ function restartMovedPollers(moves, carried) {
656
+ for (const move of moves) {
657
+ const startedAt = carried.get(move.newKey)?.startedAt;
658
+ exports.pollingStartTimes.set(move.newKey, startedAt ?? Date.now());
659
+ if (isFullScreenTui(move.cliToolId)) {
660
+ (0, tui_accumulator_1.initTuiAccumulator)(move.newKey);
661
+ }
662
+ scheduleNextResponsePoll(move.newWorktreeId, move.cliToolId, move.instanceId);
663
+ }
664
+ }
536
665
  /**
537
666
  * Move every running response poller from a renamed worktree ID to the new one
538
667
  * (Issue #1621 Phase 3).
@@ -585,36 +714,10 @@ function splitPollerKey(pollerKey) {
585
714
  * @returns One entry per poller that was moved
586
715
  */
587
716
  function migrateResponsePollerWorktreeIds(renames, resolveCliToolId) {
588
- const targets = new Map();
589
- for (const { oldId, newId } of renames) {
590
- if (!oldId || !newId || oldId === newId)
591
- continue;
592
- targets.set(oldId, newId);
593
- }
717
+ const targets = collectRenameTargets(renames);
594
718
  if (targets.size === 0)
595
719
  return [];
596
- const moves = [];
597
- const abandoned = [];
598
- for (const pollerKey of Array.from(exports.activePollers.keys())) {
599
- const parts = splitPollerKey(pollerKey);
600
- if (!parts)
601
- continue;
602
- const newWorktreeId = targets.get(parts.worktreeId);
603
- if (!newWorktreeId)
604
- continue;
605
- const cliToolId = resolveCliToolId(parts.worktreeId, parts.instanceId);
606
- if (!cliToolId) {
607
- abandoned.push({ pollerKey, newWorktreeId });
608
- continue;
609
- }
610
- moves.push({
611
- oldKey: pollerKey,
612
- newKey: getPollerKey(newWorktreeId, cliToolId, parts.instanceId),
613
- newWorktreeId,
614
- cliToolId,
615
- instanceId: parts.instanceId,
616
- });
617
- }
720
+ const { moves, abandoned } = planRunningPollerMoves(targets, resolveCliToolId);
618
721
  // Phase 1: stop every affected timer and lift the state off the old keys.
619
722
  // Done for the whole batch before any write so a swap cannot self-collide.
620
723
  const carried = new Map();
@@ -628,28 +731,7 @@ function migrateResponsePollerWorktreeIds(renames, resolveCliToolId) {
628
731
  const inFlight = coordinator.running.get(move.oldKey);
629
732
  return inFlight !== undefined && inFlight.owner === coordinator.owners.get(move.oldKey);
630
733
  });
631
- for (const move of moves) {
632
- const timerId = exports.activePollers.get(move.oldKey);
633
- if (timerId)
634
- clearTimeout(timerId);
635
- exports.activePollers.delete(move.oldKey);
636
- // Issue #2223: retire the ownership token as well. A tick that is inside
637
- // `checkForResponse()` right now cannot be cancelled by `clearTimeout`, and
638
- // without this it would resume, find its key gone and — before #2223 —
639
- // still be able to act on the old worktree ID. Marked superseded rather
640
- // than merely stopped: Phase 2 below arms a replacement chain, so the old
641
- // tick's snapshot would land on top of the new one's.
642
- const retired = coordinator.owners.get(move.oldKey);
643
- if (retired) {
644
- retired.superseded = true;
645
- retired.stopped = true;
646
- coordinator.owners.delete(move.oldKey);
647
- }
648
- coordinator.pendingRestart.delete(move.oldKey);
649
- carried.set(move.newKey, { startedAt: exports.pollingStartTimes.get(move.oldKey) });
650
- exports.pollingStartTimes.delete(move.oldKey);
651
- (0, tui_accumulator_1.clearTuiAccumulator)(move.oldKey);
652
- }
734
+ liftMovedPollers(moves, carried);
653
735
  // Stop the abandoned pollers before any dedup state is written: the stop
654
736
  // clears every cache under its key, and that key can be the destination of
655
737
  // another move in this batch (A:x paused → B:x while B:x is abandoned).
@@ -670,31 +752,11 @@ function migrateResponsePollerWorktreeIds(renames, resolveCliToolId) {
670
752
  // never see it — but it is holding the response hash for the turn it paused
671
753
  // on, and `/respond` will resume it under the NEW ID. Move the hash and the
672
754
  // pause mark with it; the chain itself stays paused until that resume.
673
- const pausedMoves = [];
674
- for (const pollerKey of Array.from(coordinator.pausedOnPrompt)) {
675
- const parts = splitPollerKey(pollerKey);
676
- if (!parts)
677
- continue;
678
- const newWorktreeId = targets.get(parts.worktreeId);
679
- if (!newWorktreeId)
680
- continue;
681
- pausedMoves.push({ oldKey: pollerKey, newKey: `${newWorktreeId}:${parts.instanceId}` });
682
- }
755
+ const pausedMoves = collectPausedMoves(targets);
683
756
  // Issue #3663: every held scrape under a renamed worktree ID moves — a
684
757
  // running chain's, a paused chain's, and one whose chain is already gone.
685
758
  // The abandoned ones were written above and are no longer held.
686
- const pendingMoves = [];
687
- for (const pollerKey of (0, pending_scraped_response_1.listPendingScrapedResponseKeys)()) {
688
- if (abandonedKeys.has(pollerKey))
689
- continue;
690
- const parts = splitPollerKey(pollerKey);
691
- if (!parts)
692
- continue;
693
- const newWorktreeId = targets.get(parts.worktreeId);
694
- if (!newWorktreeId)
695
- continue;
696
- pendingMoves.push({ oldKey: pollerKey, newKey: `${newWorktreeId}:${parts.instanceId}`, newWorktreeId });
697
- }
759
+ const pendingMoves = collectPendingMoves(targets, abandonedKeys);
698
760
  // Issue #3663: a destination a chain (running or paused) moves onto, that no
699
761
  // source of this batch vacates, may already be held by another chain — B:x
700
762
  // running while A:x moves to B:x. That chain loses the key, so it is stopped
@@ -703,30 +765,7 @@ function migrateResponsePollerWorktreeIds(renames, resolveCliToolId) {
703
765
  // no longer hold or drop anything, and its caches are cleared before the
704
766
  // moved state is written. A destination nothing is on is left alone, and so
705
767
  // is every other instance of the destination worktree.
706
- const vacated = new Set([
707
- ...moves.map((move) => move.oldKey),
708
- ...pausedMoves.map((move) => move.oldKey),
709
- ...pendingMoves.map((move) => move.oldKey),
710
- ]);
711
- // A held scrape moved on its own (no chain, no pause) changes the key's
712
- // owner just the same, so its destination is handled alike (#3663 review).
713
- const occupied = new Set([
714
- ...moves.map((move) => move.newKey),
715
- ...pausedMoves.map((move) => move.newKey),
716
- ...pendingMoves.map((move) => move.newKey),
717
- ]);
718
- for (const pollerKey of occupied) {
719
- if (vacated.has(pollerKey) || abandonedKeys.has(pollerKey))
720
- continue;
721
- const held = coordinator.owners.has(pollerKey) ||
722
- exports.activePollers.has(pollerKey) ||
723
- coordinator.pausedOnPrompt.has(pollerKey) ||
724
- (0, pending_scraped_response_1.hasPendingScrapedResponse)(pollerKey);
725
- if (!held)
726
- continue;
727
- stopPollingByKey(pollerKey);
728
- logger.warn('poller:migrate-displaced', { pollerKey });
729
- }
768
+ stopDisplacedPollers(moves, pausedMoves, pendingMoves, abandonedKeys);
730
769
  // Issue #3553: the dedup state of the whole batch moves in one call per map
731
770
  // family, each lifting every source before writing any destination. Re-keyed
732
771
  // pair by pair, a swap left A with its own state and B empty.
@@ -766,14 +805,7 @@ function migrateResponsePollerWorktreeIds(renames, resolveCliToolId) {
766
805
  : [];
767
806
  }));
768
807
  // Phase 2: restart each poller under its new identity.
769
- for (const move of moves) {
770
- const startedAt = carried.get(move.newKey)?.startedAt;
771
- exports.pollingStartTimes.set(move.newKey, startedAt ?? Date.now());
772
- if (isFullScreenTui(move.cliToolId)) {
773
- (0, tui_accumulator_1.initTuiAccumulator)(move.newKey);
774
- }
775
- scheduleNextResponsePoll(move.newWorktreeId, move.cliToolId, move.instanceId);
776
- }
808
+ restartMovedPollers(moves, carried);
777
809
  // Issue #2230: the pause marks of the chains collected above follow their
778
810
  // hashes (moved with the batch). All removed before any is added, for the
779
811
  // same swap reason.
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ /**
3
+ * Which appearance of a screen an observation saw (Issue #3755).
4
+ *
5
+ * The same trust screen can open, be answered, and open again with every word
6
+ * the same — and a token issued on the first one must not answer the second.
7
+ * The server keeps, per instance, the fingerprint of the decision screen it
8
+ * last observed (kind, question, options, approval target, pane, generation)
9
+ * and when that fingerprint was first observed. Observing anything else — a
10
+ * different screen, `composer`, `none`, `unknown`, no session — forgets it, so
11
+ * the next observation of the same words is a new appearance with a new
12
+ * `firstSeenAt`, which the token binds (`./token`).
13
+ *
14
+ * What this cannot see: the screen going away and coming back between two
15
+ * observations, with nothing observed in between (observations are opt-in, not
16
+ * a poll). The two are one appearance here.
17
+ *
18
+ * In memory on `globalThis` (the route that issues and the route that verifies
19
+ * are bundled apart under `next dev`), bounded; forgetting an instance only
20
+ * makes its next observation a new appearance, which fails closed.
21
+ *
22
+ * @module lib/prompt-observation/appearance
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.approvalTargetWithOptionRowsAligned = approvalTargetWithOptionRowsAligned;
26
+ exports.approvalTargetWithoutHighlight = approvalTargetWithoutHighlight;
27
+ exports.screenFingerprint = screenFingerprint;
28
+ exports.noteScreenAppearance = noteScreenAppearance;
29
+ exports.forgetScreenAppearance = forgetScreenAppearance;
30
+ const global_state_1 = require("../../lib/global-state");
31
+ const dialog_block_1 = require("../../lib/detection/tools/dialog-block");
32
+ /** How many instances are tracked at once; the least recently observed is forgotten first. */
33
+ const MAX_TRACKED_INSTANCES = 1024;
34
+ const appearances = (0, global_state_1.getOrInitGlobal)('__promptObservationScreenAppearances', () => new Map());
35
+ /** Whitespace folded, so a re-render that only reflows a row is the same screen. */
36
+ function normalize(text) {
37
+ return text === null ? null : text.replace(/\s+/g, ' ').trim();
38
+ }
39
+ /**
40
+ * How many rows under agy's bottom option row may be its wrapped tail: the
41
+ * allowance `detection/tools/antigravity/dialog.ts` gives the same block
42
+ * (`LAST_OPTION_TAIL_ROWS`, not exported). A tail longer than this reads as no
43
+ * block here, which leaves the target as it is (fail closed).
44
+ */
45
+ const PERMISSION_OPTION_TAIL_ROWS = 12;
46
+ /**
47
+ * The gutter of an option row: the highlight's glyph or the blank of the others.
48
+ * The glyphs are the block reader's (`dialog-block.ts`): agy's `>`, and claude's
49
+ * `❯`, codex's `›` and `●` for the readers that share the poller (#3817).
50
+ */
51
+ const OPTION_ROW_GUTTER_PATTERN = /^[ \t]*[>\u276F\u203A\u25CF]?[ \t]*/u;
52
+ /**
53
+ * The rows the shared block reader adopted as option rows, option 1 first, or
54
+ * null when they cannot be told.
55
+ *
56
+ * Taken from the reader itself, never re-judged here: `findNumberedOptionBlock`
57
+ * names the rows of option 1 (`firstRow`) and of the bottom option (`lastRow`)
58
+ * only, so option k's row is the `lastRow` of the block the reader finds above
59
+ * option k+1's row. Between two adopted rows there is no row the reader could
60
+ * parse as an option (it would have adopted it, or stopped there), so that
61
+ * block is the same run cut one option shorter. A row the reader folds into a
62
+ * label — `0. item`, `00. item` — is never in the list.
63
+ */
64
+ function adoptedOptionRows(rows, block) {
65
+ const adopted = [block.lastRow];
66
+ for (let below = block.lastRow; adopted.length < block.options.length - 1;) {
67
+ const above = (0, dialog_block_1.findNumberedOptionBlock)(rows, below, rows.length);
68
+ if (above === null || above.firstRow !== block.firstRow || above.lastRow >= below)
69
+ return null;
70
+ adopted.unshift(above.lastRow);
71
+ below = above.lastRow;
72
+ }
73
+ adopted.unshift(block.firstRow);
74
+ return adopted.length === block.options.length ? adopted : null;
75
+ }
76
+ /**
77
+ * An approval target with the gutters of its option rows made the same, or null
78
+ * when its option rows cannot be told (Issue #3812, shared since #3817).
79
+ *
80
+ * The option block is found the way the readers find it
81
+ * (`findNumberedOptionBlock`, bottom up to `1.`), and taken only when each label
82
+ * the block reader read is `sameLabel` to the one the screen names. Only the
83
+ * gutter of the rows the reader adopted as options ({@link adoptedOptionRows})
84
+ * is made the same; every row above option 1 (the command, a here-document's
85
+ * `1. item`, its `>` and its indent) and every row folded into a label
86
+ * (`0. item` included) stays byte for byte.
87
+ *
88
+ * @param sameLabel - Whether the label the block reader read (rows under the
89
+ * bottom option folded in) is the one the screen names
90
+ */
91
+ function approvalTargetWithOptionRowsAligned(approvalTarget, options, sameLabel) {
92
+ const rows = approvalTarget.split('\n');
93
+ const block = (0, dialog_block_1.findNumberedOptionBlock)(rows, rows.length, PERMISSION_OPTION_TAIL_ROWS);
94
+ if (block === null)
95
+ return null;
96
+ // The reader folds the rows under the bottom option into its label.
97
+ const labels = [...block.options];
98
+ const last = labels.length - 1;
99
+ if (block.footer !== '')
100
+ labels[last] = [labels[last], ...block.footer.split('\n')].join(' ').trim();
101
+ if (labels.length !== options.length || labels.some((label, i) => !sameLabel(label, options[i])))
102
+ return null;
103
+ const adopted = adoptedOptionRows(rows, block);
104
+ if (adopted === null)
105
+ return null;
106
+ const optionRows = new Set(adopted);
107
+ return rows.map((row, i) => (optionRows.has(i) ? row.replace(OPTION_ROW_GUTTER_PATTERN, ' ') : row)).join('\n');
108
+ }
109
+ /**
110
+ * An approval target with the highlight's mark taken out (Issue #3812).
111
+ *
112
+ * agy's permission dialog reads its approval target down to the footer
113
+ * (`detection/tools/antigravity/dialog.ts`), so its option rows are the tail
114
+ * of the target and the `>` moves with every ↑/↓. Its option rows are aligned
115
+ * by {@link approvalTargetWithOptionRowsAligned} when the block's labels are
116
+ * exactly the screen's `options` — what the reader named.
117
+ *
118
+ * Any other kind, a target with no such block, or a block whose labels are not
119
+ * the screen's, is returned as is: a moved highlight then reads as another
120
+ * screen, which stops the strict respond rather than letting it through.
121
+ */
122
+ function approvalTargetWithoutHighlight(kind, approvalTarget, options) {
123
+ if (approvalTarget === null || kind !== 'antigravity-permission')
124
+ return approvalTarget;
125
+ return approvalTargetWithOptionRowsAligned(approvalTarget, options, (read, named) => read === named) ?? approvalTarget;
126
+ }
127
+ /** One fixed form of what a screen asks. The highlight is not in it: moving the cursor is the same appearance. */
128
+ function screenFingerprint(parts) {
129
+ return JSON.stringify([
130
+ parts.sessionName,
131
+ parts.sessionGeneration,
132
+ parts.kind,
133
+ normalize(parts.question),
134
+ parts.options.map(normalize),
135
+ normalize(approvalTargetWithoutHighlight(parts.kind, parts.approvalTarget, parts.options)),
136
+ ]);
137
+ }
138
+ function keyOf(instance) {
139
+ return JSON.stringify([instance.worktreeId, instance.cliToolId, instance.instanceId]);
140
+ }
141
+ /**
142
+ * Record an observation of a decision screen and return when this appearance
143
+ * of it was first observed.
144
+ *
145
+ * @param fingerprint - {@link screenFingerprint} of the screen
146
+ */
147
+ function noteScreenAppearance(instance, fingerprint, now) {
148
+ const key = keyOf(instance);
149
+ const previous = appearances.get(key);
150
+ // Re-inserted, so the map's order is least recently observed first.
151
+ appearances.delete(key);
152
+ const firstSeenAt = previous?.fingerprint === fingerprint ? previous.firstSeenAt : Math.floor(now);
153
+ appearances.set(key, { fingerprint, firstSeenAt });
154
+ while (appearances.size > MAX_TRACKED_INSTANCES) {
155
+ const oldest = appearances.keys().next().value;
156
+ if (oldest === undefined)
157
+ break;
158
+ appearances.delete(oldest);
159
+ }
160
+ return firstSeenAt;
161
+ }
162
+ /** Record an observation of anything else: the instance's last screen has gone. */
163
+ function forgetScreenAppearance(instance) {
164
+ appearances.delete(keyOf(instance));
165
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /**
3
+ * The screen kinds a prompt observation publishes (Issue #3755, #3746 A-3).
4
+ *
5
+ * ## Why a vocabulary of its own
6
+ *
7
+ * `promptData.type` (`yes_no` / `multiple_choice` / `unclassified`) says how a
8
+ * parsed prompt is answered, and agy's status detector
9
+ * (`detection/tools/antigravity/detect.ts`) publishes the folder-trust screen,
10
+ * the `/model` picker and the slash popup under ONE reason
11
+ * (`antigravity_selection_list`). Neither can say "this is the trust screen and
12
+ * not the picker", which is exactly what a caller about to answer one of them
13
+ * has to be sure of (#3746 P4-1). So the values a caller may branch on — and
14
+ * that the strict `respond` (#3756) may make a send condition — live here, and
15
+ * are never mixed into `promptData.type` or read back from the detector's
16
+ * reason.
17
+ *
18
+ * A kind is added only for a screen whose reading is pinned to a measured
19
+ * frame. Everything else that waits on a human is `unknown`: an unmeasured
20
+ * screen must not borrow a measured screen's name.
21
+ *
22
+ * ## No imports, on purpose
23
+ *
24
+ * The CLI (`tsconfig.cli.json`) compiles with `"paths": {}` and reaches a
25
+ * module under `src/lib` only by a relative path whose graph uses no `@/`
26
+ * alias (the arrangement `lib/session/prompt-view` documents). `prompt` and
27
+ * `wait` import these values from here rather than restating them.
28
+ *
29
+ * @module lib/prompt-observation/kinds
30
+ */
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.EXITING_STRICT_ANSWERS = exports.UNNUMBERED_STRICT_RESPOND_KINDS = exports.STRICT_RESPOND_KINDS = exports.NO_PROMPT_OBSERVATION_KINDS = exports.PROMPT_OBSERVATION_KINDS = exports.PROMPT_OBSERVATION_SCHEMA_VERSION = void 0;
33
+ exports.isPromptObservationKind = isPromptObservationKind;
34
+ exports.isDecisionKind = isDecisionKind;
35
+ exports.isStrictRespondKind = isStrictRespondKind;
36
+ exports.isExitingStrictAnswer = isExitingStrictAnswer;
37
+ /** `schemaVersion` of the observation payload. Bumped when a field changes meaning. */
38
+ exports.PROMPT_OBSERVATION_SCHEMA_VERSION = 1;
39
+ /**
40
+ * Every kind an observation can publish.
41
+ *
42
+ * - `antigravity-trust` — agy's first-run folder trust screen (`Do you trust
43
+ * the contents of this project?` over `> Yes, I trust this folder` /
44
+ * `No, exit`). Unnumbered; Enter confirms the highlighted row.
45
+ * - `antigravity-model-picker` — agy's `/model` picker (`Switch Model`): the
46
+ * 1.1.27 layout (`antigravity-live-2364/picker-switch-model.txt`) and the
47
+ * 1.4 one with a search box (`prompt-observation-3797/`, Issue #3797).
48
+ * - `antigravity-permission` — agy's numbered permission dialog (command
49
+ * execution, file creation; `tests/fixtures/antigravity-live-2364/dialog-*`),
50
+ * ending on its `tab Amend` footer. agy's numbered login-method screen is
51
+ * not one (`unknown`).
52
+ * - `antigravity-slash-menu` — agy's slash-command popup.
53
+ * - `composer` — no confirmation: the agent sits at its input box.
54
+ * - `none` — no confirmation, and not at the input box either (working).
55
+ * - `unknown` — something waits on a human and no measured reading names it.
56
+ */
57
+ exports.PROMPT_OBSERVATION_KINDS = [
58
+ 'antigravity-trust',
59
+ 'antigravity-model-picker',
60
+ 'antigravity-permission',
61
+ 'antigravity-slash-menu',
62
+ 'composer',
63
+ 'none',
64
+ 'unknown',
65
+ ];
66
+ /** The two kinds that mean "nothing on screen is asking for a decision". */
67
+ exports.NO_PROMPT_OBSERVATION_KINDS = ['composer', 'none'];
68
+ /** Whether `value` is one of {@link PROMPT_OBSERVATION_KINDS}. */
69
+ function isPromptObservationKind(value) {
70
+ return typeof value === 'string' && exports.PROMPT_OBSERVATION_KINDS.includes(value);
71
+ }
72
+ /** Whether `kind` is a screen that asks for a decision (neither `composer` nor `none`). */
73
+ function isDecisionKind(kind) {
74
+ return !exports.NO_PROMPT_OBSERVATION_KINDS.includes(kind);
75
+ }
76
+ /**
77
+ * The kinds the strict `respond` (Issue #3756) answers. Every other kind is
78
+ * refused before a key: the `/model` picker's effort slider is not read, the
79
+ * slash popup is a menu of the composer, and `unknown` is never answered.
80
+ */
81
+ exports.STRICT_RESPOND_KINDS = ['antigravity-trust', 'antigravity-permission'];
82
+ /** Whether `kind` is one of {@link STRICT_RESPOND_KINDS}. */
83
+ function isStrictRespondKind(kind) {
84
+ return typeof kind === 'string' && exports.STRICT_RESPOND_KINDS.includes(kind);
85
+ }
86
+ /**
87
+ * Strict kinds whose rows carry no number: answered only by a label, which is
88
+ * sent as ↑/↓ and Enter. An option number or `--default` is refused there.
89
+ */
90
+ exports.UNNUMBERED_STRICT_RESPOND_KINDS = ['antigravity-trust'];
91
+ /**
92
+ * Per strict kind, the answer whose consequence is the agent exiting (Issue
93
+ * #3788): its 1-based position, valid only on a screen that shows exactly
94
+ * `optionCount` options AND whose row at that position reads `label`. agy's
95
+ * trust screen offers `Yes, I trust this folder` then `No, exit` (measured:
96
+ * `tests/fixtures/prompt-observation-3755/antigravity-trust.txt`,
97
+ * `antigravity-live-2364/trust-dialog.txt`), and agy exits on the second.
98
+ *
99
+ * The three conditions only narrow: a screen drawn in another order, with
100
+ * another number of rows, or with another wording has no exiting answer, and
101
+ * its outcome stays `indeterminate` (exit 41).
102
+ *
103
+ * Only after such an answer may a shell back in front of the pane be read as
104
+ * the session having ended: after any other answer it is the agent falling
105
+ * over (a crash, a failed start), which the answer did not ask for. A kind
106
+ * absent here has no exiting answer.
107
+ */
108
+ exports.EXITING_STRICT_ANSWERS = {
109
+ // eslint-disable-next-line no-restricted-syntax -- agy's drawn option row, matched against the screen, not display text
110
+ 'antigravity-trust': { position: 2, optionCount: 2, label: 'No, exit' },
111
+ };
112
+ /**
113
+ * Whether answering option `position` (1-based) of a `kind` screen showing
114
+ * `options` (labels in draw order) exits the agent: the declared position, the
115
+ * declared number of options, and the declared label at that position (runs of
116
+ * spaces folded, ends trimmed; case kept).
117
+ */
118
+ function isExitingStrictAnswer(kind, position, options) {
119
+ const exiting = exports.EXITING_STRICT_ANSWERS[kind];
120
+ if (exiting === undefined || exiting.position !== position || exiting.optionCount !== options.length)
121
+ return false;
122
+ return options[position - 1].replace(/\s+/g, ' ').trim() === exiting.label;
123
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * The payload of one prompt observation (Issue #3755): what
4
+ * `GET /api/worktrees/:id/current-output?observe=1` adds as `promptObservation`,
5
+ * what `commandmate prompt --json` prints, and what `commandmate wait` adds to
6
+ * its exit-10 payload as `observation`.
7
+ *
8
+ * Types only, and importable from the CLI for the reason `./kinds` gives: the
9
+ * two imports outside this directory (`polling/auto-yes-suppression-reason`,
10
+ * `session/send-attempt-types`) have no imports of their own.
11
+ *
12
+ * @module lib/prompt-observation/types
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });