commandmate 0.46.1 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (711) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +223 -216
  3. package/.next/app-path-routes-manifest.json +19 -18
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +8 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update/route.js +4 -2
  13. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/capabilities/route.js +1 -1
  19. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/daily-summary/route.js +1 -1
  21. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  22. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  24. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  32. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  33. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  35. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  36. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  39. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/push/escalation/route.js +1 -7
  43. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  44. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/push/vapid/route.js +1 -7
  47. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  48. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  50. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  51. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/relays/route.js +1 -1
  53. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  54. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  58. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  59. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/clone/route.js +1 -1
  61. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  62. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/repositories/restore/route.js +1 -1
  65. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  66. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/route.js +1 -1
  68. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  69. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/repositories/scan/route.js +1 -1
  71. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  72. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/sync/route.js +1 -1
  74. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  75. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  78. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  79. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  96. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  99. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  102. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  107. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  110. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  113. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  118. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  149. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  152. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  162. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  165. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -0
  170. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -0
  171. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -0
  172. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  175. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  178. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  181. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
  193. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  205. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  208. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  225. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/worktrees/route.js +1 -1
  231. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  234. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  236. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  237. package/.next/server/app/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  241. package/.next/server/app/sessions/page.js +1 -1
  242. package/.next/server/app/sessions/page.js.nft.json +1 -1
  243. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  244. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  245. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  246. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  248. package/.next/server/app/worktrees/[id]/page.js +11 -11
  249. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  250. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  251. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  252. package/.next/server/app-paths-manifest.json +19 -18
  253. package/.next/server/chunks/1210.js +1 -1
  254. package/.next/server/chunks/1559.js +1 -1
  255. package/.next/server/chunks/1601.js +7 -0
  256. package/.next/server/chunks/1836.js +1 -0
  257. package/.next/server/chunks/1945.js +14 -0
  258. package/.next/server/chunks/2119.js +1 -1
  259. package/.next/server/chunks/2404.js +1 -1
  260. package/.next/server/chunks/2422.js +1 -0
  261. package/.next/server/chunks/2445.js +1 -1
  262. package/.next/server/chunks/2460.js +1 -1
  263. package/.next/server/chunks/2534.js +1 -1
  264. package/.next/server/chunks/3241.js +1 -1
  265. package/.next/server/chunks/{3077.js → 4194.js} +12 -12
  266. package/.next/server/chunks/4207.js +1 -1
  267. package/.next/server/chunks/4248.js +1 -1
  268. package/.next/server/chunks/5209.js +1 -1
  269. package/.next/server/chunks/5292.js +1 -1
  270. package/.next/server/chunks/5595.js +1 -1
  271. package/.next/server/chunks/5845.js +1 -1
  272. package/.next/server/chunks/6130.js +1 -1
  273. package/.next/server/chunks/6401.js +1 -1
  274. package/.next/server/chunks/{2283.js → 6486.js} +7 -7
  275. package/.next/server/chunks/6722.js +1 -1
  276. package/.next/server/chunks/6781.js +1 -1
  277. package/.next/server/chunks/6793.js +2 -2
  278. package/.next/server/chunks/7166.js +19 -0
  279. package/.next/server/chunks/7905.js +1 -1
  280. package/.next/server/chunks/8581.js +10 -10
  281. package/.next/server/chunks/8728.js +2 -2
  282. package/.next/server/chunks/8791.js +1 -1
  283. package/.next/server/chunks/8918.js +4 -4
  284. package/.next/server/chunks/9199.js +1 -0
  285. package/.next/server/chunks/936.js +1 -0
  286. package/.next/server/chunks/9390.js +1 -1
  287. package/.next/server/chunks/9540.js +1 -0
  288. package/.next/server/chunks/9627.js +1 -1
  289. package/.next/server/chunks/9731.js +3 -3
  290. package/.next/server/middleware-manifest.json +5 -5
  291. package/.next/server/pages/500.html +1 -1
  292. package/.next/server/server-reference-manifest.json +1 -1
  293. package/.next/static/chunks/{2407-9703c569370b8a9d.js → 2407-b2f524f99f7fc353.js} +1 -1
  294. package/.next/static/chunks/5371-a549a0d2c2044d41.js +1 -0
  295. package/.next/static/chunks/{5794-4eee51ff1e878aa6.js → 5794-80ac3f06f098ea29.js} +1 -1
  296. package/.next/static/chunks/602-1c1488959215e140.js +1 -0
  297. package/.next/static/chunks/9079-24f9fa549ed298f1.js +1 -0
  298. package/.next/static/chunks/app/api/agents/update/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  299. package/.next/static/chunks/app/api/agents/versions/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  300. package/.next/static/chunks/app/api/app/release-notes/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  301. package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +1 -0
  302. package/.next/static/chunks/app/api/app/update-check/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  303. package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +1 -0
  304. package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +1 -0
  305. package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +1 -0
  306. package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +1 -0
  307. package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +1 -0
  308. package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +1 -0
  309. package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +1 -0
  310. package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +1 -0
  311. package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +1 -0
  312. package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +1 -0
  313. package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +1 -0
  314. package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +1 -0
  315. package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +1 -0
  316. package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +1 -0
  317. package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +1 -0
  318. package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +1 -0
  319. package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +1 -0
  320. package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +1 -0
  321. package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +1 -0
  322. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +1 -0
  323. package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +1 -0
  324. package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +1 -0
  325. package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +1 -0
  326. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +1 -0
  327. package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +1 -0
  328. package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +1 -0
  329. package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +1 -0
  330. package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +1 -0
  331. package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +1 -0
  332. package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +1 -0
  333. package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +1 -0
  334. package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +1 -0
  335. package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +1 -0
  336. package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +1 -0
  337. package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +1 -0
  338. package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +1 -0
  339. package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +1 -0
  340. package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +1 -0
  341. package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +1 -0
  342. package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +1 -0
  343. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +1 -0
  344. package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +1 -0
  345. package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +1 -0
  346. package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +1 -0
  347. package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  348. package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +1 -0
  349. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +1 -0
  350. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +1 -0
  351. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +1 -0
  352. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +1 -0
  353. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +1 -0
  354. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +1 -0
  355. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +1 -0
  371. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +1 -0
  372. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +1 -0
  373. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +1 -0
  374. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +1 -0
  375. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +1 -0
  376. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +1 -0
  377. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +1 -0
  378. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +1 -0
  379. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +1 -0
  380. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +1 -0
  382. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +1 -0
  383. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +1 -0
  384. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +1 -0
  385. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +1 -0
  386. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +1 -0
  387. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +1 -0
  388. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +1 -0
  389. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +1 -0
  390. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +1 -0
  391. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +1 -0
  392. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +1 -0
  393. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +1 -0
  394. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +1 -0
  395. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +1 -0
  396. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +1 -0
  397. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +1 -0
  398. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +1 -0
  399. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +1 -0
  400. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +1 -0
  401. package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +1 -0
  402. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +1 -0
  403. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +1 -0
  404. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +1 -0
  405. package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +1 -0
  406. package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +1 -0
  407. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +1 -0
  408. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +1 -0
  409. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +1 -0
  410. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +1 -0
  434. package/.next/static/chunks/app/layout-419eaf7de340f4ab.js +1 -0
  435. package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +1 -0
  436. package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +1 -0
  437. package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +1 -0
  438. package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +1 -0
  439. package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +1 -0
  440. package/.next/trace +13 -13
  441. package/.next/types/app/api/worktrees/[id]/prompt-response/strict/route.ts +347 -0
  442. package/.next/types/routes.d.ts +2 -1
  443. package/.next/types/validator.ts +9 -0
  444. package/dist/cli/commands/auto-yes.d.ts +19 -0
  445. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  446. package/dist/cli/commands/auto-yes.js +45 -0
  447. package/dist/cli/commands/instances.d.ts.map +1 -1
  448. package/dist/cli/commands/instances.js +23 -18
  449. package/dist/cli/commands/ls.d.ts +15 -1
  450. package/dist/cli/commands/ls.d.ts.map +1 -1
  451. package/dist/cli/commands/ls.js +39 -3
  452. package/dist/cli/commands/prompt.d.ts +42 -0
  453. package/dist/cli/commands/prompt.d.ts.map +1 -0
  454. package/dist/cli/commands/prompt.js +211 -0
  455. package/dist/cli/commands/relays.d.ts.map +1 -1
  456. package/dist/cli/commands/relays.js +13 -1
  457. package/dist/cli/commands/respond-strict.d.ts +31 -0
  458. package/dist/cli/commands/respond-strict.d.ts.map +1 -0
  459. package/dist/cli/commands/respond-strict.js +214 -0
  460. package/dist/cli/commands/respond.d.ts.map +1 -1
  461. package/dist/cli/commands/respond.js +38 -0
  462. package/dist/cli/commands/send.d.ts.map +1 -1
  463. package/dist/cli/commands/send.js +41 -5
  464. package/dist/cli/commands/start.d.ts.map +1 -1
  465. package/dist/cli/commands/start.js +2 -1
  466. package/dist/cli/commands/status.d.ts.map +1 -1
  467. package/dist/cli/commands/status.js +18 -0
  468. package/dist/cli/commands/wait.d.ts +21 -1
  469. package/dist/cli/commands/wait.d.ts.map +1 -1
  470. package/dist/cli/commands/wait.js +108 -12
  471. package/dist/cli/docs/agent-operations.d.ts +1 -1
  472. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  473. package/dist/cli/docs/agent-operations.js +63 -1
  474. package/dist/cli/program.d.ts.map +1 -1
  475. package/dist/cli/program.js +6 -2
  476. package/dist/cli/types/api-responses.d.ts +54 -0
  477. package/dist/cli/types/api-responses.d.ts.map +1 -1
  478. package/dist/cli/types/index.d.ts +30 -0
  479. package/dist/cli/types/index.d.ts.map +1 -1
  480. package/dist/cli/types/index.js +12 -1
  481. package/dist/cli/utils/api-client.d.ts +13 -1
  482. package/dist/cli/utils/api-client.d.ts.map +1 -1
  483. package/dist/cli/utils/api-client.js +10 -2
  484. package/dist/cli/utils/daemon-factory.d.ts.map +1 -1
  485. package/dist/cli/utils/daemon-factory.js +3 -1
  486. package/dist/cli/utils/daemon.d.ts +38 -1
  487. package/dist/cli/utils/daemon.d.ts.map +1 -1
  488. package/dist/cli/utils/daemon.js +161 -8
  489. package/dist/cli/utils/paths.d.ts +12 -0
  490. package/dist/cli/utils/paths.d.ts.map +1 -1
  491. package/dist/cli/utils/paths.js +17 -0
  492. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +43 -1
  493. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
  494. package/dist/lib/polling/auto-yes-suppression-reason.js +18 -1
  495. package/dist/lib/prompt-observation/kinds.d.ts +101 -0
  496. package/dist/lib/prompt-observation/kinds.d.ts.map +1 -0
  497. package/dist/lib/prompt-observation/kinds.js +123 -0
  498. package/dist/lib/prompt-observation/types.d.ts +271 -0
  499. package/dist/lib/prompt-observation/types.d.ts.map +1 -0
  500. package/dist/lib/prompt-observation/types.js +14 -0
  501. package/dist/lib/session/send-attempt-types.d.ts +66 -0
  502. package/dist/lib/session/send-attempt-types.d.ts.map +1 -0
  503. package/dist/lib/session/send-attempt-types.js +17 -0
  504. package/dist/server/locales/en/worktree.json +4 -0
  505. package/dist/server/locales/ja/worktree.json +4 -0
  506. package/dist/server/server.js +20 -1
  507. package/dist/server/src/config/auto-yes-config.js +11 -0
  508. package/dist/server/src/lib/auto-yes-lifecycle.js +28 -2
  509. package/dist/server/src/lib/auto-yes-poller.js +345 -28
  510. package/dist/server/src/lib/auto-yes-shutdown-record.js +257 -0
  511. package/dist/server/src/lib/auto-yes-state.js +197 -4
  512. package/dist/server/src/lib/cli-tools/antigravity-startup-trust.js +135 -0
  513. package/dist/server/src/lib/cli-tools/antigravity.js +162 -29
  514. package/dist/server/src/lib/cli-tools/command-code.js +10 -2
  515. package/dist/server/src/lib/cli-tools/copilot.js +21 -10
  516. package/dist/server/src/lib/cli-tools/gemini.js +60 -13
  517. package/dist/server/src/lib/cli-tools/launch-dialog.js +203 -0
  518. package/dist/server/src/lib/cli-tools/launch-window.js +96 -0
  519. package/dist/server/src/lib/detection/selection-shape.js +35 -1
  520. package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -9
  521. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +88 -1
  522. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +41 -1
  523. package/dist/server/src/lib/detection/tools/claude/detect.js +60 -0
  524. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +63 -13
  525. package/dist/server/src/lib/detection/tools/copilot/patterns.js +7 -1
  526. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +11 -2
  527. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +5 -3
  528. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +15 -0
  529. package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +281 -0
  530. package/dist/server/src/lib/polling/auto-yes-confirm-page.js +56 -0
  531. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +8 -1
  532. package/dist/server/src/lib/polling/auto-yes-policy.js +61 -7
  533. package/dist/server/src/lib/polling/auto-yes-poller-stop-reason.js +50 -0
  534. package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +220 -5
  535. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +18 -1
  536. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +10 -0
  537. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +2 -2
  538. package/dist/server/src/lib/polling/response-checker.js +9 -0
  539. package/dist/server/src/lib/polling/response-poller-core.js +136 -104
  540. package/dist/server/src/lib/prompt-observation/kinds.js +123 -0
  541. package/dist/server/src/lib/prompt-observation/types.js +14 -0
  542. package/dist/server/src/lib/push/prompt-push-gate.js +195 -3
  543. package/dist/server/src/lib/push/waiting-push-notifier.js +74 -7
  544. package/dist/server/src/lib/relay/relay-delivery-claims.js +46 -0
  545. package/dist/server/src/lib/relay/relay-delivery.js +76 -30
  546. package/dist/server/src/lib/schedule-manager.js +28 -0
  547. package/dist/server/src/lib/session/cli-session.js +38 -3
  548. package/dist/server/src/lib/session/send-attempt-state.js +155 -0
  549. package/dist/server/src/lib/session/send-attempt-types.js +17 -0
  550. package/dist/server/src/lib/session/send-user-message.js +46 -0
  551. package/dist/server/src/lib/session/worktree-session-reconcile.js +2 -1
  552. package/dist/server/src/lib/tmux/session-created-signal.js +76 -0
  553. package/dist/server/src/lib/tmux/tmux-capture-cache.js +58 -6
  554. package/dist/server/src/lib/tmux/tmux.js +4 -0
  555. package/dist/server/src/lib/verification/scope-gate-format.js +100 -0
  556. package/dist/server/src/lib/verification/scope-gate-glob.js +185 -0
  557. package/dist/server/src/lib/verification/scope-gate.js +19 -271
  558. package/dist/server/src/lib/ws-server.js +48 -6
  559. package/docs/en/user-guide/cli-setup-guide.md +12 -1
  560. package/docs/en/user-guide/webapp-guide.md +2 -0
  561. package/package.json +1 -1
  562. package/release-notes/0.47.0.json +118 -0
  563. package/.next/server/chunks/1789.js +0 -1
  564. package/.next/server/chunks/2908.js +0 -1
  565. package/.next/server/chunks/2984.js +0 -25
  566. package/.next/server/chunks/3718.js +0 -1
  567. package/.next/server/chunks/4837.js +0 -14
  568. package/.next/server/chunks/611.js +0 -1
  569. package/.next/server/chunks/850.js +0 -1
  570. package/.next/static/chunks/3201-c01f1feed69020e6.js +0 -1
  571. package/.next/static/chunks/5371-0dc947683e46e78c.js +0 -1
  572. package/.next/static/chunks/602-25e45a2422d2a3ea.js +0 -1
  573. package/.next/static/chunks/app/api/app/update/route-0468c3c4baa46028.js +0 -1
  574. package/.next/static/chunks/app/api/auth/login/route-0468c3c4baa46028.js +0 -1
  575. package/.next/static/chunks/app/api/auth/logout/route-0468c3c4baa46028.js +0 -1
  576. package/.next/static/chunks/app/api/auth/status/route-0468c3c4baa46028.js +0 -1
  577. package/.next/static/chunks/app/api/capabilities/route-0468c3c4baa46028.js +0 -1
  578. package/.next/static/chunks/app/api/daily-summary/route-0468c3c4baa46028.js +0 -1
  579. package/.next/static/chunks/app/api/daily-summary/status/route-0468c3c4baa46028.js +0 -1
  580. package/.next/static/chunks/app/api/external-apps/[id]/health/route-0468c3c4baa46028.js +0 -1
  581. package/.next/static/chunks/app/api/external-apps/[id]/route-0468c3c4baa46028.js +0 -1
  582. package/.next/static/chunks/app/api/external-apps/route-0468c3c4baa46028.js +0 -1
  583. package/.next/static/chunks/app/api/fs/browse/route-0468c3c4baa46028.js +0 -1
  584. package/.next/static/chunks/app/api/fs/recent-paths/route-0468c3c4baa46028.js +0 -1
  585. package/.next/static/chunks/app/api/hooks/agent-event/route-0468c3c4baa46028.js +0 -1
  586. package/.next/static/chunks/app/api/hooks/claude-done/route-0468c3c4baa46028.js +0 -1
  587. package/.next/static/chunks/app/api/hooks/permission-request/route-0468c3c4baa46028.js +0 -1
  588. package/.next/static/chunks/app/api/metrics/vibe/route-0468c3c4baa46028.js +0 -1
  589. package/.next/static/chunks/app/api/ollama/models/route-0468c3c4baa46028.js +0 -1
  590. package/.next/static/chunks/app/api/push/escalation/route-0468c3c4baa46028.js +0 -1
  591. package/.next/static/chunks/app/api/push/subscriptions/route-0468c3c4baa46028.js +0 -1
  592. package/.next/static/chunks/app/api/push/vapid/route-0468c3c4baa46028.js +0 -1
  593. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-0468c3c4baa46028.js +0 -1
  594. package/.next/static/chunks/app/api/relays/route-0468c3c4baa46028.js +0 -1
  595. package/.next/static/chunks/app/api/remote/pair/route-0468c3c4baa46028.js +0 -1
  596. package/.next/static/chunks/app/api/repositories/[id]/route-0468c3c4baa46028.js +0 -1
  597. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-0468c3c4baa46028.js +0 -1
  598. package/.next/static/chunks/app/api/repositories/clone/route-0468c3c4baa46028.js +0 -1
  599. package/.next/static/chunks/app/api/repositories/excluded/route-0468c3c4baa46028.js +0 -1
  600. package/.next/static/chunks/app/api/repositories/restore/route-0468c3c4baa46028.js +0 -1
  601. package/.next/static/chunks/app/api/repositories/route-0468c3c4baa46028.js +0 -1
  602. package/.next/static/chunks/app/api/repositories/scan/route-0468c3c4baa46028.js +0 -1
  603. package/.next/static/chunks/app/api/repositories/sync/route-0468c3c4baa46028.js +0 -1
  604. package/.next/static/chunks/app/api/repositories/validate-path/route-0468c3c4baa46028.js +0 -1
  605. package/.next/static/chunks/app/api/settings/default-agents/route-0468c3c4baa46028.js +0 -1
  606. package/.next/static/chunks/app/api/settings/default-surface-mode/route-0468c3c4baa46028.js +0 -1
  607. package/.next/static/chunks/app/api/sidebar/group-order/route-0468c3c4baa46028.js +0 -1
  608. package/.next/static/chunks/app/api/skills/[id]/route-0468c3c4baa46028.js +0 -1
  609. package/.next/static/chunks/app/api/skills/installations/route-0468c3c4baa46028.js +0 -1
  610. package/.next/static/chunks/app/api/skills/operations/route-0468c3c4baa46028.js +0 -1
  611. package/.next/static/chunks/app/api/skills/reindex/route-0468c3c4baa46028.js +0 -1
  612. package/.next/static/chunks/app/api/skills/route-0468c3c4baa46028.js +0 -1
  613. package/.next/static/chunks/app/api/slash-commands/route-0468c3c4baa46028.js +0 -1
  614. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-0468c3c4baa46028.js +0 -1
  615. package/.next/static/chunks/app/api/tasks/[taskId]/route-0468c3c4baa46028.js +0 -1
  616. package/.next/static/chunks/app/api/templates/[id]/route-0468c3c4baa46028.js +0 -1
  617. package/.next/static/chunks/app/api/templates/route-0468c3c4baa46028.js +0 -1
  618. package/.next/static/chunks/app/api/verification/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  619. package/.next/static/chunks/app/api/verification/runs/route-0468c3c4baa46028.js +0 -1
  620. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-0468c3c4baa46028.js +0 -1
  621. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-0468c3c4baa46028.js +0 -1
  622. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-0468c3c4baa46028.js +0 -1
  623. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-0468c3c4baa46028.js +0 -1
  624. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-0468c3c4baa46028.js +0 -1
  625. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-0468c3c4baa46028.js +0 -1
  626. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-0468c3c4baa46028.js +0 -1
  627. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-0468c3c4baa46028.js +0 -1
  628. package/.next/static/chunks/app/api/worktrees/[id]/env/route-0468c3c4baa46028.js +0 -1
  629. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-0468c3c4baa46028.js +0 -1
  630. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-0468c3c4baa46028.js +0 -1
  631. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-0468c3c4baa46028.js +0 -1
  632. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-0468c3c4baa46028.js +0 -1
  633. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-0468c3c4baa46028.js +0 -1
  634. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-0468c3c4baa46028.js +0 -1
  635. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-0468c3c4baa46028.js +0 -1
  636. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-0468c3c4baa46028.js +0 -1
  637. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-0468c3c4baa46028.js +0 -1
  638. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-0468c3c4baa46028.js +0 -1
  639. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-0468c3c4baa46028.js +0 -1
  640. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-0468c3c4baa46028.js +0 -1
  641. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-0468c3c4baa46028.js +0 -1
  642. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-0468c3c4baa46028.js +0 -1
  643. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-0468c3c4baa46028.js +0 -1
  644. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-0468c3c4baa46028.js +0 -1
  645. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-0468c3c4baa46028.js +0 -1
  646. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-0468c3c4baa46028.js +0 -1
  647. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-0468c3c4baa46028.js +0 -1
  648. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-0468c3c4baa46028.js +0 -1
  649. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-0468c3c4baa46028.js +0 -1
  650. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-0468c3c4baa46028.js +0 -1
  651. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-0468c3c4baa46028.js +0 -1
  652. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-0468c3c4baa46028.js +0 -1
  653. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-0468c3c4baa46028.js +0 -1
  654. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-0468c3c4baa46028.js +0 -1
  655. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-0468c3c4baa46028.js +0 -1
  656. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-0468c3c4baa46028.js +0 -1
  657. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-0468c3c4baa46028.js +0 -1
  658. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-0468c3c4baa46028.js +0 -1
  659. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-0468c3c4baa46028.js +0 -1
  660. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-0468c3c4baa46028.js +0 -1
  661. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-0468c3c4baa46028.js +0 -1
  662. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-0468c3c4baa46028.js +0 -1
  663. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-0468c3c4baa46028.js +0 -1
  664. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-0468c3c4baa46028.js +0 -1
  665. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-0468c3c4baa46028.js +0 -1
  666. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-0468c3c4baa46028.js +0 -1
  667. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-0468c3c4baa46028.js +0 -1
  668. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-0468c3c4baa46028.js +0 -1
  669. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-0468c3c4baa46028.js +0 -1
  670. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-0468c3c4baa46028.js +0 -1
  671. package/.next/static/chunks/app/api/worktrees/[id]/route-0468c3c4baa46028.js +0 -1
  672. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-0468c3c4baa46028.js +0 -1
  673. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-0468c3c4baa46028.js +0 -1
  674. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-0468c3c4baa46028.js +0 -1
  675. package/.next/static/chunks/app/api/worktrees/[id]/search/route-0468c3c4baa46028.js +0 -1
  676. package/.next/static/chunks/app/api/worktrees/[id]/send/route-0468c3c4baa46028.js +0 -1
  677. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-0468c3c4baa46028.js +0 -1
  678. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-0468c3c4baa46028.js +0 -1
  679. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-0468c3c4baa46028.js +0 -1
  680. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-0468c3c4baa46028.js +0 -1
  681. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-0468c3c4baa46028.js +0 -1
  682. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-0468c3c4baa46028.js +0 -1
  683. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-0468c3c4baa46028.js +0 -1
  684. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-0468c3c4baa46028.js +0 -1
  685. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-0468c3c4baa46028.js +0 -1
  686. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-0468c3c4baa46028.js +0 -1
  687. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-0468c3c4baa46028.js +0 -1
  688. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-0468c3c4baa46028.js +0 -1
  689. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-0468c3c4baa46028.js +0 -1
  690. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-0468c3c4baa46028.js +0 -1
  691. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-0468c3c4baa46028.js +0 -1
  692. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-0468c3c4baa46028.js +0 -1
  693. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-0468c3c4baa46028.js +0 -1
  694. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-0468c3c4baa46028.js +0 -1
  695. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-0468c3c4baa46028.js +0 -1
  696. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-0468c3c4baa46028.js +0 -1
  697. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-0468c3c4baa46028.js +0 -1
  698. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-0468c3c4baa46028.js +0 -1
  699. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  700. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-0468c3c4baa46028.js +0 -1
  701. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-0468c3c4baa46028.js +0 -1
  702. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-0468c3c4baa46028.js +0 -1
  703. package/.next/static/chunks/app/api/worktrees/route-0468c3c4baa46028.js +0 -1
  704. package/.next/static/chunks/app/layout-3e357690446cd2da.js +0 -1
  705. package/.next/static/chunks/app/manifest.webmanifest/route-0468c3c4baa46028.js +0 -1
  706. package/.next/static/chunks/app/proxy/[...path]/route-0468c3c4baa46028.js +0 -1
  707. package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +0 -1
  708. package/.next/static/chunks/app/worktrees/[id]/layout-0468c3c4baa46028.js +0 -1
  709. package/.next/static/chunks/app/worktrees/[id]/page-effbf0796881dd5a.js +0 -1
  710. /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → b5BiQC9F6r_XFPdA9cuSj}/_buildManifest.js +0 -0
  711. /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → b5BiQC9F6r_XFPdA9cuSj}/_ssgManifest.js +0 -0
