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,122 @@
1
+ "use strict";
2
+ /**
3
+ * A person's answer through `/prompt-response`, as Auto-Yes's poller sees it
4
+ * (Issue #3821, review 2).
5
+ *
6
+ * Dropping the published decision is not enough to keep the poller's keys off
7
+ * a confirmation a person is answering: a tick already past its checks — the
8
+ * ownership check, a wait inside the send — acts for its generation (#3706),
9
+ * which a manual answer did not touch. So the start of a manual answer
10
+ *
11
+ * - moves the instance's manual-answer sequence on; a tick whose generation
12
+ * was taken under an earlier one is no longer current (`isTickCurrent`) and
13
+ * sends no further key;
14
+ * - holds the instance for {@link MANUAL_ANSWER_HOLD_MS}: a tick that reads a
15
+ * confirmation meanwhile leaves it to the person (`answered-by-human`)
16
+ * instead of answering what they may be answering right now;
17
+ * - drops the published decision.
18
+ *
19
+ * How the answer ENDED decides what happens to an answer the poller holds at
20
+ * that confirmation (Issue #3880, {@link settleManualAnswer}).
21
+ *
22
+ * Auto-Yes itself stays on: past the hold the poller answers again.
23
+ *
24
+ * In-memory and on `globalThis` (the route and the poller are bundled apart
25
+ * under `next dev`).
26
+ *
27
+ * @module lib/polling/auto-yes-manual-answer
28
+ */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.ANSWERED_BY_HUMAN_DECISION_REASON = exports.MANUAL_ANSWER_HOLD_MS = void 0;
31
+ exports.noteManualAnswerStarted = noteManualAnswerStarted;
32
+ exports.noteManualSendStarting = noteManualSendStarting;
33
+ exports.settleManualAnswer = settleManualAnswer;
34
+ exports.abandonManualSend = abandonManualSend;
35
+ exports.getManualAnswerSeq = getManualAnswerSeq;
36
+ exports.isManualAnswerHolding = isManualAnswerHolding;
37
+ exports.clearManualAnswers = clearManualAnswers;
38
+ const auto_yes_state_1 = require("../../lib/auto-yes-state");
39
+ const global_state_1 = require("../global-state");
40
+ const auto_yes_decision_state_1 = require("./auto-yes-decision-state");
41
+ const auto_yes_poller_state_1 = require("./auto-yes-poller-state");
42
+ /** How long a manual answer keeps the poller off the instance's confirmations. */
43
+ exports.MANUAL_ANSWER_HOLD_MS = auto_yes_state_1.DUPLICATE_RETRY_EXPIRY_MS;
44
+ /** The decision reason a tick withholds under while the hold lasts. */
45
+ exports.ANSWERED_BY_HUMAN_DECISION_REASON = 'answered-by-human';
46
+ const marks = (0, global_state_1.getOrInitGlobal)('__autoYesManualAnswers', () => new Map());
47
+ /** A person began answering on this instance (called before the first key or API call). */
48
+ function noteManualAnswerStarted(compositeKey, at = Date.now()) {
49
+ marks.set(compositeKey, { seq: (marks.get(compositeKey)?.seq ?? 0) + 1, at });
50
+ (0, auto_yes_decision_state_1.forgetAutoYesDecision)(compositeKey);
51
+ return { compositeKey, order: (0, auto_yes_poller_state_1.nextSendOrder)(), attempt: null };
52
+ }
53
+ /**
54
+ * The person's keys are about to go out (Issue #3880), at the confirmation
55
+ * `promptData` is — or, when no prompt could be read off the screen (the
56
+ * capture before the send failed), at an unidentified one. Registered as a
57
+ * send in flight, so a screen seen gone, a relaunch, or a worktree going away
58
+ * before it ends keeps its end from recording a hold.
59
+ */
60
+ function noteManualSendStarting(ticket, promptData) {
61
+ if (ticket.attempt !== null)
62
+ return;
63
+ const screenKey = promptData ? (0, auto_yes_poller_state_1.partialAnswerScreenKey)(promptData) : auto_yes_poller_state_1.UNIDENTIFIED_SCREEN_KEY;
64
+ ticket.attempt = (0, auto_yes_poller_state_1.beginManualSendAttempt)(ticket.compositeKey, screenKey);
65
+ }
66
+ /**
67
+ * A person's answer ended (Issue #3880). Starting one does not touch what
68
+ * Auto-Yes holds — the start only stops the tick under way and holds the
69
+ * poller off for {@link MANUAL_ANSWER_HOLD_MS} — so a manual send that fails
70
+ * cannot leave the confirmation free for Auto-Yes to type at again once that
71
+ * hold passes. Everything is matched to THIS answer (`ticket`), not to the
72
+ * instance's key alone:
73
+ *
74
+ * - `answered` / `not-sent`: the hold recorded before this answer began is
75
+ * released (the person answered, or saw the screen and nothing of theirs is
76
+ * on it). One recorded since — by another person's send that may be on the
77
+ * pane, or a tick's — stays.
78
+ * - `may-be-on-pane`: the send records a hold at its screen (unidentified
79
+ * when none was read), as Auto-Yes's own does: only for the session epoch it
80
+ * went to, never over a hold of a send registered after it, and not at all when
81
+ * the screen it typed at was seen gone since. And every tick under way stops
82
+ * (the manual-answer sequence moves on): one that read no hold before its
83
+ * last wait does not type over this one.
84
+ *
85
+ * An end nobody reports (the agent's API answered it, the route threw) leaves
86
+ * the hold as it was.
87
+ */
88
+ function settleManualAnswer(ticket, outcome, at = Date.now()) {
89
+ const { compositeKey, attempt } = ticket;
90
+ if (outcome !== 'may-be-on-pane') {
91
+ if (attempt !== null)
92
+ (0, auto_yes_poller_state_1.settleSendAttempt)(attempt, false, at);
93
+ (0, auto_yes_poller_state_1.releasePartialAnswerToHuman)(compositeKey, ticket.order);
94
+ return;
95
+ }
96
+ if (attempt !== null)
97
+ (0, auto_yes_poller_state_1.settleSendAttempt)(attempt, true, at);
98
+ const mark = marks.get(compositeKey);
99
+ if (mark !== undefined)
100
+ marks.set(compositeKey, { ...mark, seq: mark.seq + 1 });
101
+ }
102
+ /**
103
+ * A person's send ended in a way that says nothing of its keys (Issue #3880):
104
+ * it is no longer in flight, and the hold is left as it was.
105
+ */
106
+ function abandonManualSend(ticket) {
107
+ if (ticket.attempt !== null)
108
+ (0, auto_yes_poller_state_1.settleSendAttempt)(ticket.attempt, false);
109
+ }
110
+ /** The instance's manual-answer sequence (0 until a person answers there). */
111
+ function getManualAnswerSeq(compositeKey) {
112
+ return marks.get(compositeKey)?.seq ?? 0;
113
+ }
114
+ /** Whether a manual answer began on this instance less than {@link MANUAL_ANSWER_HOLD_MS} ago. */
115
+ function isManualAnswerHolding(compositeKey, now = Date.now()) {
116
+ const mark = marks.get(compositeKey);
117
+ return mark !== undefined && now - mark.at < exports.MANUAL_ANSWER_HOLD_MS;
118
+ }
119
+ /** Drop every mark: a test seam. The sequences only ever move forward otherwise. */
120
+ function clearManualAnswers() {
121
+ marks.clear();
122
+ }
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ /**
3
+ * Auto-Yes option effects - what picking one row of a permission dialog does
4
+ * (Issue #3822).
5
+ *
6
+ * Until #3822 the resolver picked the default row, or row 1, of any numbered
7
+ * dialog. On every tool measured here the rows of a permission dialog do not
8
+ * mean the same thing: one allows this call only, the others save a rule
9
+ * (`don't ask again`, `always allow`, `Persist to settings.json`), switch the
10
+ * permission mode for the session (`allow all edits`, `Full Access`), or deny.
11
+ * Where the cursor rests is the tool's choice, not a promise that the row is
12
+ * the narrow one — agy keeps the `>` where the operator left it — so Auto-Yes
13
+ * answers only the row that reads as "allow this call once", by its number,
14
+ * and nothing when no single row reads that way.
15
+ *
16
+ * ## Where the wording comes from
17
+ *
18
+ * Every rule below is a row read off a live capture in the repository, named
19
+ * next to it. Nothing is inferred from another tool's wording. A tool without
20
+ * a table (gemini, vibe-local, opencode, opencode-v2) keeps the pre-#3822
21
+ * reading: opencode's and OpenCode V2's permission strips are unnumbered and
22
+ * never reach the resolver as a prompt (they are answered through the hook,
23
+ * whose `allow` is `allowOnce`), and gemini / vibe-local have no captured
24
+ * permission dialog to read.
25
+ *
26
+ * ## When a dialog counts as a permission dialog
27
+ *
28
+ * When at least one of its rows reads as an allow — this call once, a saved
29
+ * rule, or a mode change. A `No` row alone does not make one: a launch dialog
30
+ * (`Yes, continue` / `No, quit`, `Yes, I trust this folder` / `No, exit`) is
31
+ * judged where it always was (the launch-dialog branch, the contract's deny
32
+ * patterns). A numbered list none of whose rows the tool's table recognises (a
33
+ * question's options, a dialog whose wording was never captured) keeps the
34
+ * pre-#3822 default-row reading — this module only narrows what a recognised
35
+ * permission dialog may be answered with, it does not decide which screens are
36
+ * dialogs.
37
+ *
38
+ * Client-safe: no server-only imports (the resolver is bundled into
39
+ * `hooks/useAutoYes.ts`).
40
+ */
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.OPTION_EFFECT_TOOLS = void 0;
43
+ exports.readOptionEffect = readOptionEffect;
44
+ exports.selectAllowOnceOption = selectAllowOnceOption;
45
+ /** `don't` with a straight or a typographic apostrophe. */
46
+ const DONT = "don['’]t";
47
+ /** `No`, alone or followed by its explanation (`No, cancel`, `No, and tell … differently`). */
48
+ const DENY_NO = ['deny', /^No(?:,|$)/];
49
+ /**
50
+ * Each tool's rows, first match wins. A rule is anchored at the start of the
51
+ * label and reads only the words that say what the row does, so the command or
52
+ * path a row quotes after them does not matter.
53
+ */
54
+ const OPTION_EFFECT_RULES = {
55
+ // tests/fixtures/canary/permission-dialog.raw.txt, permission-hook-no-decision.raw.txt,
56
+ // tests/unit/lib/detection/fixtures/claude-live-1708/bash-approval-taskpanel.txt,
57
+ // tests/fixtures/tui-frame-footer-2776/claude-2.1.278-bash-approval-task-panel.txt
58
+ claude: [
59
+ ['allow-once', /^Yes$/],
60
+ ['allow-persistent', /^Yes, and always allow\b/],
61
+ ['mode-change', /^Yes, allow all edits\b/],
62
+ ['mode-change', /^Yes, and switch to\b/],
63
+ DENY_NO,
64
+ ],
65
+ // tests/unit/lib/detection/fixtures/codex-live-1628/approval-{run-command,apply-patch}.txt,
66
+ // tests/fixtures/codex-dialogs-0157/approval.txt, codex-hooks-review-0148.ts,
67
+ // tests/fixtures/codex-browser-use-2609/approval-form-browser-use.txt (`Allow` /
68
+ // `Always allow` / `Cancel`, each followed by its description), and
69
+ // tests/fixtures/codex-live-2310/dialog-permissions-picker.txt (the approval modes)
70
+ codex: [
71
+ ['allow-once', /^Yes$/],
72
+ ['allow-once', /^Yes, proceed\b/],
73
+ ['allow-once', /^Allow(?:\s{2,}|$)/],
74
+ ['allow-persistent', new RegExp(`^Yes, and ${DONT} ask again\\b`)],
75
+ ['allow-persistent', /^Always allow\b/],
76
+ ['mode-change', /^Ask for approval\b/],
77
+ ['mode-change', /^Approve for me\b/],
78
+ ['mode-change', /^Full Access\b/],
79
+ ['deny', /^Cancel\b/],
80
+ DENY_NO,
81
+ ],
82
+ // tests/fixtures/antigravity-live-2364/dialog-bash-*.txt, dialog-create-file.txt,
83
+ // tests/fixtures/strict-respond-3812/permission-run-command.txt. `always allow in
84
+ // this conversation` is as much a saved rule as `(Persist to settings.json)`:
85
+ // neither is this call only.
86
+ antigravity: [
87
+ ['allow-once', /^Yes$/],
88
+ ['allow-once', /^Yes, run command$/],
89
+ ['allow-once', /^Yes, allow creation$/],
90
+ ['allow-persistent', /^Yes, and always allow\b/],
91
+ DENY_NO,
92
+ ],
93
+ // tests/fixtures/command-code-live-2250/dialog-shell-command.txt, dialog-create-file.txt,
94
+ // dialog-kill-task-1490.txt, tests/fixtures/command-code-plan-review-2763/after-approve.txt
95
+ 'command-code': [
96
+ ['allow-once', /^Yes$/],
97
+ ['allow-persistent', new RegExp(`^Yes, ${DONT} ask again\\b`)],
98
+ ['mode-change', /^Yes, allow all edits\b/],
99
+ DENY_NO,
100
+ ],
101
+ // tests/unit/lib/detection/fixtures/copilot-live-1885/permission-dialog.txt and
102
+ // copilot-picker-1895/picker-permissions.txt (`Manual ✓` / `Allow all`, the modes)
103
+ copilot: [
104
+ ['allow-once', /^Yes$/],
105
+ ['allow-persistent', new RegExp(`^Yes, and ${DONT} ask again\\b`)],
106
+ ['mode-change', /^Manual\b/],
107
+ ['mode-change', /^Allow all\b/],
108
+ DENY_NO,
109
+ ],
110
+ };
111
+ /** Every table, for a caller that does not say which tool drew the dialog. */
112
+ const ANY_TOOL_RULES = Object.values(OPTION_EFFECT_RULES).flat();
113
+ /** The tools whose permission rows are read (the others keep the pre-#3822 reading). */
114
+ exports.OPTION_EFFECT_TOOLS = Object.keys(OPTION_EFFECT_RULES);
115
+ function rulesFor(cliToolId) {
116
+ if (cliToolId === undefined)
117
+ return ANY_TOOL_RULES;
118
+ return OPTION_EFFECT_RULES[cliToolId] ?? null;
119
+ }
120
+ function readWith(rules, label) {
121
+ const text = label.trim();
122
+ for (const [effect, pattern] of rules) {
123
+ if (pattern.test(text))
124
+ return effect;
125
+ }
126
+ return 'unknown';
127
+ }
128
+ /**
129
+ * What choosing the row labelled `label` does on `cliToolId`'s dialog.
130
+ *
131
+ * @param cliToolId - The tool that drew the dialog. Omitted, every tool's
132
+ * table is read (the first rule that matches decides); a tool with no table
133
+ * reads every row as `unknown`.
134
+ */
135
+ function readOptionEffect(label, cliToolId) {
136
+ const rules = rulesFor(cliToolId);
137
+ return rules === null ? 'unknown' : readWith(rules, label);
138
+ }
139
+ /**
140
+ * Pick the one "allow this call once" row of a permission dialog.
141
+ *
142
+ * @param options - The dialog's rows, as parsed
143
+ * @param cliToolId - The tool that drew it; see {@link readOptionEffect}
144
+ */
145
+ function selectAllowOnceOption(options, cliToolId) {
146
+ const rules = rulesFor(cliToolId);
147
+ if (rules === null)
148
+ return { kind: 'not-a-permission-dialog' };
149
+ const effects = options.map((option) => readWith(rules, option.label));
150
+ if (!effects.some((effect) => effect === 'allow-once' || effect === 'allow-persistent' || effect === 'mode-change')) {
151
+ return { kind: 'not-a-permission-dialog' };
152
+ }
153
+ const once = options.filter((_option, index) => effects[index] === 'allow-once');
154
+ if (once.length === 1)
155
+ return { kind: 'allow-once', option: once[0] };
156
+ return { kind: 'unidentified', allowOnceCount: once.length };
157
+ }
@@ -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,19 +91,41 @@ 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
+ * @param options - `fresh: true` reads the task past the cache (and refreshes
99
+ * it): the poller's last look before a key (Issue #3822), where a contract
100
+ * switched or a deny pattern added within the TTL must already count
101
+ * @returns The contract's autoYes block, null when no contract governs this
102
+ * instance, or {@link AUTO_YES_POLICY_UNKNOWN} when the lookup failed
90
103
  */
