commandmate 0.48.0 → 0.49.1

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 (780) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +292 -285
  3. package/.next/app-path-routes-manifest.json +35 -34
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +8 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/capabilities/route.js +1 -1
  18. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  27. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  28. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  30. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  31. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  33. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  34. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/push/escalation/route.js +1 -1
  38. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  40. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/push/vapid/route.js +1 -1
  42. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  44. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  45. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/relays/[relayId]/route.js +1 -0
  47. package/.next/server/app/api/relays/[relayId]/route.js.nft.json +1 -0
  48. package/.next/server/app/api/relays/[relayId]/route_client-reference-manifest.js +1 -0
  49. package/.next/server/app/api/relays/route.js +1 -1
  50. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  51. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  55. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  56. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/repositories/clone/route.js +1 -1
  58. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  59. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/repositories/restore/route.js +1 -1
  62. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  63. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/repositories/route.js +1 -1
  65. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  66. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/scan/route.js +1 -1
  68. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  69. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/repositories/sync/route.js +1 -1
  71. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  72. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  75. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  76. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  87. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  91. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/verification/runs/route.js +1 -1
  93. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  96. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  99. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  102. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  111. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  114. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  171. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
  199. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  204. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/send/route.js +144 -1
  216. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  217. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +3 -3
  219. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  220. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/terminal/route.js +103 -1
  237. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  243. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/route.js +1 -1
  265. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  268. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  269. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  270. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  271. package/.next/server/app/page_client-reference-manifest.js +1 -1
  272. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  274. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  275. package/.next/server/app/sessions/page.js +1 -1
  276. package/.next/server/app/sessions/page.js.nft.json +1 -1
  277. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  278. package/.next/server/app/skills/[skillId]/page.js +1 -1
  279. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  280. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  281. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  282. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  283. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  284. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  285. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  286. package/.next/server/app/worktrees/[id]/page.js +11 -11
  287. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  288. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  289. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  290. package/.next/server/app-paths-manifest.json +35 -34
  291. package/.next/server/chunks/1601.js +2 -2
  292. package/.next/server/chunks/1656.js +2 -2
  293. package/.next/server/chunks/2069.js +1 -0
  294. package/.next/server/chunks/2119.js +1 -1
  295. package/.next/server/chunks/2404.js +1 -1
  296. package/.next/server/chunks/2422.js +1 -1
  297. package/.next/server/chunks/2445.js +1 -1
  298. package/.next/server/chunks/2534.js +1 -1
  299. package/.next/server/chunks/3241.js +1 -1
  300. package/.next/server/chunks/3773.js +1 -0
  301. package/.next/server/chunks/3801.js +31 -0
  302. package/.next/server/chunks/4243.js +1 -1
  303. package/.next/server/chunks/4248.js +1 -1
  304. package/.next/server/chunks/5209.js +1 -1
  305. package/.next/server/chunks/5354.js +1 -1
  306. package/.next/server/chunks/{9130.js → 5630.js} +1 -1
  307. package/.next/server/chunks/5775.js +1 -0
  308. package/.next/server/chunks/610.js +1 -0
  309. package/.next/server/chunks/6119.js +1 -1
  310. package/.next/server/chunks/6130.js +1 -1
  311. package/.next/server/chunks/6401.js +1 -1
  312. package/.next/server/chunks/6486.js +1 -1
  313. package/.next/server/chunks/6781.js +1 -1
  314. package/.next/server/chunks/6808.js +4 -0
  315. package/.next/server/chunks/7023.js +14 -0
  316. package/.next/server/chunks/7604.js +2 -2
  317. package/.next/server/chunks/7905.js +1 -1
  318. package/.next/server/chunks/8581.js +16 -16
  319. package/.next/server/chunks/8728.js +3 -3
  320. package/.next/server/chunks/8782.js +1 -1
  321. package/.next/server/chunks/8791.js +1 -1
  322. package/.next/server/chunks/8807.js +63 -53
  323. package/.next/server/chunks/8918.js +103 -1
  324. package/.next/server/chunks/9198.js +144 -0
  325. package/.next/server/chunks/9390.js +1 -1
  326. package/.next/server/chunks/9584.js +1 -1
  327. package/.next/server/chunks/9627.js +4 -4
  328. package/.next/server/chunks/9731.js +3 -3
  329. package/.next/server/middleware-manifest.json +5 -5
  330. package/.next/server/pages/500.html +1 -1
  331. package/.next/server/server-reference-manifest.json +1 -1
  332. package/.next/static/chunks/1128-914c559913546bbc.js +1 -0
  333. package/.next/static/chunks/{2407-26139a8a2f1adbe8.js → 2407-675ba6b21844dc3b.js} +1 -1
  334. package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
  335. package/.next/static/chunks/{2863-f0121af1cbbedb3b.js → 2863-7173dc305dffc4f6.js} +1 -1
  336. package/.next/static/chunks/3931-1a1abab16248f14d.js +1 -0
  337. package/.next/static/chunks/6288-6fadbba6e84393b2.js +1 -0
  338. package/.next/static/chunks/7665-e9ef6e0a85b9fa49.js +1 -0
  339. package/.next/static/chunks/{8165-c68b3dc844210e6a.js → 8165-263172c17ae8e8c3.js} +1 -1
  340. package/.next/static/chunks/8606-ce17ffa77f39608e.js +1 -0
  341. package/.next/static/chunks/app/api/agents/update/route-a4f129c451de7859.js +1 -0
  342. package/.next/static/chunks/app/api/agents/versions/route-a4f129c451de7859.js +1 -0
  343. package/.next/static/chunks/app/api/app/release-notes/route-a4f129c451de7859.js +1 -0
  344. package/.next/static/chunks/app/api/app/update/route-a4f129c451de7859.js +1 -0
  345. package/.next/static/chunks/app/api/app/update-check/route-a4f129c451de7859.js +1 -0
  346. package/.next/static/chunks/app/api/auth/login/route-a4f129c451de7859.js +1 -0
  347. package/.next/static/chunks/app/api/auth/logout/route-a4f129c451de7859.js +1 -0
  348. package/.next/static/chunks/app/api/auth/status/route-a4f129c451de7859.js +1 -0
  349. package/.next/static/chunks/app/api/capabilities/route-a4f129c451de7859.js +1 -0
  350. package/.next/static/chunks/app/api/daily-summary/route-a4f129c451de7859.js +1 -0
  351. package/.next/static/chunks/app/api/daily-summary/status/route-a4f129c451de7859.js +1 -0
  352. package/.next/static/chunks/app/api/external-apps/[id]/health/route-a4f129c451de7859.js +1 -0
  353. package/.next/static/chunks/app/api/external-apps/[id]/route-a4f129c451de7859.js +1 -0
  354. package/.next/static/chunks/app/api/external-apps/route-a4f129c451de7859.js +1 -0
  355. package/.next/static/chunks/app/api/fs/browse/route-a4f129c451de7859.js +1 -0
  356. package/.next/static/chunks/app/api/fs/recent-paths/route-a4f129c451de7859.js +1 -0
  357. package/.next/static/chunks/app/api/hooks/agent-event/route-a4f129c451de7859.js +1 -0
  358. package/.next/static/chunks/app/api/hooks/claude-done/route-a4f129c451de7859.js +1 -0
  359. package/.next/static/chunks/app/api/hooks/permission-request/route-a4f129c451de7859.js +1 -0
  360. package/.next/static/chunks/app/api/metrics/vibe/route-a4f129c451de7859.js +1 -0
  361. package/.next/static/chunks/app/api/ollama/models/route-a4f129c451de7859.js +1 -0
  362. package/.next/static/chunks/app/api/push/escalation/route-a4f129c451de7859.js +1 -0
  363. package/.next/static/chunks/app/api/push/subscriptions/route-a4f129c451de7859.js +1 -0
  364. package/.next/static/chunks/app/api/push/vapid/route-a4f129c451de7859.js +1 -0
  365. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-a4f129c451de7859.js +1 -0
  366. package/.next/static/chunks/app/api/relays/[relayId]/route-a4f129c451de7859.js +1 -0
  367. package/.next/static/chunks/app/api/relays/route-a4f129c451de7859.js +1 -0
  368. package/.next/static/chunks/app/api/remote/pair/route-a4f129c451de7859.js +1 -0
  369. package/.next/static/chunks/app/api/repositories/[id]/route-a4f129c451de7859.js +1 -0
  370. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-a4f129c451de7859.js +1 -0
  371. package/.next/static/chunks/app/api/repositories/clone/route-a4f129c451de7859.js +1 -0
  372. package/.next/static/chunks/app/api/repositories/excluded/route-a4f129c451de7859.js +1 -0
  373. package/.next/static/chunks/app/api/repositories/restore/route-a4f129c451de7859.js +1 -0
  374. package/.next/static/chunks/app/api/repositories/route-a4f129c451de7859.js +1 -0
  375. package/.next/static/chunks/app/api/repositories/scan/route-a4f129c451de7859.js +1 -0
  376. package/.next/static/chunks/app/api/repositories/sync/route-a4f129c451de7859.js +1 -0
  377. package/.next/static/chunks/app/api/repositories/validate-path/route-a4f129c451de7859.js +1 -0
  378. package/.next/static/chunks/app/api/settings/default-agents/route-a4f129c451de7859.js +1 -0
  379. package/.next/static/chunks/app/api/settings/default-surface-mode/route-a4f129c451de7859.js +1 -0
  380. package/.next/static/chunks/app/api/sidebar/group-order/route-a4f129c451de7859.js +1 -0
  381. package/.next/static/chunks/app/api/skills/[id]/route-a4f129c451de7859.js +1 -0
  382. package/.next/static/chunks/app/api/skills/installations/route-a4f129c451de7859.js +1 -0
  383. package/.next/static/chunks/app/api/skills/operations/route-a4f129c451de7859.js +1 -0
  384. package/.next/static/chunks/app/api/skills/reindex/route-a4f129c451de7859.js +1 -0
  385. package/.next/static/chunks/app/api/skills/route-a4f129c451de7859.js +1 -0
  386. package/.next/static/chunks/app/api/slash-commands/route-a4f129c451de7859.js +1 -0
  387. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-a4f129c451de7859.js +1 -0
  388. package/.next/static/chunks/app/api/tasks/[taskId]/route-a4f129c451de7859.js +1 -0
  389. package/.next/static/chunks/app/api/templates/[id]/route-a4f129c451de7859.js +1 -0
  390. package/.next/static/chunks/app/api/templates/route-a4f129c451de7859.js +1 -0
  391. package/.next/static/chunks/app/api/verification/runs/[runId]/route-a4f129c451de7859.js +1 -0
  392. package/.next/static/chunks/app/api/verification/runs/route-a4f129c451de7859.js +1 -0
  393. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-a4f129c451de7859.js +1 -0
  394. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-a4f129c451de7859.js +1 -0
  395. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-a4f129c451de7859.js +1 -0
  396. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-a4f129c451de7859.js +1 -0
  397. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-a4f129c451de7859.js +1 -0
  398. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-a4f129c451de7859.js +1 -0
  399. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-a4f129c451de7859.js +1 -0
  400. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-a4f129c451de7859.js +1 -0
  401. package/.next/static/chunks/app/api/worktrees/[id]/env/route-a4f129c451de7859.js +1 -0
  402. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-a4f129c451de7859.js +1 -0
  403. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-a4f129c451de7859.js +1 -0
  404. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-a4f129c451de7859.js +1 -0
  405. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-a4f129c451de7859.js +1 -0
  406. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-a4f129c451de7859.js +1 -0
  407. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-a4f129c451de7859.js +1 -0
  408. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-a4f129c451de7859.js +1 -0
  409. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-a4f129c451de7859.js +1 -0
  410. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-a4f129c451de7859.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-a4f129c451de7859.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-a4f129c451de7859.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-a4f129c451de7859.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-a4f129c451de7859.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-a4f129c451de7859.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-a4f129c451de7859.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-a4f129c451de7859.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-a4f129c451de7859.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-a4f129c451de7859.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-a4f129c451de7859.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-a4f129c451de7859.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-a4f129c451de7859.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-a4f129c451de7859.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-a4f129c451de7859.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-a4f129c451de7859.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-a4f129c451de7859.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-a4f129c451de7859.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-a4f129c451de7859.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-a4f129c451de7859.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-a4f129c451de7859.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-a4f129c451de7859.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-a4f129c451de7859.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-a4f129c451de7859.js +1 -0
  434. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-a4f129c451de7859.js +1 -0
  435. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-a4f129c451de7859.js +1 -0
  436. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-a4f129c451de7859.js +1 -0
  437. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-a4f129c451de7859.js +1 -0
  438. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-a4f129c451de7859.js +1 -0
  439. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-a4f129c451de7859.js +1 -0
  440. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-a4f129c451de7859.js +1 -0
  441. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-a4f129c451de7859.js +1 -0
  442. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-a4f129c451de7859.js +1 -0
  443. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-a4f129c451de7859.js +1 -0
  444. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-a4f129c451de7859.js +1 -0
  445. package/.next/static/chunks/app/api/worktrees/[id]/route-a4f129c451de7859.js +1 -0
  446. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-a4f129c451de7859.js +1 -0
  447. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-a4f129c451de7859.js +1 -0
  448. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-a4f129c451de7859.js +1 -0
  449. package/.next/static/chunks/app/api/worktrees/[id]/search/route-a4f129c451de7859.js +1 -0
  450. package/.next/static/chunks/app/api/worktrees/[id]/send/route-a4f129c451de7859.js +1 -0
  451. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-a4f129c451de7859.js +1 -0
  452. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-a4f129c451de7859.js +1 -0
  453. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-a4f129c451de7859.js +1 -0
  454. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-a4f129c451de7859.js +1 -0
  455. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-a4f129c451de7859.js +1 -0
  456. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-a4f129c451de7859.js +1 -0
  457. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-a4f129c451de7859.js +1 -0
  458. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-a4f129c451de7859.js +1 -0
  459. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-a4f129c451de7859.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-a4f129c451de7859.js +1 -0
  461. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-a4f129c451de7859.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-a4f129c451de7859.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-a4f129c451de7859.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-a4f129c451de7859.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-a4f129c451de7859.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-a4f129c451de7859.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-a4f129c451de7859.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-a4f129c451de7859.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-a4f129c451de7859.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-a4f129c451de7859.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-a4f129c451de7859.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-a4f129c451de7859.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-a4f129c451de7859.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-a4f129c451de7859.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-a4f129c451de7859.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-a4f129c451de7859.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/route-a4f129c451de7859.js +1 -0
  478. package/.next/static/chunks/app/layout-8bfac4724277b47f.js +1 -0
  479. package/.next/static/chunks/app/manifest.webmanifest/route-a4f129c451de7859.js +1 -0
  480. package/.next/static/chunks/app/proxy/[...path]/route-a4f129c451de7859.js +1 -0
  481. package/.next/static/chunks/app/sessions/page-890fd50ec9739973.js +1 -0
  482. package/.next/static/chunks/app/skills/[skillId]/{page-52ba58712faf3378.js → page-cb6e74fd9a6a571d.js} +1 -1
  483. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-704086656fb45699.js +1 -0
  484. package/.next/static/chunks/app/worktrees/[id]/layout-a4f129c451de7859.js +1 -0
  485. package/.next/static/chunks/app/worktrees/[id]/page-f6d3ab8185d93aae.js +1 -0
  486. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
  487. package/.next/static/css/c1e307d05daf93b6.css +1 -0
  488. package/.next/trace +13 -13
  489. package/.next/types/app/api/relays/[relayId]/route.ts +347 -0
  490. package/.next/types/routes.d.ts +2 -1
  491. package/.next/types/validator.ts +9 -0
  492. package/dist/cli/commands/ask.d.ts.map +1 -1
  493. package/dist/cli/commands/ask.js +178 -13
  494. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  495. package/dist/cli/commands/auto-yes.js +3 -5
  496. package/dist/cli/commands/capture.d.ts.map +1 -1
  497. package/dist/cli/commands/capture.js +5 -0
  498. package/dist/cli/commands/message-dispatch.d.ts +25 -5
  499. package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
  500. package/dist/cli/commands/message-dispatch.js +92 -6
  501. package/dist/cli/commands/relays.d.ts +25 -2
  502. package/dist/cli/commands/relays.d.ts.map +1 -1
  503. package/dist/cli/commands/relays.js +69 -5
  504. package/dist/cli/commands/respond.d.ts +12 -0
  505. package/dist/cli/commands/respond.d.ts.map +1 -1
  506. package/dist/cli/commands/respond.js +63 -1
  507. package/dist/cli/commands/send.d.ts.map +1 -1
  508. package/dist/cli/commands/send.js +10 -10
  509. package/dist/cli/commands/verify.d.ts.map +1 -1
  510. package/dist/cli/commands/verify.js +8 -1
  511. package/dist/cli/commands/wait-hook-stop-settle.d.ts +66 -0
  512. package/dist/cli/commands/wait-hook-stop-settle.d.ts.map +1 -0
  513. package/dist/cli/commands/wait-hook-stop-settle.js +150 -0
  514. package/dist/cli/commands/wait-instance.d.ts +21 -0
  515. package/dist/cli/commands/wait-instance.d.ts.map +1 -0
  516. package/dist/cli/commands/wait-instance.js +41 -0
  517. package/dist/cli/commands/wait-notices.d.ts +87 -0
  518. package/dist/cli/commands/wait-notices.d.ts.map +1 -0
  519. package/dist/cli/commands/wait-notices.js +301 -0
  520. package/dist/cli/commands/wait-poll-bookkeeping.d.ts +15 -0
  521. package/dist/cli/commands/wait-poll-bookkeeping.d.ts.map +1 -0
  522. package/dist/cli/commands/wait-poll-bookkeeping.js +57 -0
  523. package/dist/cli/commands/wait-poll-state.d.ts +118 -0
  524. package/dist/cli/commands/wait-poll-state.d.ts.map +1 -0
  525. package/dist/cli/commands/wait-poll-state.js +6 -0
  526. package/dist/cli/commands/wait-timing.d.ts +46 -0
  527. package/dist/cli/commands/wait-timing.d.ts.map +1 -0
  528. package/dist/cli/commands/wait-timing.js +99 -0
  529. package/dist/cli/commands/wait-turn-boundary.d.ts +284 -0
  530. package/dist/cli/commands/wait-turn-boundary.d.ts.map +1 -0
  531. package/dist/cli/commands/wait-turn-boundary.js +427 -0
  532. package/dist/cli/commands/wait-verify.d.ts +50 -0
  533. package/dist/cli/commands/wait-verify.d.ts.map +1 -0
  534. package/dist/cli/commands/wait-verify.js +124 -0
  535. package/dist/cli/commands/wait.d.ts +6 -105
  536. package/dist/cli/commands/wait.d.ts.map +1 -1
  537. package/dist/cli/commands/wait.js +207 -959
  538. package/dist/cli/config/duration-constants.d.ts +16 -13
  539. package/dist/cli/config/duration-constants.d.ts.map +1 -1
  540. package/dist/cli/config/duration-constants.js +21 -21
  541. package/dist/cli/docs/agent-operations.d.ts +2 -2
  542. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  543. package/dist/cli/docs/agent-operations.js +25 -2
  544. package/dist/cli/types/api-responses.d.ts +76 -4
  545. package/dist/cli/types/api-responses.d.ts.map +1 -1
  546. package/dist/cli/utils/api-client.d.ts +15 -1
  547. package/dist/cli/utils/api-client.d.ts.map +1 -1
  548. package/dist/cli/utils/api-client.js +7 -1
  549. package/dist/cli/utils/reply-ledger.d.ts +79 -0
  550. package/dist/cli/utils/reply-ledger.d.ts.map +1 -1
  551. package/dist/cli/utils/reply-ledger.js +141 -1
  552. package/dist/cli/utils/verify-runner.d.ts +24 -1
  553. package/dist/cli/utils/verify-runner.d.ts.map +1 -1
  554. package/dist/cli/utils/verify-runner.js +54 -1
  555. package/dist/config/auto-yes-duration.d.ts +56 -0
  556. package/dist/config/auto-yes-duration.d.ts.map +1 -0
  557. package/dist/config/auto-yes-duration.js +76 -0
  558. package/dist/lib/session/send-attempt-types.d.ts +23 -1
  559. package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
  560. package/dist/lib/session/send-attempt-types.js +9 -1
  561. package/dist/server/locales/en/worktree.json +18 -3
  562. package/dist/server/locales/ja/worktree.json +18 -3
  563. package/dist/server/src/config/auto-yes-config.js +14 -19
  564. package/dist/server/src/config/auto-yes-duration.js +76 -0
  565. package/dist/server/src/lib/auto-yes-poller.js +49 -10
  566. package/dist/server/src/lib/auto-yes-state.js +9 -2
  567. package/dist/server/src/lib/cli-tools/antigravity.js +40 -7
  568. package/dist/server/src/lib/cli-tools/codex.js +60 -11
  569. package/dist/server/src/lib/cli-tools/command-code-plan-review.js +24 -2
  570. package/dist/server/src/lib/cli-tools/copilot.js +120 -30
  571. package/dist/server/src/lib/cli-tools/gemini.js +28 -9
  572. package/dist/server/src/lib/cli-tools/opencode.js +55 -13
  573. package/dist/server/src/lib/cli-tools/submit-composer-read.js +580 -0
  574. package/dist/server/src/lib/cli-tools/submit-verified-sender.js +374 -516
  575. package/dist/server/src/lib/db/migrations/index.js +2 -0
  576. package/dist/server/src/lib/db/migrations/pre-migration-backup.js +266 -0
  577. package/dist/server/src/lib/db/migrations/runner.js +37 -4
  578. package/dist/server/src/lib/db/migrations/v62-session-relays-bind.js +102 -0
  579. package/dist/server/src/lib/db/relay-bind-db.js +437 -0
  580. package/dist/server/src/lib/db/relay-db.js +59 -96
  581. package/dist/server/src/lib/detection/composer-text.js +215 -11
  582. package/dist/server/src/lib/detection/prompt-detect-multiple-choice-chrome.js +193 -0
  583. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +8 -191
  584. package/dist/server/src/lib/detection/upstream-faults.js +56 -5
  585. package/dist/server/src/lib/hooks/sources/opencode/client.js +12 -6
  586. package/dist/server/src/lib/hooks/structured-decision-response.js +1 -1
  587. package/dist/server/src/lib/polling/auto-yes-manual-answer.js +4 -2
  588. package/dist/server/src/lib/polling/response-checker.js +15 -16
  589. package/dist/server/src/lib/prompt-answer-errors.js +288 -0
  590. package/dist/server/src/lib/prompt-answer-sender.js +264 -288
  591. package/dist/server/src/lib/push/failure-episode-state.js +4 -1
  592. package/dist/server/src/lib/realtime/terminal-broadcast.js +1 -4
  593. package/dist/server/src/lib/realtime-snippet.js +54 -0
  594. package/dist/server/src/lib/relay/relay-bind.js +294 -0
  595. package/dist/server/src/lib/relay/relay-boot.js +51 -0
  596. package/dist/server/src/lib/relay/relay-bound-reply.js +519 -0
  597. package/dist/server/src/lib/relay/relay-delivery.js +134 -220
  598. package/dist/server/src/lib/relay/relay-messages.js +39 -4
  599. package/dist/server/src/lib/relay/relay-overlap.js +92 -0
  600. package/dist/server/src/lib/relay/relay-system-line.js +3 -2
  601. package/dist/server/src/lib/relay/types.js +12 -1
  602. package/dist/server/src/lib/session/agent-session-lifecycle.js +18 -0
  603. package/dist/server/src/lib/session/claude-session.js +41 -6
  604. package/dist/server/src/lib/session/composer-clear.js +109 -4
  605. package/dist/server/src/lib/session/current-output-builder.js +23 -6
  606. package/dist/server/src/lib/session/instance-input-lock.js +664 -0
  607. package/dist/server/src/lib/session/send-attempt-state.js +19 -1
  608. package/dist/server/src/lib/session/send-attempt-types.js +9 -1
  609. package/dist/server/src/lib/session/send-user-message.js +82 -13
  610. package/dist/server/src/lib/session/waiting-episode-state-ops.js +152 -0
  611. package/dist/server/src/lib/session/waiting-episode-state-store.js +202 -0
  612. package/dist/server/src/lib/session/waiting-episode-state-types.js +6 -0
  613. package/dist/server/src/lib/session/waiting-episode-state.js +26 -339
  614. package/dist/server/src/lib/tmux/tmux.js +25 -0
  615. package/dist/server/src/lib/verification/gate-runner.js +11 -4
  616. package/docs/en/user-guide/webapp-guide.md +15 -10
  617. package/package.json +1 -1
  618. package/release-notes/0.49.0.json +45 -0
  619. package/release-notes/0.49.1.json +66 -0
  620. package/.next/server/chunks/1210.js +0 -1
  621. package/.next/server/chunks/1945.js +0 -14
  622. package/.next/server/chunks/1990.js +0 -103
  623. package/.next/server/chunks/4194.js +0 -67
  624. package/.next/server/chunks/4280.js +0 -1
  625. package/.next/server/chunks/5845.js +0 -1
  626. package/.next/server/chunks/6722.js +0 -1
  627. package/.next/server/chunks/720.js +0 -103
  628. package/.next/server/chunks/936.js +0 -1
  629. package/.next/server/chunks/9540.js +0 -1
  630. package/.next/static/chunks/2099-c3e0ab70a1b95dd3.js +0 -1
  631. package/.next/static/chunks/5371-a549a0d2c2044d41.js +0 -1
  632. package/.next/static/chunks/6288-09feba367cc2c65e.js +0 -1
  633. package/.next/static/chunks/8606-cf6bdbff44a764cf.js +0 -1
  634. package/.next/static/chunks/9079-406b84d3cc891a87.js +0 -1
  635. package/.next/static/chunks/app/api/agents/update/route-c81284a9d8b35304.js +0 -1
  636. package/.next/static/chunks/app/api/agents/versions/route-c81284a9d8b35304.js +0 -1
  637. package/.next/static/chunks/app/api/app/release-notes/route-c81284a9d8b35304.js +0 -1
  638. package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +0 -1
  639. package/.next/static/chunks/app/api/app/update-check/route-c81284a9d8b35304.js +0 -1
  640. package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +0 -1
  641. package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +0 -1
  642. package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +0 -1
  643. package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +0 -1
  644. package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +0 -1
  645. package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +0 -1
  646. package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +0 -1
  647. package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +0 -1
  648. package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +0 -1
  649. package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +0 -1
  650. package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +0 -1
  651. package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +0 -1
  652. package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +0 -1
  653. package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +0 -1
  654. package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +0 -1
  655. package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +0 -1
  656. package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +0 -1
  657. package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +0 -1
  658. package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +0 -1
  659. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +0 -1
  660. package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +0 -1
  661. package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +0 -1
  662. package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +0 -1
  663. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +0 -1
  664. package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +0 -1
  665. package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +0 -1
  666. package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +0 -1
  667. package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +0 -1
  668. package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +0 -1
  669. package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +0 -1
  670. package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +0 -1
  671. package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +0 -1
  672. package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +0 -1
  673. package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +0 -1
  674. package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +0 -1
  675. package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +0 -1
  676. package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +0 -1
  677. package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +0 -1
  678. package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +0 -1
  679. package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +0 -1
  680. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +0 -1
  681. package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +0 -1
  682. package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +0 -1
  683. package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +0 -1
  684. package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +0 -1
  685. package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +0 -1
  686. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +0 -1
  687. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +0 -1
  688. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +0 -1
  689. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +0 -1
  690. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +0 -1
  691. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +0 -1
  692. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +0 -1
  693. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +0 -1
  694. package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +0 -1
  695. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +0 -1
  696. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +0 -1
  697. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +0 -1
  698. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +0 -1
  699. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +0 -1
  700. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +0 -1
  701. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +0 -1
  702. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +0 -1
  703. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +0 -1
  704. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +0 -1
  705. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +0 -1
  706. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +0 -1
  707. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +0 -1
  708. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +0 -1
  709. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +0 -1
  710. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +0 -1
  711. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +0 -1
  712. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +0 -1
  713. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +0 -1
  714. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +0 -1
  715. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +0 -1
  716. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +0 -1
  717. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +0 -1
  718. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +0 -1
  719. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +0 -1
  720. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +0 -1
  721. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +0 -1
  722. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +0 -1
  723. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +0 -1
  724. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +0 -1
  725. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +0 -1
  726. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +0 -1
  727. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +0 -1
  728. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +0 -1
  729. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +0 -1
  730. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +0 -1
  731. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +0 -1
  732. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +0 -1
  733. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +0 -1
  734. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +0 -1
  735. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +0 -1
  736. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +0 -1
  737. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +0 -1
  738. package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +0 -1
  739. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +0 -1
  740. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +0 -1
  741. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +0 -1
  742. package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +0 -1
  743. package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +0 -1
  744. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +0 -1
  745. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +0 -1
  746. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +0 -1
  747. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +0 -1
  748. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +0 -1
  749. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +0 -1
  750. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +0 -1
  751. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +0 -1
  752. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +0 -1
  753. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +0 -1
  754. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +0 -1
  755. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +0 -1
  756. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +0 -1
  757. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +0 -1
  758. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +0 -1
  759. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +0 -1
  760. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +0 -1
  761. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +0 -1
  762. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +0 -1
  763. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +0 -1
  764. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +0 -1
  765. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +0 -1
  766. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +0 -1
  767. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +0 -1
  768. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +0 -1
  769. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +0 -1
  770. package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +0 -1
  771. package/.next/static/chunks/app/layout-46b4cbf07520d9b6.js +0 -1
  772. package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +0 -1
  773. package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +0 -1
  774. package/.next/static/chunks/app/sessions/page-fb241bed579c67aa.js +0 -1
  775. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-9cf1ecc59e36a004.js +0 -1
  776. package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +0 -1
  777. package/.next/static/chunks/app/worktrees/[id]/page-cbc7749a33450cc5.js +0 -1
  778. package/.next/static/css/743f79ff19ab91e9.css +0 -1
  779. /package/.next/static/{PTlAswXLq8PAe2vUJ8dVP → fqfSDqQMweROeHUzOt_m1}/_buildManifest.js +0 -0
  780. /package/.next/static/{PTlAswXLq8PAe2vUJ8dVP → fqfSDqQMweROeHUzOt_m1}/_ssgManifest.js +0 -0
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ /** Claude chrome (task panel, session-diff HUD, preview pane) split out of prompt-detect-multiple-choice.ts (Issue #3924). */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SUMMARY_LINE_PATTERN = void 0;
5
+ exports.findClaudeTaskPanelLines = findClaudeTaskPanelLines;
6
+ exports.findClaudeChrome = findClaudeChrome;
7
+ exports.maskClaudeChrome = maskClaudeChrome;
8
+ const picker_chrome_1 = require("./tools/claude/picker-chrome");
9
+ /**
10
+ * [Issue #704] Pattern for Claude Code v2.1.142 prompt summary lines such as
11
+ * " … +1 pending"
12
+ * " +2 pending"
13
+ * " ↑3 more"
14
+ * " ↓1 more"
15
+ * These lines are rendered BELOW the real options when Claude collapses the
16
+ * remaining choices. They are not selectable options and must be skipped by
17
+ * Pass 2 — otherwise NORMAL_OPTION_PATTERN matches them as option N with
18
+ * label "pending"/"more", and the resulting (number, label) tuple poisons
19
+ * isValidPrecedingOption() so that the real 1./2./3. options above are all
20
+ * rejected (collectedOptions ends up with length 1 and Layer 4 returns
21
+ * no_prompt).
22
+ *
23
+ * Scope of the pattern (FP suppression is critical):
24
+ * - Anchored at line start (^) and requires the trailing keyword to be
25
+ * `pending` or `more` followed by a word boundary (\b). This intentionally
26
+ * prevents matching legitimate option labels that mention these words
27
+ * mid-sentence (e.g. `2. Postpone (will remain pending)`,
28
+ * `3. Show me more`) — those still flow through NORMAL_OPTION_PATTERN.
29
+ * - Optional leading ellipsis (… U+2026) and optional collapse direction
30
+ * marker (+ - ↑ ↓ ⏵ ⏷) accept the variants observed in the wild.
31
+ * - [Issue #1708] `completed` joined `pending`/`more` after a live capture
32
+ * (fixtures/claude-live-1708) showed the task panel collapsing FINISHED
33
+ * rows as `… +2 completed`. That wording was outside the #704 guard, so it
34
+ * reached Pass 2 and was collected as `option 2 / label='completed'` —
35
+ * poisoning isValidPrecedingOption() exactly as `… +1 pending` used to.
36
+ * - The pattern deliberately omits any free `(.+)` capture — it must
37
+ * short-circuit, not extract data.
38
+ *
39
+ * Pattern shape: linear regex with no nested quantifiers — ReDoS safe (S4-001).
40
+ */
41
+ exports.SUMMARY_LINE_PATTERN = /^\s*[…]?\s*[+\-↑↓⏵⏷]?\s*\d+\s+(?:pending|more|completed)\b/i;
42
+ /**
43
+ * [Issue #1708] Header row of Claude Code's bottom-anchored task panel, e.g.
44
+ * " 7 tasks (0 done, 1 in progress, 6 open)"
45
+ *
46
+ * The panel is an overlay pinned to the LAST rows of the pane, structurally
47
+ * unrelated to whatever the agent is currently blocked on. In a production pane
48
+ * (200x1000, alternate screen) a prompt dialog therefore renders near the top and
49
+ * the panel ~880 blank rows below it — rows `compactBlankRows` collapses to one,
50
+ * putting the panel squarely inside Pass 2's 50-line reverse-scan window.
51
+ *
52
+ * That is only harmless while something trims it away. #704/#807 trim at a
53
+ * footer, but the AskUserQuestion *confirmation* step ("Ready to submit your
54
+ * answers?") renders NEITHER footer, so nothing trims and the panel is the first
55
+ * thing the reverse scan meets. Measured on the live capture in
56
+ * fixtures/claude-live-1708/askuserquestion-submit-taskpanel.txt, two of its rows
57
+ * match NORMAL_OPTION_PATTERN independently:
58
+ * - this header → option 7, label "tasks (2 done, 1 in progress, 4 open)"
59
+ * - "… +2 completed" → option 2, label "completed"
60
+ * Either one alone is enough to make isValidPrecedingOption() reject the real
61
+ * `❯ 1. Submit answers` / `2. Cancel` above it, so collectedOptions never reaches
62
+ * 2 and the frame is published as "no prompt" — Issue #1708's silent timeout.
63
+ *
64
+ * Anchored at line start and requires the literal `tasks (` + `<n> done`, which
65
+ * no option label produced by any supported CLI carries. ReDoS safe (S4-001):
66
+ * bounded repetition, no nesting.
67
+ */
68
+ const CLAUDE_TASK_PANEL_HEADER_PATTERN = /^\s*\d{1,3}\s+tasks?\s+\(\d+\s+done\b/i;
69
+ /**
70
+ * [Issue #1708] A single task row of the panel described above, e.g. " ◼ Phase 3".
71
+ *
72
+ * Today these rows are inert — `isContinuationLine()` already absorbs them — but
73
+ * only because none of the observed titles begins with a digit. A title like
74
+ * "2. Fix the parser" would render as " ◻ 2. Fix the parser" and be collected as
75
+ * option 2, reintroducing the same poisoning from a direction no single-line
76
+ * guard anticipates. Skipping the whole panel block closes that off structurally
77
+ * instead of one wording at a time.
78
+ *
79
+ * The glyph set is exactly the two forms measured on a live pane — ◼ (in
80
+ * progress) and ◻ (open) — and nothing else. Every extra glyph is a line this
81
+ * guard can delete from the frame, so the set is an allowlist of things seen,
82
+ * not a guess at what the family might contain:
83
+ *
84
+ * - ❯ ● › are DEFAULT_OPTION_PATTERN's cursor indicators.
85
+ * - ⏺ ⎿ ✔ ✗ are the transcript markers TURN_BOUNDARY_PATTERN reads.
86
+ * - ☐ ☑ ☒ are the natural rendering of a MULTI-SELECT choice, and
87
+ * AskUserQuestion has a multiSelect mode. Measured: with those in the set,
88
+ * `☐ 1. Blue / ☑ 2. Green / ☐ 3. Red` under a panel header is claimed as
89
+ * panel content and the prompt above it disappears entirely
90
+ * (isPrompt=false, zero options) — Issue #1708's own failure, recreated by
91
+ * its fix. See the regression test.
92
+ *
93
+ * A completed row never appears (the panel collapses those into `… +N
94
+ * completed`, which SUMMARY_LINE_PATTERN handles), so no done-marker is needed.
95
+ * An unmatched glyph simply ends the block, which is the safe direction: those
96
+ * rows go back to being handled exactly as they were before this guard existed.
97
+ *
98
+ * To widen this, capture a live pane that actually renders the new glyph and add
99
+ * it as a fixture. Do not widen it from the shape of the character.
100
+ */
101
+ const CLAUDE_TASK_PANEL_ROW_PATTERN = /^\s*[◼◻]\s/;
102
+ /**
103
+ * [Issue #2468] Claude Code 2.1.267's session-diff HUD row, in the two
104
+ * spellings measured on a live pane (tests/fixtures/claude-live-2468):
105
+ * "No changes this session"
106
+ * "+28 files edited before this session (show)"
107
+ *
108
+ * Chrome like the task panel, but a single row and RIGHT-aligned: on a
109
+ * 200-column pane it is ~110 columns of padding and then the text. It is
110
+ * therefore matched on the trimmed row — a reader that slices the row from the
111
+ * left sees nothing but blanks.
112
+ *
113
+ * It broke two readers. Pass 2 below parses `+2 files edited …` as option 2,
114
+ * which poisons the real `1. / 2.` above it the way `… +2 completed` did in
115
+ * #1708. And `findClaudeTranscriptTail` took it for the last transcript row, so
116
+ * `detectClaudeDialog` read it as the footer of the AskUserQuestion
117
+ * confirmation screen — a dialog that draws no footer — and refused a dialog
118
+ * that was open on screen: Auto-Yes, the UI's answer and `commandmate respond`
119
+ * all got `prompt_no_longer_active`.
120
+ *
121
+ * `files?` is the one spelling not seen on a pane: a one-file session was not
122
+ * captured, and the singular is accepted so that it is not the case that
123
+ * regresses. Everything else is literal, for the same reason the glyph set
124
+ * above is an allowlist. Anchored at both ends, no nested quantifiers — ReDoS
125
+ * safe (S4-001).
126
+ */
127
+ const CLAUDE_SESSION_DIFF_HUD_PATTERN = /^(?:No changes this session|\+\d+ files? edited before this session \(show\))$/;
128
+ /**
129
+ * Line indices belonging to Claude's bottom-pinned panels within [start, end).
130
+ *
131
+ * Two panels, both chrome rather than transcript or prompt:
132
+ * - the task panel (#1708). Walks down from each header row for as long as
133
+ * rows keep looking like panel content (task rows or the collapsed `… +N …`
134
+ * summary). The first line that is neither ends the block, so a panel that
135
+ * abuts other content cannot swallow it.
136
+ * - the session-diff HUD (#2468), a single row claimed on its own.
137
+ *
138
+ * Pass 2 here, `findClaudeTranscriptTail` and `detectClaudeDialog`'s footer
139
+ * guard all read this one set — through {@link findClaudeChrome}, which adds an
140
+ * AskUserQuestion preview pane to it (Issue #2486) — so they cannot disagree
141
+ * about which rows are chrome.
142
+ *
143
+ * @param lines - Full frame, already ANSI/box stripped
144
+ * @param start - First index to consider (inclusive)
145
+ * @param end - Last index to consider (exclusive)
146
+ * @returns Indices Pass 2 must treat as metadata rather than options
147
+ */
148
+ function findClaudeTaskPanelLines(lines, start, end) {
149
+ const panelLines = new Set();
150
+ for (let i = Math.max(0, start); i < Math.min(end, lines.length); i++) {
151
+ if (CLAUDE_SESSION_DIFF_HUD_PATTERN.test(lines[i].trim())) {
152
+ panelLines.add(i);
153
+ continue;
154
+ }
155
+ if (!CLAUDE_TASK_PANEL_HEADER_PATTERN.test(lines[i]))
156
+ continue;
157
+ panelLines.add(i);
158
+ for (let j = i + 1; j < Math.min(end, lines.length); j++) {
159
+ const row = lines[j];
160
+ if (!CLAUDE_TASK_PANEL_ROW_PATTERN.test(row) && !exports.SUMMARY_LINE_PATTERN.test(row))
161
+ break;
162
+ panelLines.add(j);
163
+ }
164
+ }
165
+ return panelLines;
166
+ }
167
+ /**
168
+ * Claude's chrome within [start, end). See {@link ClaudeChrome}.
169
+ *
170
+ * @param lines - Full frame, ANSI stripped; box drawing optional
171
+ * @param start - First index to consider (inclusive)
172
+ * @param end - Last index to consider (exclusive)
173
+ */
174
+ function findClaudeChrome(lines, start, end) {
175
+ const rows = findClaudeTaskPanelLines(lines, start, end);
176
+ const panes = (0, picker_chrome_1.findClaudePreviewPanes)(lines, start, end);
177
+ for (const row of panes.rows)
178
+ rows.add(row);
179
+ return { rows, cuts: panes.cuts };
180
+ }
181
+ /**
182
+ * The frame with Claude's chrome taken out: chrome rows blank, rows shared with
183
+ * the preview pane cut back to the options column. Row indices are unchanged,
184
+ * so a reader of the result can report positions in the original frame.
185
+ */
186
+ function maskClaudeChrome(lines, chrome) {
187
+ return lines.map((line, i) => {
188
+ if (chrome.rows.has(i))
189
+ return '';
190
+ const cut = chrome.cuts.get(i);
191
+ return cut === undefined ? line : line.slice(0, cut).trimEnd();
192
+ });
193
+ }
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
2
  /** Multiple choice prompt detection logic extracted from prompt-detector.ts (Issue #575). */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.joinApprovalTarget = exports.findApprovalContextStart = exports.findApprovalContextRange = exports.APPROVAL_TARGET_MAX_LOOKBACK = void 0;
5
- exports.findClaudeTaskPanelLines = findClaudeTaskPanelLines;
6
- exports.findClaudeChrome = findClaudeChrome;
7
- exports.maskClaudeChrome = maskClaudeChrome;
4
+ exports.maskClaudeChrome = exports.findClaudeTaskPanelLines = exports.findClaudeChrome = exports.joinApprovalTarget = exports.findApprovalContextStart = exports.findApprovalContextRange = exports.APPROVAL_TARGET_MAX_LOOKBACK = void 0;
8
5
  exports.isTypedTextFieldOption = isTypedTextFieldOption;
9
6
  exports.buildMultipleChoiceResult = buildMultipleChoiceResult;
10
7
  exports.detectMultipleChoicePrompt = detectMultipleChoicePrompt;
@@ -14,12 +11,17 @@ const patterns_1 = require("./tools/claude/patterns");
14
11
  const prompt_view_1 = require("../../lib/session/prompt-view");
15
12
  const option_recommendation_1 = require("./option-recommendation");
16
13
  const picker_chrome_1 = require("./tools/claude/picker-chrome");
14
+ const prompt_detect_multiple_choice_chrome_1 = require("./prompt-detect-multiple-choice-chrome");
17
15
  const prompt_detect_multiple_choice_approval_context_1 = require("./prompt-detect-multiple-choice-approval-context");
18
16
  var prompt_detect_multiple_choice_approval_context_2 = require("./prompt-detect-multiple-choice-approval-context");
19
17
  Object.defineProperty(exports, "APPROVAL_TARGET_MAX_LOOKBACK", { enumerable: true, get: function () { return prompt_detect_multiple_choice_approval_context_2.APPROVAL_TARGET_MAX_LOOKBACK; } });
20
18
  Object.defineProperty(exports, "findApprovalContextRange", { enumerable: true, get: function () { return prompt_detect_multiple_choice_approval_context_2.findApprovalContextRange; } });
21
19
  Object.defineProperty(exports, "findApprovalContextStart", { enumerable: true, get: function () { return prompt_detect_multiple_choice_approval_context_2.findApprovalContextStart; } });
22
20
  Object.defineProperty(exports, "joinApprovalTarget", { enumerable: true, get: function () { return prompt_detect_multiple_choice_approval_context_2.joinApprovalTarget; } });
21
+ var prompt_detect_multiple_choice_chrome_2 = require("./prompt-detect-multiple-choice-chrome");
22
+ Object.defineProperty(exports, "findClaudeChrome", { enumerable: true, get: function () { return prompt_detect_multiple_choice_chrome_2.findClaudeChrome; } });
23
+ Object.defineProperty(exports, "findClaudeTaskPanelLines", { enumerable: true, get: function () { return prompt_detect_multiple_choice_chrome_2.findClaudeTaskPanelLines; } });
24
+ Object.defineProperty(exports, "maskClaudeChrome", { enumerable: true, get: function () { return prompt_detect_multiple_choice_chrome_2.maskClaudeChrome; } });
23
25
  // ============================================================================
24
26
  // Constants
25
27
  // ============================================================================
@@ -64,158 +66,6 @@ const DEFAULT_OPTION_PATTERN = /^\s*[\u276F\u25CF\u203A][^\d]*(\d+)(?:\.(?!\d)|\
64
66
  * Layer 4 (2+ options), and Layer 5 (SEC-001 question line validation).
65
67
  */
66
68
  const NORMAL_OPTION_PATTERN = /^\s*[^\d]{0,3}(\d+)(?:\.(?!\d)|\s+)\s*(.+)$/;
67
- /**
68
- * [Issue #1708] Header row of Claude Code's bottom-anchored task panel, e.g.
69
- * " 7 tasks (0 done, 1 in progress, 6 open)"
70
- *
71
- * The panel is an overlay pinned to the LAST rows of the pane, structurally
72
- * unrelated to whatever the agent is currently blocked on. In a production pane
73
- * (200x1000, alternate screen) a prompt dialog therefore renders near the top and
74
- * the panel ~880 blank rows below it — rows `compactBlankRows` collapses to one,
75
- * putting the panel squarely inside Pass 2's 50-line reverse-scan window.
76
- *
77
- * That is only harmless while something trims it away. #704/#807 trim at a
78
- * footer, but the AskUserQuestion *confirmation* step ("Ready to submit your
79
- * answers?") renders NEITHER footer, so nothing trims and the panel is the first
80
- * thing the reverse scan meets. Measured on the live capture in
81
- * fixtures/claude-live-1708/askuserquestion-submit-taskpanel.txt, two of its rows
82
- * match NORMAL_OPTION_PATTERN independently:
83
- * - this header → option 7, label "tasks (2 done, 1 in progress, 4 open)"
84
- * - "… +2 completed" → option 2, label "completed"
85
- * Either one alone is enough to make isValidPrecedingOption() reject the real
86
- * `❯ 1. Submit answers` / `2. Cancel` above it, so collectedOptions never reaches
87
- * 2 and the frame is published as "no prompt" — Issue #1708's silent timeout.
88
- *
89
- * Anchored at line start and requires the literal `tasks (` + `<n> done`, which
90
- * no option label produced by any supported CLI carries. ReDoS safe (S4-001):
91
- * bounded repetition, no nesting.
92
- */
93
- const CLAUDE_TASK_PANEL_HEADER_PATTERN = /^\s*\d{1,3}\s+tasks?\s+\(\d+\s+done\b/i;
94
- /**
95
- * [Issue #1708] A single task row of the panel described above, e.g. " ◼ Phase 3".
96
- *
97
- * Today these rows are inert — `isContinuationLine()` already absorbs them — but
98
- * only because none of the observed titles begins with a digit. A title like
99
- * "2. Fix the parser" would render as " ◻ 2. Fix the parser" and be collected as
100
- * option 2, reintroducing the same poisoning from a direction no single-line
101
- * guard anticipates. Skipping the whole panel block closes that off structurally
102
- * instead of one wording at a time.
103
- *
104
- * The glyph set is exactly the two forms measured on a live pane — ◼ (in
105
- * progress) and ◻ (open) — and nothing else. Every extra glyph is a line this
106
- * guard can delete from the frame, so the set is an allowlist of things seen,
107
- * not a guess at what the family might contain:
108
- *
109
- * - ❯ ● › are DEFAULT_OPTION_PATTERN's cursor indicators.
110
- * - ⏺ ⎿ ✔ ✗ are the transcript markers TURN_BOUNDARY_PATTERN reads.
111
- * - ☐ ☑ ☒ are the natural rendering of a MULTI-SELECT choice, and
112
- * AskUserQuestion has a multiSelect mode. Measured: with those in the set,
113
- * `☐ 1. Blue / ☑ 2. Green / ☐ 3. Red` under a panel header is claimed as
114
- * panel content and the prompt above it disappears entirely
115
- * (isPrompt=false, zero options) — Issue #1708's own failure, recreated by
116
- * its fix. See the regression test.
117
- *
118
- * A completed row never appears (the panel collapses those into `… +N
119
- * completed`, which SUMMARY_LINE_PATTERN handles), so no done-marker is needed.
120
- * An unmatched glyph simply ends the block, which is the safe direction: those
121
- * rows go back to being handled exactly as they were before this guard existed.
122
- *
123
- * To widen this, capture a live pane that actually renders the new glyph and add
124
- * it as a fixture. Do not widen it from the shape of the character.
125
- */
126
- const CLAUDE_TASK_PANEL_ROW_PATTERN = /^\s*[◼◻]\s/;
127
- /**
128
- * [Issue #2468] Claude Code 2.1.267's session-diff HUD row, in the two
129
- * spellings measured on a live pane (tests/fixtures/claude-live-2468):
130
- * "No changes this session"
131
- * "+28 files edited before this session (show)"
132
- *
133
- * Chrome like the task panel, but a single row and RIGHT-aligned: on a
134
- * 200-column pane it is ~110 columns of padding and then the text. It is
135
- * therefore matched on the trimmed row — a reader that slices the row from the
136
- * left sees nothing but blanks.
137
- *
138
- * It broke two readers. Pass 2 below parses `+2 files edited …` as option 2,
139
- * which poisons the real `1. / 2.` above it the way `… +2 completed` did in
140
- * #1708. And `findClaudeTranscriptTail` took it for the last transcript row, so
141
- * `detectClaudeDialog` read it as the footer of the AskUserQuestion
142
- * confirmation screen — a dialog that draws no footer — and refused a dialog
143
- * that was open on screen: Auto-Yes, the UI's answer and `commandmate respond`
144
- * all got `prompt_no_longer_active`.
145
- *
146
- * `files?` is the one spelling not seen on a pane: a one-file session was not
147
- * captured, and the singular is accepted so that it is not the case that
148
- * regresses. Everything else is literal, for the same reason the glyph set
149
- * above is an allowlist. Anchored at both ends, no nested quantifiers — ReDoS
150
- * safe (S4-001).
151
- */
152
- const CLAUDE_SESSION_DIFF_HUD_PATTERN = /^(?:No changes this session|\+\d+ files? edited before this session \(show\))$/;
153
- /**
154
- * Line indices belonging to Claude's bottom-pinned panels within [start, end).
155
- *
156
- * Two panels, both chrome rather than transcript or prompt:
157
- * - the task panel (#1708). Walks down from each header row for as long as
158
- * rows keep looking like panel content (task rows or the collapsed `… +N …`
159
- * summary). The first line that is neither ends the block, so a panel that
160
- * abuts other content cannot swallow it.
161
- * - the session-diff HUD (#2468), a single row claimed on its own.
162
- *
163
- * Pass 2 here, `findClaudeTranscriptTail` and `detectClaudeDialog`'s footer
164
- * guard all read this one set — through {@link findClaudeChrome}, which adds an
165
- * AskUserQuestion preview pane to it (Issue #2486) — so they cannot disagree
166
- * about which rows are chrome.
167
- *
168
- * @param lines - Full frame, already ANSI/box stripped
169
- * @param start - First index to consider (inclusive)
170
- * @param end - Last index to consider (exclusive)
171
- * @returns Indices Pass 2 must treat as metadata rather than options
172
- */
173
- function findClaudeTaskPanelLines(lines, start, end) {
174
- const panelLines = new Set();
175
- for (let i = Math.max(0, start); i < Math.min(end, lines.length); i++) {
176
- if (CLAUDE_SESSION_DIFF_HUD_PATTERN.test(lines[i].trim())) {
177
- panelLines.add(i);
178
- continue;
179
- }
180
- if (!CLAUDE_TASK_PANEL_HEADER_PATTERN.test(lines[i]))
181
- continue;
182
- panelLines.add(i);
183
- for (let j = i + 1; j < Math.min(end, lines.length); j++) {
184
- const row = lines[j];
185
- if (!CLAUDE_TASK_PANEL_ROW_PATTERN.test(row) && !SUMMARY_LINE_PATTERN.test(row))
186
- break;
187
- panelLines.add(j);
188
- }
189
- }
190
- return panelLines;
191
- }
192
- /**
193
- * Claude's chrome within [start, end). See {@link ClaudeChrome}.
194
- *
195
- * @param lines - Full frame, ANSI stripped; box drawing optional
196
- * @param start - First index to consider (inclusive)
197
- * @param end - Last index to consider (exclusive)
198
- */
199
- function findClaudeChrome(lines, start, end) {
200
- const rows = findClaudeTaskPanelLines(lines, start, end);
201
- const panes = (0, picker_chrome_1.findClaudePreviewPanes)(lines, start, end);
202
- for (const row of panes.rows)
203
- rows.add(row);
204
- return { rows, cuts: panes.cuts };
205
- }
206
- /**
207
- * The frame with Claude's chrome taken out: chrome rows blank, rows shared with
208
- * the preview pane cut back to the options column. Row indices are unchanged,
209
- * so a reader of the result can report positions in the original frame.
210
- */
211
- function maskClaudeChrome(lines, chrome) {
212
- return lines.map((line, i) => {
213
- if (chrome.rows.has(i))
214
- return '';
215
- const cut = chrome.cuts.get(i);
216
- return cut === undefined ? line : line.slice(0, cut).trimEnd();
217
- });
218
- }
219
69
  /**
220
70
  * [Issue #2486] An indented row in the options column beside a preview pane.
221
71
  *
@@ -240,39 +90,6 @@ const QUESTION_CONTEXT_LINES = 5;
240
90
  * not selectable options and must not be parsed as numbered choices.
241
91
  */
242
92
  const COLLAPSED_OUTPUT_PATTERN = /^\s*\[[^\]]*\d+\s+lines?\]/i;
243
- /**
244
- * [Issue #704] Pattern for Claude Code v2.1.142 prompt summary lines such as
245
- * " … +1 pending"
246
- * " +2 pending"
247
- * " ↑3 more"
248
- * " ↓1 more"
249
- * These lines are rendered BELOW the real options when Claude collapses the
250
- * remaining choices. They are not selectable options and must be skipped by
251
- * Pass 2 — otherwise NORMAL_OPTION_PATTERN matches them as option N with
252
- * label "pending"/"more", and the resulting (number, label) tuple poisons
253
- * isValidPrecedingOption() so that the real 1./2./3. options above are all
254
- * rejected (collectedOptions ends up with length 1 and Layer 4 returns
255
- * no_prompt).
256
- *
257
- * Scope of the pattern (FP suppression is critical):
258
- * - Anchored at line start (^) and requires the trailing keyword to be
259
- * `pending` or `more` followed by a word boundary (\b). This intentionally
260
- * prevents matching legitimate option labels that mention these words
261
- * mid-sentence (e.g. `2. Postpone (will remain pending)`,
262
- * `3. Show me more`) — those still flow through NORMAL_OPTION_PATTERN.
263
- * - Optional leading ellipsis (… U+2026) and optional collapse direction
264
- * marker (+ - ↑ ↓ ⏵ ⏷) accept the variants observed in the wild.
265
- * - [Issue #1708] `completed` joined `pending`/`more` after a live capture
266
- * (fixtures/claude-live-1708) showed the task panel collapsing FINISHED
267
- * rows as `… +2 completed`. That wording was outside the #704 guard, so it
268
- * reached Pass 2 and was collected as `option 2 / label='completed'` —
269
- * poisoning isValidPrecedingOption() exactly as `… +1 pending` used to.
270
- * - The pattern deliberately omits any free `(.+)` capture — it must
271
- * short-circuit, not extract data.
272
- *
273
- * Pattern shape: linear regex with no nested quantifiers — ReDoS safe (S4-001).
274
- */
275
- const SUMMARY_LINE_PATTERN = /^\s*[…]?\s*[+\-↑↓⏵⏷]?\s*\d+\s+(?:pending|more|completed)\b/i;
276
93
  /**
277
94
  * [Issue #704] Pattern for the Claude Code v2.1.142 prompt footer line.
278
95
  * Example: " Esc to cancel · Tab to amend → · Herding…"
@@ -1060,7 +877,7 @@ function collectOptions(lines, scanStart, effectiveEnd) {
1060
877
  // [Issue #2486] The same reading carries an AskUserQuestion preview pane, whose
1061
878
  // rows the scan likewise meets before the top border that identifies it — and
1062
879
  // some of which it shares with the options column.
1063
- const chrome = findClaudeChrome(lines, scanStart, effectiveEnd);
880
+ const chrome = (0, prompt_detect_multiple_choice_chrome_1.findClaudeChrome)(lines, scanStart, effectiveEnd);
1064
881
  for (let i = effectiveEnd - 1; i >= scanStart; i--) {
1065
882
  // [Issue #1708] Chrome rows are metadata. Same handling as the
1066
883
  // COLLAPSED_OUTPUT / SUMMARY guards below: skip without ending the scan, so
@@ -1139,7 +956,7 @@ function isMetadataRow(state, rawLine, line, paneCut) {
1139
956
  // against future Claude renderings where the footer line text changes
1140
957
  // (S1 still catches) or the summary line wording changes (S2 still
1141
958
  // catches via footer trim).
1142
- if (SUMMARY_LINE_PATTERN.test(line)) {
959
+ if (prompt_detect_multiple_choice_chrome_1.SUMMARY_LINE_PATTERN.test(line)) {
1143
960
  state.continuationLineCount++;
1144
961
  return true;
1145
962
  }
@@ -25,8 +25,9 @@
25
25
  * @module lib/detection/upstream-faults
26
26
  */
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.UPSTREAM_FAULT_TRUNCATION_MARKER = exports.UPSTREAM_FAULT_EXCERPT_MAX_BYTES = exports.UPSTREAM_FAULTS = void 0;
28
+ exports.UPSTREAM_FAULT_TRUNCATION_MARKER = exports.UPSTREAM_FAULT_EXCERPT_MAX_BYTES = exports.CODEX_ERROR_ROW_FAULT_IDS = exports.UPSTREAM_FAULTS = void 0;
29
29
  exports.matchUpstreamFault = matchUpstreamFault;
30
+ exports.matchCodexErrorRowFault = matchCodexErrorRowFault;
30
31
  exports.findUpstreamFault = findUpstreamFault;
31
32
  const ansi_1 = require("./ansi");
32
33
  const excerpt_1 = require("./excerpt");
@@ -54,9 +55,47 @@ exports.UPSTREAM_FAULTS = [
54
55
  pattern: /\bmaximum context length is \d+ tokens\b/i,
55
56
  selfRetrying: false,
56
57
  },
58
+ {
59
+ // codex ends the turn with `Selected model is at capacity` and does not
60
+ // answer (Issue #3936); the same model will not, so the cue is to switch
61
+ // instance or model. Anchored on the sentence, not on "at capacity": the
62
+ // 529 line above says "The API is at capacity" and is `overloaded`.
63
+ //
64
+ // And on codex's own error row, not on the sentence alone: `■ ` at column
65
+ // 0, the shape codex 0.160.0 draws its errors in (measured on
66
+ // `■ Conversation interrupted`). A reply that names or quotes the error —
67
+ // this Issue, its review — is indented (`• ` / ` `), and an input echo
68
+ // starts with `› `; matching those would fail a healthy turn with exit 11.
69
+ // The capacity row itself is unmeasured (the fixture is synthetic).
70
+ id: 'model-capacity',
71
+ pattern: /^■ Selected model is at capacity\b/im,
72
+ selfRetrying: false,
73
+ },
57
74
  { id: 'limit-reached', pattern: /\blimit reached\b/i, selfRetrying: false },
58
- { id: 'api-error', pattern: /\bAPI Error(?::|\s+\d{3})/i, selfRetrying: false },
75
+ {
76
+ // Anchored to a line start (Issue #3946), like `model-capacity`: only the two
77
+ // shapes measured for the fault itself are accepted — claude's `⏺ API Error: …`
78
+ // row (Issue #1839) and a bare `API Error: …` at column 0. Unanchored, it
79
+ // matched a healthy codex reply that quoted `• API Error: 500` on an indented
80
+ // continuation line, and `ask` exited 11 — twice, because the quoting turn was
81
+ // still inside the 100-row window when the next turn ended. A codex `• ` row,
82
+ // an indented continuation and a `› ` input echo are not accepted.
83
+ //
84
+ // Known limit: a claude reply that itself begins with `⏺ API Error: …` is
85
+ // indistinguishable from the fault, because nothing here knows who wrote a row
86
+ // (reply, echo, tool error) — only its leading shape.
87
+ id: 'api-error',
88
+ pattern: /^(?:⏺ )?API Error(?::|\s+\d{3})/im,
89
+ selfRetrying: false,
90
+ },
59
91
  ];
92
+ /**
93
+ * The faults whose pattern is anchored to codex's own error row (`■ ` at column
94
+ * 0), and so the only ones safe to apply to a row outside `realtimeSnippet`
95
+ * (Issue #3946, {@link matchCodexErrorRowFault}). An unanchored pattern on such a
96
+ * row would read a quote in an old reply as a fault happening now.
97
+ */
98
+ exports.CODEX_ERROR_ROW_FAULT_IDS = ['model-capacity'];
60
99
  /**
61
100
  * Bound on {@link UpstreamFaultMatch.matchedText}, in UTF-8 **bytes**.
62
101
  *
@@ -87,11 +126,23 @@ function truncateExcerpt(text) {
87
126
  * sequences on a live pane.
88
127
  */
89
128
  function matchUpstreamFault(frame) {
129
+ return matchFaults(frame, exports.UPSTREAM_FAULTS);
130
+ }
131
+ /**
132
+ * {@link matchUpstreamFault} restricted to {@link CODEX_ERROR_ROW_FAULT_IDS}
133
+ * (Issue #3946): for the one codex transcript row read from outside the window,
134
+ * where a quote must not count.
135
+ */
136
+ function matchCodexErrorRowFault(row) {
137
+ return matchFaults(row, exports.UPSTREAM_FAULTS.filter((fault) => exports.CODEX_ERROR_ROW_FAULT_IDS.includes(fault.id)));
138
+ }
139
+ function matchFaults(frame, faults) {
90
140
  const clean = (0, ansi_1.stripAnsi)(frame);
91
- for (const fault of exports.UPSTREAM_FAULTS) {
141
+ for (const fault of faults) {
92
142
  const match = fault.pattern.exec(clean);
93
- // The patterns are unanchored and stateless (no /g), so `exec` cannot carry
94
- // a lastIndex between calls — but reading `index` requires exec regardless.
143
+ // The patterns are stateless (no /g; `model-capacity` and `api-error` are
144
+ // anchored to a line start with /m), so `exec` cannot carry a lastIndex
145
+ // between calls — but reading `index` requires exec regardless.
95
146
  if (!match)
96
147
  continue;
97
148
  const lineStart = clean.lastIndexOf('\n', match.index) + 1;
@@ -478,7 +478,7 @@ function promptSelectionBody(selection) {
478
478
  * @param sessionId - `ses_…`, the session the message belongs to
479
479
  * @param messageId - `msg_…`, from {@link newOpencodeMessageId}
480
480
  * @param parts - The message body; at least one part
481
- * @returns Whether the server answered `204`
481
+ * @returns How the POST ended ({@link OpencodePromptDispatch})
482
482
  */
483
483
  async function sendOpencodePrompt(port, sessionId, messageId, parts, selection) {
484
484
  const url = `${opencodeBaseUrl(port)}/session/${encodeURIComponent(sessionId)}/prompt_async`;
@@ -493,18 +493,24 @@ async function sendOpencodePrompt(port, sessionId, messageId, parts, selection)
493
493
  }),
494
494
  signal: AbortSignal.timeout(exports.OPENCODE_REQUEST_TIMEOUT_MS),
495
495
  });
496
- if (response.status !== 204) {
497
- logger.warn('opencode-prompt-rejected', { port, sessionId, status: response.status });
498
- return false;
496
+ if (response.status === 204)
497
+ return 'accepted';
498
+ // Issue #3992: another 2xx may still have created the message (a JSON 200 /
499
+ // 201), so it stays unknown — except the web UI's SPA shell an unknown route
500
+ // answers (`200 text/html`, #1931), which never took the message.
501
+ if (response.status >= 200 && response.status < 300 && !hasContentType(response, 'text/html')) {
502
+ logger.warn('opencode-prompt-unexpected-success', { port, sessionId, status: response.status });
503
+ return 'unknown';
499
504
  }
500
- return true;
505
+ logger.warn('opencode-prompt-rejected', { port, sessionId, status: response.status });
506
+ return 'rejected';
501
507
  }
502
508
  catch (error) {
503
509
  logger.debug('opencode-request-failed', {
504
510
  url,
505
511
  error: error instanceof Error ? error.message : String(error),
506
512
  });
507
- return false;
513
+ return 'unknown';
508
514
  }
509
515
  }
510
516
  /**
@@ -465,5 +465,5 @@ async function answerStructuredDecision({ worktreeId, cliToolId, instanceId, ans
465
465
  reply: option.reply,
466
466
  delivered,
467
467
  });
468
- return { kind: 'answered', decisionId: decision.id, option, delivered };
468
+ return { kind: 'answered', decisionId: decision.id, option, delivered, receipt: delivery };
469
469
  }
@@ -82,8 +82,10 @@ function noteManualSendStarting(ticket, promptData) {
82
82
  * (the manual-answer sequence moves on): one that read no hold before its
83
83
  * last wait does not type over this one.
84
84
  *
85
- * An end nobody reports (the agent's API answered it, the route threw) leaves
86
- * the hold as it was.
85
+ * An end nobody reports (a send that threw saying nothing of its keys, a
86
+ * verdict the agent's API gave no receipt for — both only abandoned; a
87
+ * structured verdict `/prompt-response` refused) leaves the hold as it was. A verdict delivered over the
88
+ * agent's API reports its receipt like a send (Issue #3925).
87
89
  */
88
90
  function settleManualAnswer(ticket, outcome, at = Date.now()) {
89
91
  const { compositeKey, attempt } = ticket;
@@ -62,7 +62,7 @@ const push_1 = require("../../lib/push");
62
62
  const prompt_push_gate_1 = require("../../lib/push/prompt-push-gate");
63
63
  // Issue #2000: deep path for the same reason as the two imports above.
64
64
  const failure_push_notifier_1 = require("../../lib/push/failure-push-notifier");
65
- const upstream_faults_1 = require("../../lib/detection/upstream-faults");
65
+ const realtime_snippet_1 = require("../../lib/realtime-snippet");
66
66
  const waiting_push_notifier_1 = require("../../lib/push/waiting-push-notifier");
67
67
  const waiting_episode_binding_1 = require("../../lib/session/waiting-episode-binding");
68
68
  const waiting_episode_state_1 = require("../../lib/session/waiting-episode-state");
@@ -71,19 +71,6 @@ const auto_yes_state_1 = require("../../lib/auto-yes-state");
71
71
  const auto_yes_poller_state_1 = require("./auto-yes-poller-state");
72
72
  const task_transition_service_1 = require("../../lib/tasks/task-transition-service");
73
73
  const response_checker_blank_response_1 = require("./response-checker-blank-response");
74
- /**
75
- * How many rows from the bottom of a capture the upstream-fault check reads
76
- * (Issue #2000).
77
- *
78
- * The same 100 as `current-output-builder`'s `realtimeSnippet`, and for the
79
- * reason #1839 gives there: the wider capture keeps a banner from an hour ago
80
- * in scope, and "is this happening now" is the only question worth ringing a
81
- * phone about. Keeping the two windows equal also means the notification and
82
- * the `upstreamFault` field an operator reads in `capture --json` are judging
83
- * the same rows — a fault that rang but is invisible in the payload next to it
84
- * is unverifiable.
85
- */
86
- const UPSTREAM_FAULT_SCAN_ROWS = 100;
87
74
  /**
88
75
  * Raise a push notification when this frame shows a NEW upstream fault
89
76
  * (Issue #2000).
@@ -100,8 +87,20 @@ const UPSTREAM_FAULT_SCAN_ROWS = 100;
100
87
  * anything, so the level can be handed over on every poll.
101
88
  */
102
89
  function observeUpstreamFaultForPush(worktreeId, cliToolId, instanceId, output) {
103
- const snippet = output.split('\n').slice(-UPSTREAM_FAULT_SCAN_ROWS).join('\n');
104
- const match = (0, upstream_faults_1.matchUpstreamFault)(snippet);
90
+ // The rows `current-output-builder` judges `upstreamFault` on (#1839: the rows
91
+ // it publishes as `realtimeSnippet`; #3946: plus codex's last transcript row
92
+ // above them on a split screen), read through the same entry
93
+ // (`matchPaneUpstreamFault`) rather than a copy of its window. The reason is #1839's: the wider capture keeps a banner from an
94
+ // hour ago in scope, and "is this happening now" is the only question worth
95
+ // ringing a phone about. Sharing the cut also means the notification and the
96
+ // `upstreamFault` an operator reads in `capture --json` judge the same rows —
97
+ // a fault that rang but is invisible in the payload next to it is
98
+ // unverifiable. Issue #3936: the plain last 100 rows (#2000) drifted from the
99
+ // snippet when #2768 anchored it to the last row with content, so an inline
100
+ // codex pane showed `model-capacity` in the capture and never rang.
101
+ // Issue #3946: one entry with current-output, which also reads codex's last
102
+ // transcript row above the window on a split screen.
103
+ const match = (0, realtime_snippet_1.matchPaneUpstreamFault)(output.split('\n'), cliToolId);
105
104
  // Fire-and-forget, like every other push call in this file: the poller must
106
105
  // not slow down or break because a notification could not be delivered.
107
106
  void (0, failure_push_notifier_1.notifyUpstreamFaultPush)({