commandmate 0.47.0 → 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 (589) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +501 -501
  3. package/.next/app-path-routes-manifest.json +36 -36
  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 +15 -15
  9. package/.next/react-loadable-manifest.json +1 -1
  10. package/.next/required-server-files.json +1 -1
  11. package/.next/server/app/_not-found/page.js +2 -2
  12. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/agents/update/route.js +2 -2
  15. package/.next/server/app/api/agents/update/route.js.nft.json +1 -1
  16. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/agents/versions/route.js +1 -1
  18. package/.next/server/app/api/agents/versions/route.js.nft.json +1 -1
  19. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/app/release-notes/route.js +1 -1
  21. package/.next/server/app/api/app/release-notes/route.js.nft.json +1 -1
  22. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/app/update/route.js +5 -5
  24. package/.next/server/app/api/app/update/route.js.nft.json +1 -1
  25. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/app/update-check/route.js +1 -1
  27. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  28. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/auth/login/route.js +1 -1
  30. package/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  31. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/auth/logout/route.js +1 -1
  33. package/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  34. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/auth/status/route.js +1 -1
  36. package/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  37. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/capabilities/route.js +1 -1
  39. package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
  40. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/daily-summary/route.js +1 -1
  42. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  43. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  45. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  46. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  48. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  49. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  51. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  52. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/external-apps/route.js +1 -1
  54. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  55. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/fs/browse/route.js +1 -1
  57. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  58. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/fs/recent-paths/route.js +1 -1
  60. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  61. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  63. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  64. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  66. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  67. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  69. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  70. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/metrics/vibe/route.js +2 -2
  72. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  73. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/ollama/models/route.js +1 -1
  75. package/.next/server/app/api/ollama/models/route.js.nft.json +1 -1
  76. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/push/escalation/route.js +1 -1
  78. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  79. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  81. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  82. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/push/vapid/route.js +1 -1
  84. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  85. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  87. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  88. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/relays/route.js +1 -1
  90. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  91. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/remote/pair/route.js +2 -2
  93. package/.next/server/app/api/remote/pair/route.js.nft.json +1 -1
  94. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  96. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  97. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  99. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  100. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/repositories/clone/route.js +1 -1
  102. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  103. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  105. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  106. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/repositories/restore/route.js +1 -1
  108. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  109. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/repositories/route.js +1 -1
  111. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  112. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/repositories/scan/route.js +1 -1
  114. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  115. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/repositories/sync/route.js +1 -1
  117. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  118. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  120. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  121. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  123. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  124. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/settings/default-surface-mode/route.js +1 -1
  126. package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -1
  127. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/sidebar/group-order/route.js +1 -1
  129. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  130. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/skills/[id]/route.js +1 -1
  132. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  133. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/skills/installations/route.js +1 -1
  135. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  136. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/skills/operations/route.js +2 -2
  138. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  139. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/skills/reindex/route.js +1 -1
  141. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  142. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/skills/route.js +1 -1
  144. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  145. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/slash-commands/route.js +1 -1
  147. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  148. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
  150. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  151. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  153. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  154. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/templates/[id]/route.js +1 -1
  156. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  157. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/templates/route.js +1 -1
  159. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  160. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  162. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  163. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/verification/runs/route.js +1 -1
  165. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  166. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  169. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  172. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  175. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -1
  178. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  181. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +7 -7
  183. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/env/route.js +2 -2
  192. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +3 -3
  198. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  199. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  202. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  253. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  256. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  259. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  262. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  265. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  268. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  271. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js.nft.json +1 -1
  274. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  277. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  280. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  283. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  286. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  289. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +3 -3
  291. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  292. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  295. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  298. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  301. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  302. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  304. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  305. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  307. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  310. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  311. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  313. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  314. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
  316. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
  317. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  318. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  319. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  320. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  321. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  322. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  323. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  324. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  325. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  326. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  327. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  328. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  329. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  330. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  331. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  332. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
  333. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  334. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  335. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  336. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  337. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  338. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  339. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  340. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  341. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +5 -5
  342. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  343. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  344. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  345. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  346. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  347. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  348. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  349. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  350. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  351. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  352. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  353. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  354. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  355. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  356. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  357. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  358. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  359. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  360. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  361. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  362. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  363. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  364. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  365. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  366. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  367. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  368. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  369. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  370. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  371. package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
  372. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  373. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  374. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  375. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  376. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  377. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  378. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  379. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  380. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  381. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  382. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  383. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  384. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  385. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  386. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  387. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  388. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  389. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  390. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  391. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  392. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  393. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  394. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  395. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  396. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  397. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  398. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +2 -2
  399. package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -1
  400. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  401. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  402. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  403. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  404. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  405. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  406. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  407. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  408. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  409. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  410. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  411. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  412. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  413. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  414. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  415. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  416. package/.next/server/app/api/worktrees/apply-default-agents/route.js +1 -1
  417. package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -1
  418. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  419. package/.next/server/app/api/worktrees/route.js +1 -1
  420. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  421. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  422. package/.next/server/app/apple-icon.png/route.js +1 -1
  423. package/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
  424. package/.next/server/app/apple-icon.png.meta +1 -1
  425. package/.next/server/app/icon.png/route.js +1 -1
  426. package/.next/server/app/icon.png/route.js.nft.json +1 -1
  427. package/.next/server/app/icon.png.meta +1 -1
  428. package/.next/server/app/icon1.png/route.js +1 -1
  429. package/.next/server/app/icon1.png/route.js.nft.json +1 -1
  430. package/.next/server/app/icon1.png.meta +1 -1
  431. package/.next/server/app/icon2.png/route.js +1 -1
  432. package/.next/server/app/icon2.png/route.js.nft.json +1 -1
  433. package/.next/server/app/icon2.png.meta +1 -1
  434. package/.next/server/app/login/page.js +2 -2
  435. package/.next/server/app/login/page.js.nft.json +1 -1
  436. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  437. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  438. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  439. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  440. package/.next/server/app/manifest.webmanifest.meta +1 -1
  441. package/.next/server/app/more/page.js +2 -2
  442. package/.next/server/app/more/page.js.nft.json +1 -1
  443. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  444. package/.next/server/app/offline/page.js +2 -2
  445. package/.next/server/app/offline/page.js.nft.json +1 -1
  446. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  447. package/.next/server/app/page.js +2 -2
  448. package/.next/server/app/page.js.nft.json +1 -1
  449. package/.next/server/app/page_client-reference-manifest.js +1 -1
  450. package/.next/server/app/proxy/[...path]/route.js +1 -1
  451. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  452. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  453. package/.next/server/app/repositories/page.js +2 -2
  454. package/.next/server/app/repositories/page.js.nft.json +1 -1
  455. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  456. package/.next/server/app/review/page.js +2 -2
  457. package/.next/server/app/review/page.js.nft.json +1 -1
  458. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  459. package/.next/server/app/sessions/page.js +2 -2
  460. package/.next/server/app/sessions/page.js.nft.json +1 -1
  461. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  462. package/.next/server/app/skills/[skillId]/page.js +2 -2
  463. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  464. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  465. package/.next/server/app/skills/installed/page.js +2 -2
  466. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  467. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  468. package/.next/server/app/skills/page.js +2 -2
  469. package/.next/server/app/skills/page.js.nft.json +1 -1
  470. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  471. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  472. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  473. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  474. package/.next/server/app/worktrees/[id]/page.js +4 -4
  475. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  476. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  477. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  478. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  479. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  480. package/.next/server/app-paths-manifest.json +36 -36
  481. package/.next/server/chunks/{5048.js → 1185.js} +1 -1
  482. package/.next/server/chunks/1656.js +19 -0
  483. package/.next/server/chunks/2460.js +1 -1
  484. package/.next/server/chunks/255.js +1 -0
  485. package/.next/server/chunks/3241.js +1 -1
  486. package/.next/server/chunks/3505.js +7 -0
  487. package/.next/server/chunks/3897.js +22 -0
  488. package/.next/server/chunks/4072.js +5 -5
  489. package/.next/server/chunks/463.js +1 -0
  490. package/.next/server/chunks/5209.js +1 -1
  491. package/.next/server/chunks/5595.js +1 -1
  492. package/.next/server/chunks/5611.js +1 -1
  493. package/.next/server/chunks/610.js +1 -0
  494. package/.next/server/chunks/6119.js +1 -0
  495. package/.next/server/chunks/6130.js +1 -1
  496. package/.next/server/chunks/6345.js +1 -1
  497. package/.next/server/chunks/6401.js +1 -1
  498. package/.next/server/chunks/6781.js +1 -1
  499. package/.next/server/chunks/6784.js +1 -0
  500. package/.next/server/chunks/8581.js +1 -1
  501. package/.next/server/chunks/8728.js +2 -2
  502. package/.next/server/chunks/8918.js +1 -1
  503. package/.next/server/chunks/9130.js +1 -1
  504. package/.next/server/chunks/936.js +1 -1
  505. package/.next/server/chunks/9390.js +1 -1
  506. package/.next/server/chunks/9540.js +1 -1
  507. package/.next/server/chunks/9627.js +1 -1
  508. package/.next/server/chunks/9731.js +3 -3
  509. package/.next/server/middleware-build-manifest.js +1 -1
  510. package/.next/server/middleware-manifest.json +5 -5
  511. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  512. package/.next/server/pages/500.html +1 -1
  513. package/.next/server/pages/_document.js.nft.json +1 -1
  514. package/.next/server/pages/_error.js +3 -3
  515. package/.next/server/pages/_error.js.nft.json +1 -1
  516. package/.next/server/server-reference-manifest.json +1 -1
  517. package/.next/server/src/middleware.js.map +1 -1
  518. package/.next/static/chunks/{1111.5ab4f0ffb0d944e5.js → 1111.1b653d4a9816a0a7.js} +8 -8
  519. package/.next/static/chunks/{1255-7e5873f06b25e129.js → 1255-a85690d352f4f8fd.js} +1 -1
  520. package/.next/static/chunks/{2407-b2f524f99f7fc353.js → 2407-a6533805a86d05bd.js} +1 -1
  521. package/.next/static/chunks/9465-b59bb255b376c813.js +1 -0
  522. package/.next/static/chunks/app/{layout-419eaf7de340f4ab.js → layout-538d8d2746ad1588.js} +1 -1
  523. package/.next/static/chunks/app/worktrees/[id]/page-46aced20b2b1c010.js +1 -0
  524. package/.next/static/chunks/main-37ca13e38030fe8b.js +1 -0
  525. package/.next/static/chunks/{webpack-468b7b33030234b3.js → webpack-838df0273b03af19.js} +1 -1
  526. package/.next/trace +13 -13
  527. package/dist/cli/commands/prompt.d.ts.map +1 -1
  528. package/dist/cli/commands/prompt.js +23 -11
  529. package/dist/cli/commands/wait.d.ts.map +1 -1
  530. package/dist/cli/commands/wait.js +7 -1
  531. package/dist/cli/types/api-responses.d.ts +15 -2
  532. package/dist/cli/types/api-responses.d.ts.map +1 -1
  533. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +11 -0
  534. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
  535. package/dist/lib/polling/auto-yes-suppression-reason.js +4 -1
  536. package/dist/server/src/lib/auto-yes-poller.js +269 -554
  537. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +88 -6
  538. package/dist/server/src/lib/detection/prompt-detector.js +1 -1
  539. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +1 -1
  540. package/dist/server/src/lib/hooks/permission-adjudication.js +26 -0
  541. package/dist/server/src/lib/hooks/permission-decision-service.js +42 -4
  542. package/dist/server/src/lib/hooks/permission-request-payload.js +20 -0
  543. package/dist/server/src/lib/hooks/sources/antigravity/source.js +21 -0
  544. package/dist/server/src/lib/hooks/sources/claude/source.js +3 -0
  545. package/dist/server/src/lib/hooks/sources/codex/source.js +2 -0
  546. package/dist/server/src/lib/hooks/sources/command-code/source.js +2 -0
  547. package/dist/server/src/lib/hooks/sources/copilot/source.js +2 -0
  548. package/dist/server/src/lib/hooks/sources/gemini/source.js +2 -0
  549. package/dist/server/src/lib/hooks/sources/legacy-relay.js +2 -0
  550. package/dist/server/src/lib/hooks/sources/opencode/ingest.js +6 -0
  551. package/dist/server/src/lib/hooks/sources/opencode/source.js +2 -0
  552. package/dist/server/src/lib/hooks/sources/opencode-v2/ingest.js +6 -0
  553. package/dist/server/src/lib/hooks/sources/opencode-v2/source.js +2 -0
  554. package/dist/server/src/lib/hooks/sources/pending-decisions.js +14 -2
  555. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +14 -3
  556. package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +21 -1
  557. package/dist/server/src/lib/polling/auto-yes-confirmation-ledger-types.js +114 -0
  558. package/dist/server/src/lib/polling/auto-yes-confirmation-ledger.js +1060 -0
  559. package/dist/server/src/lib/polling/auto-yes-ledger-records.js +143 -0
  560. package/dist/server/src/lib/polling/auto-yes-policy.js +36 -7
  561. package/dist/server/src/lib/polling/auto-yes-poller-capture.js +50 -0
  562. package/dist/server/src/lib/polling/auto-yes-poller-enter-fallback.js +37 -0
  563. package/dist/server/src/lib/polling/auto-yes-poller-generation.js +151 -0
  564. package/dist/server/src/lib/polling/auto-yes-poller-receipt-log.js +287 -0
  565. package/dist/server/src/lib/polling/auto-yes-poller-state.js +75 -6
  566. package/dist/server/src/lib/polling/auto-yes-poller-steps.js +109 -0
  567. package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +11 -0
  568. package/dist/server/src/lib/polling/auto-yes-resolver.js +21 -1
  569. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +4 -1
  570. package/dist/server/src/lib/polling/response-checker-blank-response.js +30 -0
  571. package/dist/server/src/lib/polling/response-checker.js +5 -10
  572. package/dist/server/src/lib/prompt-observation/appearance.js +165 -0
  573. package/package.json +2 -2
  574. package/release-notes/0.47.1.json +20 -0
  575. package/release-notes/0.47.2.json +20 -0
  576. package/scripts/hooks/cmate-agent-event.sh +22 -0
  577. package/.next/server/chunks/1331.js +0 -22
  578. package/.next/server/chunks/1836.js +0 -1
  579. package/.next/server/chunks/1944.js +0 -1
  580. package/.next/server/chunks/2328.js +0 -1
  581. package/.next/server/chunks/5292.js +0 -7
  582. package/.next/server/chunks/7166.js +0 -19
  583. package/.next/server/chunks/9051.js +0 -1
  584. package/.next/server/chunks/9199.js +0 -1
  585. package/.next/static/chunks/9465-e5a351baa941f31b.js +0 -1
  586. package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +0 -1
  587. package/.next/static/chunks/main-ac91ed6e71380841.js +0 -1
  588. /package/.next/static/{b5BiQC9F6r_XFPdA9cuSj → etorRtpxbQqqOzdUeXdw2}/_buildManifest.js +0 -0
  589. /package/.next/static/{b5BiQC9F6r_XFPdA9cuSj → etorRtpxbQqqOzdUeXdw2}/_ssgManifest.js +0 -0
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ /**
3
+ * The Auto-Yes confirmation ledger's records (Issue #3848, split out of
4
+ * `auto-yes-confirmation-ledger.ts`): its constants, the shapes of its state,
5
+ * the writing of one line, and the small helpers over the state. The state
6
+ * itself — `ledgerState()`, the clock, the test seams — stays owned by
7
+ * `auto-yes-confirmation-ledger.ts`, which re-exports the public names here.
8
+ *
9
+ * Server only (logger). Must not import `auto-yes-confirmation-ledger.ts`.
10
+ *
11
+ * @module lib/polling/auto-yes-ledger-records
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.SESSION_ENDING_STOP_REASONS = exports.ABANDONING_STOP_REASONS = exports.CLI_MODE_WORD = exports.MAX_REMEMBERED_CALLS = exports.MAX_REMEMBERED_INSTANCES = exports.MAX_OPEN_HOOK_REQUESTS = exports.MAX_PENDING_ATTEMPTS = exports.AUTO_YES_LEDGER_MAX_OPEN_TOTAL = exports.AUTO_YES_LEDGER_MAX_OPEN_PER_INSTANCE = exports.AUTO_YES_LEDGER_UNOBSERVABLE_TIMEOUT_MS = exports.AUTO_YES_LEDGER_CLOCK_MS = exports.AUTO_YES_LEDGER_HOOK_LINK_WINDOW_MS = exports.AUTO_YES_LEDGER_RECORDED_PATHS = void 0;
15
+ exports.ledgerLogger = ledgerLogger;
16
+ exports.currentLogLevel = currentLogLevel;
17
+ exports.emit = emit;
18
+ exports.callsOf = callsOf;
19
+ exports.endedCallsOf = endedCallsOf;
20
+ exports.callKey = callKey;
21
+ exports.keyOf = keyOf;
22
+ exports.currentEntry = currentEntry;
23
+ exports.rememberBounded = rememberBounded;
24
+ const logger_1 = require("../../lib/logger");
25
+ const env_1 = require("../../lib/env");
26
+ const auto_yes_state_1 = require("../auto-yes-state");
27
+ const auto_yes_confirmation_ledger_types_1 = require("./auto-yes-confirmation-ledger-types");
28
+ /**
29
+ * The paths this version records (design §6.4): PR 1 the poller's screen path,
30
+ * PR 2 the hook route, the API adjudication and `/prompt-response`, PR 3 the
31
+ * link of agy's request to its dialog (`agy-link`). With all five the daily
32
+ * count is no longer partial for want of a path.
33
+ */
34
+ exports.AUTO_YES_LEDGER_RECORDED_PATHS = [
35
+ 'screen',
36
+ 'hook',
37
+ 'api',
38
+ 'prompt-response',
39
+ 'agy-link',
40
+ ];
41
+ /**
42
+ * A screen confirmation opened this soon after a hook request closed on the
43
+ * same instance carries `afterHookAllow` / `afterHookAbstain` (design §2.3).
44
+ * agy's receipt window is the same length.
45
+ */
46
+ exports.AUTO_YES_LEDGER_HOOK_LINK_WINDOW_MS = 8_000;
47
+ /** The grid of the `alive` and `checkpoint` lines: every UTC hour boundary. */
48
+ exports.AUTO_YES_LEDGER_CLOCK_MS = 60 * 60 * 1000;
49
+ /** An `unobservable` confirmation is let go after this long (design §4.2). */
50
+ exports.AUTO_YES_LEDGER_UNOBSERVABLE_TIMEOUT_MS = 24 * 60 * 60 * 1000;
51
+ /** Open confirmations one instance may hold; the oldest goes past it (design §8.2). */
52
+ exports.AUTO_YES_LEDGER_MAX_OPEN_PER_INSTANCE = 16;
53
+ /** Open confirmations the process may hold; the oldest goes past it (design §8.2). */
54
+ exports.AUTO_YES_LEDGER_MAX_OPEN_TOTAL = 1024;
55
+ /** Sends whose result has not come back that are remembered; the oldest is dropped past it. */
56
+ exports.MAX_PENDING_ATTEMPTS = 1024;
57
+ /** Hook requests whose reply has not been written that are remembered; the oldest is dropped past it. */
58
+ exports.MAX_OPEN_HOOK_REQUESTS = 1024;
59
+ /** Instances whose last hook request or CLI mode is remembered; the oldest is dropped past it. */
60
+ exports.MAX_REMEMBERED_INSTANCES = 1024;
61
+ /** agy calls whose `PostToolUse` has not come that are remembered; the oldest is dropped past it. */
62
+ exports.MAX_REMEMBERED_CALLS = 1024;
63
+ /** A CLI mode is a word of the CLI's own vocabulary; anything else is logged as `(other)`. */
64
+ exports.CLI_MODE_WORD = /^[A-Za-z][A-Za-z-]{0,31}$/;
65
+ /**
66
+ * Poller stop reasons that end the session the confirmation was on, or hand
67
+ * the key to something else (design §4.2). Every other reason — off, expired,
68
+ * the stop pattern, errors, a shutdown — only stops looking.
69
+ */
70
+ exports.ABANDONING_STOP_REASONS = new Set([
71
+ 'invalid-key',
72
+ 'session-killed',
73
+ 'instance-removed',
74
+ 'worktree-deleted',
75
+ 'orphan-swept',
76
+ 'worktree-id-migrated',
77
+ 'replaced',
78
+ 'reset',
79
+ ]);
80
+ /**
81
+ * The stop reasons among {@link ABANDONING_STOP_REASONS} that end the agent's
82
+ * session itself: the memory of a call its `PostToolUse` closed (PR 3) goes
83
+ * with them. Any other reason — Auto-Yes turned off by hand, expired, the stop
84
+ * pattern, a key handed over, one this list does not know — keeps it, so a
85
+ * stale frame of that call is not counted again when Auto-Yes comes back on;
86
+ * the session epoch still tells a relaunched session apart.
87
+ */
88
+ exports.SESSION_ENDING_STOP_REASONS = new Set([
89
+ 'session-killed',
90
+ 'instance-removed',
91
+ 'worktree-deleted',
92
+ 'orphan-swept',
93
+ ]);
94
+ let cachedLogger = null;
95
+ function ledgerLogger() {
96
+ cachedLogger ??= (0, logger_1.createLogger)(auto_yes_confirmation_ledger_types_1.AUTO_YES_LEDGER_LOG_MODULE);
97
+ return cachedLogger;
98
+ }
99
+ function currentLogLevel() {
100
+ try {
101
+ return (0, env_1.getLogConfig)().level;
102
+ }
103
+ catch {
104
+ return 'unknown';
105
+ }
106
+ }
107
+ /** Write one line. A logger that throws is counted, never passed on. */
108
+ function emit(state, event, fields) {
109
+ try {
110
+ ledgerLogger().info(event, { ledgerVersion: auto_yes_confirmation_ledger_types_1.AUTO_YES_LEDGER_VERSION, bootId: state.bootId, ...fields });
111
+ }
112
+ catch {
113
+ state.errors += 1;
114
+ }
115
+ }
116
+ function callsOf(state) {
117
+ state.calls ??= new Map();
118
+ return state.calls;
119
+ }
120
+ function endedCallsOf(state) {
121
+ state.endedCalls ??= new Map();
122
+ return state.endedCalls;
123
+ }
124
+ function callKey(compositeKey, callId) {
125
+ return `${compositeKey}\u0000${callId}`;
126
+ }
127
+ function keyOf(scope) {
128
+ return scope.compositeKey ?? (0, auto_yes_state_1.buildCompositeKey)(scope.worktreeId, scope.cliToolId, scope.instanceId);
129
+ }
130
+ function currentEntry(state, compositeKey) {
131
+ const id = state.current.get(compositeKey);
132
+ return id === undefined ? undefined : state.entries.get(id);
133
+ }
134
+ /** Set `key` in a map kept to `max` entries, dropping the oldest. */
135
+ function rememberBounded(map, key, value, max) {
136
+ map.delete(key);
137
+ if (map.size >= max) {
138
+ const oldest = map.keys().next().value;
139
+ if (oldest !== undefined)
140
+ map.delete(oldest);
141
+ }
142
+ map.set(key, value);
143
+ }
@@ -14,12 +14,17 @@
14
14
  * indefinitely. The TTL is what bounds staleness — a task that starts or ends is