91
- function getSessionAutoYesPolicy(worktreeId, cliToolId, instanceId) {
92
- return lookupEntry(worktreeId, cliToolId, instanceId).policy;
104
+ function getSessionAutoYesPolicy(worktreeId, cliToolId, instanceId, options) {
105
+ return lookupEntry(worktreeId, cliToolId, instanceId, options?.fresh === true).policy;
93
106
  }
94
107
  /**
95
108
  * The policy and the id of the task it came from, read in ONE lookup (Issue
96
109
  * #3724), so a log line naming both cannot pair one task's verdict with another
97
110
  * task's id when the cache expires between two reads. `taskId` is null when no
98
111
  * contract governs the instance.
112
+ *
113
+ * For display only (Issue #3822): a failed lookup reads as no contract here
114
+ * (`policy` and `taskId` null), never as a contract this lookup did not see.
99
115
  */
100
116
  function getSessionAutoYesPolicyEntry(worktreeId, cliToolId, instanceId) {
117
+ const { policy, taskId } = lookupEntry(worktreeId, cliToolId, instanceId);
118
+ if ((0, auto_yes_resolver_1.isAutoYesPolicyUnknown)(policy))
119
+ return { policy: null, taskId: null };
120
+ return { policy, taskId };
121
+ }
122
+ /**
123
+ * {@link getSessionAutoYesPolicyEntry} for a path that judges the prompt again
124
+ * (Issue #3822): a failed lookup stays {@link AUTO_YES_POLICY_UNKNOWN} instead of
125
+ * reading as no contract, so the resolver withholds on it as the tick did.
126
+ * `taskId` is null when no contract governs the instance or the lookup failed.
127
+ */
128
+ function getSessionAutoYesPolicyLookupEntry(worktreeId, cliToolId, instanceId) {
101
129
  const { policy, taskId } = lookupEntry(worktreeId, cliToolId, instanceId);
102
130
  return { policy, taskId };
103
131
  }
@@ -137,15 +165,22 @@ function getSessionContractPolicySummary(worktreeId, cliToolId, instanceId) {
137
165
  denyPatternCount: policy.denyPatterns.length,
138
166
  };
139
167
  }
