commandmate 0.47.0 → 0.48.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 (696) 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 +34 -34
  4. package/.next/build-manifest.json +8 -8
  5. package/.next/diagnostics/framework.json +1 -1
  6. package/.next/next-minimal-server.js.nft.json +1 -1
  7. package/.next/next-server.js.nft.json +1 -1
  8. package/.next/prerender-manifest.json +12 -12
  9. package/.next/react-loadable-manifest.json +1 -1
  10. package/.next/required-server-files.json +1 -1
  11. package/.next/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 +1 -103
  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 +12 -12
  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 +34 -34
  481. package/.next/server/chunks/{5048.js → 1185.js} +1 -1
  482. package/.next/server/chunks/1191.js +11 -4
  483. package/.next/server/chunks/1501.js +1 -1
  484. package/.next/server/chunks/1601.js +2 -2
  485. package/.next/server/chunks/1656.js +19 -0
  486. package/.next/server/chunks/1945.js +3 -3
  487. package/.next/server/chunks/1990.js +103 -0
  488. package/.next/server/chunks/2119.js +1 -1
  489. package/.next/server/chunks/2404.js +1 -1
  490. package/.next/server/chunks/2422.js +1 -1
  491. package/.next/server/chunks/2445.js +1 -1
  492. package/.next/server/chunks/2534.js +1 -1
  493. package/.next/server/chunks/255.js +1 -0
  494. package/.next/server/chunks/3241.js +1 -1
  495. package/.next/server/chunks/3505.js +7 -0
  496. package/.next/server/chunks/3897.js +22 -0
  497. package/.next/server/chunks/4072.js +5 -5
  498. package/.next/server/chunks/4248.js +1 -1
  499. package/.next/server/chunks/4280.js +1 -0
  500. package/.next/server/chunks/463.js +1 -0
  501. package/.next/server/chunks/5209.js +1 -1
  502. package/.next/server/chunks/5611.js +1 -1
  503. package/.next/server/chunks/6119.js +1 -0
  504. package/.next/server/chunks/6130.js +1 -1
  505. package/.next/server/chunks/6345.js +1 -1
  506. package/.next/server/chunks/6401.js +1 -1
  507. package/.next/server/chunks/6486.js +9 -8
  508. package/.next/server/chunks/6781.js +1 -1
  509. package/.next/server/chunks/6784.js +1 -0
  510. package/.next/server/chunks/720.js +103 -0
  511. package/.next/server/chunks/7604.js +2 -0
  512. package/.next/server/chunks/7905.js +1 -1
  513. package/.next/server/chunks/8581.js +7 -7
  514. package/.next/server/chunks/8728.js +3 -3
  515. package/.next/server/chunks/8791.js +1 -1
  516. package/.next/server/chunks/8807.js +19 -18
  517. package/.next/server/chunks/8918.js +2 -104
  518. package/.next/server/chunks/9130.js +1 -1
  519. package/.next/server/chunks/936.js +1 -1
  520. package/.next/server/chunks/9390.js +1 -1
  521. package/.next/server/chunks/9540.js +1 -1
  522. package/.next/server/chunks/9627.js +4 -4
  523. package/.next/server/chunks/9731.js +3 -3
  524. package/.next/server/middleware-build-manifest.js +1 -1
  525. package/.next/server/middleware-manifest.json +5 -5
  526. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  527. package/.next/server/pages/500.html +1 -1
  528. package/.next/server/pages/_document.js.nft.json +1 -1
  529. package/.next/server/pages/_error.js +3 -3
  530. package/.next/server/pages/_error.js.nft.json +1 -1
  531. package/.next/server/server-reference-manifest.json +1 -1
  532. package/.next/server/src/middleware.js.map +1 -1
  533. package/.next/static/chunks/{1111.5ab4f0ffb0d944e5.js → 1111.1b653d4a9816a0a7.js} +8 -8
  534. package/.next/static/chunks/{1255-7e5873f06b25e129.js → 1255-a85690d352f4f8fd.js} +1 -1
  535. package/.next/static/chunks/2099-c3e0ab70a1b95dd3.js +1 -0
  536. package/.next/static/chunks/{2407-b2f524f99f7fc353.js → 2407-26139a8a2f1adbe8.js} +1 -1
  537. package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
  538. package/.next/static/chunks/{2863-6a07ec82fb52f4dd.js → 2863-f0121af1cbbedb3b.js} +1 -1
  539. package/.next/static/chunks/{8165-263172c17ae8e8c3.js → 8165-c68b3dc844210e6a.js} +1 -1
  540. package/.next/static/chunks/8407-35bbfc84793d7004.js +1 -0
  541. package/.next/static/chunks/9079-406b84d3cc891a87.js +1 -0
  542. package/.next/static/chunks/9465-b59bb255b376c813.js +1 -0
  543. package/.next/static/chunks/app/{layout-419eaf7de340f4ab.js → layout-46b4cbf07520d9b6.js} +1 -1
  544. package/.next/static/chunks/app/sessions/page-fb241bed579c67aa.js +1 -0
  545. package/.next/static/chunks/app/worktrees/[id]/page-cbc7749a33450cc5.js +1 -0
  546. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
  547. package/.next/static/chunks/main-37ca13e38030fe8b.js +1 -0
  548. package/.next/static/chunks/{webpack-468b7b33030234b3.js → webpack-838df0273b03af19.js} +1 -1
  549. package/.next/trace +13 -13
  550. package/dist/cli/commands/auto-yes.d.ts +24 -0
  551. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  552. package/dist/cli/commands/auto-yes.js +73 -3
  553. package/dist/cli/commands/instances.d.ts.map +1 -1
  554. package/dist/cli/commands/instances.js +10 -1
  555. package/dist/cli/commands/prompt.d.ts.map +1 -1
  556. package/dist/cli/commands/prompt.js +28 -14
  557. package/dist/cli/commands/send.d.ts.map +1 -1
  558. package/dist/cli/commands/send.js +15 -0
  559. package/dist/cli/commands/wait.d.ts.map +1 -1
  560. package/dist/cli/commands/wait.js +108 -14
  561. package/dist/cli/docs/agent-operations.d.ts +2 -2
  562. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  563. package/dist/cli/docs/agent-operations.js +27 -0
  564. package/dist/cli/types/api-responses.d.ts +131 -4
  565. package/dist/cli/types/api-responses.d.ts.map +1 -1
  566. package/dist/cli/types/index.d.ts +4 -0
  567. package/dist/cli/types/index.d.ts.map +1 -1
  568. package/dist/cli/utils/resource-resolvers.d.ts +0 -18
  569. package/dist/cli/utils/resource-resolvers.d.ts.map +1 -1
  570. package/dist/cli/utils/resource-resolvers.js +1 -51
  571. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +65 -2
  572. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
  573. package/dist/lib/polling/auto-yes-suppression-reason.js +36 -2
  574. package/dist/lib/prompt-observation/types.d.ts +13 -0
  575. package/dist/lib/prompt-observation/types.d.ts.map +1 -1
  576. package/dist/server/locales/en/worktree.json +2 -1
  577. package/dist/server/locales/ja/worktree.json +2 -1
  578. package/dist/server/src/lib/auto-yes-poller-answer-target.js +38 -0
  579. package/dist/server/src/lib/auto-yes-poller-keys.js +35 -0
  580. package/dist/server/src/lib/auto-yes-poller-session-presence.js +26 -0
  581. package/dist/server/src/lib/auto-yes-poller-tick.js +233 -0
  582. package/dist/server/src/lib/auto-yes-poller.js +468 -792
  583. package/dist/server/src/lib/auto-yes-state.js +50 -2
  584. package/dist/server/src/lib/cli-tools/submit-verified-sender.js +107 -14
  585. package/dist/server/src/lib/db/chat-db.js +5 -1
  586. package/dist/server/src/lib/db/verification-db.js +23 -2
  587. package/dist/server/src/lib/detection/option-recommendation.js +120 -0
  588. package/dist/server/src/lib/detection/prompt-detect-multiple-choice-approval-context.js +290 -0
  589. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +396 -268
  590. package/dist/server/src/lib/detection/prompt-detector.js +92 -21
  591. package/dist/server/src/lib/detection/prompt-screen-key.js +60 -0
  592. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +158 -35
  593. package/dist/server/src/lib/detection/tools/claude/detect.js +111 -10
  594. package/dist/server/src/lib/detection/tools/command-code/dialog.js +67 -0
  595. package/dist/server/src/lib/detection/tools/dialog-block.js +16 -0
  596. package/dist/server/src/lib/detection/waiting-screen-reading.js +98 -0
  597. package/dist/server/src/lib/hooks/permission-adjudication.js +26 -0
  598. package/dist/server/src/lib/hooks/permission-decision-service.js +49 -4
  599. package/dist/server/src/lib/hooks/permission-request-payload.js +20 -0
  600. package/dist/server/src/lib/hooks/sources/antigravity/source.js +21 -0
  601. package/dist/server/src/lib/hooks/sources/claude/source.js +3 -0
  602. package/dist/server/src/lib/hooks/sources/codex/source.js +2 -0
  603. package/dist/server/src/lib/hooks/sources/command-code/source.js +2 -0
  604. package/dist/server/src/lib/hooks/sources/copilot/source.js +2 -0
  605. package/dist/server/src/lib/hooks/sources/gemini/source.js +2 -0
  606. package/dist/server/src/lib/hooks/sources/legacy-relay.js +2 -0
  607. package/dist/server/src/lib/hooks/sources/opencode/ingest.js +6 -0
  608. package/dist/server/src/lib/hooks/sources/opencode/source.js +2 -0
  609. package/dist/server/src/lib/hooks/sources/opencode-v2/ingest.js +6 -0
  610. package/dist/server/src/lib/hooks/sources/opencode-v2/source.js +2 -0
  611. package/dist/server/src/lib/hooks/sources/pending-decisions.js +14 -2
  612. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +14 -3
  613. package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +21 -1
  614. package/dist/server/src/lib/polling/auto-yes-confirm-page.js +2 -2
  615. package/dist/server/src/lib/polling/auto-yes-confirmation-ledger-types.js +117 -0
  616. package/dist/server/src/lib/polling/auto-yes-confirmation-ledger.js +1091 -0
  617. package/dist/server/src/lib/polling/auto-yes-decision-state.js +195 -0
  618. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +139 -10
  619. package/dist/server/src/lib/polling/auto-yes-enter-fallback.js +14 -0
  620. package/dist/server/src/lib/polling/auto-yes-ledger-records.js +143 -0
  621. package/dist/server/src/lib/polling/auto-yes-manual-answer.js +122 -0
  622. package/dist/server/src/lib/polling/auto-yes-option-effect.js +157 -0
  623. package/dist/server/src/lib/polling/auto-yes-policy.js +46 -11
  624. package/dist/server/src/lib/polling/auto-yes-poller-capture.js +63 -0
  625. package/dist/server/src/lib/polling/auto-yes-poller-enter-fallback.js +37 -0
  626. package/dist/server/src/lib/polling/auto-yes-poller-generation.js +192 -0
  627. package/dist/server/src/lib/polling/auto-yes-poller-receipt-log.js +324 -0
  628. package/dist/server/src/lib/polling/auto-yes-poller-state.js +193 -26
  629. package/dist/server/src/lib/polling/auto-yes-poller-steps.js +279 -0
  630. package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +13 -2
  631. package/dist/server/src/lib/polling/auto-yes-question-choice.js +57 -0
  632. package/dist/server/src/lib/polling/auto-yes-resolver.js +117 -22
  633. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +36 -2
  634. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +25 -1
  635. package/dist/server/src/lib/polling/prompt-screen-reading.js +232 -0
  636. package/dist/server/src/lib/polling/response-checker-blank-response.js +30 -0
  637. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +39 -0
  638. package/dist/server/src/lib/polling/response-checker.js +138 -53
  639. package/dist/server/src/lib/prompt-answer-sender.js +104 -10
  640. package/dist/server/src/lib/prompt-observation/appearance.js +165 -0
  641. package/dist/server/src/lib/push/notification-dedup.js +15 -2
  642. package/dist/server/src/lib/push/prompt-card-state.js +140 -19
  643. package/dist/server/src/lib/push/prompt-push-gate.js +158 -12
  644. package/dist/server/src/lib/push/push-sender.js +23 -3
  645. package/dist/server/src/lib/push/resolution-push-notifier.js +14 -0
  646. package/dist/server/src/lib/push/waiting-push-notifier.js +139 -17
  647. package/dist/server/src/lib/realtime/terminal-broadcast.js +16 -0
  648. package/dist/server/src/lib/session/agent-event-state.js +25 -5
  649. package/dist/server/src/lib/session/agent-event-turn.js +140 -46
  650. package/dist/server/src/lib/session/cli-session.js +21 -2
  651. package/dist/server/src/lib/session/current-output-builder.js +64 -11
  652. package/dist/server/src/lib/session/send-attempt-state.js +23 -7
  653. package/dist/server/src/lib/session/waiting-episode-binding-observation.js +289 -0
  654. package/dist/server/src/lib/session/waiting-episode-binding-resolve.js +38 -0
  655. package/dist/server/src/lib/session/waiting-episode-binding.js +276 -0
  656. package/dist/server/src/lib/session/waiting-episode-state.js +307 -17
  657. package/dist/server/src/lib/session/waiting-episode-verdict.js +174 -0
  658. package/dist/server/src/lib/tmux/tmux-capture-cache.js +76 -11
  659. package/dist/server/src/lib/tmux/tmux.js +54 -9
  660. package/dist/server/src/lib/verification/gate-runner.js +162 -13
  661. package/dist/server/src/lib/verification/machine-lock.js +5 -0
  662. package/dist/server/src/lib/ws-server.js +18 -3
  663. package/dist/server/src/types/auto-yes-answer-mode.js +38 -0
  664. package/dist/server/src/types/auto-yes-decision.js +61 -0
  665. package/dist/server/src/types/auto-yes.js +6 -0
  666. package/dist/server/src/types/prompt-reading.js +32 -0
  667. package/dist/types/auto-yes-answer-mode.d.ts +35 -0
  668. package/dist/types/auto-yes-answer-mode.d.ts.map +1 -0
  669. package/dist/types/auto-yes-answer-mode.js +38 -0
  670. package/docs/en/user-guide/webapp-guide.md +33 -4
  671. package/package.json +2 -2
  672. package/public/sw.js +76 -4
  673. package/release-notes/0.47.1.json +20 -0
  674. package/release-notes/0.47.2.json +20 -0
  675. package/release-notes/0.48.0.json +57 -0
  676. package/scripts/hooks/cmate-agent-event.sh +22 -0
  677. package/.next/server/chunks/1331.js +0 -22
  678. package/.next/server/chunks/1559.js +0 -2
  679. package/.next/server/chunks/1836.js +0 -1
  680. package/.next/server/chunks/1944.js +0 -1
  681. package/.next/server/chunks/2328.js +0 -1
  682. package/.next/server/chunks/2460.js +0 -1
  683. package/.next/server/chunks/5292.js +0 -7
  684. package/.next/server/chunks/5595.js +0 -1
  685. package/.next/server/chunks/7166.js +0 -19
  686. package/.next/server/chunks/9051.js +0 -1
  687. package/.next/server/chunks/9199.js +0 -1
  688. package/.next/static/chunks/602-1c1488959215e140.js +0 -1
  689. package/.next/static/chunks/8407-155f84e5ba05f1d5.js +0 -1
  690. package/.next/static/chunks/9079-24f9fa549ed298f1.js +0 -1
  691. package/.next/static/chunks/9465-e5a351baa941f31b.js +0 -1
  692. package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +0 -1
  693. package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +0 -1
  694. package/.next/static/chunks/main-ac91ed6e71380841.js +0 -1
  695. /package/.next/static/{b5BiQC9F6r_XFPdA9cuSj → PTlAswXLq8PAe2vUJ8dVP}/_buildManifest.js +0 -0
  696. /package/.next/static/{b5BiQC9F6r_XFPdA9cuSj → PTlAswXLq8PAe2vUJ8dVP}/_ssgManifest.js +0 -0
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * Auto-Yes's decision about the confirmation on screen (Issue #3821).
4
+ *
5
+ * Written by the poller's tick (`detectAndRespondToPrompt`), which is where the
6
+ * decision is actually made, and read by `buildCurrentOutput`, which publishes
7
+ * it as `autoYesDecision` next to the prompt. The answer surfaces show their
8
+ * panel under Auto-Yes for every decision but `answering`.
9
+ *
10
+ * ## What a record is tied to
11
+ *
12
+ * A record is published only while everything it was made under still holds:
13
+ *
14
+ * - the GRANT — the same `AutoYesState` object (`getAutoYesState` stores a new
15
+ * one on every enable and on expiry, as the tick's own generation check
16
+ * reads it, #3706), so turning Auto-Yes off and on again or letting it expire
17
+ * drops the old decision even with the same screen up;
18
+ * - the SESSION epoch (`getEnterFallbackSessionEpoch`): a relaunch drops it;
19
+ * - the CONFIRMATION ({@link matchesConfirmation}): the question and the
20
+ * options ({@link enterFallbackScreenKey}), AND what is being approved — the
21
+ * whole `approvalTarget` as read, with only the cursor on its option rows
22
+ * taken out ({@link approvalTargetRows}, the body's indent, `>` and blank
23
+ * rows kept, as #3817 reads it) — AND, for agy, the hook call the receipt
24
+ * was accepted for. Two approvals that differ only in their target (agy's
25
+ * file creation names the file only there, two commands that differ by an
26
+ * indent) are two confirmations. Two readings of one screen that differ in
27
+ * how many rows they kept (one cut from the top) are not matched either:
28
+ * the rows a cut leaves need not name what is approved (a diff row, not the
29
+ * file), and the hook call known now may be an earlier one's (review 3), so
30
+ * they read `none` — the panel opens, nothing is sent. The published
31
+ * `confirmation` ({@link autoYesConfirmationKey}) is this same identity: a
32
+ * record matches exactly when the keys are equal;
33
+ * - a TICK not long ago ({@link AUTO_YES_DECISION_STALE_MS}): a live poller
34
+ * re-decides every tick, so a record nobody refreshed says nothing now.
35
+ *
36
+ * Anything else — no record, another confirmation, an old grant — is `none`,
37
+ * never `answering`. A human's answer through `/prompt-response` drops the
38
+ * record (`./auto-yes-manual-answer`).
39
+ *
40
+ * Two confirmations identical in every part above, in a row, with no frame
41
+ * without a prompt between them, read as one here: nothing on the screen tells
42
+ * them apart. The tick re-decides on its next pass either way.
43
+ *
44
+ * Not the confirmation ledger (#3820): the ledger measures, never decides, and
45
+ * a failure in it changes nothing. This record is what the tick decided.
46
+ *
47
+ * In-memory and on `globalThis` for the reason `auto-yes-suppression-state`
48
+ * gives: the poller writes it and the `current-output` route reads it, and
49
+ * under `next dev` the two are bundled apart.
50
+ *
51
+ * @module lib/polling/auto-yes-decision-state
52
+ */
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.AUTO_YES_DECISION_STALE_MS = void 0;
55
+ exports.approvalTargetRows = approvalTargetRows;
56
+ exports.autoYesConfirmationKey = autoYesConfirmationKey;
57
+ exports.matchesConfirmation = matchesConfirmation;
58
+ exports.recordAutoYesDecision = recordAutoYesDecision;
59
+ exports.reaffirmAutoYesAnswering = reaffirmAutoYesAnswering;
60
+ exports.getAutoYesDecisionRecord = getAutoYesDecisionRecord;
61
+ exports.forgetAutoYesDecision = forgetAutoYesDecision;
62
+ exports.forgetAutoYesDecisionsByWorktree = forgetAutoYesDecisionsByWorktree;
63
+ exports.clearAutoYesDecisions = clearAutoYesDecisions;
64
+ exports.publishAutoYesDecision = publishAutoYesDecision;
65
+ const auto_yes_state_1 = require("../../lib/auto-yes-state");
66
+ const auto_yes_decision_1 = require("../../types/auto-yes-decision");
67
+ const global_state_1 = require("../global-state");
68
+ const auto_yes_enter_fallback_state_1 = require("./auto-yes-enter-fallback-state");
69
+ const auto_yes_poller_state_1 = require("./auto-yes-poller-state");
70
+ const crypto_1 = require("crypto");
71
+ /**
72
+ * How long a record stays current without a tick refreshing it. The poller
73
+ * ticks every couple of seconds and refreshes the record on each tick that
74
+ * sees the screen; one past this is from a poller that is not ticking.
75
+ */
76
+ exports.AUTO_YES_DECISION_STALE_MS = 30_000;
77
+ const decisions = (0, global_state_1.getOrInitGlobal)('__autoYesDecisions', () => new Map());
78
+ /**
79
+ * The rows of `approvalTarget` with only the cursor taken out of its option
80
+ * rows (`approvalTargetWithoutCursor`), or null when the prompt has none. The
81
+ * body stays as read: an indent, a `>` or a blank row is part of what is
82
+ * approved (#3817).
83
+ */
84
+ function approvalTargetRows(promptData) {
85
+ const target = (0, auto_yes_poller_state_1.approvalTargetWithoutCursor)(promptData);
86
+ return target === null ? null : target.split('\n');
87
+ }
88
+ /**
89
+ * Which confirmation a reading is of: question and options
90
+ * ({@link enterFallbackScreenKey}), the approval target row for row
91
+ * ({@link approvalTargetRows}) and the agy call, hashed. The one identity both
92
+ * the record ({@link matchesConfirmation}) and the wire (`confirmation`, read
93
+ * by `laterAutoYesDecision`) use: same key, same confirmation; another key,
94
+ * another confirmation — or the same one read with other rows, which is not
95
+ * claimed to be the same.
96
+ */
97
+ function autoYesConfirmationKey(identity) {
98
+ return (0, crypto_1.createHash)('sha256')
99
+ .update(JSON.stringify([
100
+ (0, auto_yes_enter_fallback_state_1.enterFallbackScreenKey)(identity.promptData),
101
+ approvalTargetRows(identity.promptData),
102
+ identity.callId ?? null,
103
+ ]))
104
+ .digest('hex')
105
+ .slice(0, 32);
106
+ }
107
+ /** Is `record` about the confirmation `identity` describes? The same {@link autoYesConfirmationKey}. */
108
+ function matchesConfirmation(record, identity) {
109
+ return record.confirmation === autoYesConfirmationKey(identity);
110
+ }
111
+ /** Record what the tick decided for the prompt on screen. */
112
+ function recordAutoYesDecision(compositeKey, decision, at = Date.now()) {
113
+ decisions.set(compositeKey, {
114
+ state: decision.state,
115
+ reason: decision.state === 'withheld' ? decision.reason : null,
116
+ confirmation: autoYesConfirmationKey(decision),
117
+ grant: decision.grant,
118
+ epoch: decision.epoch,
119
+ at,
120
+ });
121
+ }
122
+ /**
123
+ * Issue #3821 (review 2): the duplicate guard (#306) says "answered less than
124
+ * `DUPLICATE_RETRY_EXPIRY_MS` ago", comparing only the type and the question.
125
+ * That is not evidence the confirmation on screen is the one answered, so the
126
+ * `answering` record is only kept — its time moved on — when it is the one
127
+ * this tick's send made: about this very confirmation, under the same grant
128
+ * and session. Otherwise the record is dropped (`none`).
129
+ *
130
+ * @returns Whether `answering` still stands
131
+ */
132
+ function reaffirmAutoYesAnswering(compositeKey, tick, at = Date.now()) {
133
+ const record = decisions.get(compositeKey);
134
+ if (record === undefined ||
135
+ record.state !== 'answering' ||
136
+ record.grant !== tick.grant ||
137
+ record.epoch !== tick.epoch ||
138
+ !matchesConfirmation(record, tick)) {
139
+ decisions.delete(compositeKey);
140
+ return false;
141
+ }
142
+ decisions.set(compositeKey, { ...record, at });
143
+ return true;
144
+ }
145
+ /** The record as kept, or null. Test seam and diagnostics. */
146
+ function getAutoYesDecisionRecord(compositeKey) {
147
+ return decisions.get(compositeKey) ?? null;
148
+ }
149
+ /** Drop one instance's record: no prompt on screen, a human answered, the poller stopped. */
150
+ function forgetAutoYesDecision(compositeKey) {
151
+ decisions.delete(compositeKey);
152
+ }
153
+ /** {@link forgetAutoYesDecision} for every instance of a worktree. */
154
+ function forgetAutoYesDecisionsByWorktree(worktreeId) {
155
+ for (const key of (0, auto_yes_state_1.filterCompositeKeysByWorktree)([...decisions.keys()], worktreeId)) {
156
+ decisions.delete(key);
157
+ }
158
+ }
159
+ /** Drop every record: server shutdown, and a test seam. */
160
+ function clearAutoYesDecisions() {
161
+ decisions.clear();
162
+ }
163
+ /**
164
+ * The decision published for the payload's prompt.
165
+ *
166
+ * - no screen prompt, or Auto-Yes off: `none`;
167
+ * - Auto-Yes on with no poller for the instance: `withheld`
168
+ * (`server-poller-inactive`) — nothing answers the screen, whatever an
169
+ * earlier record said;
170
+ * - a record made under this grant and session, about this confirmation
171
+ * ({@link matchesConfirmation}), refreshed recently: that record;
172
+ * - otherwise `none`.
173
+ *
174
+ * Each names the payload's prompt in `confirmation` ({@link autoYesConfirmationKey}; null with no prompt).
175
+ */
176
+ function publishAutoYesDecision(input) {
177
+ const now = input.now ?? Date.now();
178
+ const { compositeKey, grant, promptData } = input;
179
+ const confirmation = promptData == null ? null : autoYesConfirmationKey({ promptData, callId: input.callId });
180
+ const none = { state: 'none', reason: null, observedAt: now, confirmation };
181
+ if (promptData == null || !grant?.enabled)
182
+ return none;
183
+ if (!input.pollerActive) {
184
+ return { state: 'withheld', reason: auto_yes_decision_1.SERVER_POLLER_INACTIVE_DECISION_REASON, observedAt: now, confirmation };
185
+ }
186
+ const record = decisions.get(compositeKey);
187
+ if (record === undefined ||
188
+ record.grant !== grant ||
189
+ record.epoch !== (0, auto_yes_enter_fallback_state_1.getEnterFallbackSessionEpoch)(compositeKey) ||
190
+ record.confirmation !== confirmation ||
191
+ now - record.at > exports.AUTO_YES_DECISION_STALE_MS) {
192
+ return none;
193
+ }
194
+ return { state: record.state, reason: record.reason, observedAt: now, confirmation };
195
+ }
@@ -37,12 +37,17 @@
37
37
  *
38
38
  * A `yes_no` prompt is a different inference — `detectPrompt` requires an
39
39
  * explicit `(y/n)`-shaped token in the text rather than deriving it from layout
40
- * — and NO tool in the registry has a measured yes/no dialog rule to gate it
41
- * against. Gating an inference for which no positive rule exists is the failure
42
- * mode the rollout guidance is written to prevent: every such prompt would
43
- * become a suppression, and the operator would see a worker that had silently
44
- * gone quiet. When a tool's yes/no dialog is measured and fixtured, widen this
45
- * the same way a tool is added to the table.
40
+ * — and NO tool in the registry has a measured yes/no dialog rule. Until Issue
41
+ * #3822 that was the reason to leave it ungated. It is now the reason to refuse
42
+ * it on an `enforce` tool, in {@link evaluateAutoYesDialogGate} only: none of
43
+ * those tools draws a `(y/n)` dialog, so a `(y/n)` on their pane is text — a
44
+ * reply quoting one, a shell command's prompt — and typing `y` at it answers
45
+ * nothing the tool asked (the user's decision of 2026-10-20: a generic yes/no
46
+ * without the tool's own evidence is left to a human). The tool can still vouch
47
+ * for the frame through `detectDialog`, exactly as for a numbered list. The
48
+ * `legacy` tools are unchanged (#3823), and so is
49
+ * {@link evaluateDialogPresence}: a `(y/n)` row a human may answer still
50
+ * belongs in History.
46
51
  *
47
52
  * ## What "allowed" does NOT mean
48
53
  *
@@ -54,9 +59,12 @@
54
59
  * @module lib/polling/auto-yes-dialog-gate
55
60
  */
56
61
  Object.defineProperty(exports, "__esModule", { value: true });
57
- exports.COMMAND_CODE_UNSUPPORTED_QUESTION_MESSAGE = exports.UNSUPPORTED_DIALOG_LAYOUT_REASON = exports.PROMPT_NO_LONGER_ACTIVE_REASON = exports.AUTO_YES_DIALOG_GATE_ENV_VAR = exports.AUTO_YES_DIALOG_GATE_DEFAULT_MODE = exports.AUTO_YES_DIALOG_GATE_MODES = void 0;
62
+ exports.COMMAND_CODE_UNSUPPORTED_QUESTION_MESSAGE = exports.UNSUPPORTED_DIALOG_LAYOUT_REASON = exports.PROMPT_NO_LONGER_ACTIVE_REASON = exports.QUESTION_EVIDENCE_UNREAD_TOOLS = exports.AUTO_YES_QUESTION_DIALOG_KINDS = exports.AUTO_YES_DIALOG_GATE_ENV_VAR = exports.AUTO_YES_DIALOG_GATE_DEFAULT_MODE = exports.AUTO_YES_DIALOG_GATE_MODES = void 0;
58
63
  exports.resolveAutoYesDialogGateMode = resolveAutoYesDialogGateMode;
59
64
  exports.evaluateAutoYesDialogGate = evaluateAutoYesDialogGate;
65
+ exports.classifyAutoYesQuestion = classifyAutoYesQuestion;
66
+ exports.autoYesQuestionTreatment = autoYesQuestionTreatment;
67
+ exports.isAutoYesQuestionPrompt = isAutoYesQuestionPrompt;
60
68
  exports.evaluateDialogPresence = evaluateDialogPresence;
61
69
  exports.judgePromptResponse = judgePromptResponse;
62
70
  exports.assessPromptAnswerability = assessPromptAnswerability;
@@ -67,6 +75,7 @@ const prompt_detector_1 = require("../../lib/detection/prompt-detector");
67
75
  const cli_patterns_1 = require("../../lib/detection/cli-patterns");
68
76
  const dialog_1 = require("../../lib/detection/tools/antigravity/dialog");
69
77
  const dialog_2 = require("../../lib/detection/tools/command-code/dialog");
78
+ const auto_yes_option_effect_1 = require("./auto-yes-option-effect");
70
79
  /** Every accepted value of {@link AutoYesDialogGateMode}, for parsing and tests. */
71
80
  exports.AUTO_YES_DIALOG_GATE_MODES = ['enforce', 'legacy'];
72
81
  /**
@@ -193,7 +202,10 @@ function resolveAutoYesDialogGateMode(tool, env = process.env) {
193
202
  }
194
203
  return specific ?? wildcard ?? exports.AUTO_YES_DIALOG_GATE_DEFAULT_MODE[tool] ?? 'legacy';
195
204
  }
196
- /** The only prompt family this gate judges. See the module docstring. */
205
+ /**
206
+ * The only prompt family the presence gate judges. Auto-Yes's gate also judges
207
+ * `yes_no` (Issue #3822); see the module docstring.
208
+ */
197
209
  const GATED_PROMPT_TYPE = 'multiple_choice';
198
210
  /**
199
211
  * May Auto-Yes answer the prompt the generic inference found on this frame?
@@ -216,7 +228,10 @@ function evaluateAutoYesDialogGate(cliToolId, promptType, cleanOutput, env = pro
216
228
  // `judgeDialogPresence` holds that rule; Issue #2457 split it out so the
217
229
  // history-save and `/prompt-response` paths judge a frame the same way this
218
230
  // one does instead of re-deriving the rollout table.
219
- const presence = judgeDialogPresence(cliToolId, promptType, cleanOutput, resolveAutoYesDialogGateMode(cliToolId, env));
231
+ const mode = resolveAutoYesDialogGateMode(cliToolId, env);
232
+ const presence = promptType === 'yes_no'
233
+ ? judgeYesNoPresence(cliToolId, cleanOutput, mode)
234
+ : judgeDialogPresence(cliToolId, promptType, cleanOutput, mode);
220
235
  return {
221
236
  // `keys` is a dialog and still not answerable: opencode's button strip takes
222
237
  // ←/→ + Enter, so the digit is swallowed and the Enter confirms whatever is
@@ -245,6 +260,119 @@ function judgeDialogPresence(cliToolId, promptType, frame, mode) {
245
260
  const dialog = detector.detectDialog(typeof frame === 'string' ? (0, frame_1.normalizeFrame)(frame, cliToolId) : frame);
246
261
  return { present: dialog !== null, dialog, mode, gated: true };
247
262
  }
263
+ /**
264
+ * Issue #3822: the Auto-Yes gate's reading of a `yes_no` candidate. Judged on
265
+ * the same terms as a numbered one — the rollout table and the `hasDialogRules`
266
+ * cross-check — so a `legacy` tool, or one with no rules, stays ungated. An
267
+ * `enforce` tool answers only where its own `detectDialog` vouched for the
268
+ * frame; none of their rules reads a `(y/n)` row, so in practice it is refused.
269
+ */
270
+ function judgeYesNoPresence(cliToolId, frame, mode) {
271
+ const detector = (0, registry_1.getToolStatusDetector)(cliToolId);
272
+ if (!detector.hasDialogRules || mode === 'legacy') {
273
+ return { present: true, dialog: null, mode, gated: false };
274
+ }
275
+ const dialog = detector.detectDialog(typeof frame === 'string' ? (0, frame_1.normalizeFrame)(frame, cliToolId) : frame);
276
+ return { present: dialog !== null, dialog, mode, gated: true };
277
+ }
278
+ /**
279
+ * The dialog kinds that are a question to the operator, not a permission
280
+ * (Issue #3822): OpenCode V2's question form, read off its own key hints.
281
+ *
282
+ * Not Claude's `ask_user`: Claude classifies by the context rows above the
283
+ * options, which on a permission dialog are the command being approved — a
284
+ * `grep "Ready to submit your answers?"` approval reads `ask_user` (#3748's
285
+ * controls), and it is a permission.
286
+ */
287
+ exports.AUTO_YES_QUESTION_DIALOG_KINDS = new Set(['question']);
288
+ /**
289
+ * What kind of question to the operator a prompt is, if it is one (Issue
290
+ * #3863):
291
+ *
292
+ * - `'question-form'` — a question form the tool's own dialog rules read
293
+ * ({@link AUTO_YES_QUESTION_DIALOG_KINDS}: OpenCode V2's). Left to a human
294
+ * under every answer mode, as before; only on a gated frame, where those
295
+ * rules ran;
296
+ * - `'picker'` — a picker a question reader read: Claude's AskUserQuestion
297
+ * (the parser's own footer, `Enter to select · … navigate`) or Command
298
+ * Code's question screen (its reader). Both set `isAskUserQuestion`, off the
299
+ * picker's chrome rather than its text. Answered under the `recommended`
300
+ * answer mode, left to a human under `careful`;
301
+ * - null — not a question (a permission, a yes/no, a list).
302
+ *
303
+ * The picker is judged WITHOUT the dialog gate (#3863): the gate's mode
304
+ * (`enforce` / `legacy`, and the `CM_AUTOYES_DIALOG_GATE` kill switch) says
305
+ * whether a frame's numbered list may be answered at all, not whether it is a
306
+ * question, so `legacy` does not turn a question into something Auto-Yes
307
+ * answers under `careful`. Claude's dialog kind `ask_user` is not evidence:
308
+ * Claude classifies by the context rows above the options, which on a
309
+ * permission dialog are the command being approved (#3748).
310
+ *
311
+ * - `'unidentified'` (Issue #3881, the second half: finding 3) — given the
312
+ * tool, a numbered list on copilot or codex
313
+ * ({@link QUESTION_EVIDENCE_UNREAD_TOOLS}) that is neither of the above and
314
+ * whose rows do not read as a permission dialog
315
+ * (`auto-yes-option-effect`, the wording measured on their live captures).
316
+ * Copilot's question (`ask_user`) and codex's `request_user_input` draw the
317
+ * same picker as their menus: copilot calls anything without `do you want
318
+ * to` a `picker`, codex anything with a `?` above it a `permission`, and
319
+ * neither sets `isAskUserQuestion`. So such a list is not known to be a
320
+ * question, nor known not to be one. Left to a human under `careful`;
321
+ * under `recommended` it is answered exactly as before (not as a question).
322
+ *
323
+ * @param promptData - The prompt the tick read
324
+ * @param gate - {@link evaluateAutoYesDialogGate}'s verdict for the same frame, if it ran
325
+ * @param cliToolId - The tool that drew it; omitted, no list is `'unidentified'`
326
+ * (the reading before #3881's second half)
327
+ */
328
+ function classifyAutoYesQuestion(promptData, gate, cliToolId) {
329
+ if (gate?.gated === true && gate.dialog !== null && exports.AUTO_YES_QUESTION_DIALOG_KINDS.has(gate.dialog.kind)) {
330
+ return 'question-form';
331
+ }
332
+ if (promptData.type !== 'multiple_choice')
333
+ return null;
334
+ if (promptData.isAskUserQuestion === true)
335
+ return 'picker';
336
+ if (cliToolId !== undefined && exports.QUESTION_EVIDENCE_UNREAD_TOOLS.has(cliToolId)
337
+ && (0, auto_yes_option_effect_1.selectAllowOnceOption)(promptData.options, cliToolId).kind === 'not-a-permission-dialog') {
338
+ return 'unidentified';
339
+ }
340
+ return null;
341
+ }
342
+ /** See {@link AutoYesQuestionTreatment}. */
343
+ function autoYesQuestionTreatment(kind, answerMode) {
344
+ if (kind === null)
345
+ return 'base-rules';
346
+ if (kind === 'question-form')
347
+ return 'left-to-human';
348
+ if (answerMode === 'careful')
349
+ return 'left-to-human';
350
+ return kind === 'picker' ? 'recommended-choice' : 'base-rules';
351
+ }
352
+ /**
353
+ * The tools whose question screens nothing on the screen tells from their
354
+ * other pickers (Issue #3881, finding 3): copilot's `ask_user`, codex's
355
+ * `request_user_input`. Neither module reads a question's chrome; their dialog
356
+ * kinds are guesses from the words above the options
357
+ * (`tools/copilot/prompt.ts`, `tools/codex/prompt.ts`).
358
+ */
359
+ exports.QUESTION_EVIDENCE_UNREAD_TOOLS = new Set(['copilot', 'codex']);
360
+ /**
361
+ * Is the prompt a question to the operator rather than a permission, on a
362
+ * GATED frame? (Issue #3822.)
363
+ *
364
+ * The reading #3822 first shipped: a question only where the tool's own rules
365
+ * ran. Since Issue #3863 the poller reads {@link classifyAutoYesQuestion},
366
+ * which judges the picker without the gate (so the kill switch and the
367
+ * `legacy` tools do not change how a question is treated); this stays the
368
+ * gated half of that reading.
369
+ *
370
+ * @param promptData - The prompt the tick read
371
+ * @param gate - {@link evaluateAutoYesDialogGate}'s verdict for the same frame
372
+ */
373
+ function isAutoYesQuestionPrompt(promptData, gate) {
374
+ return gate.gated && classifyAutoYesQuestion(promptData, gate) !== null;
375
+ }
248
376
  /**
249
377
  * Does this frame POSITIVELY carry a dialog for the numbered-list candidate the
250
378
  * generic parser found on it? (Issue #2457)
@@ -395,8 +523,9 @@ function assessPromptAnswerability(cliToolId, frame) {
395
523
  // Issue #3808: a numbered agy screen agy's reader declines (the login-method
396
524
  // screen, a permission dialog whose `tab Amend` footer is cut or off the
397
525
  // pane) is no prompt — not the generic parser's reading of its `1. / 2.` rows.
526
+ // #3818: by default, so a run with a number missing is declined too.
398
527
  const declinedAgyScreen = cliToolId === 'antigravity' && toolDialog === null
399
- && (0, dialog_1.isAntigravityUnvouchedNumberedScreen)(cleanOutput);
528
+ && (0, dialog_1.isAntigravityUnansweredNumberedScreen)(cleanOutput);
400
529
  const isCommandCodeQuestion = commandCodeQuestion.kind === 'prompt';
401
530
  const candidate = (commandCodeQuestion.kind === 'prompt' ? commandCodeQuestion.prompt : null)
402
531
  ?? toolDialog
@@ -2,6 +2,20 @@
2
2
  /**
3
3
  * Auto-Yes's Enter on a choice screen CommandMate cannot read (Issue #3397).
4
4
  *
5
+ * ## Retired (Issue #3821)
6
+ *
7
+ * Nothing sends this Enter any more. The poller leaves every frame the dialog
8
+ * gate refuses to a human (`unclassified-frame`), whatever
9
+ * {@link judgeEnterFallback} would say and whatever
10
+ * {@link AUTO_YES_ENTER_FALLBACK_ENV_VAR} is set to: a bare Enter confirms
11
+ * whatever happens to be selected, and on a screen nothing here can read,
12
+ * nothing here can say what that is. {@link judgeEnterFallback} stays as a
13
+ * reading of the frame only; no sending path calls it. The session epoch the
14
+ * record was keyed on (`./auto-yes-enter-fallback-state`) is still what every
15
+ * send's generation check and the partial-answer record belong to.
16
+ *
17
+ * What follows is how the Enter was decided while it existed.
18
+ *
5
19
  * ## The screen
6
20
  *
7
21
  * `assessPromptAnswerability` refuses some frames that are plainly a choice
@@ -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
+ }