commandmate 0.49.1 → 0.49.3

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 (819) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +246 -243
  3. package/.next/app-path-routes-manifest.json +18 -17
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +12 -12
  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.js +1 -1
  20. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  21. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  23. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  24. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  31. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  32. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  34. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  35. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  37. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/push/escalation/route.js +1 -1
  42. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  43. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  45. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/push/vapid/route.js +1 -1
  47. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  48. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/relays/[relayId]/cancel/route.js +4 -1
  50. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  51. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/relays/[relayId]/resolve/route.js +1 -0
  53. package/.next/server/app/api/relays/[relayId]/resolve/route.js.nft.json +1 -0
  54. package/.next/server/app/api/relays/[relayId]/resolve/route_client-reference-manifest.js +1 -0
  55. package/.next/server/app/api/relays/[relayId]/route.js +1 -1
  56. package/.next/server/app/api/relays/[relayId]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/relays/[relayId]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/relays/route.js +4 -1
  59. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  60. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  64. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  65. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/repositories/clone/route.js +1 -1
  67. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  68. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/repositories/restore/route.js +1 -1
  71. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  72. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/route.js +1 -1
  74. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  75. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/repositories/scan/route.js +1 -1
  77. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  78. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/repositories/sync/route.js +1 -1
  80. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  81. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  84. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  85. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  96. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  100. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/verification/runs/route.js +1 -1
  102. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  105. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  108. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  111. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  117. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  118. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  121. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  124. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  130. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  131. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  183. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +2 -1
  188. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  189. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  192. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  194. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  195. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
  218. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  223. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  226. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  228. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  229. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +2 -2
  231. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  234. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  235. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -144
  238. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +3 -3
  241. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  242. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  255. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  259. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  265. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  268. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  271. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  279. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  282. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  289. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/route.js +1 -1
  291. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  292. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  293. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  294. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  296. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  297. package/.next/server/app/page_client-reference-manifest.js +1 -1
  298. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  300. package/.next/server/app/review/page.js +1 -1
  301. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  302. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  303. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  304. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  305. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  306. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  307. package/.next/server/app/worktrees/[id]/page.js +10 -10
  308. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  309. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  310. package/.next/server/app-paths-manifest.json +18 -17
  311. package/.next/server/chunks/1308.js +1 -0
  312. package/.next/server/chunks/1501.js +5 -4
  313. package/.next/server/chunks/1656.js +2 -2
  314. package/.next/server/chunks/1957.js +2 -0
  315. package/.next/server/chunks/2119.js +1 -1
  316. package/.next/server/chunks/2445.js +1 -1
  317. package/.next/server/chunks/2897.js +1 -0
  318. package/.next/server/chunks/3417.js +1 -0
  319. package/.next/server/chunks/3505.js +1 -1
  320. package/.next/server/chunks/3801.js +8 -8
  321. package/.next/server/chunks/4207.js +1 -1
  322. package/.next/server/chunks/4490.js +1 -0
  323. package/.next/server/chunks/4911.js +1 -0
  324. package/.next/server/chunks/4936.js +1 -0
  325. package/.next/server/chunks/5209.js +2 -1
  326. package/.next/server/chunks/5350.js +212 -0
  327. package/.next/server/chunks/5354.js +1 -1
  328. package/.next/server/chunks/6130.js +1 -1
  329. package/.next/server/chunks/6401.js +1 -1
  330. package/.next/server/chunks/7023.js +3 -3
  331. package/.next/server/chunks/7905.js +1 -1
  332. package/.next/server/chunks/7926.js +1 -0
  333. package/.next/server/chunks/8581.js +15 -15
  334. package/.next/server/chunks/8728.js +2 -2
  335. package/.next/server/chunks/8782.js +1 -1
  336. package/.next/server/chunks/8807.js +89 -88
  337. package/.next/server/chunks/8918.js +3 -3
  338. package/.next/server/chunks/9169.js +1 -0
  339. package/.next/server/chunks/9390.js +1 -1
  340. package/.next/server/chunks/9584.js +1 -1
  341. package/.next/server/chunks/9627.js +5 -5
  342. package/.next/server/chunks/9702.js +1 -0
  343. package/.next/server/chunks/9731.js +3 -3
  344. package/.next/server/middleware-manifest.json +5 -5
  345. package/.next/server/pages/500.html +1 -1
  346. package/.next/server/server-reference-manifest.json +1 -1
  347. package/.next/static/chunks/{2407-675ba6b21844dc3b.js → 2407-87ec01332344ec2b.js} +1 -1
  348. package/.next/static/chunks/3931-3ef48b8d97357282.js +1 -0
  349. package/.next/static/chunks/5794-7975b8e51e731b19.js +1 -0
  350. package/.next/static/chunks/6966-d8dc6032410ffaba.js +1 -0
  351. package/.next/static/chunks/7197-ed3b3d99ac3bd450.js +1 -0
  352. package/.next/static/chunks/7636-a48cf0f7110250c5.js +1 -0
  353. package/.next/static/chunks/app/api/agents/update/route-96fc12d400b49b13.js +1 -0
  354. package/.next/static/chunks/app/api/agents/versions/route-96fc12d400b49b13.js +1 -0
  355. package/.next/static/chunks/app/api/app/release-notes/route-96fc12d400b49b13.js +1 -0
  356. package/.next/static/chunks/app/api/app/update/route-96fc12d400b49b13.js +1 -0
  357. package/.next/static/chunks/app/api/app/update-check/route-96fc12d400b49b13.js +1 -0
  358. package/.next/static/chunks/app/api/auth/login/route-96fc12d400b49b13.js +1 -0
  359. package/.next/static/chunks/app/api/auth/logout/route-96fc12d400b49b13.js +1 -0
  360. package/.next/static/chunks/app/api/auth/status/route-96fc12d400b49b13.js +1 -0
  361. package/.next/static/chunks/app/api/capabilities/route-96fc12d400b49b13.js +1 -0
  362. package/.next/static/chunks/app/api/daily-summary/route-96fc12d400b49b13.js +1 -0
  363. package/.next/static/chunks/app/api/daily-summary/status/route-96fc12d400b49b13.js +1 -0
  364. package/.next/static/chunks/app/api/external-apps/[id]/health/route-96fc12d400b49b13.js +1 -0
  365. package/.next/static/chunks/app/api/external-apps/[id]/route-96fc12d400b49b13.js +1 -0
  366. package/.next/static/chunks/app/api/external-apps/route-96fc12d400b49b13.js +1 -0
  367. package/.next/static/chunks/app/api/fs/browse/route-96fc12d400b49b13.js +1 -0
  368. package/.next/static/chunks/app/api/fs/recent-paths/route-96fc12d400b49b13.js +1 -0
  369. package/.next/static/chunks/app/api/hooks/agent-event/route-96fc12d400b49b13.js +1 -0
  370. package/.next/static/chunks/app/api/hooks/claude-done/route-96fc12d400b49b13.js +1 -0
  371. package/.next/static/chunks/app/api/hooks/permission-request/route-96fc12d400b49b13.js +1 -0
  372. package/.next/static/chunks/app/api/metrics/vibe/route-96fc12d400b49b13.js +1 -0
  373. package/.next/static/chunks/app/api/ollama/models/route-96fc12d400b49b13.js +1 -0
  374. package/.next/static/chunks/app/api/push/escalation/route-96fc12d400b49b13.js +1 -0
  375. package/.next/static/chunks/app/api/push/subscriptions/route-96fc12d400b49b13.js +1 -0
  376. package/.next/static/chunks/app/api/push/vapid/route-96fc12d400b49b13.js +1 -0
  377. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-96fc12d400b49b13.js +1 -0
  378. package/.next/static/chunks/app/api/relays/[relayId]/resolve/route-96fc12d400b49b13.js +1 -0
  379. package/.next/static/chunks/app/api/relays/[relayId]/route-96fc12d400b49b13.js +1 -0
  380. package/.next/static/chunks/app/api/relays/route-96fc12d400b49b13.js +1 -0
  381. package/.next/static/chunks/app/api/remote/pair/route-96fc12d400b49b13.js +1 -0
  382. package/.next/static/chunks/app/api/repositories/[id]/route-96fc12d400b49b13.js +1 -0
  383. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-96fc12d400b49b13.js +1 -0
  384. package/.next/static/chunks/app/api/repositories/clone/route-96fc12d400b49b13.js +1 -0
  385. package/.next/static/chunks/app/api/repositories/excluded/route-96fc12d400b49b13.js +1 -0
  386. package/.next/static/chunks/app/api/repositories/restore/route-96fc12d400b49b13.js +1 -0
  387. package/.next/static/chunks/app/api/repositories/route-96fc12d400b49b13.js +1 -0
  388. package/.next/static/chunks/app/api/repositories/scan/route-96fc12d400b49b13.js +1 -0
  389. package/.next/static/chunks/app/api/repositories/sync/route-96fc12d400b49b13.js +1 -0
  390. package/.next/static/chunks/app/api/repositories/validate-path/route-96fc12d400b49b13.js +1 -0
  391. package/.next/static/chunks/app/api/settings/default-agents/route-96fc12d400b49b13.js +1 -0
  392. package/.next/static/chunks/app/api/settings/default-surface-mode/route-96fc12d400b49b13.js +1 -0
  393. package/.next/static/chunks/app/api/sidebar/group-order/route-96fc12d400b49b13.js +1 -0
  394. package/.next/static/chunks/app/api/skills/[id]/route-96fc12d400b49b13.js +1 -0
  395. package/.next/static/chunks/app/api/skills/installations/route-96fc12d400b49b13.js +1 -0
  396. package/.next/static/chunks/app/api/skills/operations/route-96fc12d400b49b13.js +1 -0
  397. package/.next/static/chunks/app/api/skills/reindex/route-96fc12d400b49b13.js +1 -0
  398. package/.next/static/chunks/app/api/skills/route-96fc12d400b49b13.js +1 -0
  399. package/.next/static/chunks/app/api/slash-commands/route-96fc12d400b49b13.js +1 -0
  400. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-96fc12d400b49b13.js +1 -0
  401. package/.next/static/chunks/app/api/tasks/[taskId]/route-96fc12d400b49b13.js +1 -0
  402. package/.next/static/chunks/app/api/templates/[id]/route-96fc12d400b49b13.js +1 -0
  403. package/.next/static/chunks/app/api/templates/route-96fc12d400b49b13.js +1 -0
  404. package/.next/static/chunks/app/api/verification/runs/[runId]/route-96fc12d400b49b13.js +1 -0
  405. package/.next/static/chunks/app/api/verification/runs/route-96fc12d400b49b13.js +1 -0
  406. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-96fc12d400b49b13.js +1 -0
  407. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-96fc12d400b49b13.js +1 -0
  408. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-96fc12d400b49b13.js +1 -0
  409. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-96fc12d400b49b13.js +1 -0
  410. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-96fc12d400b49b13.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-96fc12d400b49b13.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-96fc12d400b49b13.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-96fc12d400b49b13.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/env/route-96fc12d400b49b13.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-96fc12d400b49b13.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-96fc12d400b49b13.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-96fc12d400b49b13.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-96fc12d400b49b13.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-96fc12d400b49b13.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-96fc12d400b49b13.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-96fc12d400b49b13.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-96fc12d400b49b13.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-96fc12d400b49b13.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-96fc12d400b49b13.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-96fc12d400b49b13.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-96fc12d400b49b13.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-96fc12d400b49b13.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-96fc12d400b49b13.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-96fc12d400b49b13.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-96fc12d400b49b13.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-96fc12d400b49b13.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-96fc12d400b49b13.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-96fc12d400b49b13.js +1 -0
  434. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-96fc12d400b49b13.js +1 -0
  435. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-96fc12d400b49b13.js +1 -0
  436. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-96fc12d400b49b13.js +1 -0
  437. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-96fc12d400b49b13.js +1 -0
  438. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-96fc12d400b49b13.js +1 -0
  439. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-96fc12d400b49b13.js +1 -0
  440. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-96fc12d400b49b13.js +1 -0
  441. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-96fc12d400b49b13.js +1 -0
  442. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-96fc12d400b49b13.js +1 -0
  443. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-96fc12d400b49b13.js +1 -0
  444. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-96fc12d400b49b13.js +1 -0
  445. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-96fc12d400b49b13.js +1 -0
  446. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-96fc12d400b49b13.js +1 -0
  447. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-96fc12d400b49b13.js +1 -0
  448. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-96fc12d400b49b13.js +1 -0
  449. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-96fc12d400b49b13.js +1 -0
  450. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-96fc12d400b49b13.js +1 -0
  451. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-96fc12d400b49b13.js +1 -0
  452. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-96fc12d400b49b13.js +1 -0
  453. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-96fc12d400b49b13.js +1 -0
  454. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-96fc12d400b49b13.js +1 -0
  455. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-96fc12d400b49b13.js +1 -0
  456. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-96fc12d400b49b13.js +1 -0
  457. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-96fc12d400b49b13.js +1 -0
  458. package/.next/static/chunks/app/api/worktrees/[id]/route-96fc12d400b49b13.js +1 -0
  459. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-96fc12d400b49b13.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-96fc12d400b49b13.js +1 -0
  461. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-96fc12d400b49b13.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/search/route-96fc12d400b49b13.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/send/route-96fc12d400b49b13.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-96fc12d400b49b13.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-96fc12d400b49b13.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-96fc12d400b49b13.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-96fc12d400b49b13.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-96fc12d400b49b13.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-96fc12d400b49b13.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-96fc12d400b49b13.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-96fc12d400b49b13.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-96fc12d400b49b13.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-96fc12d400b49b13.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-96fc12d400b49b13.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-96fc12d400b49b13.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-96fc12d400b49b13.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-96fc12d400b49b13.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-96fc12d400b49b13.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-96fc12d400b49b13.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-96fc12d400b49b13.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-96fc12d400b49b13.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-96fc12d400b49b13.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-96fc12d400b49b13.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-96fc12d400b49b13.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-96fc12d400b49b13.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-96fc12d400b49b13.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-96fc12d400b49b13.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-96fc12d400b49b13.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-96fc12d400b49b13.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/route-96fc12d400b49b13.js +1 -0
  491. package/.next/static/chunks/app/layout-b9d8aef70e4f17b2.js +1 -0
  492. package/.next/static/chunks/app/manifest.webmanifest/route-96fc12d400b49b13.js +1 -0
  493. package/.next/static/chunks/app/more/page-ff5af5ca48774c89.js +1 -0
  494. package/.next/static/chunks/app/page-b4863bfe0452e09d.js +1 -0
  495. package/.next/static/chunks/app/proxy/[...path]/route-96fc12d400b49b13.js +1 -0
  496. package/.next/static/chunks/app/review/page-ff3efb96fdf9bb4b.js +1 -0
  497. package/.next/static/chunks/app/sessions/{page-890fd50ec9739973.js → page-c6eb7c02db2f4c80.js} +1 -1
  498. package/.next/static/chunks/app/worktrees/[id]/layout-96fc12d400b49b13.js +1 -0
  499. package/.next/static/chunks/app/worktrees/[id]/page-f6a151304860b549.js +1 -0
  500. package/.next/trace +13 -13
  501. package/.next/types/app/api/relays/[relayId]/resolve/route.ts +347 -0
  502. package/.next/types/routes.d.ts +2 -1
  503. package/.next/types/validator.ts +9 -0
  504. package/dist/cli/commands/ask.d.ts.map +1 -1
  505. package/dist/cli/commands/ask.js +56 -5
  506. package/dist/cli/commands/attach.d.ts +4 -1
  507. package/dist/cli/commands/attach.d.ts.map +1 -1
  508. package/dist/cli/commands/attach.js +19 -7
  509. package/dist/cli/commands/command-target.d.ts +7 -0
  510. package/dist/cli/commands/command-target.d.ts.map +1 -1
  511. package/dist/cli/commands/command-target.js +10 -0
  512. package/dist/cli/commands/instances.d.ts.map +1 -1
  513. package/dist/cli/commands/instances.js +38 -2
  514. package/dist/cli/commands/message-dispatch.d.ts +17 -3
  515. package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
  516. package/dist/cli/commands/message-dispatch.js +14 -8
  517. package/dist/cli/commands/prompt.d.ts.map +1 -1
  518. package/dist/cli/commands/prompt.js +2 -1
  519. package/dist/cli/commands/relays.d.ts +4 -1
  520. package/dist/cli/commands/relays.d.ts.map +1 -1
  521. package/dist/cli/commands/relays.js +146 -8
  522. package/dist/cli/commands/report.d.ts +7 -2
  523. package/dist/cli/commands/report.d.ts.map +1 -1
  524. package/dist/cli/commands/report.js +19 -6
  525. package/dist/cli/commands/respond-strict.d.ts.map +1 -1
  526. package/dist/cli/commands/respond-strict.js +29 -5
  527. package/dist/cli/commands/respond.d.ts +2 -2
  528. package/dist/cli/commands/respond.d.ts.map +1 -1
  529. package/dist/cli/commands/respond.js +40 -37
  530. package/dist/cli/commands/send.d.ts.map +1 -1
  531. package/dist/cli/commands/send.js +8 -4
  532. package/dist/cli/commands/task.d.ts +22 -0
  533. package/dist/cli/commands/task.d.ts.map +1 -1
  534. package/dist/cli/commands/task.js +26 -18
  535. package/dist/cli/commands/wait-instance.d.ts +9 -1
  536. package/dist/cli/commands/wait-instance.d.ts.map +1 -1
  537. package/dist/cli/commands/wait-instance.js +15 -0
  538. package/dist/cli/commands/wait-poll-state.d.ts +18 -0
  539. package/dist/cli/commands/wait-poll-state.d.ts.map +1 -1
  540. package/dist/cli/commands/wait-verify.d.ts +2 -1
  541. package/dist/cli/commands/wait-verify.d.ts.map +1 -1
  542. package/dist/cli/commands/wait-verify.js +5 -1
  543. package/dist/cli/commands/wait.d.ts.map +1 -1
  544. package/dist/cli/commands/wait.js +37 -13
  545. package/dist/cli/commands/whoami.d.ts.map +1 -1
  546. package/dist/cli/commands/whoami.js +3 -1
  547. package/dist/cli/docs/agent-operations.d.ts +1 -1
  548. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  549. package/dist/cli/docs/agent-operations.js +1 -0
  550. package/dist/cli/types/api-responses.d.ts +55 -1
  551. package/dist/cli/types/api-responses.d.ts.map +1 -1
  552. package/dist/cli/utils/api-client-deadline.d.ts +28 -0
  553. package/dist/cli/utils/api-client-deadline.d.ts.map +1 -0
  554. package/dist/cli/utils/api-client-deadline.js +46 -0
  555. package/dist/cli/utils/api-client-errors.d.ts +118 -0
  556. package/dist/cli/utils/api-client-errors.d.ts.map +1 -0
  557. package/dist/cli/utils/api-client-errors.js +210 -0
  558. package/dist/cli/utils/api-client.d.ts +33 -109
  559. package/dist/cli/utils/api-client.d.ts.map +1 -1
  560. package/dist/cli/utils/api-client.js +202 -227
  561. package/dist/cli/utils/follow-up-command.d.ts +38 -0
  562. package/dist/cli/utils/follow-up-command.d.ts.map +1 -0
  563. package/dist/cli/utils/follow-up-command.js +57 -0
  564. package/dist/cli/utils/reply-ledger.d.ts +1 -1
  565. package/dist/cli/utils/reply-ledger.d.ts.map +1 -1
  566. package/dist/cli/utils/reply-ledger.js +7 -2
  567. package/dist/cli/utils/server-capabilities.d.ts +18 -0
  568. package/dist/cli/utils/server-capabilities.d.ts.map +1 -1
  569. package/dist/cli/utils/server-capabilities.js +36 -3
  570. package/dist/cli/utils/session-target.d.ts +1 -1
  571. package/dist/cli/utils/session-target.d.ts.map +1 -1
  572. package/dist/cli/utils/session-target.js +3 -0
  573. package/dist/cli/utils/verify-runner.d.ts +7 -0
  574. package/dist/cli/utils/verify-runner.d.ts.map +1 -1
  575. package/dist/cli/utils/verify-runner.js +51 -15
  576. package/dist/lib/cli-tools/session-name.d.ts.map +1 -1
  577. package/dist/lib/cli-tools/session-name.js +11 -3
  578. package/dist/lib/cli-tools/types.d.ts +6 -0
  579. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  580. package/dist/lib/session/send-attempt-types.d.ts +25 -0
  581. package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
  582. package/dist/lib/session/send-attempt-types.js +10 -1
  583. package/dist/lib/verification/session-kill-ledger.d.ts +110 -0
  584. package/dist/lib/verification/session-kill-ledger.d.ts.map +1 -0
  585. package/dist/lib/verification/session-kill-ledger.js +174 -0
  586. package/dist/server/locales/en/worktree.json +9 -0
  587. package/dist/server/locales/ja/worktree.json +9 -0
  588. package/dist/server/src/config/cli-tool-timing-config.js +1 -7
  589. package/dist/server/src/lib/auto-yes-poller.js +5 -1
  590. package/dist/server/src/lib/cli-tools/antigravity.js +5 -2
  591. package/dist/server/src/lib/cli-tools/base.js +39 -0
  592. package/dist/server/src/lib/cli-tools/claude.js +8 -2
  593. package/dist/server/src/lib/cli-tools/codex.js +7 -4
  594. package/dist/server/src/lib/cli-tools/command-code.js +14 -18
  595. package/dist/server/src/lib/cli-tools/copilot.js +159 -28
  596. package/dist/server/src/lib/cli-tools/gemini.js +10 -2
  597. package/dist/server/src/lib/cli-tools/launch-keys.js +39 -0
  598. package/dist/server/src/lib/cli-tools/opencode-v2.js +6 -2
  599. package/dist/server/src/lib/cli-tools/opencode.js +162 -8
  600. package/dist/server/src/lib/cli-tools/prompt-wait-dialog.js +115 -0
  601. package/dist/server/src/lib/cli-tools/session-name.js +11 -3
  602. package/dist/server/src/lib/cli-tools/submit-composer-read.js +57 -14
  603. package/dist/server/src/lib/cli-tools/submit-verified-sender-composer.js +78 -0
  604. package/dist/server/src/lib/cli-tools/submit-verified-sender-lock.js +116 -0
  605. package/dist/server/src/lib/cli-tools/submit-verified-sender-report.js +250 -0
  606. package/dist/server/src/lib/cli-tools/submit-verified-sender-shared.js +106 -0
  607. package/dist/server/src/lib/cli-tools/submit-verified-sender.js +143 -187
  608. package/dist/server/src/lib/cli-tools/vibe-local.js +91 -2
  609. package/dist/server/src/lib/db/chat-db.js +14 -1
  610. package/dist/server/src/lib/db/db-instance.js +114 -2
  611. package/dist/server/src/lib/db/db-migration-path.js +63 -2
  612. package/dist/server/src/lib/db/migrations/index.js +2 -0
  613. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  614. package/dist/server/src/lib/db/migrations/v63-session-relays-delivery-attempt.js +61 -0
  615. package/dist/server/src/lib/db/relay-bind-db-base.js +89 -0
  616. package/dist/server/src/lib/db/relay-bind-db-delivery.js +223 -0
  617. package/dist/server/src/lib/db/relay-bind-db-pending.js +183 -0
  618. package/dist/server/src/lib/db/relay-bind-db.js +88 -167
  619. package/dist/server/src/lib/db/relay-db-base.js +20 -0
  620. package/dist/server/src/lib/db/relay-db-count.js +49 -0
  621. package/dist/server/src/lib/db/relay-db-delivery.js +104 -0
  622. package/dist/server/src/lib/db/relay-db-hold.js +250 -0
  623. package/dist/server/src/lib/db/relay-db.js +33 -92
  624. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +5 -4
  625. package/dist/server/src/lib/detection/tools/opencode/composer-own-text.js +119 -0
  626. package/dist/server/src/lib/detection/tools/opencode/readiness.js +62 -0
  627. package/dist/server/src/lib/detection/tools/vibe-local/readiness.js +70 -0
  628. package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +2 -3
  629. package/dist/server/src/lib/prompt-answer-errors.js +76 -2
  630. package/dist/server/src/lib/relay/relay-bound-reply.js +20 -9
  631. package/dist/server/src/lib/relay/relay-delivery.js +359 -79
  632. package/dist/server/src/lib/relay/relay-messages.js +13 -0
  633. package/dist/server/src/lib/relay/relay-system-line.js +28 -15
  634. package/dist/server/src/lib/relay/types.js +14 -2
  635. package/dist/server/src/lib/session/agent-event-state.js +4 -0
  636. package/dist/server/src/lib/session/agent-session-lifecycle.js +6 -1
  637. package/dist/server/src/lib/session/claude-session.js +26 -7
  638. package/dist/server/src/lib/session/current-output-builder.js +7 -3
  639. package/dist/server/src/lib/session/current-output-history-writers.js +1 -1
  640. package/dist/server/src/lib/session/instance-input-lock.js +47 -2
  641. package/dist/server/src/lib/session/prompt-submit-receipt.js +224 -0
  642. package/dist/server/src/lib/session/prompt-waiting-guard.js +16 -3
  643. package/dist/server/src/lib/session/respond-target.js +82 -0
  644. package/dist/server/src/lib/session/send-attempt-state.js +177 -2
  645. package/dist/server/src/lib/session/send-attempt-types.js +10 -1
  646. package/dist/server/src/lib/session/send-user-message.js +80 -8
  647. package/dist/server/src/lib/session/session-launch-flight.js +243 -0
  648. package/dist/server/src/lib/session/session-starting-state.js +40 -4
  649. package/dist/server/src/lib/session/structured-prompt.js +17 -9
  650. package/dist/server/src/lib/session/waiting-episode-binding.js +4 -2
  651. package/dist/server/src/lib/session/worktree-session-reconcile.js +10 -0
  652. package/dist/server/src/lib/session-cleanup.js +32 -0
  653. package/dist/server/src/lib/session-key-sender.js +6 -28
  654. package/dist/server/src/lib/verification/env-clean-gate.js +129 -0
  655. package/dist/server/src/lib/verification/env-snapshot.js +11 -2
  656. package/dist/server/src/lib/verification/session-kill-ledger.js +174 -0
  657. package/package.json +5 -1
  658. package/release-notes/0.49.2.json +49 -0
  659. package/release-notes/0.49.3.json +52 -0
  660. package/.next/server/chunks/2422.js +0 -1
  661. package/.next/server/chunks/3773.js +0 -1
  662. package/.next/server/chunks/5630.js +0 -1
  663. package/.next/server/chunks/5775.js +0 -1
  664. package/.next/server/chunks/6808.js +0 -4
  665. package/.next/server/chunks/7604.js +0 -2
  666. package/.next/server/chunks/9198.js +0 -144
  667. package/.next/static/chunks/3931-1a1abab16248f14d.js +0 -1
  668. package/.next/static/chunks/4768-ad6f82f034f21eae.js +0 -1
  669. package/.next/static/chunks/5794-80ac3f06f098ea29.js +0 -1
  670. package/.next/static/chunks/6654-f3534f35f16644bc.js +0 -1
  671. package/.next/static/chunks/7665-e9ef6e0a85b9fa49.js +0 -1
  672. package/.next/static/chunks/8606-ce17ffa77f39608e.js +0 -1
  673. package/.next/static/chunks/app/api/agents/update/route-a4f129c451de7859.js +0 -1
  674. package/.next/static/chunks/app/api/agents/versions/route-a4f129c451de7859.js +0 -1
  675. package/.next/static/chunks/app/api/app/release-notes/route-a4f129c451de7859.js +0 -1
  676. package/.next/static/chunks/app/api/app/update/route-a4f129c451de7859.js +0 -1
  677. package/.next/static/chunks/app/api/app/update-check/route-a4f129c451de7859.js +0 -1
  678. package/.next/static/chunks/app/api/auth/login/route-a4f129c451de7859.js +0 -1
  679. package/.next/static/chunks/app/api/auth/logout/route-a4f129c451de7859.js +0 -1
  680. package/.next/static/chunks/app/api/auth/status/route-a4f129c451de7859.js +0 -1
  681. package/.next/static/chunks/app/api/capabilities/route-a4f129c451de7859.js +0 -1
  682. package/.next/static/chunks/app/api/daily-summary/route-a4f129c451de7859.js +0 -1
  683. package/.next/static/chunks/app/api/daily-summary/status/route-a4f129c451de7859.js +0 -1
  684. package/.next/static/chunks/app/api/external-apps/[id]/health/route-a4f129c451de7859.js +0 -1
  685. package/.next/static/chunks/app/api/external-apps/[id]/route-a4f129c451de7859.js +0 -1
  686. package/.next/static/chunks/app/api/external-apps/route-a4f129c451de7859.js +0 -1
  687. package/.next/static/chunks/app/api/fs/browse/route-a4f129c451de7859.js +0 -1
  688. package/.next/static/chunks/app/api/fs/recent-paths/route-a4f129c451de7859.js +0 -1
  689. package/.next/static/chunks/app/api/hooks/agent-event/route-a4f129c451de7859.js +0 -1
  690. package/.next/static/chunks/app/api/hooks/claude-done/route-a4f129c451de7859.js +0 -1
  691. package/.next/static/chunks/app/api/hooks/permission-request/route-a4f129c451de7859.js +0 -1
  692. package/.next/static/chunks/app/api/metrics/vibe/route-a4f129c451de7859.js +0 -1
  693. package/.next/static/chunks/app/api/ollama/models/route-a4f129c451de7859.js +0 -1
  694. package/.next/static/chunks/app/api/push/escalation/route-a4f129c451de7859.js +0 -1
  695. package/.next/static/chunks/app/api/push/subscriptions/route-a4f129c451de7859.js +0 -1
  696. package/.next/static/chunks/app/api/push/vapid/route-a4f129c451de7859.js +0 -1
  697. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-a4f129c451de7859.js +0 -1
  698. package/.next/static/chunks/app/api/relays/[relayId]/route-a4f129c451de7859.js +0 -1
  699. package/.next/static/chunks/app/api/relays/route-a4f129c451de7859.js +0 -1
  700. package/.next/static/chunks/app/api/remote/pair/route-a4f129c451de7859.js +0 -1
  701. package/.next/static/chunks/app/api/repositories/[id]/route-a4f129c451de7859.js +0 -1
  702. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-a4f129c451de7859.js +0 -1
  703. package/.next/static/chunks/app/api/repositories/clone/route-a4f129c451de7859.js +0 -1
  704. package/.next/static/chunks/app/api/repositories/excluded/route-a4f129c451de7859.js +0 -1
  705. package/.next/static/chunks/app/api/repositories/restore/route-a4f129c451de7859.js +0 -1
  706. package/.next/static/chunks/app/api/repositories/route-a4f129c451de7859.js +0 -1
  707. package/.next/static/chunks/app/api/repositories/scan/route-a4f129c451de7859.js +0 -1
  708. package/.next/static/chunks/app/api/repositories/sync/route-a4f129c451de7859.js +0 -1
  709. package/.next/static/chunks/app/api/repositories/validate-path/route-a4f129c451de7859.js +0 -1
  710. package/.next/static/chunks/app/api/settings/default-agents/route-a4f129c451de7859.js +0 -1
  711. package/.next/static/chunks/app/api/settings/default-surface-mode/route-a4f129c451de7859.js +0 -1
  712. package/.next/static/chunks/app/api/sidebar/group-order/route-a4f129c451de7859.js +0 -1
  713. package/.next/static/chunks/app/api/skills/[id]/route-a4f129c451de7859.js +0 -1
  714. package/.next/static/chunks/app/api/skills/installations/route-a4f129c451de7859.js +0 -1
  715. package/.next/static/chunks/app/api/skills/operations/route-a4f129c451de7859.js +0 -1
  716. package/.next/static/chunks/app/api/skills/reindex/route-a4f129c451de7859.js +0 -1
  717. package/.next/static/chunks/app/api/skills/route-a4f129c451de7859.js +0 -1
  718. package/.next/static/chunks/app/api/slash-commands/route-a4f129c451de7859.js +0 -1
  719. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-a4f129c451de7859.js +0 -1
  720. package/.next/static/chunks/app/api/tasks/[taskId]/route-a4f129c451de7859.js +0 -1
  721. package/.next/static/chunks/app/api/templates/[id]/route-a4f129c451de7859.js +0 -1
  722. package/.next/static/chunks/app/api/templates/route-a4f129c451de7859.js +0 -1
  723. package/.next/static/chunks/app/api/verification/runs/[runId]/route-a4f129c451de7859.js +0 -1
  724. package/.next/static/chunks/app/api/verification/runs/route-a4f129c451de7859.js +0 -1
  725. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-a4f129c451de7859.js +0 -1
  726. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-a4f129c451de7859.js +0 -1
  727. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-a4f129c451de7859.js +0 -1
  728. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-a4f129c451de7859.js +0 -1
  729. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-a4f129c451de7859.js +0 -1
  730. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-a4f129c451de7859.js +0 -1
  731. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-a4f129c451de7859.js +0 -1
  732. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-a4f129c451de7859.js +0 -1
  733. package/.next/static/chunks/app/api/worktrees/[id]/env/route-a4f129c451de7859.js +0 -1
  734. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-a4f129c451de7859.js +0 -1
  735. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-a4f129c451de7859.js +0 -1
  736. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-a4f129c451de7859.js +0 -1
  737. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-a4f129c451de7859.js +0 -1
  738. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-a4f129c451de7859.js +0 -1
  739. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-a4f129c451de7859.js +0 -1
  740. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-a4f129c451de7859.js +0 -1
  741. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-a4f129c451de7859.js +0 -1
  742. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-a4f129c451de7859.js +0 -1
  743. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-a4f129c451de7859.js +0 -1
  744. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-a4f129c451de7859.js +0 -1
  745. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-a4f129c451de7859.js +0 -1
  746. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-a4f129c451de7859.js +0 -1
  747. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-a4f129c451de7859.js +0 -1
  748. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-a4f129c451de7859.js +0 -1
  749. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-a4f129c451de7859.js +0 -1
  750. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-a4f129c451de7859.js +0 -1
  751. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-a4f129c451de7859.js +0 -1
  752. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-a4f129c451de7859.js +0 -1
  753. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-a4f129c451de7859.js +0 -1
  754. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-a4f129c451de7859.js +0 -1
  755. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-a4f129c451de7859.js +0 -1
  756. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-a4f129c451de7859.js +0 -1
  757. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-a4f129c451de7859.js +0 -1
  758. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-a4f129c451de7859.js +0 -1
  759. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-a4f129c451de7859.js +0 -1
  760. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-a4f129c451de7859.js +0 -1
  761. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-a4f129c451de7859.js +0 -1
  762. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-a4f129c451de7859.js +0 -1
  763. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-a4f129c451de7859.js +0 -1
  764. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-a4f129c451de7859.js +0 -1
  765. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-a4f129c451de7859.js +0 -1
  766. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-a4f129c451de7859.js +0 -1
  767. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-a4f129c451de7859.js +0 -1
  768. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-a4f129c451de7859.js +0 -1
  769. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-a4f129c451de7859.js +0 -1
  770. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-a4f129c451de7859.js +0 -1
  771. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-a4f129c451de7859.js +0 -1
  772. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-a4f129c451de7859.js +0 -1
  773. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-a4f129c451de7859.js +0 -1
  774. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-a4f129c451de7859.js +0 -1
  775. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-a4f129c451de7859.js +0 -1
  776. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-a4f129c451de7859.js +0 -1
  777. package/.next/static/chunks/app/api/worktrees/[id]/route-a4f129c451de7859.js +0 -1
  778. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-a4f129c451de7859.js +0 -1
  779. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-a4f129c451de7859.js +0 -1
  780. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-a4f129c451de7859.js +0 -1
  781. package/.next/static/chunks/app/api/worktrees/[id]/search/route-a4f129c451de7859.js +0 -1
  782. package/.next/static/chunks/app/api/worktrees/[id]/send/route-a4f129c451de7859.js +0 -1
  783. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-a4f129c451de7859.js +0 -1
  784. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-a4f129c451de7859.js +0 -1
  785. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-a4f129c451de7859.js +0 -1
  786. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-a4f129c451de7859.js +0 -1
  787. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-a4f129c451de7859.js +0 -1
  788. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-a4f129c451de7859.js +0 -1
  789. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-a4f129c451de7859.js +0 -1
  790. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-a4f129c451de7859.js +0 -1
  791. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-a4f129c451de7859.js +0 -1
  792. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-a4f129c451de7859.js +0 -1
  793. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-a4f129c451de7859.js +0 -1
  794. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-a4f129c451de7859.js +0 -1
  795. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-a4f129c451de7859.js +0 -1
  796. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-a4f129c451de7859.js +0 -1
  797. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-a4f129c451de7859.js +0 -1
  798. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-a4f129c451de7859.js +0 -1
  799. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-a4f129c451de7859.js +0 -1
  800. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-a4f129c451de7859.js +0 -1
  801. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-a4f129c451de7859.js +0 -1
  802. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-a4f129c451de7859.js +0 -1
  803. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-a4f129c451de7859.js +0 -1
  804. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-a4f129c451de7859.js +0 -1
  805. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-a4f129c451de7859.js +0 -1
  806. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-a4f129c451de7859.js +0 -1
  807. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-a4f129c451de7859.js +0 -1
  808. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-a4f129c451de7859.js +0 -1
  809. package/.next/static/chunks/app/api/worktrees/route-a4f129c451de7859.js +0 -1
  810. package/.next/static/chunks/app/layout-8bfac4724277b47f.js +0 -1
  811. package/.next/static/chunks/app/manifest.webmanifest/route-a4f129c451de7859.js +0 -1
  812. package/.next/static/chunks/app/more/page-87c84987b2765213.js +0 -1
  813. package/.next/static/chunks/app/page-1b820c421db48c2c.js +0 -1
  814. package/.next/static/chunks/app/proxy/[...path]/route-a4f129c451de7859.js +0 -1
  815. package/.next/static/chunks/app/review/page-e2fd4a590646a2d8.js +0 -1
  816. package/.next/static/chunks/app/worktrees/[id]/layout-a4f129c451de7859.js +0 -1
  817. package/.next/static/chunks/app/worktrees/[id]/page-f6d3ab8185d93aae.js +0 -1
  818. /package/.next/static/{fqfSDqQMweROeHUzOt_m1 → LNfVZiq6FZwKsV7L9Mi6M}/_buildManifest.js +0 -0
  819. /package/.next/static/{fqfSDqQMweROeHUzOt_m1 → LNfVZiq6FZwKsV7L9Mi6M}/_ssgManifest.js +0 -0