@@ -19,6 +19,10 @@
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.AUTO_YES_POLICY_CACHE_TTL_MS = void 0;
21
21
  exports.getSessionAutoYesPolicy = getSessionAutoYesPolicy;
22
+ exports.getSessionAutoYesPolicyEntry = getSessionAutoYesPolicyEntry;
23
+ exports.isAutoYesBlockedByPolicy = isAutoYesBlockedByPolicy;
24
+ exports.isSessionAutoYesBlockedByContract = isSessionAutoYesBlockedByContract;
25
+ exports.getSessionContractPolicySummary = getSessionContractPolicySummary;
22
26
  exports.invalidateSessionAutoYesPolicy = invalidateSessionAutoYesPolicy;
23
27
  exports.clearAutoYesPolicyCache = clearAutoYesPolicyCache;
24
28
  const db_1 = require("../../lib/db");
@@ -60,10 +64,10 @@ function readPolicy(worktreeId, cliToolId, instanceId) {
60
64
  try {
61
65
  const task = (0, db_1.getActiveTaskForInstance)((0, db_instance_1.getDbInstance)(), worktreeId, cliToolId, instanceId);
62
66
  if (!task)
63
- return null;
67
+ return { policy: null, taskId: null };
64
68
  // Assignment, not a cast: a drift in TaskContractAutoYes fails the build here.
65
69
  const policy = task.contract.autoYes;
66
- return policy;
70
+ return { policy, taskId: task.id };
67
71
  }
68
72
  catch (error) {
69
73
  logger.warn('policy-lookup-failed', {
@@ -72,7 +76,7 @@ function readPolicy(worktreeId, cliToolId, instanceId) {
72
76
  instanceId,
73
77
  error: error instanceof Error ? error.message : String(error),
74
78
  });
75
- return null;
79
+ return { policy: null, taskId: null };
76
80
  }
77
81
  }
78
82
  /**
@@ -85,19 +89,69 @@ function readPolicy(worktreeId, cliToolId, instanceId) {
85
89
  * @returns The contract's autoYes block, or null when no contract governs this instance
86
90
  */
87
91
  function getSessionAutoYesPolicy(worktreeId, cliToolId, instanceId) {
92
+ return lookupEntry(worktreeId, cliToolId, instanceId).policy;
93
+ }
94
+ /**
95
+ * The policy and the id of the task it came from, read in ONE lookup (Issue
96
+ * #3724), so a log line naming both cannot pair one task's verdict with another
97
+ * task's id when the cache expires between two reads. `taskId` is null when no
98
+ * contract governs the instance.
99
+ */
100
+ function getSessionAutoYesPolicyEntry(worktreeId, cliToolId, instanceId) {
101
+ const { policy, taskId } = lookupEntry(worktreeId, cliToolId, instanceId);
102
+ return { policy, taskId };
103
+ }
104
+ /**
105
+ * Whether the contract's policy keeps Auto-Yes from ever answering (Issue #3723).
106
+ *
107
+ * `mode: 'off'` only. `safe` / `allow-listed` still answer some prompts, and a
108
+ * null mode (or no contract) states nothing, so those are not blocked. The
109
+ * poller's resolver reaches the same verdict from the same policy.
110
+ */
111
+ function isAutoYesBlockedByPolicy(policy) {
112
+ return policy?.mode === 'off';
113
+ }
114
+ /**
115
+ * Whether the contract governing this instance keeps Auto-Yes from answering
116
+ * (Issue #3723). The poller's own lookup ({@link getSessionAutoYesPolicyEntry})
117
+ * judged by {@link isAutoYesBlockedByPolicy}, so the list cannot read `blocked`
118
+ * for an instance the poller would answer, or the reverse.
119
+ */
120
+ function isSessionAutoYesBlockedByContract(worktreeId, cliToolId, instanceId) {
121
+ return isAutoYesBlockedByPolicy(getSessionAutoYesPolicyEntry(worktreeId, cliToolId, instanceId).policy);
122
+ }
123
+ /**
124
+ * The contract policy of an agent instance in the shape the API returns, or null
125
+ * when no contract governs it. Policy and task id come from ONE
126
+ * {@link getSessionAutoYesPolicyEntry} lookup — the poller's cache — so the mode
127
+ * and the task it names are the same task's.
128
+ */
129
+ function getSessionContractPolicySummary(worktreeId, cliToolId, instanceId) {
130
+ const { policy, taskId } = getSessionAutoYesPolicyEntry(worktreeId, cliToolId, instanceId);
131
+ if (!policy)
132
+ return null;
133
+ return {
134
+ taskId,
135
+ mode: policy.mode,
136
+ allowPromptTypes: policy.allowPromptTypes,
137
+ denyPatternCount: policy.denyPatterns.length,
138
+ };
139
+ }
140
+ function lookupEntry(worktreeId, cliToolId, instanceId) {
88
141
  const resolvedInstanceId = instanceId ?? cliToolId;
89
142
  const key = (0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, resolvedInstanceId);
90
143
  const now = Date.now();
91
144
  const cached = policyCache.get(key);
92
145
  if (cached && cached.expiresAt > now) {
93
- return cached.policy;
146
+ return cached;
94
147
  }
95
- const policy = readPolicy(worktreeId, cliToolId, resolvedInstanceId);
148
+ const { policy, taskId } = readPolicy(worktreeId, cliToolId, resolvedInstanceId);
96
149
  if (policyCache.size >= MAX_CACHE_ENTRIES) {
97
150
  purgeExpired(now);
98
151
  }
99
- policyCache.set(key, { policy, expiresAt: now + exports.AUTO_YES_POLICY_CACHE_TTL_MS });
100
- return policy;
152
+ const entry = { policy, taskId, expiresAt: now + exports.AUTO_YES_POLICY_CACHE_TTL_MS };
153
+ policyCache.set(key, entry);
154
+ return entry;
101
155
  }
102
156
  /**
103
157
  * Drop the cached policy for a composite key, so the next lookup re-reads the
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * The reason a poller stop is made for, when the stop function is called
4
+ * without one (Issue #3730).
5
+ *
6
+ * `stopAutoYesPolling(compositeKey, reason)` takes the reason as an argument,
7
+ * and every direct caller passes it. The lifecycle table
8
+ * (`lib/auto-yes-lifecycle`) cannot: it reaches the poller through the
9
+ * `auto-yes-manager` barrel, whose callers' tests mock it and pin the exact
10
+ * arguments (`stopAutoYesPolling(key)`, `stopAutoYesPollingByWorktree(id)`).
11
+ * So the table names its event here, around the call, and the poller reads it
12
+ * when no argument came. Synchronous only: the scope ends when `fn` returns.
13
+ *
14
+ * A module of its own, not part of the barrel, so mocking the barrel never
15
+ * mocks this away.
16
+ *
17
+ * @module lib/polling/auto-yes-poller-stop-reason
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.withPollerStopReason = withPollerStopReason;
21
+ exports.resolvePollerStopReason = resolvePollerStopReason;
22
+ let scopedReason = null;
23
+ /**
24
+ * Run `fn` with `reason` as the reason of every poller stop it makes that
25
+ * names none itself.
26
+ *
27
+ * @param reason - Why the pollers are being stopped
28
+ * @param fn - The synchronous stop call(s)
29
+ * @returns What `fn` returns
30
+ */
31
+ function withPollerStopReason(reason, fn) {
32
+ const previous = scopedReason;
33
+ scopedReason = reason;
34
+ try {
35
+ return fn();
36
+ }
37
+ finally {
38
+ scopedReason = previous;
39
+ }
40
+ }
41
+ /**
42
+ * The reason to log for a stop: the explicit one, else the scope's, else
43
+ * `fallback`.
44
+ *
45
+ * @param explicit - The reason the caller passed, if any
46
+ * @param fallback - What to answer when neither says
47
+ */
48
+ function resolvePollerStopReason(explicit, fallback) {
49
+ return explicit ?? scopedReason ?? fallback;
50
+ }
@@ -5,11 +5,22 @@
5
5
  * auto-yes-poller.ts (cycle) or `../tmux/tmux` (tmux import allowlist).
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.MAX_LOGGED_QUESTION_LENGTH = exports.COPILOT_FOLDER_TRUST_LAUNCH_DIALOG_ID = void 0;
8
9
  exports.suppressAndWarnOnce = suppressAndWarnOnce;
10
+ exports.truncateForLog = truncateForLog;
9
11
  exports.suppressIfNotOursToAnswer = suppressIfNotOursToAnswer;
10
12
  exports.suppressUnclassifiedFrame = suppressUnclassifiedFrame;
13
+ exports.suppressAntigravityTrustScreen = suppressAntigravityTrustScreen;
11
14
  const detect_1 = require("../detection/tools/codex/detect");
12
15
  const cli_patterns_1 = require("../detection/cli-patterns");
16
+ const patterns_1 = require("../detection/tools/antigravity/patterns");
17
+ const patterns_2 = require("../detection/tools/copilot/patterns");
18
+ const antigravity_startup_trust_1 = require("../cli-tools/antigravity-startup-trust");
19
+ const launch_dialog_1 = require("../cli-tools/launch-dialog");
20
+ const launch_window_1 = require("../cli-tools/launch-window");
21
+ const session_name_1 = require("../cli-tools/session-name");
22
+ const auto_yes_suppression_reason_1 = require("./auto-yes-suppression-reason");
23
+ const auto_yes_confirm_page_1 = require("./auto-yes-confirm-page");
13
24
  const auto_yes_suppression_state_1 = require("./auto-yes-suppression-state");
14
25
  const auto_yes_dialog_gate_1 = require("./auto-yes-dialog-gate");
15
26
  const auto_yes_poller_state_1 = require("./auto-yes-poller-state");
@@ -34,11 +45,128 @@ function suppressAndWarnOnce(prompt, suppression, warnFrameKey, event, detail) {
34
45
  ...detail,
35
46
  });