140
- function lookupEntry(worktreeId, cliToolId, instanceId) {
168
+ function lookupEntry(worktreeId, cliToolId, instanceId, fresh = false) {
141
169
  const resolvedInstanceId = instanceId ?? cliToolId;
142
170
  const key = (0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, resolvedInstanceId);
143
171
  const now = Date.now();
144
172
  const cached = policyCache.get(key);
145
- if (cached && cached.expiresAt > now) {
173
+ if (!fresh && cached && cached.expiresAt > now) {
146
174
  return cached;
147
175
  }
148
176
  const { policy, taskId } = readPolicy(worktreeId, cliToolId, resolvedInstanceId);
177
+ if ((0, auto_yes_resolver_1.isAutoYesPolicyUnknown)(policy)) {
178
+ // Issue #3822: not cached, so the next lookup reads again. A fresh read
179
+ // that failed also drops what was cached: it is no longer known to hold.
180
+ if (fresh)
181
+ policyCache.delete(key);
182
+ return { policy, taskId, expiresAt: now };
183
+ }
149
184
  if (policyCache.size >= MAX_CACHE_ENTRIES) {
150
185
  purgeExpired(now);
151
186
  }
@@ -0,0 +1,63 @@
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 async_hooks_1 = require("async_hooks");
17
+ const cli_session_1 = require("../session/cli-session");
18
+ const global_state_1 = require("../global-state");
19
+ const cli_patterns_1 = require("../detection/cli-patterns");
20
+ const auto_yes_config_1 = require("../../config/auto-yes-config");
21
+ /** Where `cli-session` reports whether the capture it runs inside cut the pane's top (Issue #3881 N4). */
22
+ function headCutSink() {
23
+ return (0, global_state_1.getOrInitGlobal)('__captureHeadCutSink', () => new async_hooks_1.AsyncLocalStorage());
24
+ }
25
+ /**
26
+ * Capture tmux session output once, keeping both spellings (Issue #2522).
27
+ *
28
+ * @internal Exported for testing purposes only.
29
+ * @param worktreeId - Worktree identifier
30
+ * @param cliToolId - CLI tool type being polled
31
+ * @param captureLines - Optional number of lines to capture
32
+ * @param instanceId - Optional agent instance ID (Issue #896; defaults to primary session)
33
+ * @returns The tick's raw capture and its cleaned form
34
+ */
35
+ async function capturePollerFrame(worktreeId, cliToolId, captureLines, instanceId) {
36
+ const lines = captureLines ?? auto_yes_config_1.FULL_CAPTURE_LINES;
37
+ const reported = {};
38
+ const output = await headCutSink().run((headCut) => {
39
+ reported.headCut = headCut;
40
+ }, () => (0, cli_session_1.captureSessionOutput)(worktreeId, cliToolId, lines, instanceId));
41
+ return {
42
+ raw: output,
43
+ clean: (0, cli_patterns_1.stripBoxDrawing)((0, cli_patterns_1.stripAnsi)(output)),
44
+ ...(reported.headCut !== undefined ? { headCut: reported.headCut } : {}),
45
+ };
46
+ }
47
+ /**
48
+ * Capture tmux session output and strip ANSI escape codes.
49
+ *
50
+ * Kept as the cleaned half of {@link capturePollerFrame} so the many callers and
51
+ * tests that only ever wanted that string are untouched; `pollAutoYes` takes the
52
+ * pair. `stripBoxDrawing` still runs exactly once per capture either way.
53
+ *
54
+ * @internal Exported for testing purposes only.
55
+ * @param worktreeId - Worktree identifier
56
+ * @param cliToolId - CLI tool type being polled
57
+ * @param captureLines - Optional number of lines to capture
58
+ * @param instanceId - Optional agent instance ID (Issue #896; defaults to primary session)
59
+ * @returns Cleaned output string (ANSI stripped)
60
+ */
61
+ async function captureAndCleanOutput(worktreeId, cliToolId, captureLines, instanceId) {
62
+ return (await capturePollerFrame(worktreeId, cliToolId, captureLines, instanceId)).clean;
63
+ }
@@ -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
+ }