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
@@ -215,6 +215,8 @@ exports.copilotAgentEventSource = (0, define_source_1.definePushHookSource)({
215
215
  // module comment above.
216
216
  sessionStartMayArriveLate: true,
217
217
  permissionReplyReleasesPrompt: false,
218
+ // Issue #3820: an allowed `PreToolUse` runs the call without a dialog.
219
+ permissionAllowSuppressesDialog: true,
218
220
  // Not audited. No captured copilot payload carries a `tool_use_id`, so
219
221
  // `'tool-call-id'` would be a guess; whether one exists is still to be
220
222
  // measured. Default = Claude's fallback, the time window.
@@ -130,6 +130,8 @@ exports.geminiAgentEventSource = (0, define_source_1.definePushHookSource)({
130
130
  // Not audited. Default = Claude's current behaviour.
131
131
  sessionStartMayArriveLate: false,
132
132
  permissionReplyReleasesPrompt: false,
133
+ // Issue #3820: not measured, and no permission hook is registered.
134
+ permissionAllowSuppressesDialog: false,
133
135
  eventIdentity: null,
134
136
  resync: 'none',
135
137
  // Issue #2197. Nobody but the screen scraper records gemini replies.
@@ -65,6 +65,8 @@ function createLegacyRelaySource(cliToolId) {
65
65
  permissionHookPredictsDialog: false,
66
66
  sessionStartMayArriveLate: false,
67
67
  permissionReplyReleasesPrompt: false,
68
+ // Issue #3820: an unmeasured tool's allow is not assumed to answer a dialog.
69
+ permissionAllowSuppressesDialog: false,
68
70
  eventIdentity: null,
69
71
  resync: 'none',
70
72
  // Issue #2197. A tool on the compatibility relay has no reader, which
@@ -81,6 +81,7 @@ const logger_1 = require("../../../../lib/logger");
81
81
  const agent_event_types_1 = require("../../../../lib/hooks/agent-event-types");
82
82
  const permission_adjudication_1 = require("../../../../lib/hooks/permission-adjudication");
83
83
  const pending_decision_kind_1 = require("../../../../lib/hooks/pending-decision-kind");
84
+ const auto_yes_confirmation_ledger_1 = require("../../../../lib/polling/auto-yes-confirmation-ledger");
84
85
  const agent_event_state_1 = require("../../../../lib/session/agent-event-state");
85
86
  const structured_prompt_1 = require("../../../../lib/session/structured-prompt");
86
87
  const event_mapper_1 = require("../event-mapper");
@@ -362,6 +363,11 @@ async function ingestOpencodeEvent(target, event) {
362
363
  record.decisionId = (0, mappers_1.repliedPermissionId)(event.raw);
363
364
  record.promptSettled = replyReleasesPrompt(target, instanceId);
364
365
  (0, agent_event_state_1.recordAgentEvent)(target.worktreeId, tool_id_1.OPENCODE_CLI_TOOL_ID, instanceId, record, options);
366
+ // Issue #3820: the approval's confirmation in the Auto-Yes ledger ends
367
+ // here when Auto-Yes did not settle it — who answered is not known.
368
+ if (record.decisionId) {
369
+ (0, auto_yes_confirmation_ledger_1.noteLedgerApiDecisionReplied)({ worktreeId: target.worktreeId, cliToolId: tool_id_1.OPENCODE_CLI_TOOL_ID, instanceId }, record.decisionId);
370
+ }
365
371
  logger.info('opencode-permission-reply-observed', {
366
372
  worktreeId: target.worktreeId,
367
373
  instanceId,
@@ -316,6 +316,8 @@ exports.opencodeAgentEventSource = (0, define_source_1.definePullEventSource)({
316
316
  // `permission.replied` arrives on the same stream and is a positive
317
317
  // statement that the dialog is gone (#1898). The only source that can say so.
318
318
  permissionReplyReleasesPrompt: true,
319
+ // Issue #3820: an allow is the approval itself, over the agent's API.
320
+ permissionAllowSuppressesDialog: true,
319
321
  // `per_...` — the id in the reply URL, which is the same id the frame
320
322
  // carries (#1899). Real identity, so this source does not need the time
321
323
  // window that loses the `stop` of a short turn.
@@ -367,9 +367,13 @@ async function writeOpencodeV2Turn(target, rendered, timestampMs) {
367
367
  * @param target - The instance the stream belongs to
368
368
  * @param port - Its server
369
369
  * @param sessionId - `ses_…` from the end-of-turn frame
370
+ * @param isCurrent - Whether the subscription that asked is still the
371
+ * instance's (Issue #3733); checked after the read, right before the model
372
+ * is latched. False skips only the latch: the rows are still written (the
373
+ * turn did happen, and `requestId` keeps a later sync from doubling them)
370
374
  * @returns How many rows were written
371
375
  */
372
- function syncOpencodeV2History(target, port, sessionId) {
376
+ function syncOpencodeV2History(target, port, sessionId, isCurrent = () => true) {
373
377
  return serialize((0, secrets_1.opencodeV2KeyOf)(target), async () => {
374
378
  const instanceId = target.instanceId ?? target.cliToolId;
375
379
  try {
@@ -395,7 +399,12 @@ function syncOpencodeV2History(target, port, sessionId) {
395
399
  }
396
400
  // Issue #2964: the model that answered, onto the hook latch the UI and
397
401
  // `capture --json` read. Before the rows, so a failed write cannot cost it.
398
- (0, agent_event_state_1.recordAgentReportedModel)(target.worktreeId, tool_id_1.OPENCODE_V2_CLI_TOOL_ID, target.instanceId ?? tool_id_1.OPENCODE_V2_CLI_TOOL_ID, readLatestOpencodeV2AssistantModel(entries));
402
+ // Issue #3733: not for a subscription closed or replaced during the read —
403
+ // a restarted or stopped session would show the old model, and its change
404
+ // broadcast and Push (#2357) would fire for a session that is not there.
405
+ if (isCurrent()) {
406
+ (0, agent_event_state_1.recordAgentReportedModel)(target.worktreeId, tool_id_1.OPENCODE_V2_CLI_TOOL_ID, target.instanceId ?? tool_id_1.OPENCODE_V2_CLI_TOOL_ID, readLatestOpencodeV2AssistantModel(entries));
407
+ }
399
408
  const closed = buildOpencodeV2TurnsFromMessages(entries, sessionId).filter((turn) => turn.closed);
400
409
  const kept = closed.slice(-exports.MAX_OPENCODE_V2_SYNCED_TURNS);
401
410
  let written = 0;
@@ -64,6 +64,7 @@ const logger_1 = require("../../../../lib/logger");
64
64
  const agent_event_types_1 = require("../../../../lib/hooks/agent-event-types");
65
65
  const permission_adjudication_1 = require("../../../../lib/hooks/permission-adjudication");
66
66
  const pending_decision_kind_1 = require("../../../../lib/hooks/pending-decision-kind");
67
+ const auto_yes_confirmation_ledger_1 = require("../../../../lib/polling/auto-yes-confirmation-ledger");
67
68
  const agent_event_state_1 = require("../../../../lib/session/agent-event-state");
68
69
  const structured_prompt_1 = require("../../../../lib/session/structured-prompt");
69
70
  const event_mapper_1 = require("../event-mapper");
@@ -207,6 +208,11 @@ async function ingestOpencodeV2Event(target, event, stopEffect = applyStop, load
207
208
  record.decisionId = (0, mappers_1.frameDecisionId)(event.raw);
208
209
  record.promptSettled = true;
209
210
  (0, agent_event_state_1.recordAgentEvent)(target.worktreeId, tool_id_1.OPENCODE_V2_CLI_TOOL_ID, instanceId, record, options);
211
+ // Issue #3820: as v1's `permission.replied` — the ledger's confirmation
212
+ // of this approval ends, by whoever answered it.
213
+ if (record.decisionId) {
214
+ (0, auto_yes_confirmation_ledger_1.noteLedgerApiDecisionReplied)({ worktreeId: target.worktreeId, cliToolId: tool_id_1.OPENCODE_V2_CLI_TOOL_ID, instanceId }, record.decisionId);
215
+ }
210
216
  }
211
217
  else if (event.event === 'notification' && event.detail === mappers_1.OPENCODE_V2_QUESTION_DETAIL) {
212
218
  const spec = await readQuestion(target, event, loadForm);
@@ -254,6 +254,8 @@ exports.opencodeV2AgentEventSource = (0, define_source_1.definePullEventSource)(
254
254
  permissionHookPredictsDialog: false,
255
255
  sessionStartMayArriveLate: false,
256
256
  permissionReplyReleasesPrompt: true,
257
+ // Issue #3820: an allow is the approval itself, over the agent's API.
258
+ permissionAllowSuppressesDialog: true,
257
259
  // Issue #2945: `per_…` / `frm_…`, the id the reply URL takes and the one
258
260
  // `permission.replied` / `form.replied` settle. Moves together with
259
261
  // `extractEventIdentity` below.
@@ -386,7 +386,7 @@ function deliver(state, frame) {
386
386
  error: error instanceof Error ? error.message : String(error),
387
387
  });
388
388
  }
389
- void recordOpencodeV2TurnEnd(state.target, state.port, frame);
389
+ void recordOpencodeV2TurnEnd(state.target, state.port, frame, () => isCurrentSubscription(state));
390
390
  void refreshOpencodeV2UsageOnFrame(state.target, state.port, frame, () => isCurrentSubscription(state));
391
391
  }
392
392
  function isCurrentSubscription(state) {
@@ -429,16 +429,18 @@ function refreshOpencodeV2UsageOnFrame(target, port, frame, isCurrent = () => tr
429
429
  *
430
430
  * Exported for the tests, which drive frames through the path the stream does.
431
431
  *
432
+ * @param isCurrent - Handed to `syncOpencodeV2History`, which skips the model
433
+ * latch when it is false after the read (Issue #3733)
432
434
  * @returns The sync, or null when the frame ends no turn
433
435
  */
434
- function recordOpencodeV2TurnEnd(target, port, frame) {
436
+ function recordOpencodeV2TurnEnd(target, port, frame, isCurrent = () => true) {
435
437
  try {
436
438
  if (!(0, history_1.isOpencodeV2TurnEndEventType)((0, mappers_1.frameType)(frame)))
437
439
  return null;
438
440
  const sessionId = (0, mappers_1.frameSessionId)(frame);
439
441
  if (sessionId === null)
440
442
  return null;
441
- return (0, history_1.syncOpencodeV2History)(target, port, sessionId);
443
+ return (0, history_1.syncOpencodeV2History)(target, port, sessionId, isCurrent);
442
444
  }
443
445
  catch (error) {
444
446
  logger.warn('opencode-v2-history-trigger-failed', {
@@ -124,12 +124,24 @@ function resetPendingDecisions() {
124
124
  * function exists, cannot find out without going out of its way — whether the
125
125
  * verdict left through the response body or through a second HTTP call.
126
126
  *
127
+ * @param options.onReceipt - Issue #3820: handed the receipt — what
128
+ * {@link answerPendingDecisionWithReceipt} returns beside the body — before
129
+ * the body is returned. For a caller that records the delivery (the hook
130
+ * route's ledger) and writes the body whatever it says; the body is the same
131
+ * with or without it.
127
132
  * @returns The body to write. `{}` means "nothing to say here", which for a
128
133
  * hook is the measured no-decision reply and for a pull source is simply the
129
134
  * ack of a request whose answer went elsewhere.
130
135
  */
131
- async function answerPendingDecision(source, ref, decision, verdict) {
132
- return (await answerPendingDecisionWithReceipt(source, ref, decision, verdict)).body;
136
+ async function answerPendingDecision(source, ref, decision, verdict, options = {}) {
137
+ const { body, delivery } = await answerPendingDecisionWithReceipt(source, ref, decision, verdict);
138
+ try {
139
+ options.onReceipt?.(delivery);
140
+ }
141
+ catch {
142
+ // The receipt is the caller's record, never a reason to lose the body.
143
+ }
144
+ return body;
133
145
  }
134
146
  /**
135
147
  * Answer one decision and keep the receipt (Issue #1898).
@@ -24,7 +24,8 @@
24
24
  * ## What is kept
25
25
  *
26
26
  * ONE entry per instance: the tool name and the arrival time of the most recent
27
- * question. A second question replaces the first, because the only thing asked
27
+ * question, and the call it asked about (`callId`, Issue #3820) when the body
28
+ * named one. A second question replaces the first, because the only thing asked
28
29
  * of this record is "was there one lately".
29
30
  *
30
31
  * The screen carries no tool name (only the option labels), so the caller that
@@ -41,6 +42,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
41
42
  exports.ANTIGRAVITY_PERMISSION_RECEIPT_WINDOW_MS = void 0;
42
43
  exports.recordAntigravityPermissionReceipt = recordAntigravityPermissionReceipt;
43
44
  exports.hasRecentAntigravityPermissionReceipt = hasRecentAntigravityPermissionReceipt;
45
+ exports.getAntigravityPermissionReceiptAt = getAntigravityPermissionReceiptAt;
46
+ exports.getAntigravityPermissionReceiptCallId = getAntigravityPermissionReceiptCallId;
44
47
  exports.resetAntigravityPermissionReceiptsForTests = resetAntigravityPermissionReceiptsForTests;
45
48
  const auto_yes_state_1 = require("../../lib/auto-yes-state");
46
49
  const global_state_1 = require("../global-state");
@@ -69,6 +72,12 @@ function pruneExpiredReceipts(now) {
69
72
  receipts.delete(key);
70
73
  }
71
74
  }
75
+ /**
76
+ * Per-instance episode state of the poller's reads (Issue #3767); the logic is in
77
+ * `antigravity-receipt-episodes.ts`. The Map lives here only so that
78
+ * {@link resetAntigravityPermissionReceiptsForTests} empties both records.
79
+ */
80
+ const observations = (0, global_state_1.getOrInitGlobal)('__antigravityReceiptObservations', () => new Map());
72
81
  /**
73
82
  * Record that agy asked CommandMate about a tool call.
74
83
  *
@@ -80,12 +89,14 @@ function pruneExpiredReceipts(now) {
80
89
  * @param instanceId - Agent instance id (the tool id itself for the primary)
81
90
  * @param toolName - Tool the request named, or null when the payload had none
82
91
  * @param at - Epoch ms the request arrived
92
+ * @param callId - Issue #3820: the call the request asked about
93
+ * (`PermissionRequestPayload.callId`), null when it named none
83
94
  */
84
- function recordAntigravityPermissionReceipt(worktreeId, cliToolId, instanceId, toolName, at = Date.now()) {
95
+ function recordAntigravityPermissionReceipt(worktreeId, cliToolId, instanceId, toolName, at = Date.now(), callId = null) {
85
96
  if (toolName === null)
86
97
  return;
87
98
  pruneExpiredReceipts(at);
88
- receipts.set((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId), { toolName, at });
99
+ receipts.set((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId), { toolName, at, callId });
89
100
  }
90
101
  /**
91
102
  * Did agy ask CommandMate about a tool call, for this instance, within
@@ -107,7 +118,22 @@ function hasRecentAntigravityPermissionReceipt(worktreeId, cliToolId, instanceId
107
118
  return false;
108
119
  return now - receipt.at <= exports.ANTIGRAVITY_PERMISSION_RECEIPT_WINDOW_MS;
109
120
  }
121
+ /**
122
+ * The latest question's arrival time for this instance, kept past the window
123
+ * (Issue #3767), or null when none was ever received.
124
+ */
125
+ function getAntigravityPermissionReceiptAt(worktreeId, cliToolId, instanceId) {
126
+ return receipts.get((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId))?.at ?? null;
127
+ }
128
+ /**
129
+ * The call the latest question asked about (Issue #3820), or null when it
130
+ * named none or none was received. For the ledger only.
131
+ */
132
+ function getAntigravityPermissionReceiptCallId(worktreeId, cliToolId, instanceId) {
133
+ return receipts.get((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId))?.callId ?? null;
134
+ }
110
135
  /** Empty the record. Tests only: production entries age out on their own. */
111
136
  function resetAntigravityPermissionReceiptsForTests() {
112
137
  receipts.clear();
138
+ observations.clear();
113
139
  }
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ /**
3
+ * When did an agy approval dialog first appear, and was it asked about in time?
4
+ * (Issue #3767)
5
+ *
6
+ * `hasRecentAntigravityPermissionReceipt` measures the window to the CLOCK OF THE
7
+ * TICK. agy draws a dialog some seconds after the hook reply, and the poller ticks
8
+ * every 5s after a response, so a dialog drawn 5.9s after the receipt was first
9
+ * read 8.7s after it, outside the 8s window, and no later receipt came to open
10
+ * it. The gate here judges the window to the dialog's first appearance instead
11
+ * (bounded by the last read that saw no dialog), which the poller makes possible
12
+ * by bracketing its reads with {@link beginAntigravityFrameRead} /
13
+ * {@link endAntigravityFrameRead}. See `antigravity-permission-receipts` for the
14
+ * receipt record itself.
15
+ *
16
+ * @module lib/polling/antigravity-receipt-episodes
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.ANTIGRAVITY_ANSWERED_DIALOG_GRACE_MS = exports.ANTIGRAVITY_PERMISSION_RECEIPT_OBSERVATION_SLACK_MS = void 0;
20
+ exports.beginAntigravityFrameRead = beginAntigravityFrameRead;
21
+ exports.endAntigravityFrameRead = endAntigravityFrameRead;
22
+ exports.markAntigravityAnswerSent = markAntigravityAnswerSent;
23
+ exports.getAntigravityAcceptedReceiptAt = getAntigravityAcceptedReceiptAt;
24
+ exports.getAntigravityAcceptedReceiptCallId = getAntigravityAcceptedReceiptCallId;
25
+ exports.getAntigravityReceiptVerdict = getAntigravityReceiptVerdict;
26
+ exports.judgeAntigravityPermissionReceipt = judgeAntigravityPermissionReceipt;
27
+ const auto_yes_state_1 = require("../../lib/auto-yes-state");
28
+ const global_state_1 = require("../global-state");
29
+ const antigravity_permission_receipts_1 = require("./antigravity-permission-receipts");
30
+ /**
31
+ * Extra time past the window that the FIRST tick to see a dialog may be after
32
+ * the receipt (Issue #3767). The dialog's real appearance is only known to lie
33
+ * between the last tick that saw none and the first that saw it; that gap is a
34
+ * poll interval (5s after a response), so the window is judged on the lower
35
+ * bound and the first sighting is capped at window + this slack.
36
+ */
37
+ exports.ANTIGRAVITY_PERMISSION_RECEIPT_OBSERVATION_SLACK_MS = 5_000;
38
+ /**
39
+ * Longest gap between two poller reads over which an episode is carried
40
+ * (Issue #3767): the slowest tick (5s after a response) plus room for the
41
+ * capture. A longer gap (capture backoff, no session, Auto-Yes off and on) means
42
+ * nothing is known of the screen in between, so the episode is dropped and the
43
+ * next candidate is judged from its own first sighting.
44
+ */
45
+ const MAX_READ_GAP_MS = exports.ANTIGRAVITY_PERMISSION_RECEIPT_OBSERVATION_SLACK_MS + 2_000;
46
+ /**
47
+ * How long after the poller SENT its answer to an accepted dialog (Issue #3789,
48
+ * {@link markAntigravityAnswerSent}) a dialog may still be on screen before it
49
+ * is reported: the window, the slack, and the cooldown the poller waits after
50
+ * an answer. Until then it is agy taking its time to take the dialog down, and
51
+ * stays `answered` (silent). Past it the keys did not clear the dialog, or a
52
+ * dialog with no question of its own replaced it between two reads (the screen
53
+ * cannot tell which), and it is `outlived` — withheld, and recorded.
54
+ *
55
+ * Written as the sum's value (8s + 5s + 5s, `COOLDOWN_INTERVAL_MS`), not the
56
+ * sum: tests that mock the receipts module without the window constant would
57
+ * fail at load. A unit test pins it to the sum.
58
+ */
59
+ exports.ANTIGRAVITY_ANSWERED_DIALOG_GRACE_MS = 18_000;
60
+ /** Beyond this, a late dialog is read as "the hook stopped arriving" (#3767). */
61
+ const RECEIPT_LAPSED_AFTER_MS = 60_000;
62
+ const observations = (0, global_state_1.getOrInitGlobal)('__antigravityReceiptObservations', () => new Map());
63
+ const isTimeOrNull = (x) => x === null || (typeof x === 'number' && Number.isFinite(x));
64
+ /**
65
+ * The Map lives on globalThis and outlives a module reload, so an entry may have
66
+ * another shape. Such an entry is dropped (no episode: the plain tick test),
67
+ * never read as times — `undefined` would turn every comparison into NaN.
68
+ */
69
+ function isObservation(v) {
70
+ if (typeof v !== 'object' || v === null)
71
+ return false;
72
+ const o = v;
73
+ return (typeof o.tracking === 'boolean' &&
74
+ typeof o.candidateSeen === 'boolean' &&
75
+ ['firstSeenAt', 'clearAt', 'prevReadAt', 'lastReadAt', 'acceptedReceiptAt', 'answerSentAt', 'usedReceiptAt'].every(k => isTimeOrNull(o[k])) &&
76
+ (o.verdict === null || typeof o.verdict === 'object') &&
77
+ (o.answerInterrupted === undefined || typeof o.answerInterrupted === 'boolean') &&
78
+ (o.acceptedCallId === undefined || o.acceptedCallId === null || typeof o.acceptedCallId === 'string'));
79
+ }
80
+ function existingObservation(key) {
81
+ const o = observations.get(key);
82
+ if (o === undefined)
83
+ return undefined;
84
+ if (isObservation(o))
85
+ return o;
86
+ observations.delete(key);
87
+ return undefined;
88
+ }
89
+ function observationOf(key) {
90
+ let o = existingObservation(key);
91
+ if (!o) {
92
+ o = {
93
+ tracking: false,
94
+ candidateSeen: false,
95
+ firstSeenAt: null,
96
+ clearAt: null,
97
+ prevReadAt: null,
98
+ lastReadAt: null,
99
+ acceptedReceiptAt: null,
100
+ acceptedCallId: null,
101
+ answerSentAt: null,
102
+ answerInterrupted: false,
103
+ usedReceiptAt: null,
104
+ verdict: null,
105
+ };
106
+ observations.set(key, o);
107
+ }
108
+ return o;
109
+ }
110
+ /**
111
+ * Start one poller read of an agy frame (Issue #3767). Pair with
112
+ * {@link endAntigravityFrameRead}; the pair is what lets the gate judge the
113
+ * window by when the dialog first appeared rather than by the tick's clock.
114
+ */
115
+ function beginAntigravityFrameRead(worktreeId, instanceId, now = Date.now()) {
116
+ const o = observationOf((0, auto_yes_state_1.buildCompositeKey)(worktreeId, 'antigravity', instanceId));
117
+ if (o.lastReadAt !== null && !(now - o.lastReadAt <= MAX_READ_GAP_MS)) {
118
+ // Reads stopped for a while: the dialog now on screen may not be the one
119
+ // the episode saw, nor did it appear right after the last clear read.
120
+ o.firstSeenAt = null;
121
+ o.clearAt = null;
122
+ o.acceptedReceiptAt = null;
123
+ o.acceptedCallId = null;
124
+ o.answerSentAt = null;
125
+ o.answerInterrupted = false;
126
+ o.verdict = null;
127
+ }
128
+ o.tracking = true;
129
+ o.candidateSeen = false;
130
+ o.prevReadAt = o.lastReadAt;
131
+ o.lastReadAt = now;
132
+ }
133
+ /**
134
+ * End the read. A read in which the gate never saw a prompt candidate closes the
135
+ * episode: the next candidate is a new dialog with its own first sighting.
136
+ */
137
+ function endAntigravityFrameRead(worktreeId, instanceId, now = Date.now()) {
138
+ const o = existingObservation((0, auto_yes_state_1.buildCompositeKey)(worktreeId, 'antigravity', instanceId));
139
+ if (!o || !o.tracking || o.candidateSeen)
140
+ return;
141
+ o.firstSeenAt = null;
142
+ o.acceptedReceiptAt = null;
143
+ o.acceptedCallId = null;
144
+ o.answerSentAt = null;
145
+ o.answerInterrupted = false;
146
+ o.verdict = null;
147
+ o.clearAt = now;
148
+ }
149
+ /**
150
+ * The poller sent keys to the dialog the current episode accepted (Issue #3789):
151
+ * starts {@link ANTIGRAVITY_ANSWERED_DIALOG_GRACE_MS}. Called only after the send
152
+ * reached tmux; a tick that accepted but sent nothing never calls it, so its
153
+ * dialog is never reported as one that outlived an answer. No-op without an
154
+ * accepted episode.
155
+ *
156
+ * Issue #3796: also called, with `interrupted`, when the send was cut short
157
+ * after it began (stopped part-way, or failed) — some of its keys may be on the
158
+ * pane, and the receipt is spent either way. Without it such a dialog stayed
159
+ * `answered` (silent) for as long as it stayed up. Starting the grace only
160
+ * leads to `outlived`, which withholds: nothing is answered because of it.
161
+ *
162
+ * @param options.forReceiptAt - The episode the send was for
163
+ * ({@link getAntigravityAcceptedReceiptAt} read when it began). Given, only
164
+ * that episode is marked: a send that comes back — whole or cut short —
165
+ * after a stop → enable, when the successor already accepted a dialog on a
166
+ * newer receipt, must not start that dialog's grace or give it its own
167
+ * "cut short" (Issue #3796 review, review E for the whole send).
168
+ */
169
+ function markAntigravityAnswerSent(worktreeId, instanceId, now = Date.now(), options = {}) {
170
+ const o = existingObservation((0, auto_yes_state_1.buildCompositeKey)(worktreeId, 'antigravity', instanceId));
171
+ if (!o || o.acceptedReceiptAt === null)
172
+ return;
173
+ if (options.forReceiptAt !== undefined && options.forReceiptAt !== o.acceptedReceiptAt)
174
+ return;
175
+ o.answerSentAt = now;
176
+ o.answerInterrupted = options.interrupted === true;
177
+ }
178
+ /**
179
+ * The receipt (`at`) the current episode was accepted on, or null when none
180
+ * (Issue #3796): what identifies the episode a send is for.
181
+ */
182
+ function getAntigravityAcceptedReceiptAt(worktreeId, instanceId) {
183
+ return existingObservation((0, auto_yes_state_1.buildCompositeKey)(worktreeId, 'antigravity', instanceId))?.acceptedReceiptAt ?? null;
184
+ }
185
+ /**
186
+ * The call the current episode was accepted for (Issue #3820, design
187
+ * `docs/design/auto-yes-measurement-3820.md` §2.4): what the Auto-Yes ledger
188
+ * ties the screen's confirmation to, so the hook request and the `PostToolUse`
189
+ * of that call find it. Null when nothing is accepted or the receipt named no
190
+ * call. Read only to record; the gate never consults it.
191
+ */
192
+ function getAntigravityAcceptedReceiptCallId(worktreeId, instanceId) {
193
+ const o = existingObservation((0, auto_yes_state_1.buildCompositeKey)(worktreeId, 'antigravity', instanceId));
194
+ if (!o || o.acceptedReceiptAt === null)
195
+ return null;
196
+ return o.acceptedCallId ?? null;
197
+ }
198
+ /**
199
+ * The verdict of the current episode's latest consultation, or null when no
200
+ * candidate dialog was read in the last tick (Issue #3767).
201
+ */
202
+ function getAntigravityReceiptVerdict(worktreeId, instanceId) {
203
+ return existingObservation((0, auto_yes_state_1.buildCompositeKey)(worktreeId, 'antigravity', instanceId))?.verdict ?? null;
204
+ }
205
+ function causeFor(ageMs) {
206
+ if (ageMs === null)
207
+ return 'never';
208
+ return ageMs > RECEIPT_LAPSED_AFTER_MS ? 'lapsed' : 'late';
209
+ }
210
+ /**
211
+ * May the prompt candidate on this instance's frame be answered, judged by when
212
+ * the dialog first appeared (Issue #3767)?
213
+ *
214
+ * Replaces the tick-clock test of {@link hasRecentAntigravityPermissionReceipt}
215
+ * for the caller that answers: agy draws the dialog some seconds after the hook
216
+ * reply, and a 5s poll can first read it past the 8s window. The dialog is taken
217
+ * as appearing at the later of the last tick that saw none and the question's
218
+ * arrival. Still refused: a question that arrived after the dialog was already
219
+ * up, one older than the window by then, one already spent on another dialog,
220
+ * and none at all (a quotation follows no question).
221
+ *
222
+ * Without {@link beginAntigravityFrameRead} brackets there is no episode to
223
+ * remember, and this is exactly the old tick test.
224
+ */
225
+ function judgeAntigravityPermissionReceipt(worktreeId, instanceId, nowOverride) {
226
+ const now = nowOverride ?? Date.now();
227
+ const key = (0, auto_yes_state_1.buildCompositeKey)(worktreeId, 'antigravity', instanceId);
228
+ const o = observationOf(key);
229
+ if (!o.tracking) {
230
+ // No bracketed reads: no episode to remember, the plain tick test.
231
+ const ok = nowOverride === undefined
232
+ ? (0, antigravity_permission_receipts_1.hasRecentAntigravityPermissionReceipt)(worktreeId, 'antigravity', instanceId)
233
+ : (0, antigravity_permission_receipts_1.hasRecentAntigravityPermissionReceipt)(worktreeId, 'antigravity', instanceId, undefined, nowOverride);
234
+ return { ok, cause: ok ? null : 'never', lastReceiptAt: null, firstSeenAt: now, ageMs: null };
235
+ }
236
+ const lastReceiptAt = (0, antigravity_permission_receipts_1.getAntigravityPermissionReceiptAt)(worktreeId, 'antigravity', instanceId);
237
+ const sameRead = o.candidateSeen;
238
+ o.candidateSeen = true;
239
+ if (o.firstSeenAt === null)
240
+ o.firstSeenAt = now;
241
+ const firstSeenAt = o.firstSeenAt;
242
+ const ageMs = lastReceiptAt === null ? null : firstSeenAt - lastReceiptAt;
243
+ const verdict = (cause, age = ageMs) => {
244
+ const v = { ok: cause === null, cause, lastReceiptAt, firstSeenAt, ageMs: age };
245
+ o.verdict = v;
246
+ return v;
247
+ };
248
+ if (lastReceiptAt === null)
249
+ return verdict('never');
250
+ if (o.acceptedReceiptAt !== null && lastReceiptAt > o.acceptedReceiptAt) {
251
+ // A newer question while the answered dialog stayed up on every tick: the
252
+ // dialog it asked about replaced the old one between two reads. A new
253
+ // episode, which cannot have appeared before the previous read.
254
+ o.firstSeenAt = now;
255
+ o.clearAt = o.prevReadAt;
256
+ o.acceptedReceiptAt = null;
257
+ o.acceptedCallId = null;
258
+ o.answerSentAt = null;
259
+ o.answerInterrupted = false;
260
+ return judgeAntigravityPermissionReceipt(worktreeId, instanceId, now);
261
+ }
262
+ if (o.acceptedReceiptAt === lastReceiptAt) {
263
+ // The read that accepted may consult the gate twice (the tool's reader, then
264
+ // the generic pass). A LATER tick over the same dialog is the old tick test:
265
+ // a dialog that outlives the answer is not answered again past the window.
266
+ // Withheld, but as `answered`: the caller records no no-hook-receipt for it.
267
+ if (sameRead || now - lastReceiptAt <= antigravity_permission_receipts_1.ANTIGRAVITY_PERMISSION_RECEIPT_WINDOW_MS)
268
+ return verdict(null);
269
+ // Issue #3789: not forever, though, once keys were sent. Past the grace they
270
+ // did not clear the dialog (or one with no question of its own replaced it),
271
+ // and staying silent would leave the session stopped with no record of why.
272
+ // Accepted but never sent stays `answered`: the poller's own reason for not
273
+ // sending (partial-answer, …) is the one to keep, not overwrite. Written as
274
+ // `!(… <= …)` so that a NaN time reports.
275
+ if (o.answerSentAt !== null && !(now - o.answerSentAt <= exports.ANTIGRAVITY_ANSWERED_DIALOG_GRACE_MS)) {
276
+ const v = verdict('outlived');
277
+ if (o.answerInterrupted === true)
278
+ v.answerInterrupted = true;
279
+ return v;
280
+ }
281
+ return verdict('answered');
282
+ }
283
+ if (o.usedReceiptAt === lastReceiptAt)
284
+ return verdict('used');
285
+ if (lastReceiptAt > firstSeenAt)
286
+ return verdict('predates');
287
+ // The clear read bounds the appearance only when it is the read right before
288
+ // the first sighting; otherwise the dialog may have been up since long before.
289
+ const clearBound = o.clearAt !== null && firstSeenAt - o.clearAt <= MAX_READ_GAP_MS ? o.clearAt : firstSeenAt;
290
+ const appearedAfter = Math.max(clearBound, lastReceiptAt);
291
+ // Written as `!(… <= …)` so that a NaN withholds.
292
+ if (!(appearedAfter - lastReceiptAt <= antigravity_permission_receipts_1.ANTIGRAVITY_PERMISSION_RECEIPT_WINDOW_MS) ||
293
+ !(firstSeenAt - lastReceiptAt <=
294
+ antigravity_permission_receipts_1.ANTIGRAVITY_PERMISSION_RECEIPT_WINDOW_MS + exports.ANTIGRAVITY_PERMISSION_RECEIPT_OBSERVATION_SLACK_MS)) {
295
+ return verdict(causeFor(ageMs));
296
+ }
297
+ o.acceptedReceiptAt = lastReceiptAt;
298
+ o.acceptedCallId = (0, antigravity_permission_receipts_1.getAntigravityPermissionReceiptCallId)(worktreeId, 'antigravity', instanceId);
299
+ o.usedReceiptAt = lastReceiptAt;
300
+ return verdict(null);
301
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /**
3
+ * The `AskUserQuestion` confirm pages Auto-Yes leaves to a human (Issue #3497,
4
+ * Issue #3748).
5
+ *
6
+ * `Submit` on these pages picks nothing: it commits whatever stands as the
7
+ * answers. On Kewton/Musunest#283 that was the worker's own proposal, which the
8
+ * worker then implemented as though a human had approved it. So neither the
9
+ * server's poller (`suppressIfNotOursToAnswer`, step 3.3) nor the browser's
10
+ * fallback (`useAutoYes`, which answers only while no server poller runs) sends
11
+ * a key to them.
12
+ *
13
+ * Server-only: `normalizeFrame` and the tools' detectors reach `logger` → `env`
14
+ * → `fs`. The browser judges by the prompt's options instead
15
+ * (`polling/auto-yes-confirm-shape`).
16
+ *
17
+ * @module lib/polling/auto-yes-confirm-page
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.isAutoYesDeclinedConfirmPage = isAutoYesDeclinedConfirmPage;
21
+ exports.isAutoYesDeclinedConfirmFrame = isAutoYesDeclinedConfirmFrame;
22
+ const frame_1 = require("../detection/tools/frame");
23
+ const selection_shape_1 = require("../detection/tools/command-code/selection-shape");
24
+ const detect_1 = require("../detection/tools/claude/detect");
25
+ /**
26
+ * Is this frame one of the confirm pages Auto-Yes does not answer?
27
+ *
28
+ * - `command-code`: `❯ 1. Submit` / `2. Cancel` under the question's tab strip,
29
+ * with or without the back hint (#3497, `isCommandCodeQuestionConfirmPage`).
30
+ * - `claude`: `Ready to submit your answers?` / `❯ 1. Submit answers` /
31
+ * `2. Cancel` (#3748, `isClaudeAskUserQuestionConfirmPage`).
32
+ *
33
+ * Every other tool: false — none has a measured confirm page.
34
+ *
35
+ * @param frame - The tick's one normalised frame (Issue #3183)
36
+ */
37
+ function isAutoYesDeclinedConfirmPage(cliToolId, frame) {
38
+ // An empty capture draws no page (and Claude's reading walks the rows).
39
+ if (!frame.raw)
40
+ return false;
41
+ if (cliToolId === 'command-code')
42
+ return (0, selection_shape_1.isCommandCodeQuestionConfirmPage)(frame.raw);
43
+ if (cliToolId === 'claude')
44
+ return (0, detect_1.isClaudeAskUserQuestionConfirmPage)(frame);
45
+ return false;
46
+ }
47
+ /**
48
+ * {@link isAutoYesDeclinedConfirmPage} on a capture as text. False for no frame.
49
+ */
50
+ function isAutoYesDeclinedConfirmFrame(cliToolId, output) {
51
+ if (!output)
52
+ return false;
53
+ if (cliToolId !== 'command-code' && cliToolId !== 'claude')
54
+ return false;
55
+ return isAutoYesDeclinedConfirmPage(cliToolId, (0, frame_1.normalizeFrame)(output, cliToolId));
56
+ }