@@ -9,12 +9,10 @@
9
9
  * - ApiClient: HTTP get/post with base URL and auth headers
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ApiError = exports.ApiClient = exports.FOREIGN_SESSION_ERROR_CODE = exports.MAX_STOP_PATTERN_LENGTH = void 0;
12
+ exports.ApiClient = exports.MAX_STOP_PATTERN_LENGTH = exports.rethrowIfDeadlineExceeded = exports.isDeadlineExceeded = exports.DeadlineExceededError = exports.handleApiError = exports.foreignSessionMessage = exports.FOREIGN_SESSION_ERROR_CODE = exports.ApiError = void 0;
13
13
  exports.isValidWorktreeId = isValidWorktreeId;
14
14
  exports.isValidInstanceId = isValidInstanceId;
15
15
  exports.resolveAuthToken = resolveAuthToken;
16
- exports.foreignSessionMessage = foreignSessionMessage;
17
- exports.handleApiError = handleApiError;
18
16
  exports.assertResponseShape = assertResponseShape;
19
17
  exports.fetchDaemonVersion = fetchDaemonVersion;
20
18
  exports.warnIfVersionSkew = warnIfVersionSkew;
@@ -22,6 +20,17 @@ const types_1 = require("../types");
22
20
  const package_info_1 = require("./package-info");