15
15
  * picked up within it, without this module having to observe task transitions.
16
16
  *
17
+ * Issue #3822: a failed lookup is not cached. It is "contract unknown", which
18
+ * the answering paths read as withholding, and holding it for the TTL would
19
+ * keep withholding after the database recovered; the next poll reads again.
20
+ *
17
21
  * @module lib/polling/auto-yes-policy
18
22
  */
19
23
  Object.defineProperty(exports, "__esModule", { value: true });
20
24
  exports.AUTO_YES_POLICY_CACHE_TTL_MS = void 0;
21
25
  exports.getSessionAutoYesPolicy = getSessionAutoYesPolicy;
22
26
  exports.getSessionAutoYesPolicyEntry = getSessionAutoYesPolicyEntry;
27
+ exports.getSessionAutoYesPolicyLookupEntry = getSessionAutoYesPolicyLookupEntry;
23
28
  exports.isAutoYesBlockedByPolicy = isAutoYesBlockedByPolicy;
24
29
  exports.isSessionAutoYesBlockedByContract = isSessionAutoYesBlockedByContract;
25
30
  exports.getSessionContractPolicySummary = getSessionContractPolicySummary;
@@ -29,6 +34,7 @@ const db_1 = require("../../lib/db");
29
34
  const db_instance_1 = require("../../lib/db/db-instance");