36
47
  }
48
+ /** The `dialog` that copilot's folder-trust suppression records (Issue #3790). */
49
+ exports.COPILOT_FOLDER_TRUST_LAUNCH_DIALOG_ID = 'copilot-folder-trust';
50
+ /** How much of a prompt's question a log line carries (Issue #3497). */
51
+ exports.MAX_LOGGED_QUESTION_LENGTH = 500;
37
52
  /**
38
- * Issue #3214: steps 3, 3.2 and 3.5 of `detectAndRespondToPrompt` -- the frames
39
- * that read as a prompt and are still not Auto-Yes's to answer, judged in the
40
- * order they always were. "The detection above" in the comments below is that
41
- * function's step 1.
53
+ * `question` cut to {@link MAX_LOGGED_QUESTION_LENGTH}, for a log line.
54
+ * Exported for `poller:response-sent` (Issue #3748).
55
+ */
56
+ function truncateForLog(question) {
57
+ return question.length > exports.MAX_LOGGED_QUESTION_LENGTH
58
+ ? `${question.slice(0, exports.MAX_LOGGED_QUESTION_LENGTH)}…`
59
+ : question;
60
+ }
61
+ /**
62
+ * Whether the launch still owns its startup confirmation for this instance:
63
+ * its window is open (Issue #3776), or it pressed the confirming key less than
64
+ * `LAUNCH_DIALOG_PRESS_SETTLE_MS` ago and the agent may not have redrawn yet —
65
+ * the window can close in between (Issue #3790).
66
+ */
67
+ function isLaunchStillAnswering(cliToolId, prompt) {
68
+ let sessionName;
69
+ try {
70
+ sessionName = (0, session_name_1.resolveSessionName)(cliToolId, prompt.worktreeId, prompt.instanceId);
71
+ }
72
+ catch {
73
+ // An id that would not make a session name was never launched here.
74
+ return false;
75
+ }
76
+ return (0, launch_window_1.isLaunchWindowOpen)(sessionName) || (0, launch_window_1.isLaunchDialogPressSettling)(sessionName);
77
+ }
78
+ /**
79
+ * Issue #3776: whether the prompt the poller is about to answer is gemini's
80
+ * folder-trust dialog itself — its parsed options are the declared option
81
+ * rows — rather than another prompt sharing the screen with it (the
82
+ * authentication picker under a dismissed dialog, a permission prompt under a
83
+ * reply that quotes the question).
84
+ */
85
+ function isGeminiTrustPrompt(promptData) {
86
+ if (promptData.type !== 'multiple_choice')
87
+ return false;
88
+ const { optionRow, minOptionRows } = launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG;
89
+ return promptData.options.filter((o) => optionRow.test(`${o.number}. ${o.label}`)).length >= minOptionRows;
90
+ }
91
+ /**
92
+ * Issue #3776: whether gemini's folder-trust dialog on this frame is left to
93
+ * the launch (step 3). Judged only for a prompt whose options are the dialog's
94
+ * declared rows ({@link isGeminiTrustPrompt}): a reply quoting the question
95
+ * over another prompt, or the authentication picker under a dismissed dialog,
96
+ * is answered as any prompt is.
97
+ *
98
+ * Left alone by default — the poller answers only when nothing else will and
99
+ * the answer is the safe one:
100
+ * - While the launch window is open (`cli-tools/launch-window`), never: the
101
+ * launch answers it, and an answered dialog stays drawn above gemini's
102
+ * restart line, where a `1` lands on whatever the restart draws next. Nor
103
+ * for a while after the launch's Enter, window or not (Issue #3790,
104
+ * {@link isLaunchStillAnswering}).
105
+ * - After it — the launch's Enter did not land, or gemini drew the dialog late
106
+ * (an auto-update, a slow start) — only when the prompt's default (the
107
+ * cursor row, which is what the poller sends) is `1. Trust folder`, and,
108
+ * when the screen reads as the declared dialog, the launch's own reading is
109
+ * `press` (not a dismissed dialog).
110
+ *
111
+ * A screen that does not read as the dialog (the wording changed, the options
112
+ * sit further below the question than declared) is not a reason to answer
113
+ * (review of #3776): with the cursor on `3. Don't trust` the poller's default
114
+ * would write that answer for good.
115
+ */
116
+ function isGeminiTrustDialogLeftToLaunch(prompt, frame) {
117
+ const { promptData } = prompt;
118
+ if (promptData.type !== 'multiple_choice' || !isGeminiTrustPrompt(promptData))
119
+ return false;
120
+ if (isLaunchStillAnswering('gemini', prompt))
121
+ return true;
122
+ const defaultOption = promptData.options.find((o) => o.isDefault);
123
+ const defaultIsSafe = defaultOption !== undefined &&
124
+ launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG.safeRow.test(`${defaultOption.number}. ${defaultOption.label}`);
125
+ if (!defaultIsSafe)
126
+ return true;
127
+ if (!(0, launch_dialog_1.isLaunchDialogDrawn)(launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG, frame.clean))
128
+ return false;
129
+ if (!(0, launch_dialog_1.isLaunchDialogOpen)(launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG, frame.clean))
130
+ return true;
131
+ return (0, launch_dialog_1.decideLaunchDialog)(launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG, frame.clean).action !== 'press';
132
+ }
133
+ /**
134
+ * Issue #3790: whether copilot's folder-trust dialog on this frame is left to
135
+ * the launch (step 3), as gemini's is. The launch confirms it with a bare `1`
136
+ * (`CopilotTool.answerFolderTrustDialog`); the poller answered `1` + Enter
137
+ * beside it, and when the launch's `1` landed first, the poller's was typed
138
+ * into the composer the dismissal revealed and submitted as a user message
139
+ * (measured on 1.0.91, private tmux socket and HOME).
140
+ *
141
+ * Judged only when the frame carries both of the dialog's anchors and the
142
+ * prompt's options are its rows: a reply quoting the question over another
143
+ * prompt is answered as any prompt is. Left alone while the launch is still
144
+ * answering ({@link isLaunchStillAnswering}); after it — the launch's `1` did
145
+ * not land, or copilot drew the dialog late — the poller's default goes through
146
+ * only when it is the session-only `1. Yes` in the declared order
147
+ * (`isCopilotFolderTrustDialog`). `2.` writes `trustedFolders` into the
148
+ * machine-wide `~/.copilot/config.json`.
149
+ */
150
+ function isCopilotTrustDialogLeftToLaunch(prompt, frame) {
151
+ const { promptData } = prompt;
152
+ if (promptData.type !== 'multiple_choice')
153
+ return false;
154
+ if (!patterns_2.COPILOT_FOLDER_TRUST_ANCHORS.every((anchor) => frame.clean.includes(anchor)))
155
+ return false;
156
+ const trustRows = promptData.options.filter((o) => patterns_2.COPILOT_FOLDER_TRUST_OPTION_LABEL_PATTERN.test(o.label));
157
+ if (trustRows.length < 2)
158
+ return false;
159
+ if (isLaunchStillAnswering('copilot', prompt))
160
+ return true;
161
+ const defaultOption = promptData.options.find((o) => o.isDefault);
162
+ const defaultIsSessionOnly = defaultOption?.number === 1 && defaultOption.label === 'Yes';
163
+ return !(defaultIsSessionOnly && (0, patterns_2.isCopilotFolderTrustDialog)(frame.clean));
164
+ }
165
+ /**
166
+ * Issue #3214: steps 3, 3.2, 3.3 (Issue #3497) and 3.5 of
167
+ * `detectAndRespondToPrompt` -- the frames that read as a prompt and are still
168
+ * not Auto-Yes's to answer, judged in the order they always were. "The
169
+ * detection above" in the comments below is that function's step 1.
42
170
  *
43
171
  * Issue #3397: step 3.5 no longer records its refusal here. It hands the gate's
44
172
  * verdict back so `tryEnterFallback` can look at the frame first, and records
@@ -68,7 +196,24 @@ function suppressIfNotOursToAnswer(prompt, frame) {
68
196
  // to the tool. Auto-answer layer only: the detection above still reports the
69
197
  // prompt, so the human keeps seeing the screen and the response poller
70
198
  // still notifies them about it.
71
- const launchDialog = cliToolId === 'codex' ? (0, cli_patterns_1.getCodexLifecycleDialog)(frame) : null;
199
+ //
200
+ // Issue #3776: gemini's folder-trust question too. The generic parser reads
201
+ // it as a multiple choice whose default is the cursor row, so the poller
202
+ // answered `1` beside the launch's own Enter (the second keypress then fell
203
+ // on the restarted gemini's authentication picker), and answered `3` —
204
+ // `Don't trust`, written for good — when the cursor sat there. The launch
205
+ // confirms only `1. Trust folder` (`cli-tools/launch-dialog`). See
206
+ // {@link isGeminiTrustDialogLeftToLaunch} for when the poller may answer.
207
+ //
208
+ // Issue #3790: copilot's folder-trust question too, whose launch answers a
209
+ // bare `1` (see {@link isCopilotTrustDialogLeftToLaunch}).
210
+ const launchDialog = cliToolId === 'codex'
211
+ ? (0, cli_patterns_1.getCodexLifecycleDialog)(frame)
212
+ : cliToolId === 'gemini' && isGeminiTrustDialogLeftToLaunch(prompt, frame)
213
+ ? launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG.id
214
+ : cliToolId === 'copilot' && isCopilotTrustDialogLeftToLaunch(prompt, frame)
215
+ ? exports.COPILOT_FOLDER_TRUST_LAUNCH_DIALOG_ID
216
+ : null;
72
217
  if (launchDialog) {
73
218
  // Recorded through the #1684 channel so `capture --json` and `cmate wait`
74
219
  // can name the reason instead of showing a worker that went quiet.
@@ -86,6 +231,34 @@ function suppressIfNotOursToAnswer(prompt, frame) {
86
231
  suppressAndWarnOnce(prompt, { reason: 'unclassified-frame', mode: null, promptType: promptData.type }, `${frameKey}\u0000codex-model-picker`, 'poller:auto-yes-skipped-model-picker', { promptType: promptData.type });
87
232
  return { kind: 'left-alone' };
88
233
  }
234
+ // 3.3. Issue #3497: Command Code's `AskUserQuestion` confirm page
235
+ // (`❯ 1. Submit` / `2. Cancel` under the question's tab strip) is not ours
236
+ // to answer. `Submit` picks nothing — it commits whatever stands as the
237
+ // answers, and on Kewton/Musunest#283 that was the worker's own proposal,
238
+ // which the worker then implemented as though a human had approved it. The
239
+ // full Review page is already declined by the reader (#2755 §7); a frame
240
+ // without its `← to go back and edit` row reaches the generic parser, and a
241
+ // question whose only choices are the pair is read by the question reader —
242
+ // both as `multiple_choice` with `Submit` as the default, answered `1`. Default, no setting: free-text questions go back to a human.
243
+ // The status path still publishes the prompt, so the human sees it.
244
+ //
245
+ // Issue #3748: Claude's confirmation page (`Ready to submit your answers?` /
246
+ // `❯ 1. Submit answers` / `2. Cancel`) is the same page and is declined the
247
+ // same way. Judged by `isAutoYesDeclinedConfirmPage`, which the browser's
248
+ // fallback (`useAutoYes`) asks too, and recorded with a reason of its own,
249
+ // `question-confirm-page`, which `cmate wait` names as such (it reused
250
+ // `unclassified-frame`, whose wording says no detector recognised the frame).
251
+ if ((0, auto_yes_confirm_page_1.isAutoYesDeclinedConfirmPage)(cliToolId, frame)) {
252
+ suppressAndWarnOnce(prompt, { reason: auto_yes_suppression_reason_1.QUESTION_CONFIRM_PAGE_SUPPRESSION_REASON, mode: null, promptType: promptData.type }, `${frameKey}\u0000question-confirm-page`, 'poller:auto-yes-skipped-question-confirm', {
253
+ reason: auto_yes_suppression_reason_1.QUESTION_CONFIRM_PAGE_SUPPRESSION_REASON,
254
+ promptType: promptData.type,
255
+ question: truncateForLog(promptData.question),
256
+ options: promptData.type === 'multiple_choice'
257
+ ? promptData.options.map((option) => `${option.number}. ${option.label}`)
258
+ : [...promptData.options],
259
+ });
260
+ return { kind: 'left-alone' };
261
+ }
89
262
  // 3.5. Issue #1928 (§4 D1 decision 4): the generic numbered-list inference is
90
263
  // not enough to send an answer. The detection above judges the ROWS, and the
91
264
  // rows of an agent's own reply can be indistinguishable from a dialog's --
@@ -123,3 +296,45 @@ function suppressUnclassifiedFrame(prompt, dialogGate) {
123
296
  gateMode: dialogGate.mode,
124
297
  });
125
298
  }
299
+ /**
300
+ * Issue #3757: agy's startup folder-trust screen, which the tick read as no
301
+ * prompt at all — it is unnumbered, so neither agy's dialog reader nor the
302
+ * generic parser reads it, and the tick never got as far as the dialog gate or
303
+ * the Enter fallback. The status path still calls the pane `waiting`, so the
304
+ * prompt Push opened a wait that, with nothing recorded, it held as "Auto-Yes
305
+ * is answering" until the ten-minute reminder.
306
+ *
307
+ * Not answered here: the screen belongs to the launch, which confirms it with
308
+ * one Enter — in its own window, or through the next send when agy drew it
309
+ * later (`cli-tools/antigravity-startup-trust`). A second sender of that Enter
310
+ * here could press it twice. What this does is record the reason, so the gate
311
+ * notifies and `cmate wait` names the screen.
312
+ *
313
+ * Inside the launch window (`isStartupWindowOpen`) nothing is recorded: the
314
+ * window confirms the screen within a second or two, and a record would make
315
+ * the prompt Push ring for a screen that was never a human's. Outside it — the
316
+ * window ended (with the Enter owed, or not) or this process never launched the
317
+ * session — it is recorded.
318
+ *
319
+ * @param frame - The tick's one normalised frame (Issue #3183)
320
+ * @param sessionName - The instance's tmux session, for the launch window
321
+ * @returns true when the frame is the trust screen (recorded or not)
322
+ */
323
+ function suppressAntigravityTrustScreen(worktreeId, instanceId, pollerState, frame, sessionName) {
324
+ if (!(0, patterns_1.isAntigravityTrustScreen)(frame.lastLines))
325
+ return false;
326
+ if ((0, antigravity_startup_trust_1.isStartupWindowOpen)(sessionName) && !(0, antigravity_startup_trust_1.isStartupTrustPending)(sessionName))
327
+ return true;
328
+ (0, auto_yes_suppression_state_1.recordPolicySuppression)(worktreeId, 'antigravity', instanceId, {
329
+ reason: auto_yes_suppression_reason_1.STARTUP_TRUST_UNHANDLED_SUPPRESSION_REASON,
330
+ mode: null,
331
+ promptType: 'multiple_choice',
332
+ });
333
+ (0, auto_yes_poller_state_1.warnOncePerFrame)(pollerState, 'antigravity-startup-trust', 'poller:auto-yes-skipped-startup-trust', {
334
+ worktreeId,
335
+ cliToolId: 'antigravity',
336
+ instanceId,
337
+ reason: auto_yes_suppression_reason_1.STARTUP_TRUST_UNHANDLED_SUPPRESSION_REASON,
338
+ });
339
+ return true;
340
+ }
@@ -1,5 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PARTIAL_ANSWER_SUPPRESSION_REASON = void 0;
3
+ exports.NO_HOOK_RECEIPT_SUPPRESSION_REASON = exports.QUESTION_CONFIRM_PAGE_SUPPRESSION_REASON = exports.STARTUP_TRUST_UNHANDLED_SUPPRESSION_REASON = exports.PARTIAL_ANSWER_SUPPRESSION_REASON = exports.CONTRACT_SUPPRESSION_REASONS = void 0;
4
+ /**
5
+ * Issue #3796: the reasons `resolveAutoAnswerWithPolicy` returns — the contract's
6
+ * verdict on the prompt as it is NOW, which a later tick re-evaluates, as
7
+ * opposed to a reason that remembers an event (`partial-answer`).
8
+ */
9
+ exports.CONTRACT_SUPPRESSION_REASONS = new Set([
10
+ 'mode-off',
11
+ 'deny-pattern',
12
+ 'deny-pattern-unusable',
13
+ 'type-not-allowed',
14
+ ]);
4
15
  /** Issue #3706: the reason the poller records for an answer stopped part-way. */