23
21
  const uat_isolation_1 = require("../../config/uat-isolation");
24
22
  const server_url_1 = require("./server-url");
23
+ const api_client_errors_1 = require("./api-client-errors");
24
+ const api_client_deadline_1 = require("./api-client-deadline");
25
+ var api_client_errors_2 = require("./api-client-errors");
26
+ Object.defineProperty(exports, "ApiError", { enumerable: true, get: function () { return api_client_errors_2.ApiError; } });
27
+ Object.defineProperty(exports, "FOREIGN_SESSION_ERROR_CODE", { enumerable: true, get: function () { return api_client_errors_2.FOREIGN_SESSION_ERROR_CODE; } });
28
+ Object.defineProperty(exports, "foreignSessionMessage", { enumerable: true, get: function () { return api_client_errors_2.foreignSessionMessage; } });
29
+ Object.defineProperty(exports, "handleApiError", { enumerable: true, get: function () { return api_client_errors_2.handleApiError; } });
30
+ var api_client_deadline_2 = require("./api-client-deadline");
31
+ Object.defineProperty(exports, "DeadlineExceededError", { enumerable: true, get: function () { return api_client_deadline_2.DeadlineExceededError; } });
32
+ Object.defineProperty(exports, "isDeadlineExceeded", { enumerable: true, get: function () { return api_client_deadline_2.isDeadlineExceeded; } });
33
+ Object.defineProperty(exports, "rethrowIfDeadlineExceeded", { enumerable: true, get: function () { return api_client_deadline_2.rethrowIfDeadlineExceeded; } });
25
34
  /** Maximum stop-pattern length [SEC4-06] */