30
35
  const auto_yes_state_1 = require("../../lib/auto-yes-state");
31
36
  const logger_1 = require("../../lib/logger");
37
+ const auto_yes_resolver_1 = require("./auto-yes-resolver");
32
38
  const logger = (0, logger_1.createLogger)('auto-yes-policy');
33
39
  /** How long a resolved policy is reused before the task is looked up again. */
34
40
  exports.AUTO_YES_POLICY_CACHE_TTL_MS = 5000;
@@ -54,11 +60,11 @@ function purgeExpired(now) {
54
60
  * Read the policy from the active task, or null when no contract governs this
55
61
  * instance.
56
62
  *
57
- * A database failure yields null — the unconstrained behaviour. Failing closed
58
- * here would suppress auto-yes for every user who has no contract at all, which
59
- * is the population this feature must not touch; the suppressing decisions
60
- * (`off`, deny patterns) are made inside the resolver only once a contract has
61
- * actually been read.
63
+ * Issue #3822: a database failure yields {@link AUTO_YES_POLICY_UNKNOWN}, not
64
+ * null. It used to yield null — the unconstrained behaviour — so a contract
65
+ * stating `off` or a deny pattern was answered past whenever one read failed.
66
+ * Users without a contract are still untouched: a lookup that succeeds and
67
+ * finds no task is null, as before, and only a lookup that fails withholds.
62
68
  */
63
69
  function readPolicy(worktreeId, cliToolId, instanceId) {
64
70
  try {
@@ -76,7 +82,7 @@ function readPolicy(worktreeId, cliToolId, instanceId) {
76
82
  instanceId,
77
83
  error: error instanceof Error ? error.message : String(error),
78
84
  });
79
- return { policy: null, taskId: null };
85
+ return { policy: auto_yes_resolver_1.AUTO_YES_POLICY_UNKNOWN, taskId: null };
80
86
  }
81
87
  }