5
16
  exports.PARTIAL_ANSWER_SUPPRESSION_REASON = 'partial-answer';
17
+ /** Issue #3757: the reason the poller records over agy's unanswered trust screen. */
18
+ exports.STARTUP_TRUST_UNHANDLED_SUPPRESSION_REASON = 'startup-trust-unhandled';
19
+ /** Issue #3748: the reason the poller records over an `AskUserQuestion` confirm page. */
20
+ exports.QUESTION_CONFIRM_PAGE_SUPPRESSION_REASON = 'question-confirm-page';
21
+ /** Issue #3767: the reason the poller records over an agy dialog with no matching hook receipt. */
22
+ exports.NO_HOOK_RECEIPT_SUPPRESSION_REASON = 'no-hook-receipt';
@@ -25,6 +25,7 @@
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.recordPolicySuppression = recordPolicySuppression;
27
27
  exports.getLastPolicySuppression = getLastPolicySuppression;
28
+ exports.forgetPolicySuppression = forgetPolicySuppression;
28
29
  exports.clearPolicySuppressions = clearPolicySuppressions;
29
30
  const auto_yes_state_1 = require("../../lib/auto-yes-state");
30
31
  const global_state_1 = require("../global-state");
@@ -49,6 +50,15 @@ function recordPolicySuppression(worktreeId, cliToolId, instanceId, suppression,
49
50
  function getLastPolicySuppression(worktreeId, cliToolId, instanceId) {
50
51
  return lastPolicySuppressions.get((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId)) ?? null;
51
52
  }
53
+ /**
54
+ * Drop the record of one session (Issue #3796): the reason it gives no longer
55
+ * holds for the prompt still on screen (the contract that withheld it changed),
56
+ * so leaving it to age out would have `cmate wait` report a stale reason for up
57
+ * to a minute.
58
+ */
59
+ function forgetPolicySuppression(worktreeId, cliToolId, instanceId) {
60
+ lastPolicySuppressions.delete((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId));
61
+ }
52
62
  /** Drop every recorded suppression. Test seam. */
53
63
  function clearPolicySuppressions() {
54
64
  lastPolicySuppressions.clear();
@@ -9,7 +9,7 @@ exports.isWithheldForWantOfReceipt = isWithheldForWantOfReceipt;
9
9
  exports.isNumberedDialogVouched = isNumberedDialogVouched;
10
10
  const logger_1 = require("../../lib/logger");
11
11
  const logger = (0, logger_1.createLogger)('response-poller');
12
- const antigravity_permission_receipts_1 = require("./antigravity-permission-receipts");
12
+ const antigravity_receipt_episodes_1 = require("./antigravity-receipt-episodes");
13
13
  // Issue #2457: the same rollout table, `hasDialogRules` cross-check and
14
14
  // `detectDialog` seam Auto-Yes reads, reached through the presence helper rather
15
15
  // than through `evaluateAutoYesDialogGate` — see `isNumberedDialogVouched`.
@@ -36,7 +36,7 @@ const auto_yes_dialog_gate_1 = require("./auto-yes-dialog-gate");
36
36
  function isWithheldForWantOfReceipt(scope) {
37
37
  if (scope === undefined)
38
38
  return false;
39
- if ((0, antigravity_permission_receipts_1.hasRecentAntigravityPermissionReceipt)(scope.worktreeId, 'antigravity', scope.instanceId))
39
+ if ((0, antigravity_receipt_episodes_1.judgeAntigravityPermissionReceipt)(scope.worktreeId, scope.instanceId).ok)
40
40
  return false;
41
41
  logger.debug('antigravity-dialog-no-recent-receipt', {
42
42
  worktreeId: scope.worktreeId,
@@ -228,6 +228,15 @@ function detectPromptOnCleanFrame(cleanOutput, cliToolId, precomputedLines, rawF
228
228
  ? { isPrompt: false, cleanContent: cleanOutput.trim() }
229
229
  : dialog;
230
230
  }
231
+ // Issue #3808: a numbered agy screen the reader declines — the login-method
232
+ // screen, a permission dialog whose `tab Amend` footer a narrow pane cut or
233
+ // left below the pane — is not handed to the generic parser either, which
234
+ // reads `> 1. Google OAuth` as an answerable option. Judged without the
235
+ // footer, so a missing footer cannot reopen the generic path. The status
236
+ // verdict publishes the same frame as unclassified (`tools/antigravity/detect.ts`).
237
+ if ((0, dialog_1.isAntigravityUnvouchedNumberedScreen)(cleanOutput)) {
238
+ return { isPrompt: false, cleanContent: cleanOutput.trim() };
239
+ }
231
240
  }
232
241
  // Issue #2522: Command Code's footer-less `AskUserQuestion`, read by the same
233
242
  // module `tools/command-code/detect.ts` publishes its status from — so the