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
@@ -3,6 +3,7 @@
3
3
  * relays Command - the standing delegations this machine is holding (#2377)
4
4
  *
5
5
  * commandmate relays [--worktree <id>] [--instance <id|alias>] [--json]
6
+ * commandmate relays --id <relay-id> [--json] (Issue #3957: one relay, open or closed)
6
7
  * commandmate relays cancel <relay-id>
7
8
  *
8
9
  * ## Why a command and not a flag on `ls`
@@ -26,11 +27,12 @@
26
27
  * two commands from resolving `self` two different ways.
27
28
  */
28
29
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.ALLOW_RELAY_CHAIN_DESCRIPTION = exports.REPLY_TO_OPTION_DESCRIPTION = exports.RELAY_REFUSAL_CODES = void 0;
30
+ exports.LEGACY_RELAY_NOTICE = exports.ALLOW_RELAY_CHAIN_DESCRIPTION = exports.REPLY_TO_OPTION_DESCRIPTION = exports.RELAY_REFUSAL_CODES = void 0;
30
31
  exports.resolveRelayEndpoint = resolveRelayEndpoint;
31
32
  exports.resolveEndpointForWorktree = resolveEndpointForWorktree;
32
33
  exports.registerRelay = registerRelay;
33
34
  exports.cancelRelayQuietly = cancelRelayQuietly;
35
+ exports.printRelayUnconfirmedNotice = printRelayUnconfirmedNotice;
34
36
  exports.createRelaysCommand = createRelaysCommand;
35
37
  const commander_1 = require("commander");
36
38
  const types_1 = require("../types");
@@ -133,6 +135,9 @@ async function resolveEndpointForWorktree(client, worktreeId, selector, requeste
133
135
  }
134
136
  return { worktreeId, instanceId };
135
137
  }
138
+ /** The one line an older server's relay gets on stderr (Issue #3957). */
139
+ exports.LEGACY_RELAY_NOTICE = 'Note: this server does not tie a relay to its send (legacy handling); '
140
+ + 'the reply is taken from the first turn that ends after the relay was opened.';
136
141
  /**
137
142
  * Open a relay, printing the server's own refusal and exiting 2 on one.
138
143
  *
@@ -140,7 +145,11 @@ async function resolveEndpointForWorktree(client, worktreeId, selector, requeste
140
145
  * change (drop the flag, cancel the other relay, stop forwarding), which is what
141
146
  * `CONFIG_ERROR` means everywhere else in this CLI.
142
147
  *
143
- * @returns The relay id
148
+ * Issue #3957: asks for `bind: true` and believes it only when the answer says
149
+ * `bindMode: 'bound'`. A server that does not know the flag answers without
150
+ * the key; the relay is then the legacy kind and its id is not sent along.
151
+ *
152
+ * @returns The relay id, and whether it is bound
144
153
  */
145
154
  async function registerRelay(client, input) {
146
155
  try {
@@ -148,8 +157,12 @@ async function registerRelay(client, input) {
148
157
  from: input.from,
149
158
  to: input.to,
150
159
  allowRelayChain: input.allowRelayChain === true,
160
+ bind: true,
151
161
  });
152
- return response.relay.id;
162
+ const bound = (response.bindMode ?? response.relay.bindMode) === 'bound';
163
+ if (!bound)
164
+ console.error(exports.LEGACY_RELAY_NOTICE);
165
+ return { id: response.relay.id, bound };
153
166
  }
154
167
  catch (error) {
155
168
  if (error instanceof api_client_1.ApiError && error.apiCode && exports.RELAY_REFUSAL_CODES.has(error.apiCode)) {
@@ -174,17 +187,51 @@ async function cancelRelayQuietly(client, relayId) {
174
187
  console.error(`Warning: could not withdraw relay ${relayId}; it will expire on its own.`);
175
188
  }
176
189
  }
190
+ /**
191
+ * Print where a relay whose send could not be confirmed stands (Issue #3957).
192
+ *
193
+ * The relay is left open — withdrawing it would drop a reply that may well be
194
+ * on its way — and the message is not resent, which could make it arrive twice.
195
+ */
196
+ function printRelayUnconfirmedNotice(relayId, worktreeId) {
197
+ // Issue #3992: a failed send names the pane to look at before any resend, in
198
+ // the same line rather than a second notice.
199
+ const resend = worktreeId === undefined
200
+ ? ''
201
+ : ` Do not resend before checking the pane (\`commandmate capture ${worktreeId} --pane\`), or it may arrive twice.`;
202
+ console.error(`Warning: whether the message reached the session is not known; relay ${relayId} was left open `
203
+ + 'and the message was not resent. '
204
+ + `Check it with \`commandmate relays --id ${relayId}\`.${resend}`);
205
+ }
177
206
  function endpointLabel(endpoint) {
178
207
  return `${endpoint.worktreeId}/${endpoint.instanceId}`;
179
208
  }
180
209
  function printRelayLine(relay) {
181
- console.log([
210
+ const fields = [
182
211
  relay.id,
183
212
  relay.state,
184
213
  `${endpointLabel(relay.from)} <- ${endpointLabel(relay.to)}`,
185
214
  `hops=${relay.hops}`,
186
215
  `expires=${new Date(relay.expiresAt).toISOString()}`,
187
- ].join('\t'));
216
+ ];
217
+ // Issue #3957: a bound relay's send state, overlap and hold reason, when it
218
+ // has them. Absent on a legacy relay and on an older server.
219
+ if (relay.sendState)
220
+ fields.push(`send=${relay.sendState}`);
221
+ if (relay.overlap)
222
+ fields.push(`overlap=${relay.overlap}`);
223
+ if (relay.holdReason)
224
+ fields.push(`hold=${relay.holdReason}`);
225
+ console.log(fields.join('\t'));
226
+ }
227
+ /** `relays --id <id>`: one relay, whatever its state (Issue #3957). */
228
+ async function showOneRelay(client, relayId, json) {
229
+ const response = await client.get(`/api/relays/${relayId}`);
230
+ if (json) {
231
+ console.log(JSON.stringify(response, null, 2));
232
+ return;
233
+ }
234
+ printRelayLine(response.relay);
188
235
  }
189
236
  function createRelaysCommand() {
190
237
  const cmd = new commander_1.Command('relays');
@@ -192,18 +239,35 @@ function createRelaysCommand() {
192
239
  .description('List the open relays this session is waiting on and owes')
193
240
  .option('--worktree <id>', 'Worktree to list (defaults to the session running this command)')
194
241
  .option('--instance <id>', 'Agent instance inside --worktree (id or roster alias)')
242
+ .option('--id <relay-id>', 'Show one relay, open or closed (its send state, overlap and hold reason)')
195
243
  .option('--json', 'JSON output')
196
244
  .option('--token <token>', command_helpers_1.TOKEN_WARNING)
197
245
  .addHelpText('after', `
198
246
  Columns: <relay-id> <state> <requester> <- <worker> hops=<n> expires=<iso>
247
+ [send=<state>] [overlap=<none|later|earlier|both|unknown>] [hold=<reason>]
199
248
 
200
249
  States: pending (the worker has not finished), prompt (it stopped on a
201
250
  confirmation and the requester was told), delivered / expired / cancelled.
202
251
 
252
+ send= / overlap= / hold= appear on a relay tied to its send (Issue #3957):
253
+ send= is awaiting / input_started / sent / failed / unknown; hold= says why a
254
+ relay is not being answered (send_unknown, dispatch_unknown, generation_changed,
255
+ server_restarted, ...); overlap= says the reply may share a turn with another
256
+ request (unknown is not "none"). \`--id <relay-id>\` shows one relay even after
257
+ it closed.
258
+
203
259
  Withdraw one with \`commandmate relays cancel <relay-id>\`.
204
260
  `)
205
261
  .action(async (options) => {
206
262
  try {
263
+ if (options.id !== undefined) {
264
+ if (!RELAY_ID_PATTERN.test(options.id)) {
265
+ console.error('Error: Invalid relay ID format.');
266
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
267
+ }
268
+ await showOneRelay(new api_client_1.ApiClient({ token: options.token }), options.id, options.json === true);
269
+ return;
270
+ }
207
271
  if (options.worktree && !(0, api_client_1.isValidWorktreeId)(options.worktree)) {
208
272
  console.error('Error: Invalid worktree ID format.');
209
273
  process.exit(types_1.ExitCode.CONFIG_ERROR);
@@ -5,5 +5,17 @@
5
5
  * Uses prompt-response API (not respond API) [DR2-06]
6
6
  */
7
7
  import { Command } from 'commander';
8
+ /**
9
+ * Issue #3975: the answer waited for another input and was then not typed —
10
+ * nothing reached the pane. Restated from `src/lib/prompt-answer-errors.ts`
11
+ * (`ANSWER_NOT_DELIVERED_REASON`); a unit test keeps the two equal.
12
+ */
13
+ export declare const ANSWER_NOT_DELIVERED = "answer_not_delivered";
14
+ /**
15
+ * Issue #3975: the answer was stopped part-way — some of its keys may be on
16
+ * the pane. `/prompt-response` answers it as a 500 whose `error` carries this
17
+ * code. Restated from `src/lib/prompt-answer-errors.ts` (`ANSWER_INPUT_LOST_REASON`).
18
+ */
19
+ export declare const ANSWER_INPUT_LOST = "answer_input_lost";
8
20
  export declare function createRespondCommand(): Command;
9
21
  //# sourceMappingURL=respond.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgbpC,wBAAgB,oBAAoB,IAAI,OAAO,CAmI9C"}
1
+ {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgKpC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAoUrD,wBAAgB,oBAAoB,IAAI,OAAO,CA2I9C"}
@@ -6,6 +6,7 @@
6
6
  * Uses prompt-response API (not respond API) [DR2-06]
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ANSWER_INPUT_LOST = exports.ANSWER_NOT_DELIVERED = void 0;
9
10
  exports.createRespondCommand = createRespondCommand;
10
11
  const commander_1 = require("commander");
11
12
  const types_1 = require("../types");
@@ -125,6 +126,48 @@ async function answerSolePendingDecision(client, worktreeId, body) {
125
126
  }
126
127
  /** Reason `/prompt-response` gives when no dialog is on screen any more. */
127
128
  const PROMPT_NO_LONGER_ACTIVE = 'prompt_no_longer_active';
129
+ /**
130
+ * Issue #3975: the answer waited for another input and was then not typed —
131
+ * nothing reached the pane. Restated from `src/lib/prompt-answer-errors.ts`
132
+ * (`ANSWER_NOT_DELIVERED_REASON`); a unit test keeps the two equal.
133
+ */
134
+ exports.ANSWER_NOT_DELIVERED = 'answer_not_delivered';
135
+ /**
136
+ * Issue #3975: the answer was stopped part-way — some of its keys may be on
137
+ * the pane. `/prompt-response` answers it as a 500 whose `error` carries this
138
+ * code. Restated from `src/lib/prompt-answer-errors.ts` (`ANSWER_INPUT_LOST_REASON`).
139
+ */
140
+ exports.ANSWER_INPUT_LOST = 'answer_input_lost';
141
+ /** Whether a failed `/prompt-response` request is the answer stopped part-way (Issue #3975). */
142
+ function isAnswerInputLost(error) {
143
+ if (!(error instanceof api_client_1.ApiError) || (error.statusCode ?? 0) < 500)
144
+ return false;
145
+ const payload = error.payload;
146
+ if (payload?.reason === exports.ANSWER_INPUT_LOST)
147
+ return true;
148
+ return typeof payload?.error === 'string' && payload.error.includes(exports.ANSWER_INPUT_LOST);
149
+ }
150
+ /**
151
+ * The `capture` that reads the pane the answer was typed at (Issue #3975
152
+ * review P2-2): the target the answer resolved to, never the worktree default,
153
+ * and `--pane`, since the stored reply is not what was partly typed.
154
+ */
155
+ function answeredPaneCaptureCommand(worktreeId, target) {
156
+ const selector = target.instanceId
157
+ ? ` --instance ${target.instanceId}`
158
+ : target.agent
159
+ ? ` --agent ${target.agent}`
160
+ : '';
161
+ return `commandmate capture ${worktreeId}${selector} --pane --tail 40`;
162
+ }
163
+ /** Reports an answer stopped part-way (Issue #3975) and sets the exit code. */
164
+ function reportAnswerInputLost(worktreeId, target) {
165
+ console.error(`Warning: The answer may have been only partly typed (reason: ${exports.ANSWER_INPUT_LOST}): the session was ` +
166
+ 'replaced part-way, so some of its keys may have reached the agent and the rest did not. ' +
167
+ `Check the screen with \`${answeredPaneCaptureCommand(worktreeId, target)}\` before answering again.`);
168
+ // The exit code `decision_not_delivered` uses (Issue #3975: no new code).
169
+ process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
170
+ }
128
171
  /**
129
172
  * Issue #3125: what `--plan-review` takes. Restated rather than imported from
130
173
  * `src/lib` (the CLI build does not reach it); the server validates the same set.
@@ -244,6 +287,15 @@ function reportFailedResponse(result, worktreeId, answer, useDefault, options) {
244
287
  'The dialog is still open; answer it in the terminal.');
245
288
  process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
246
289
  }
290
+ // Issue #3975: the answer waited for another input on the session and was
291
+ // then not typed. Nothing reached the pane, so — unlike the "may not have
292
+ // been applied" reasons below — trying again is safe.
293
+ if (reason === exports.ANSWER_NOT_DELIVERED) {
294
+ console.error(`Error: Answer was not sent. Reason: ${reason}${result.message ? ` (${result.message})` : ''}. ` +
295
+ 'Nothing was typed, so it is safe to run respond again.');
296
+ process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
297
+ return;
298
+ }
247
299
  if (refusedBeforeSending) {
248
300
  console.error(`Error: Answer was not sent. Reason: ${reason}${result.message ? ` (${result.message})` : ''}`);
249
301
  // Issue #2583: the operator who lands here typed WORDS at a dialog
@@ -445,7 +497,17 @@ Strict respond (--expect-screen <kind> --observation <token> <label>):
445
497
  result = outcome;
446
498
  }
447
499
  if (result === null) {
448
- result = await client.post(`/api/worktrees/${worktreeId}/prompt-response`, body);
500
+ try {
501
+ result = await client.post(`/api/worktrees/${worktreeId}/prompt-response`, body);
502
+ }
503
+ catch (error) {
504
+ // Issue #3975: stopped part-way is not "the server failed" — some
505
+ // keys may be on the pane, and the operator has to look first.
506
+ if (!isAnswerInputLost(error))
507
+ throw error;
508
+ reportAnswerInputLost(worktreeId, { agent, instanceId });
509
+ return;
510
+ }
449
511
  }
450
512
  if (result && !result.success) {
451
513
  reportFailedResponse(result, worktreeId, answer, useDefault, options);
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4XpC,wBAAgB,iBAAiB,IAAI,OAAO,CA+J3C"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0XpC,wBAAgB,iBAAiB,IAAI,OAAO,CAiK3C"}
@@ -19,8 +19,6 @@ const command_target_1 = require("./command-target");
19
19
  const auto_yes_1 = require("./auto-yes");
20
20
  const relays_1 = require("./relays");
21
21
  const message_dispatch_1 = require("./message-dispatch");
22
- /** Auto-yes duration used when --duration is omitted. */
23
- const DEFAULT_AUTO_YES_DURATION = '1h';
24
22
  /**
25
23
  * The message length `send` is verified to deliver whole (Issue #2464): the
26
24
  * largest body sent through the paste path to claude, codex, command-code and
@@ -49,9 +47,9 @@ function promptWaitingFallback(worktreeId) {
49
47
  * behind for a message that was never sent.
50
48
  */
51
49
  function resolveAutoYesDurationMs(duration) {
52
- const durationMs = (0, duration_constants_1.parseDurationToMs)(duration ?? DEFAULT_AUTO_YES_DURATION);
50
+ const durationMs = (0, duration_constants_1.parseDurationToMs)(duration ?? duration_constants_1.DEFAULT_DURATION_FLAG);
53
51
  if (durationMs === null) {
54
- console.error(`Error: Invalid duration. Must be one of: ${duration_constants_1.ALLOWED_DURATIONS.join(', ')}`);
52
+ console.error(`Error: Invalid duration. Must be ${duration_constants_1.AUTO_YES_DURATION_FLAG_RANGE} (e.g. 5h).`);
55
53
  process.exit(types_1.ExitCode.CONFIG_ERROR);
56
54
  }
57
55
  return durationMs;
@@ -244,7 +242,7 @@ function validateSendArgs(worktreeId, message, options) {
244
242
  // Issue #1608: every option that can be judged from its own value is
245
243
  // judged here, before the first side effect. --duration used to be the
246
244
  // exception: enableAutoYes() validated it, and that runs after
247
- // --contract has already created the task row, so `--duration 2h` left
245
+ // --contract has already created the task row, so `--duration 25h` left
248
246
  // a `pending` task for a message that was never sent. Validated
249
247
  // unconditionally, like --stop-pattern and --model above: a value the
250
248
  // CLI cannot honour is an error whether or not --auto-yes accompanies it.
@@ -317,7 +315,7 @@ function createSendCommand() {
317
315
  + ' flag: it applies only when this send starts the session, and a running session answers 400')
318
316
  .option('--auto-yes', 'Enable auto-yes before sending (session-wide, no policy guard; for unattended runs prefer --contract with an autoYes policy)')
319
317
  .option('--auto-yes-answer-mode <mode>', `With --auto-yes: ${auto_yes_1.ANSWER_MODE_OPTION_DESCRIPTION}`)
320
- .option('--duration <duration>', `Auto-yes duration (${duration_constants_1.ALLOWED_DURATIONS.join(', ')})`)
318
+ .option('--duration <duration>', `Auto-yes duration (${duration_constants_1.AUTO_YES_DURATION_FLAG_RANGE}, e.g. 1h, 3h, 8h; default ${duration_constants_1.DEFAULT_DURATION_FLAG})`)
321
319
  .option('--stop-pattern <pattern>', 'Auto-yes stop pattern (regex). Matched against terminal output; cannot block commands (use the task contract\'s autoYes.denyPatterns for that)')
322
320
  .option('--contract <path>', 'Execution contract path relative to the worktree root (e.g. .commandmate/tasks/my-task.yaml). Records a task and sends the contract preamble plus its goal.')
323
321
  .option('--ignore-structured-prompt', 'Send even if only the agent\'s hooks report an open dialog (Issue #1737). Use when the pane looks idle but sends are refused; a prompt visible in the terminal is still refused.')
@@ -407,9 +405,9 @@ worktree and send a short message that tells the agent to read that file.
407
405
  // between the send and the ledger row — the completion trigger reads the
408
406
  // ledger, and a row that does not exist yet is a reply nobody collects.
409
407
  // A refusal exits 2 here, having sent nothing.
410
- let relayId;
408
+ let relay;
411
409
  if (options.replyTo) {
412
- relayId = await (0, message_dispatch_1.registerRelayForMessage)(client, {
410
+ relay = await (0, message_dispatch_1.registerRelayForMessage)(client, {
413
411
  worktreeId,
414
412
  replyTo: options.replyTo,
415
413
  instance: options.instance,
@@ -420,11 +418,13 @@ worktree and send a short message that tells the agent to read that file.
420
418
  // (it prints the task id there), and two commands writing two ids to
421
419
  // one stream is how a `$(…)` capture ends up with both. `ask --async`
422
420
  // is the form that hands the relay id back on stdout.
423
- console.error(`Relay registered: ${relayId}`);
421
+ console.error(`Relay registered: ${relay.id}`);
424
422
  }
425
423
  const sendBody = buildSendBody(content, agent, instanceId, options);
424
+ // Issue #3957: a bound relay's id rides on the send, which reserves it
425
+ // and records where the body went in.
426
426
  await (0, message_dispatch_1.postMessage)(client, worktreeId, sendBody, {
427
- relayId,
427
+ relay,
428
428
  onFailure: failTask,
429
429
  promptWaitingFallback: promptWaitingFallback(worktreeId),
430
430
  });
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,OAAO,KAAK,EAMV,uBAAuB,EAExB,MAAM,wBAAwB,CAAC;AAsChC;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,uBAAuB,GAAG,IAAI,CA8BrG;AAyED,wBAAgB,mBAAmB,IAAI,OAAO,CAsE7C"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,OAAO,KAAK,EAMV,uBAAuB,EAExB,MAAM,wBAAwB,CAAC;AAuChC;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,uBAAuB,GAAG,IAAI,CA8BrG;AAkFD,wBAAgB,mBAAmB,IAAI,OAAO,CAsE7C"}
@@ -156,13 +156,20 @@ function inheritedFlag(own, command, key) {
156
156
  * The run id leads the line even though it is not in the requested field list:
157
157
  * without it there is no way to reach `verify show`, which is the only reason
158
158
  * to read this listing in the first place.
159
+ *
160
+ * Gates that carry `timing` (#3884) are named after the verdict with their
161
+ * waits and execution apart (#3909), so "this run took 40 minutes" can be read
162
+ * as a queue, a lock or a slow suite without opening every run. A run none of
163
+ * whose gates waited keeps the line it always had.
159
164
  */
160
165
  function formatHistoryLine(run) {
161
166
  const failed = run.gates
162
167
  .filter((gate) => FAILED_GATE_STATUSES.has(gate.status))
163
168
  .map((gate) => gate.gateId);
164
169
  const suffix = failed.length > 0 ? ` failed: ${failed.join(',')}` : '';
165
- return `#${run.id} ${run.startedAt} ${run.worktreeId} ${run.trigger} ${run.status}${suffix}`;
170
+ const timed = run.gates.flatMap((gate) => gate.timing ? [`${gate.gateId}(${(0, verify_runner_1.formatGateTiming)(gate.timing, ' ')})`] : []);
171
+ const timing = timed.length > 0 ? ` timing: ${timed.join(' ')}` : '';
172
+ return `#${run.id} ${run.startedAt} ${run.worktreeId} ${run.trigger} ${run.status}${suffix}${timing}`;
166
173
  }
167
174
  function createVerifyCommand() {
168
175
  const cmd = new commander_1.Command('verify');
@@ -0,0 +1,66 @@
1
+ /**
2
+ * wait Command - re-reading the pane after a hook_stop (Issue #3956)
3
+ * Issue #3964: split out of wait.ts; wait.ts re-exports what it exported.
4
+ */
5
+ import type { CurrentOutputResponse } from '../types/api-responses';
6
+ import type { PollContext, PollState } from './wait-poll-state';
7
+ /**
8
+ * Interval between the re-reads of the pane after a `hook_stop`, under
9
+ * `--fail-on-upstream-fault` (Issue #3956). See {@link settleAfterHookStop}.
10
+ */
11
+ export declare const HOOK_STOP_SETTLE_INTERVAL_MS = 500;
12
+ /**
13
+ * Longest `wait` re-reads the pane after a `hook_stop` before judging the last
14
+ * frame it read (Issue #3956). See {@link settleAfterHookStop}.
15
+ */
16
+ export declare const HOOK_STOP_SETTLE_MAX_MS = 5000;
17
+ /**
18
+ * The path {@link settleAfterHookStop} re-reads the pane on (Issue #3956):
19
+ * `?fresh=1` past the server's capture cache, whose 5 s TTL would otherwise
20
+ * answer two reads 500 ms apart with the same capture and read a pane still
21
+ * drawing as settled. A server older than the parameter ignores it and answers
22
+ * as before, from the cache.
23
+ */
24
+ export declare function settleCurrentOutputPath(worktreeId: string, instanceId?: string): string;
25
+ /**
26
+ * The frame a `hook_stop` completion is judged on, once the pane has settled
27
+ * (Issue #3956).
28
+ *
29
+ * The agent's `Stop` can land before its reply is drawn. Measured 2026-10-27 on
30
+ * codex-cli 0.164.0: `ask` returned on `basis=hook_stop` with the pane ending at
31
+ * row 441–445 of 480, and the last rows were drawn ~3 s later. An upstream fault
32
+ * printed at the end of the turn is in those rows, so the frame of the `Stop`
33
+ * poll can carry no `upstreamFault` while the turn did fail.
34
+ *
35
+ * So the pane is read again every {@link HOOK_STOP_SETTLE_INTERVAL_MS} until two
36
+ * reads in a row carry the same frame, and that frame is the one judged — by
37
+ * every stage of a poll, not by the fault alone: {@link pollWorktree} judges it
38
+ * as the next poll, so a prompt or a new turn drawn meanwhile is read as one.
39
+ * The bound is {@link HOOK_STOP_SETTLE_MAX_MS}: no re-read starts after it, and
40
+ * a pane still drawing then is judged on the last frame read rather than held.
41
+ * The re-reads ask for a fresh capture ({@link settleCurrentOutputPath}); the
42
+ * poll that saw the `Stop` does not.
43
+ *
44
+ * `--timeout` / `--stall-timeout` bound it too: no interval is slept that the
45
+ * next re-read could not finish within, and each re-read is aborted at the
46
+ * earliest of one interval, the bound and those deadlines — so the verdict
47
+ * comes at most {@link HOOK_STOP_SETTLE_MAX_MS} after the `Stop` poll. The bound
48
+ * is `settleDeadline`, set by {@link readyStage} when it reads the `Stop` poll and
49
+ * shared with the ledger read of {@link faultFrameHasStop}, so time spent there
50
+ * is not given again here. A re-read that is aborted or
51
+ * fails ends the settle on the frame before it (an `ApiError` that is not an
52
+ * abort still ends the wait, as on any poll). Frames that change count as
53
+ * activity for `--stall-timeout`, as on any poll.
54
+ */
55
+ export declare function settleAfterHookStop<T extends CurrentOutputResponse>(poll: PollContext, state: PollState, data: T, settleDeadline: number): Promise<T>;
56
+ /**
57
+ * Whether the agent has reported the end of the turn on a frame that carries an
58
+ * upstream fault, so that frame is judged once settled (Issue #3956).
59
+ *
60
+ * The same two records {@link readyCompletionBasis} reads as `hook_stop`: a
61
+ * `Stop` at or after the adopted turn, or — with no turn adopted — a `Stop`
62
+ * after the newest prompt in the chat ledger. Neither is #1839's case (back at
63
+ * the composer with no `Stop`), whose fault is reported on the spot as before.
64
+ */
65
+ export declare function faultFrameHasStop(poll: PollContext, state: PollState, data: CurrentOutputResponse, settleDeadline: number): Promise<boolean>;
66
+ //# sourceMappingURL=wait-hook-stop-settle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-hook-stop-settle.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-hook-stop-settle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAUhE;;;GAGG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,qBAAqB,EACvE,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,CAAC,EACP,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,CAAC,CAAC,CAyDZ;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,qBAAqB,EAC3B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAuBlB"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ /**
3
+ * wait Command - re-reading the pane after a hook_stop (Issue #3956)
4
+ * Issue #3964: split out of wait.ts; wait.ts re-exports what it exported.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.HOOK_STOP_SETTLE_MAX_MS = exports.HOOK_STOP_SETTLE_INTERVAL_MS = void 0;
8
+ exports.settleCurrentOutputPath = settleCurrentOutputPath;
9
+ exports.settleAfterHookStop = settleAfterHookStop;
10
+ exports.faultFrameHasStop = faultFrameHasStop;
11
+ const api_client_1 = require("../utils/api-client");
12
+ const prompt_1 = require("./prompt");
13
+ const wait_timing_1 = require("./wait-timing");
14
+ const wait_turn_boundary_1 = require("./wait-turn-boundary");
15
+ /**
16
+ * Interval between the re-reads of the pane after a `hook_stop`, under
17
+ * `--fail-on-upstream-fault` (Issue #3956). See {@link settleAfterHookStop}.
18
+ */
19
+ exports.HOOK_STOP_SETTLE_INTERVAL_MS = 500;
20
+ /**
21
+ * Longest `wait` re-reads the pane after a `hook_stop` before judging the last
22
+ * frame it read (Issue #3956). See {@link settleAfterHookStop}.
23
+ */
24
+ exports.HOOK_STOP_SETTLE_MAX_MS = 5000;
25
+ /**
26
+ * The path {@link settleAfterHookStop} re-reads the pane on (Issue #3956):
27
+ * `?fresh=1` past the server's capture cache, whose 5 s TTL would otherwise
28
+ * answer two reads 500 ms apart with the same capture and read a pane still
29
+ * drawing as settled. A server older than the parameter ignores it and answers
30
+ * as before, from the cache.
31
+ */
32
+ function settleCurrentOutputPath(worktreeId, instanceId) {
33
+ return `${(0, prompt_1.observedCurrentOutputPath)(worktreeId, instanceId)}&fresh=1`;
34
+ }
35
+ /**
36
+ * The frame a `hook_stop` completion is judged on, once the pane has settled
37
+ * (Issue #3956).
38
+ *
39
+ * The agent's `Stop` can land before its reply is drawn. Measured 2026-10-27 on
40
+ * codex-cli 0.164.0: `ask` returned on `basis=hook_stop` with the pane ending at
41
+ * row 441–445 of 480, and the last rows were drawn ~3 s later. An upstream fault
42
+ * printed at the end of the turn is in those rows, so the frame of the `Stop`
43
+ * poll can carry no `upstreamFault` while the turn did fail.
44
+ *
45
+ * So the pane is read again every {@link HOOK_STOP_SETTLE_INTERVAL_MS} until two
46
+ * reads in a row carry the same frame, and that frame is the one judged — by
47
+ * every stage of a poll, not by the fault alone: {@link pollWorktree} judges it
48
+ * as the next poll, so a prompt or a new turn drawn meanwhile is read as one.
49
+ * The bound is {@link HOOK_STOP_SETTLE_MAX_MS}: no re-read starts after it, and
50
+ * a pane still drawing then is judged on the last frame read rather than held.
51
+ * The re-reads ask for a fresh capture ({@link settleCurrentOutputPath}); the
52
+ * poll that saw the `Stop` does not.
53
+ *
54
+ * `--timeout` / `--stall-timeout` bound it too: no interval is slept that the
55
+ * next re-read could not finish within, and each re-read is aborted at the
56
+ * earliest of one interval, the bound and those deadlines — so the verdict
57
+ * comes at most {@link HOOK_STOP_SETTLE_MAX_MS} after the `Stop` poll. The bound
58
+ * is `settleDeadline`, set by {@link readyStage} when it reads the `Stop` poll and
59
+ * shared with the ledger read of {@link faultFrameHasStop}, so time spent there
60
+ * is not given again here. A re-read that is aborted or
61
+ * fails ends the settle on the frame before it (an `ApiError` that is not an
62
+ * abort still ends the wait, as on any poll). Frames that change count as
63
+ * activity for `--stall-timeout`, as on any poll.
64
+ */
65
+ async function settleAfterHookStop(poll, state, data, settleDeadline) {
66
+ const { client, worktreeId, options, startTime } = poll;
67
+ const frameOf = (d) => d.fullOutput ?? d.content;
68
+ let latest = data;
69
+ while (Date.now() + exports.HOOK_STOP_SETTLE_INTERVAL_MS <= settleDeadline) {
70
+ if ((0, wait_timing_1.msBeforeDeadlines)(options, startTime, state.lastActivityTime, Date.now()) <= exports.HOOK_STOP_SETTLE_INTERVAL_MS) {
71
+ console.error(`Note: re-reading ${worktreeId} after its stop would pass --timeout/--stall-timeout; ` +
72
+ 'judging the last frame read.');
73
+ return latest;
74
+ }
75
+ await (0, wait_timing_1.sleep)(exports.HOOK_STOP_SETTLE_INTERVAL_MS);
76
+ const readBudgetMs = Math.min(exports.HOOK_STOP_SETTLE_INTERVAL_MS, settleDeadline - Date.now(), (0, wait_timing_1.msBeforeDeadlines)(options, startTime, state.lastActivityTime, Date.now()));
77
+ // Past the bound already (a late timer): no read is started.
78
+ if (readBudgetMs < 0)
79
+ break;
80
+ const controller = new AbortController();
81
+ const abortTimer = setTimeout(() => controller.abort(), readBudgetMs);
82
+ let next;
83
+ try {
84
+ next = await client.get(settleCurrentOutputPath(worktreeId, options.instance), {
85
+ signal: controller.signal,
86
+ });
87
+ }
88
+ catch (error) {
89
+ if (controller.signal.aborted) {
90
+ console.error(`Note: ${worktreeId} did not answer a re-read after its stop within ${readBudgetMs}ms; ` +
91
+ 'judging the last frame read.');
92
+ return latest;
93
+ }
94
+ if (error instanceof api_client_1.ApiError)
95
+ throw error;
96
+ console.error(`Note: could not re-read ${worktreeId} after its stop ` +
97
+ `(${error instanceof Error ? error.message : String(error)}); judging the last frame read.`);
98
+ return latest;
99
+ }
100
+ finally {
101
+ clearTimeout(abortTimer);
102
+ }
103
+ if (next.content !== state.lastContent) {
104
+ state.lastContent = next.content;
105
+ state.lastActivityTime = Date.now();
106
+ }
107
+ const settled = frameOf(next) === frameOf(latest);
108
+ latest = next;
109
+ if (settled)
110
+ return latest;
111
+ }
112
+ console.error(`Note: ${worktreeId} was still drawing ${exports.HOOK_STOP_SETTLE_MAX_MS / 1000}s after its stop; ` +
113
+ 'judging the last frame read.');
114
+ return latest;
115
+ }
116
+ /**
117
+ * Whether the agent has reported the end of the turn on a frame that carries an
118
+ * upstream fault, so that frame is judged once settled (Issue #3956).
119
+ *
120
+ * The same two records {@link readyCompletionBasis} reads as `hook_stop`: a
121
+ * `Stop` at or after the adopted turn, or — with no turn adopted — a `Stop`
122
+ * after the newest prompt in the chat ledger. Neither is #1839's case (back at
123
+ * the composer with no `Stop`), whose fault is reported on the spot as before.
124
+ */
125
+ async function faultFrameHasStop(poll, state, data, settleDeadline) {
126
+ if (state.turnStartedAt !== null)
127
+ return (0, wait_turn_boundary_1.turnSettled)(data, state.turnStartedAt);
128
+ // No `Stop` on record at all: nothing the ledger says could make one, so it
129
+ // is not asked and the fault is reported on the spot.
130
+ if (data.lastStopEventAt == null)
131
+ return false;
132
+ if (!state.promptLedgerReadable || !(0, wait_turn_boundary_1.reportsTurnBoundaries)(data))
133
+ return false;
134
+ // Bounded like the settle it decides on: a ledger that does not answer must
135
+ // not hold an exit 11 past --timeout, nor without one past the settle's bound.
136
+ const budgetMs = Math.min(settleDeadline - Date.now(), (0, wait_timing_1.msBeforeDeadlines)(poll.options, poll.startTime, state.lastActivityTime, Date.now()));
137
+ if (budgetMs <= 0)
138
+ return false;
139
+ const controller = new AbortController();
140
+ const abortTimer = setTimeout(() => controller.abort(), budgetMs);
141
+ let ledger;
142
+ try {
143
+ ledger = await (0, wait_turn_boundary_1.readNewestPromptAt)(poll.client, poll.worktreeId, poll.options, data, controller.signal);
144
+ }
145
+ finally {
146
+ clearTimeout(abortTimer);
147
+ }
148
+ state.promptLedgerReadable = ledger.readable;
149
+ return ledger.readable && ledger.submittedAt !== null && !(0, wait_turn_boundary_1.outstandingPrompt)(data, ledger.submittedAt);
150
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * wait Command - resolving --instance per worktree (Issue #2376)
3
+ * Issue #3964: split out of wait.ts.
4
+ */
5
+ import type { WaitOptions } from '../types';
6
+ import type { ApiClient } from '../utils/api-client';
7
+ /**
8
+ * `options` with `--instance` resolved from a selector to an instance ID
9
+ * (Issue #2376).
10
+ *
11
+ * `wait` polls `/current-output?instance=`, which matches instance IDs and
12
+ * nothing else, so an alias that reached it would filter to no session and the
13
+ * wait would report on the worktree default instead — the exact silent
14
+ * wrong-session failure Issue #1638 catalogued for `--agent`.
15
+ *
16
+ * @param client - API client
17
+ * @param worktreeId - Worktree the selector is resolved against
18
+ * @param options - The options as given
19
+ */
20
+ export declare function resolveWaitInstance<T extends WaitOptions>(client: ApiClient, worktreeId: string, options: T): Promise<T>;
21
+ //# sourceMappingURL=wait-instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-instance.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-instance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAC7D,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,CAAC,CAAC,CAkBZ"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * wait Command - resolving --instance per worktree (Issue #2376)
4
+ * Issue #3964: split out of wait.ts.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.resolveWaitInstance = resolveWaitInstance;
8
+ const types_1 = require("../types");
9
+ const instances_1 = require("./instances");
10
+ /**
11
+ * `options` with `--instance` resolved from a selector to an instance ID
12
+ * (Issue #2376).
13
+ *
14
+ * `wait` polls `/current-output?instance=`, which matches instance IDs and
15
+ * nothing else, so an alias that reached it would filter to no session and the
16
+ * wait would report on the worktree default instead — the exact silent
17
+ * wrong-session failure Issue #1638 catalogued for `--agent`.
18
+ *
19
+ * @param client - API client
20
+ * @param worktreeId - Worktree the selector is resolved against
21
+ * @param options - The options as given
22
+ */
23
+ async function resolveWaitInstance(client, worktreeId, options) {
24
+ if (!options.instance)
25
+ return options;
26
+ try {
27
+ const target = await (0, instances_1.resolveInstanceTarget)(client, worktreeId, options.instance, undefined);
28
+ return { ...options, instance: target.instanceId ?? options.instance };
29
+ }
30
+ catch (error) {
31
+ // Degrade to the pre-#2376 behaviour rather than failing the wait. An
32
+ // instance ID needs no resolution to reach `/current-output?instance=` —
33
+ // resolution exists here so that an ALIAS can — so a resolver that cannot
34
+ // be reached costs alias support for this call and nothing else. Failing
35
+ // instead would turn a reachable session into a non-zero exit for an
36
+ // orchestrator that has been waiting on it correctly for two years.
37
+ console.error(`Warning: could not resolve --instance '${options.instance}' `
38
+ + `(${(0, types_1.getErrorMessage)(error)}); using it as an instance id.`);
39
+ return options;
40
+ }
41
+ }