82
88
  /**
@@ -85,8 +91,12 @@ function readPolicy(worktreeId, cliToolId, instanceId) {
85
91
  *
86
92
  * @param worktreeId - Worktree identifier
87
93
  * @param cliToolId - CLI tool being polled
94
+ * For the paths that answer (the poller and the `PermissionRequest` hook):
95
+ * the resolver reads {@link AUTO_YES_POLICY_UNKNOWN} as withholding (Issue #3822).
96
+ *
88
97
  * @param instanceId - Agent instance id (defaults to the primary, i.e. cliToolId)
89
- * @returns The contract's autoYes block, or null when no contract governs this instance
98
+ * @returns The contract's autoYes block, null when no contract governs this
99
+ * instance, or {@link AUTO_YES_POLICY_UNKNOWN} when the lookup failed
90
100
  */
91
101
  function getSessionAutoYesPolicy(worktreeId, cliToolId, instanceId) {
92
102
  return lookupEntry(worktreeId, cliToolId, instanceId).policy;
@@ -96,8 +106,23 @@ function getSessionAutoYesPolicy(worktreeId, cliToolId, instanceId) {
96
106
  * #3724), so a log line naming both cannot pair one task's verdict with another
97
107
  * task's id when the cache expires between two reads. `taskId` is null when no
98
108
  * contract governs the instance.
109
+ *
110
+ * For display only (Issue #3822): a failed lookup reads as no contract here
111
+ * (`policy` and `taskId` null), never as a contract this lookup did not see.
99
112
  */
100
113
  function getSessionAutoYesPolicyEntry(worktreeId, cliToolId, instanceId) {
114
+ const { policy, taskId } = lookupEntry(worktreeId, cliToolId, instanceId);
115
+ if ((0, auto_yes_resolver_1.isAutoYesPolicyUnknown)(policy))
116
+ return { policy: null, taskId: null };
117
+ return { policy, taskId };
118
+ }
119
+ /**
120
+ * {@link getSessionAutoYesPolicyEntry} for a path that judges the prompt again
121
+ * (Issue #3822): a failed lookup stays {@link AUTO_YES_POLICY_UNKNOWN} instead of
122
+ * reading as no contract, so the resolver withholds on it as the tick did.
123
+ * `taskId` is null when no contract governs the instance or the lookup failed.
124
+ */
125
+ function getSessionAutoYesPolicyLookupEntry(worktreeId, cliToolId, instanceId) {
101
126
  const { policy, taskId } = lookupEntry(worktreeId, cliToolId, instanceId);
102
127
  return { policy, taskId };
103
128
  }
@@ -146,6 +171,10 @@ function lookupEntry(worktreeId, cliToolId, instanceId) {
146
171
  return cached;
147
172
  }
148
173
  const { policy, taskId } = readPolicy(worktreeId, cliToolId, resolvedInstanceId);
174
+ if ((0, auto_yes_resolver_1.isAutoYesPolicyUnknown)(policy)) {
175
+ // Issue #3822: not cached, so the next lookup reads again.
176
+ return { policy, taskId, expiresAt: now };
177
+ }
149
178
  if (policyCache.size >= MAX_CACHE_ENTRIES) {
150
179
  purgeExpired(now);
151
180
  }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * Auto-Yes poller: one tick's capture (Issue #2522) (Issue #3783: split out of
4
+ * `auto-yes-poller.ts`, which re-exports the public names).
5
+ *
6
+ * Does not statically import `auto-yes-poller.ts` (no cycle outside the
7
+ * baseline in `import-cycles-baseline-3482`). Via `cli-session`, opencode's
8
+ * history feed reaches it back through a dynamic `import()`; that path predates
9
+ * the split (the poller imported `cli-session` itself) and is no static cycle.
10
+ *
11
+ * @module lib/polling/auto-yes-poller-capture
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.capturePollerFrame = capturePollerFrame;
15
+ exports.captureAndCleanOutput = captureAndCleanOutput;
16
+ const cli_session_1 = require("../session/cli-session");
17
+ const cli_patterns_1 = require("../detection/cli-patterns");
18
+ const auto_yes_config_1 = require("../../config/auto-yes-config");
19
+ /**
20
+ * Capture tmux session output once, keeping both spellings (Issue #2522).
21
+ *
22
+ * @internal Exported for testing purposes only.
23
+ * @param worktreeId - Worktree identifier
24
+ * @param cliToolId - CLI tool type being polled
25
+ * @param captureLines - Optional number of lines to capture
26
+ * @param instanceId - Optional agent instance ID (Issue #896; defaults to primary session)
27
+ * @returns The tick's raw capture and its cleaned form
28
+ */
29
+ async function capturePollerFrame(worktreeId, cliToolId, captureLines, instanceId) {
30
+ const lines = captureLines ?? auto_yes_config_1.FULL_CAPTURE_LINES;
31
+ const output = await (0, cli_session_1.captureSessionOutput)(worktreeId, cliToolId, lines, instanceId);
32
+ return { raw: output, clean: (0, cli_patterns_1.stripBoxDrawing)((0, cli_patterns_1.stripAnsi)(output)) };
33
+ }
34
+ /**
35
+ * Capture tmux session output and strip ANSI escape codes.
36
+ *
37
+ * Kept as the cleaned half of {@link capturePollerFrame} so the many callers and
38
+ * tests that only ever wanted that string are untouched; `pollAutoYes` takes the
39
+ * pair. `stripBoxDrawing` still runs exactly once per capture either way.
40
+ *
41
+ * @internal Exported for testing purposes only.
42
+ * @param worktreeId - Worktree identifier
43
+ * @param cliToolId - CLI tool type being polled
44
+ * @param captureLines - Optional number of lines to capture
45
+ * @param instanceId - Optional agent instance ID (Issue #896; defaults to primary session)
46
+ * @returns Cleaned output string (ANSI stripped)
47
+ */
48
+ async function captureAndCleanOutput(worktreeId, cliToolId, captureLines, instanceId) {
49
+ return (await capturePollerFrame(worktreeId, cliToolId, captureLines, instanceId)).clean;
50
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * Auto-Yes poller: the Enter fallback's audit answer and per-session epoch
4
+ * (Issue #3397) (Issue #3783: split out of `auto-yes-poller.ts`, which
5
+ * re-exports the public names; the Enter itself — `tryEnterFallback` — and its
6
+ * fresh-frame check stay there).
7
+ *
8
+ * Does not statically import `auto-yes-poller.ts` (no cycle outside the
9
+ * baseline in `import-cycles-baseline-3482`, which does not count dynamic
10
+ * `import()`).
11
+ *
12
+ * @module lib/polling/auto-yes-poller-enter-fallback
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AUTO_YES_ENTER_FALLBACK_ANSWER = void 0;
16
+ exports.syncEnterFallbackEpoch = syncEnterFallbackEpoch;
17
+ const auto_yes_enter_fallback_1 = require("./auto-yes-enter-fallback");
18
+ /**
19
+ * The audit row's `answer` for the Enter (Issue #3397): not a digit, so the
20
+ * History reads as "Auto-Yes pressed Enter" rather than as a chosen option.
21
+ */
22
+ exports.AUTO_YES_ENTER_FALLBACK_ANSWER = '[Enter]';
23
+ /**
24
+ * Issue #3397: a session begun since the last tick (a relaunch the poller
25
+ * outlived) starts with no screen that had its Enter.
26
+ *
27
+ * @returns The session epoch the tick reads under
28
+ */
29
+ function syncEnterFallbackEpoch(compositeKey, pollerState) {
30
+ const epoch = (0, auto_yes_enter_fallback_1.getEnterFallbackSessionEpoch)(compositeKey);
31
+ if ((pollerState.enterFallbackEpoch ?? 0) !== epoch) {
32
+ pollerState.enterFallbackSentKey = null;
33
+ pollerState.enterFallbackCandidateKey = null;
34
+ pollerState.enterFallbackEpoch = epoch;
35
+ }
36
+ return epoch;
37
+ }
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ /**
3
+ * Auto-Yes poller state store and tick generation (Issue #3783: split out of
4
+ * `auto-yes-poller.ts`, which re-exports the public names).
5
+ *
6
+ * Does not statically import `auto-yes-poller.ts` (no cycle outside the
7
+ * baseline in `import-cycles-baseline-3482`, which does not count dynamic
8
+ * `import()`).
9
+ *
10
+ * @module lib/polling/auto-yes-poller-generation
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.autoYesPollerStates = void 0;
14
+ exports.getPollerState = getPollerState;
15
+ exports.getActivePollerCount = getActivePollerCount;
16
+ exports.getLastServerResponseTimestamp = getLastServerResponseTimestamp;
17
+ exports.isPollerActive = isPollerActive;
18
+ exports.updateLastServerResponseTimestamp = updateLastServerResponseTimestamp;
19
+ exports.resetErrorCount = resetErrorCount;
20
+ exports.ownedPollerState = ownedPollerState;
21
+ exports.isPollerCurrent = isPollerCurrent;
22
+ exports.isTickCurrent = isTickCurrent;
23
+ exports.isSameSession = isSameSession;
24
+ exports.isDuplicatePrompt = isDuplicatePrompt;
25
+ const auto_yes_enter_fallback_1 = require("./auto-yes-enter-fallback");
26
+ const auto_yes_state_1 = require("../auto-yes-state");
27
+ const global_state_1 = require("../global-state");
28
+ /** In-memory storage for poller states (globalThis for hot reload persistence) */
29
+ exports.autoYesPollerStates = (0, global_state_1.getOrInitGlobal)('__autoYesPollerStates', () => new Map());
30
+ // =============================================================================
31
+ // Poller State Accessors (compositeKey-based)
32
+ // =============================================================================
33
+ /**
34
+ * Get poller state by composite key.
35
+ *
36
+ * @param compositeKey - Composite key (worktreeId:cliToolId)
37
+ * @returns Poller state or undefined
38
+ */
39
+ function getPollerState(compositeKey) {
40
+ return exports.autoYesPollerStates.get(compositeKey);
41
+ }
42
+ /**
43
+ * Get the number of active pollers.
44
+ */
45
+ function getActivePollerCount() {
46
+ return exports.autoYesPollerStates.size;
47
+ }
48
+ /**
49
+ * Get the last server response timestamp for a composite key.
50
+ *
51
+ * Issue #525: Changed from (worktreeId) to (compositeKey).
52
+ *
53
+ * @param compositeKey - Composite key (worktreeId:cliToolId)
54
+ * @returns Timestamp (Date.now()) of the last server response, or null if none
55
+ */
56
+ function getLastServerResponseTimestamp(compositeKey) {
57
+ const pollerState = getPollerState(compositeKey);
58
+ return pollerState?.lastServerResponseTimestamp ?? null;
59
+ }
60
+ /**
61
+ * Check if a server-side auto-yes poller is active for a composite key.
62
+ *
63
+ * Issue #525: Changed from (worktreeId) to (compositeKey).
64
+ *
65
+ * @param compositeKey - Composite key (worktreeId:cliToolId)
66
+ * @returns true if a poller is actively running
67
+ */
68
+ function isPollerActive(compositeKey) {
69
+ return exports.autoYesPollerStates.has(compositeKey);
70
+ }
71
+ /**
72
+ * Update the last server response timestamp.
73
+ *
74
+ * @param compositeKey - Composite key
75
+ * @param timestamp - Timestamp value (Date.now())
76
+ */
77
+ function updateLastServerResponseTimestamp(compositeKey, timestamp, owner) {
78
+ const pollerState = ownedPollerState(compositeKey, owner);
79
+ if (pollerState) {
80
+ pollerState.lastServerResponseTimestamp = timestamp;
81
+ }
82
+ }
83
+ /**
84
+ * Reset error count for a poller and restore the default polling interval.
85
+ * Called after every poll that ran to the end without an error (Issue #3329)
86
+ * and after an answer is sent.
87
+ *
88
+ * @param compositeKey - Composite key
89
+ * @param owner - The tick's own poller state (Issue #3706); see {@link ownedPollerState}
90
+ */
91
+ function resetErrorCount(compositeKey, owner) {
92
+ const pollerState = ownedPollerState(compositeKey, owner);
93
+ if (pollerState) {
94
+ pollerState.consecutiveErrors = 0;
95
+ pollerState.currentInterval = auto_yes_state_1.POLLING_INTERVAL_MS;
96
+ }
97
+ }
98
+ /**
99
+ * The poller state under `compositeKey`, but only when it is `owner` — the
100
+ * tick's own (Issue #3706). Without `owner` (callers outside a tick, and tests
101
+ * driving `detectAndRespondToPrompt` with a hand-built state) it is the plain
102
+ * by-key read this always was.
103
+ */
104
+ function ownedPollerState(compositeKey, owner) {
105
+ const pollerState = getPollerState(compositeKey);
106
+ if (owner !== undefined && pollerState !== owner)
107
+ return undefined;
108
+ return pollerState;
109
+ }
110
+ /** Is the tick's poller still the one under its key (not stopped, not replaced)? */
111
+ function isPollerCurrent(generation) {
112
+ return getPollerState(generation.compositeKey) === generation.pollerState;
113
+ }
114
+ /**
115
+ * May the tick still act: its poller, its grant (the same enable, not expired)
116
+ * and its session (no relaunch since) are all still the ones it started under.
117
+ * Checked after capture, after each wait before a key, and inside the send.
118
+ */
119
+ function isTickCurrent(generation) {
120
+ if (!isPollerCurrent(generation))
121
+ return false;
122
+ // `getAutoYesState` returns the stored object until it expires, when it
123
+ // stores (and returns) a disabled one — so an expiry fails identity too.
124
+ const grant = (0, auto_yes_state_1.getAutoYesState)(generation.worktreeId, generation.cliToolId, generation.instanceId);
125
+ if (grant !== generation.grant || !grant.enabled)
126
+ return false;
127
+ return isSameSession(generation);
128
+ }
129
+ /**
130
+ * Is the session the tick answered still the one it started on (Issue #3706)?
131
+ * What the follow-ups of an answer already sent — the response poller restart,
132
+ * the terminal push — are judged by: a disable after the keys landed does not
133
+ * un-send them, a relaunch does make them about another process.
134
+ */
135
+ function isSameSession(generation) {
136
+ return (0, auto_yes_enter_fallback_1.getEnterFallbackSessionEpoch)(generation.compositeKey) === generation.sessionEpoch;
137
+ }
138
+ /**
139
+ * Check if the given prompt has already been answered recently.
140
+ *
141
+ * @param pollerState - Current poller state
142
+ * @param promptKey - Composite key of the current prompt
143
+ * @returns true if the prompt key matches and is within the retry expiry window
144
+ */
145
+ function isDuplicatePrompt(pollerState, promptKey) {
146
+ if (pollerState.lastAnsweredPromptKey !== promptKey)
147
+ return false;
148
+ if (pollerState.lastAnsweredAt === null)
149
+ return false;
150
+ return (Date.now() - pollerState.lastAnsweredAt) < auto_yes_state_1.DUPLICATE_RETRY_EXPIRY_MS;
151
+ }