26
35
  exports.MAX_STOP_PATTERN_LENGTH = 500;
27
36
  /** Worktree ID validation pattern [SEC4-04] */
@@ -66,175 +75,6 @@ function resolveAuthToken(options) {
66
75
  }
67
76
  return process.env.CM_AUTH_TOKEN;
68
77
  }
69
- /**
70
- * The server's own explanation for a failure, when it sent one worth showing.
71
- *
72
- * Issue #1637: every 5xx used to be flattened into `Server error. Check server
73
- * logs for details.`, which is only useful to someone who has the server logs.
74
- * A cold-start `send` failed with an initialization timeout and told the
75
- * operator nothing but "go read the logs" — four orchestration runs in a row
76
- * then misdiagnosed it as a session-creation race and worked around it by
77
- * re-sending. Every route in this codebase already answers `{ error }`, so the
78
- * cause was always in the response body; nothing read it.
79
- *
80
- * Trimmed and length-capped because it is printed to a terminal, and an
81
- * unbounded server string is not something a CLI should paste verbatim.
82
- */
83
- const MAX_SERVER_ERROR_DETAIL = 2000;
84
- function serverErrorDetail(payload) {
85
- const detail = typeof payload?.error === 'string' ? payload.error.trim() : '';
86
- if (detail === '')
87
- return undefined;
88
- return detail.length > MAX_SERVER_ERROR_DETAIL
89
- ? `${detail.slice(0, MAX_SERVER_ERROR_DETAIL)}…`
90
- : detail;
91
- }
92
- /** Append `(server: <url>)` when the caller named one. */
93
- function withServerUrl(message, context) {
94
- return context?.serverUrl ? `${message} (server: ${context.serverUrl})` : message;
95
- }
96
- /**
97
- * The `code` the server sends with the 409 for a tmux session another
98
- * CommandMate server created (Issue #2865). Spelled out rather than imported:
99
- * the server's constant lives next to the tmux gateway, which the CLI must not
100
- * load. `tests/unit/cli/utils/api-client-foreign-session-3334.test.ts` pins the
101
- * two to the same string.
102
- */
103
- exports.FOREIGN_SESSION_ERROR_CODE = 'session_owned_by_other_server';
104
- /**
105
- * Issue #3334: what the operator reads for that 409. It has to say three
106
- * things the status alone does not: the session is another CommandMate
107
- * server's, this command therefore did nothing to it, and where to go instead.
108
- */
109
- function foreignSessionMessage(payload) {
110
- const name = typeof payload?.sessionName === 'string' && payload.sessionName !== ''
111
- ? `"${payload.sessionName}" `
112
- : '';
113
- const where = typeof payload?.sessionPath === 'string' && payload.sessionPath !== ''
114
- ? ` (it was started in ${payload.sessionPath})`
115
- : '';
116
- return (`The tmux session ${name}belongs to another CommandMate server${where}, ` +
117
- 'so nothing was sent to it, read from it or stopped. ' +
118
- 'Use the CommandMate server that started it, or stop that session there first.');
119
- }
120
- /**
121
- * Classify API errors into user-friendly messages and exit codes.
122
- * [IA3-09] Covers: ECONNREFUSED, 400, 401/403, 404, 429, 500, timeout
123
- *
124
- * @param error - Error object or unknown
125
- * @param status - HTTP status code if available
126
- * @param payload - Parsed error body, when the response carried one (Issue #1637).
127
- * Used for 5xx, and for the foreign-session 409 (Issue #3334): the other 4xx
128
- * messages below are already specific, and are pinned by tests as the CLI's
129
- * own wording.
130
- * @param context - Which server answered, when the caller knows (Issue #2404).
131
- * Read by the 404 branch only; the other messages do not send anyone looking
132
- * in the wrong place.
133
- * @returns User-friendly error message and exit code
134
- */
135
- function handleApiError(error, status, payload, context) {
136
- // HTTP status-based errors
137
- if (status !== undefined) {
138
- switch (status) {
139
- case 400:
140
- return {
141
- message: 'Bad request. Check your input parameters.',
142
- exitCode: types_1.ExitCode.CONFIG_ERROR,
143
- };
144
- case 401:
145
- case 403:
146
- // Issue #2489: the second sentence is the one that matters during a
147
- // `commandmate remote` session. `remote` mints the token, hands its
148
- // plaintext to the phone once through the pairing handoff and deletes
149
- // it — so "set CM_AUTH_TOKEN" names a value the operator has no way to
150
- // obtain, and following that advice is a dead end (#2489's report spent
151
- // a session there). `--auth remote-only` is the exit: it leaves the
152
- // loopback listener this client dials unauthenticated while the
153
- // Provider's listener keeps demanding the token.
154
- return {
155
- message: 'Authentication failed. Use --token <token> or set CM_AUTH_TOKEN environment variable. ' +
156
- 'During a "commandmate remote" session the token is only ever shown to the paired phone — ' +
157
- 'restart it with "commandmate remote --auth remote-only" to use the CLI from this machine without one.',
158
- exitCode: types_1.ExitCode.CONFIG_ERROR,
159
- };
160
- case 404:
161
- // Issue #2404: the sentence stays, so everything matching on it keeps
162
- // matching; the URL is appended because "check the worktree ID" is
163
- // advice about the wrong thing whenever the id is fine and the SERVER
164
- // is the one that is wrong.
165
- return {
166
- message: withServerUrl('Resource not found. Check the worktree ID.', context),
167
- exitCode: types_1.ExitCode.UNEXPECTED_ERROR,
168
- };
169
- case 409:
170
- // Issue #3334: the one 409 every session route shares (#2865 / #3290).
171
- // Without this it read "Unexpected HTTP status: 409", which does not say
172
- // that nothing was done, nor why. Same exit code as that default branch,
173
- // so a script branching on it sees no change. Every other 409 keeps the
174
- // default wording below — the commands that own one (send's
175
- // PROMPT_WAITING, verify's running run) already explain it themselves.
176
- if (payload?.code === exports.FOREIGN_SESSION_ERROR_CODE) {
177
- return {
178
- message: foreignSessionMessage(payload),
179
- exitCode: types_1.ExitCode.UNEXPECTED_ERROR,
180
- };
181
- }
182
- return {
183
- message: `Unexpected HTTP status: ${status}`,
184
- exitCode: types_1.ExitCode.UNEXPECTED_ERROR,
185
- };
186
- case 429:
187
- return {
188
- message: 'Rate limited. Please retry after a moment.',
189
- exitCode: types_1.ExitCode.DEPENDENCY_ERROR,
190
- };
191
- case 500:
192
- default:
193
- if (status >= 500) {
194
- // Issue #1637: pass the server's own reason through. The prefix is
195
- // kept so "this came from the server, not from the CLI" survives, and
196
- // so does the log pointer when the body said nothing.
197
- const detail = serverErrorDetail(payload);
198
- return {
199
- message: detail
200
- ? `Server error: ${detail}`
201
- : 'Server error. Check server logs for details.',
202
- exitCode: types_1.ExitCode.UNEXPECTED_ERROR,
203
- };
204
- }
205
- return {
206
- message: `Unexpected HTTP status: ${status}`,
207
- exitCode: types_1.ExitCode.UNEXPECTED_ERROR,
208
- };
209
- }
210
- }
211
- // Network/connection errors
212
- if (error instanceof Error) {
213
- const msg = error.message || '';
214
- if (msg.includes('ECONNREFUSED') || msg.includes('fetch failed')) {
215
- return {
216
- message: 'Server is not running. Start it with: commandmate start',
217
- exitCode: types_1.ExitCode.DEPENDENCY_ERROR,
218
- };
219
- }
220
- if (error.name === 'AbortError' || msg.includes('timeout') || msg.includes('Timeout')) {
221
- return {
222
- message: 'Server did not respond in time. Check server status.',
223
- exitCode: types_1.ExitCode.DEPENDENCY_ERROR,
224
- };
225
- }
226
- if (error.name === 'TypeError') {
227
- return {
228
- message: 'Network error. Check your connection and server status.',
229
- exitCode: types_1.ExitCode.DEPENDENCY_ERROR,
230
- };
231
- }
232
- }
233
- return {
234
- message: 'An unexpected error occurred.',
235
- exitCode: types_1.ExitCode.UNEXPECTED_ERROR,
236
- };
237
- }
238
78
  /**
239
79
  * Check if a URL points to a localhost address.
240
80
  */
@@ -255,6 +95,8 @@ function isLocalhost(url) {
255
95
  class ApiClient {
256
96
  baseUrl;
257
97
  token;
98
+ /** Epoch ms after which every request of this client fails (Issue #3983). */
99
+ deadlineAt;
258
100
  constructor(options) {
259
101
  // Issue #1743: resolve through loadClientEnv() rather than `process.env.CM_PORT || '3000'`.
260
102
  // Reading process.env alone ignored ~/.commandmate/.env, so with two servers running,
@@ -266,7 +108,7 @@ class ApiClient {
266
108
  // Issue #3360: in UAT isolation the default port 3000 is the user's production server,
267
109
  // so a client that was not told where to go must not go anywhere.
268
110
  if (!options?.baseUrl && (0, uat_isolation_1.isUatIsolationEnabled)() && !process.env.CM_PORT) {
269
- throw new ApiError(`${uat_isolation_1.UAT_ISOLATION_ENV_VAR}=${process.env[uat_isolation_1.UAT_ISOLATION_ENV_VAR]} requires CM_PORT: refusing to fall back to the default port 3000.`, types_1.ExitCode.CONFIG_ERROR);
111
+ throw new api_client_errors_1.ApiError(`${uat_isolation_1.UAT_ISOLATION_ENV_VAR}=${process.env[uat_isolation_1.UAT_ISOLATION_ENV_VAR]} requires CM_PORT: refusing to fall back to the default port 3000.`, types_1.ExitCode.CONFIG_ERROR);
270
112
  }
271
113
  this.baseUrl = options?.baseUrl || (0, server_url_1.resolveServerEndpoint)((0, server_url_1.loadClientEnv)()).url;
272
114
  this.token = resolveAuthToken(options);
@@ -289,6 +131,51 @@ class ApiClient {
289
131
  get serverUrl() {
290
132
  return this.baseUrl;
291
133
  }
134
+ /**
135
+ * This client with every request bounded by `deadlineAt` (Issue #3983).
136
+ *
137
+ * `wait` / `ask` / `verify` take `--timeout` as the deadline of the whole
138
+ * command, but only the poll's own reads were bounded by it: a task-ledger
139
+ * read, an `--instance` resolution or a capability probe before the poll had
140
+ * no deadline at all, so a server that stopped answering held the command for
141
+ * as long as undici's own timeouts (minutes) and then, swallowed into a
142
+ * degraded path, kept it going. The derived client carries one deadline for
143
+ * every method (`get` / `post` / `patch` / `rawGet`), and a request it ends
144
+ * fails with {@link DeadlineExceededError} — exit 124 — which the
145
+ * degrade-on-failure catches rethrow ({@link isDeadlineExceeded}).
146
+ *
147
+ * One request lasts until its body has been read (`json()` / `text()`), the
148
+ * body of a {@link rawGet} response included: a server that sends headers and
149
+ * then stalls the body is not an answer.
150
+ *
151
+ * @param deadlineAt - Epoch ms; undefined returns this client unchanged
152
+ * @returns A client sharing this one's server and token
153
+ */
154
+ withDeadline(deadlineAt) {
155
+ if (deadlineAt === undefined || !Number.isFinite(deadlineAt))
156
+ return this;
157
+ // Not `new ApiClient(...)`: the constructor re-resolves the endpoint and
158
+ // re-prints the --token warning, and the derived client must dial the very
159
+ // server this one does.
160
+ const derived = Object.create(Object.getPrototypeOf(this));
161
+ derived.baseUrl = this.baseUrl;
162
+ derived.token = this.token;
163
+ derived.deadlineAt = deadlineAt;
164
+ return derived;
165
+ }
166
+ /** The deadline this client carries, if any (Issue #3983). */
167
+ get deadline() {
168
+ return this.deadlineAt;
169
+ }
170
+ /**
171
+ * The bound of one request: a signal that fires at the deadline (combined
172
+ * with the caller's own, when it gave one), or null without a deadline.
173
+ */
174
+ startDeadline(callerSignal) {
175
+ if (this.deadlineAt === undefined)
176
+ return null;
177
+ return startRequestDeadline(this.deadlineAt, this.baseUrl, callerSignal);
178
+ }
292
179
  getHeaders() {
293
180
  const headers = {
294
181
  'Content-Type': 'application/json',
@@ -314,11 +201,28 @@ class ApiClient {
314
201
  * @returns The raw Response, whatever its status
315
202
  */
316
203
  async rawGet(path, init) {
317
- return fetch(`${this.baseUrl}${path}`, {
318
- method: 'GET',
319
- headers: { ...this.getHeaders(), ...(init?.headers ?? {}) },
320
- redirect: 'manual',
321
- });
204
+ const deadline = this.startDeadline();
205
+ if (!deadline) {
206
+ return fetch(`${this.baseUrl}${path}`, {
207
+ method: 'GET',
208
+ headers: { ...this.getHeaders(), ...(init?.headers ?? {}) },
209
+ redirect: 'manual',
210
+ });
211
+ }
212
+ // Issue #3983: the caller reads the body, so the deadline is not released
213
+ // here — it stays armed (unref'd) for the body read, which it also bounds.
214
+ try {
215
+ const response = await deadline.run(fetch(`${this.baseUrl}${path}`, {
216
+ method: 'GET',
217
+ headers: { ...this.getHeaders(), ...(init?.headers ?? {}) },
218
+ redirect: 'manual',
219
+ signal: deadline.signal,
220
+ }));
221
+ return boundBodyReads(response, deadline);
222
+ }
223
+ catch (error) {
224
+ throw deadline.classify(error);
225
+ }
322
226
  }
323
227
  /**
324
228
  * HTTP GET request
@@ -330,26 +234,37 @@ class ApiClient {
330
234
  * before (no `signal` key on the fetch init).
331
235
  */
332
236
  async get(path, init) {
237
+ // Issue #3983: a client with a deadline bounds the request and its body.
238
+ const deadline = this.startDeadline(init?.signal);
239
+ const signal = deadline ? deadline.signal : init?.signal;
333
240
  try {
334
- const response = await fetch(`${this.baseUrl}${path}`, {
241
+ const response = await bounded(deadline, fetch(`${this.baseUrl}${path}`, {
335
242
  method: 'GET',
336
243
  headers: this.getHeaders(),
337
- ...(init?.signal ? { signal: init.signal } : {}),
338
- });
244
+ ...(signal ? { signal } : {}),
245
+ }));
339
246
  if (!response.ok) {
340
247
  // Issue #1637: read the body first — handleApiError needs it to surface
341
248
  // the server's reason for a 5xx instead of "check the logs".
342
- const payload = await readErrorPayload(response);
343
- const errResult = handleApiError(null, response.status, payload, { serverUrl: this.baseUrl });
344
- throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
249
+ const payload = await bounded(deadline, readErrorPayload(response));
250
+ const errResult = (0, api_client_errors_1.handleApiError)(null, response.status, payload, { serverUrl: this.baseUrl });
251
+ throw new api_client_errors_1.ApiError(errResult.message, errResult.exitCode, response.status, payload);
345
252
  }
346
- return (await response.json());
253
+ return (await bounded(deadline, response.json()));
347
254
  }
348
255
  catch (error) {
349
- if (error instanceof ApiError)
256
+ if (deadline) {
257
+ const classified = deadline.classify(error);
258
+ if (classified instanceof api_client_deadline_1.DeadlineExceededError)
259
+ throw classified;
260
+ }
261
+ if (error instanceof api_client_errors_1.ApiError)
350
262
  throw error;
351
- const errResult = handleApiError(error);
352
- throw new ApiError(errResult.message, errResult.exitCode);
263
+ const errResult = (0, api_client_errors_1.handleApiError)(error);
264
+ throw new api_client_errors_1.ApiError(errResult.message, errResult.exitCode);
265
+ }
266
+ finally {
267
+ deadline?.release();
353
268
  }
354
269
  }
355
270
  /**
@@ -357,7 +272,7 @@ class ApiClient {
357
272
  * [DR1-05] Generic type parameter specified at call site
358
273
  */
359
274
  async post(path, body) {
360
- return sendWithBody(this.baseUrl, 'POST', this.getHeaders(), path, body);
275
+ return sendWithBody(this.baseUrl, 'POST', this.getHeaders(), path, body, this.startDeadline());
361
276
  }
362
277
  /**
363
278
  * HTTP PATCH request (Issue #1000: agent-instance roster mutations via
@@ -365,36 +280,45 @@ class ApiClient {
365
280
  * [DR1-05] Generic type parameter specified at call site
366
281
  */
367
282
  async patch(path, body) {
368
- return sendWithBody(this.baseUrl, 'PATCH', this.getHeaders(), path, body);
283
+ return sendWithBody(this.baseUrl, 'PATCH', this.getHeaders(), path, body, this.startDeadline());
369
284
  }
370
285
  }
371
286
  exports.ApiClient = ApiClient;
372
287
  /** POST / PATCH share everything but the method; an empty body (204) is `undefined`. */
373
- async function sendWithBody(baseUrl, method, headers, path, body) {
288
+ async function sendWithBody(baseUrl, method, headers, path, body, deadline) {
374
289
  try {
375
- const response = await fetch(`${baseUrl}${path}`, {
290
+ const response = await bounded(deadline, fetch(`${baseUrl}${path}`, {
376
291
  method,
377
292
  headers,
378
293
  body: body !== undefined ? JSON.stringify(body) : undefined,
379
- });
294
+ ...(deadline ? { signal: deadline.signal } : {}),
295
+ }));
380
296
  if (!response.ok) {
381
297
  // Issue #1637: read the body first — handleApiError needs it to surface
382
298
  // the server's reason for a 5xx instead of "check the logs".
383
- const payload = await readErrorPayload(response);
384
- const errResult = handleApiError(null, response.status, payload, { serverUrl: baseUrl });
385
- throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
299
+ const payload = await bounded(deadline, readErrorPayload(response));
300
+ const errResult = (0, api_client_errors_1.handleApiError)(null, response.status, payload, { serverUrl: baseUrl });
301
+ throw new api_client_errors_1.ApiError(errResult.message, errResult.exitCode, response.status, payload);
386
302
  }
387
303
  // Handle 204 No Content
388
- const text = await response.text();
304
+ const text = await bounded(deadline, response.text());
389
305
  if (!text)
390
306
  return undefined;
391
307
  return JSON.parse(text);
392
308
  }
393
309
  catch (error) {
394
- if (error instanceof ApiError)
310
+ if (deadline) {
311
+ const classified = deadline.classify(error);
312
+ if (classified instanceof api_client_deadline_1.DeadlineExceededError)
313
+ throw classified;
314
+ }
315
+ if (error instanceof api_client_errors_1.ApiError)
395
316
  throw error;
396
- const errResult = handleApiError(error);
397
- throw new ApiError(errResult.message, errResult.exitCode, undefined, undefined, error);
317
+ const errResult = (0, api_client_errors_1.handleApiError)(error);
318
+ throw new api_client_errors_1.ApiError(errResult.message, errResult.exitCode, undefined, undefined, error);
319
+ }
320
+ finally {
321
+ deadline?.release();
398
322
  }
399
323
  }
400
324
  /**
@@ -423,36 +347,87 @@ async function readErrorPayload(response) {
423
347
  return undefined;
424
348
  }
425
349
  }
350
+ // =============================================================================
351
+ // Command deadline (Issue #3983)
352
+ // =============================================================================
353
+ /** The longest delay `setTimeout` honours (2^31-1 ms, ~24.8 days). */
354
+ const MAX_TIMER_MS = 2 ** 31 - 1;
426
355
  /**
427
- * API Error with exit code for CLI process.exit()
356
+ * Arm the deadline of one request. Its signal goes to `fetch` (which then also
357
+ * aborts the body stream), and every await of the request is raced against it
358
+ * as well — so a stalled body or a transport that ignores the signal still ends
359
+ * on time. Past the deadline the signal is already aborted and no request is
360
+ * sent; started exactly at it, the request gets the current tick (a read at the
361
+ * deadline may still bring the answer `verify` reports, Issue #1544). Beyond
362
+ * what a timer can hold the request is left unbounded.
428
363
  */
429
- class ApiError extends Error {
430
- exitCode;
431
- statusCode;
432
- payload;
433
- transportError;
434
- constructor(message, exitCode, statusCode,
435
- /** Typed error body, when the server sent one (Issue #1237). */
436
- payload,
437
- /**
438
- * The error `fetch` threw, when no HTTP response came back (Issue #3756):
439
- * the strict `respond` tells "never connected" (nothing can have been sent)
440
- * from "the connection broke" by its `cause.code`.
441
- */
442
- transportError) {
443
- super(message);
444
- this.exitCode = exitCode;
445
- this.statusCode = statusCode;
446
- this.payload = payload;
447
- this.transportError = transportError;
448
- this.name = 'ApiError';
364
+ function startRequestDeadline(deadlineAt, serverUrl, callerSignal) {
365
+ const controller = new AbortController();
366
+ const fire = () => {
367
+ if (!controller.signal.aborted)
368
+ controller.abort(new api_client_deadline_1.DeadlineExceededError(serverUrl));
369
+ };
370
+ const remaining = deadlineAt - Date.now();
371
+ let timer;
372
+ if (remaining < 0) {
373
+ fire();
449
374
  }
450
- /** Stable machine code the server assigned to this failure, if any. */
451
- get apiCode() {
452
- return this.payload?.code;
375
+ else if (remaining <= MAX_TIMER_MS) {
376
+ timer = setTimeout(fire, remaining);
377
+ // A command that is done must not stay alive for a deadline it no longer needs.
378
+ timer.unref?.();
453
379
  }
380
+ const signal = callerSignal ? AbortSignal.any([controller.signal, callerSignal]) : controller.signal;
381
+ const deadlineError = () => controller.signal.reason instanceof api_client_deadline_1.DeadlineExceededError
382
+ ? controller.signal.reason
383
+ : new api_client_deadline_1.DeadlineExceededError(serverUrl);
384
+ return {
385
+ signal,
386
+ run(promise) {
387
+ if (controller.signal.aborted) {
388
+ promise.catch(() => { });
389
+ return Promise.reject(deadlineError());
390
+ }
391
+ return new Promise((resolve, reject) => {
392
+ const onAbort = () => reject(deadlineError());
393
+ controller.signal.addEventListener('abort', onAbort, { once: true });
394
+ promise.then((value) => {
395
+ controller.signal.removeEventListener('abort', onAbort);
396
+ resolve(value);
397
+ }, (error) => {
398
+ controller.signal.removeEventListener('abort', onAbort);
399
+ reject(error);
400
+ });
401
+ });
402
+ },
403
+ classify(error) {
404
+ return controller.signal.aborted ? deadlineError() : error;
405
+ },
406
+ release() {
407
+ if (timer !== undefined)
408
+ clearTimeout(timer);
409
+ },
410
+ };
411
+ }
412
+ /** `promise` raced against `deadline`, or `promise` itself without one. */
413
+ function bounded(deadline, promise) {
414
+ return deadline ? deadline.run(promise) : promise;
415
+ }
416
+ /**
417
+ * A {@link ApiClient.rawGet} response whose body reads are raced against the
418
+ * request's deadline (Issue #3983). The caller reads the body, so the bound has
419
+ * to travel with the response.
420
+ */
421
+ function boundBodyReads(response, deadline) {
422
+ const read = (method) => () => deadline.run(method()).catch((error) => {
423
+ throw deadline.classify(error);
424
+ });
425
+ const json = response.json.bind(response);
426
+ const text = response.text.bind(response);
427
+ Object.defineProperty(response, 'json', { value: read(json), configurable: true });
428
+ Object.defineProperty(response, 'text', { value: read(text), configurable: true });
429
+ return response;
454
430
  }
455
- exports.ApiError = ApiError;
456
431
  // =============================================================================
457
432
  // Response shape validation & version-skew detection (Issue #1357)
458
433
  // =============================================================================
@@ -484,12 +459,12 @@ function versionSkewMessage(detail) {
484
459
  */
485
460
  function assertResponseShape(value, fields, context) {
486
461
  if (value === null || typeof value !== 'object') {
487
- throw new ApiError(versionSkewMessage(`${context}: expected an object from the server`), types_1.ExitCode.UNEXPECTED_ERROR);
462
+ throw new api_client_errors_1.ApiError(versionSkewMessage(`${context}: expected an object from the server`), types_1.ExitCode.UNEXPECTED_ERROR);
488
463
  }
489
464
  const record = value;
490
465
  for (const field of fields) {
491
466
  if (!(field in record)) {
492
- throw new ApiError(versionSkewMessage(`${context}: the server response is missing the "${field}" field`), types_1.ExitCode.UNEXPECTED_ERROR);
467
+ throw new api_client_errors_1.ApiError(versionSkewMessage(`${context}: the server response is missing the "${field}" field`), types_1.ExitCode.UNEXPECTED_ERROR);
493
468
  }
494
469
  }
495
470
  return value;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * The next command a CLI message tells the operator to run, aimed at the
3
+ * target the command actually addressed (Issue #3982).
4
+ *
5
+ * Each hint used to append ` --instance ${options.instance}` itself: the string
6
+ * the user typed (an alias reached `capture` unresolved), and nothing at all for
7
+ * `--agent` (so the hint read the worktree default's pane). One of them was
8
+ * fixed in #3975 and the others were not. These builders take the RESOLVED
9
+ * target — {@link CommandTarget}, what `resolveCommandTarget` returns — so the
10
+ * raw option cannot be passed where the hint's target belongs.
11
+ */
12
+ import type { CommandTarget } from '../commands/command-target';
13
+ /**
14
+ * The `capture` flags that read a dialog: the pane itself (the stored reply is
15
+ * not what is on screen), and enough of it to hold the dialog and its numbers.
16
+ */
17
+ export declare const DIALOG_CAPTURE_FLAGS = "--pane --tail 40";
18
+ /**
19
+ * ` --instance <id>` for a resolved instance, else ` --agent <tool>` when one
20
+ * was named, else nothing — a command that named no target keeps naming none.
21
+ */
22
+ export declare function targetFlags(target: CommandTarget): string;
23
+ /**
24
+ * `commandmate <verb> <worktree-id>[ <args>]<target flags>[ <trailing>]`.
25
+ *
26
+ * @param args - What follows the worktree id, e.g. `<number>` or `"<text>"`
27
+ * @param trailing - Flags that follow the target, e.g. `--pane --tail 40`
28
+ */
29
+ export declare function followUpCommand(verb: string, worktreeId: string, target: CommandTarget, args?: string, trailing?: string): string;
30
+ /** The `capture` that shows the target's dialog as it is on screen. */
31
+ export declare function dialogCaptureCommand(worktreeId: string, target: CommandTarget): string;
32
+ /**
33
+ * `commandmate capture <id>[ target] --pane`: the pane a message went to, to
34
+ * look at before a resend (Issue #3992). Without a target (a caller that has
35
+ * none to give) it names none.
36
+ */
37
+ export declare function paneCaptureCommand(worktreeId: string, target: CommandTarget | undefined): string;
38
+ //# sourceMappingURL=follow-up-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"follow-up-command.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/follow-up-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAIzD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAER;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAIhG"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * The next command a CLI message tells the operator to run, aimed at the
4
+ * target the command actually addressed (Issue #3982).
5
+ *
6
+ * Each hint used to append ` --instance ${options.instance}` itself: the string
7
+ * the user typed (an alias reached `capture` unresolved), and nothing at all for
8
+ * `--agent` (so the hint read the worktree default's pane). One of them was
9
+ * fixed in #3975 and the others were not. These builders take the RESOLVED
10
+ * target — {@link CommandTarget}, what `resolveCommandTarget` returns — so the
11
+ * raw option cannot be passed where the hint's target belongs.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.DIALOG_CAPTURE_FLAGS = void 0;
15
+ exports.targetFlags = targetFlags;
16
+ exports.followUpCommand = followUpCommand;
17
+ exports.dialogCaptureCommand = dialogCaptureCommand;
18
+ exports.paneCaptureCommand = paneCaptureCommand;
19
+ /**
20
+ * The `capture` flags that read a dialog: the pane itself (the stored reply is
21
+ * not what is on screen), and enough of it to hold the dialog and its numbers.
22
+ */
23
+ exports.DIALOG_CAPTURE_FLAGS = '--pane --tail 40';
24
+ /**
25
+ * ` --instance <id>` for a resolved instance, else ` --agent <tool>` when one
26
+ * was named, else nothing — a command that named no target keeps naming none.
27
+ */
28
+ function targetFlags(target) {
29
+ if (target.instanceId)
30
+ return ` --instance ${target.instanceId}`;
31
+ if (target.agent)
32
+ return ` --agent ${target.agent}`;
33
+ return '';
34
+ }
35
+ /**
36
+ * `commandmate <verb> <worktree-id>[ <args>]<target flags>[ <trailing>]`.
37
+ *
38
+ * @param args - What follows the worktree id, e.g. `<number>` or `"<text>"`
39
+ * @param trailing - Flags that follow the target, e.g. `--pane --tail 40`
40
+ */
41
+ function followUpCommand(verb, worktreeId, target, args, trailing) {
42
+ return `commandmate ${verb} ${worktreeId}${args ? ` ${args}` : ''}${targetFlags(target)}${trailing ? ` ${trailing}` : ''}`;
43
+ }
44
+ /** The `capture` that shows the target's dialog as it is on screen. */
45
+ function dialogCaptureCommand(worktreeId, target) {
46
+ return followUpCommand('capture', worktreeId, target, undefined, exports.DIALOG_CAPTURE_FLAGS);
47
+ }
48
+ /**
49
+ * `commandmate capture <id>[ target] --pane`: the pane a message went to, to
50
+ * look at before a resend (Issue #3992). Without a target (a caller that has
51
+ * none to give) it names none.
52
+ */
53
+ function paneCaptureCommand(worktreeId, target) {
54
+ return target
55
+ ? followUpCommand('capture', worktreeId, target, undefined, '--pane')
56
+ : `commandmate capture ${worktreeId} --pane`;
57
+ }
@@ -17,7 +17,7 @@
17
17
  * and whether an unmarked row may stand in for one — stays with the caller.
18
18
  */
19
19
  import type { PromptMessageResponse } from '../types/api-responses';
20
- import type { ApiClient } from './api-client';
20
+ import { type ApiClient } from './api-client';
21
21
  /**
22
22
  * Chat rows read back per request.
23
23
  *