commandmate 0.31.3 → 0.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (816) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +498 -484
  3. package/.next/app-path-routes-manifest.json +44 -42
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +2 -2
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +8 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/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.js +1 -1
  14. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  15. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  17. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  18. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  20. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  21. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/assistant/messages/route.js +1 -1
  23. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  24. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/assistant/session/route.js +1 -1
  26. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  27. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/assistant/start/route.js +1 -32
  29. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  30. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/assistant/terminal/route.js +2 -33
  32. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  33. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/assistant/tools/route.js +1 -1
  35. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  36. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/capabilities/route.js +1 -1
  41. package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
  42. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  51. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  52. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  54. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  55. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  57. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  58. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/push/escalation/route.js +1 -1
  62. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  64. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/push/vapid/route.js +1 -1
  66. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -0
  68. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -0
  69. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -0
  70. package/.next/server/app/api/relays/route.js +1 -0
  71. package/.next/server/app/api/relays/route.js.nft.json +1 -0
  72. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  76. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  78. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  80. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  81. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/repositories/clone/route.js +1 -1
  83. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  84. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/repositories/restore/route.js +1 -1
  87. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  88. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/repositories/route.js +1 -1
  90. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  91. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/repositories/scan/route.js +1 -1
  93. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  94. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/repositories/sync/route.js +1 -1
  96. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  97. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  100. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  101. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/skills/[id]/route.js +1 -1
  105. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  106. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/skills/installations/route.js +1 -1
  108. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  109. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/skills/route.js +1 -1
  113. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  114. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  116. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  119. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/todos/route.js +1 -1
  123. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  125. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/verification/runs/route.js +1 -1
  127. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  130. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  133. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  136. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  145. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  201. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  204. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +2 -1
  223. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +2 -1
  226. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  235. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +103 -1
  250. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  255. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  274. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  279. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/route.js +1 -1
  301. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/chat/page.js +2 -2
  304. package/.next/server/app/chat/page.js.nft.json +1 -1
  305. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  306. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  307. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/more/page.js +2 -2
  309. package/.next/server/app/more/page.js.nft.json +1 -1
  310. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  311. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  312. package/.next/server/app/page.js +1 -1
  313. package/.next/server/app/page.js.nft.json +1 -1
  314. package/.next/server/app/page_client-reference-manifest.js +1 -1
  315. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  316. package/.next/server/app/repositories/page.js +2 -2
  317. package/.next/server/app/repositories/page.js.nft.json +1 -1
  318. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  319. package/.next/server/app/review/page.js +1 -1
  320. package/.next/server/app/review/page.js.nft.json +1 -1
  321. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  322. package/.next/server/app/sessions/page.js +1 -1
  323. package/.next/server/app/sessions/page.js.nft.json +1 -1
  324. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  325. package/.next/server/app/skills/[skillId]/page.js +2 -2
  326. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  327. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  328. package/.next/server/app/skills/installed/page.js +2 -2
  329. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  330. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  331. package/.next/server/app/skills/page.js +1 -1
  332. package/.next/server/app/skills/page.js.nft.json +1 -1
  333. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  334. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  335. package/.next/server/app/worktrees/[id]/page.js +11 -11
  336. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  337. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  338. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  339. package/.next/server/app-paths-manifest.json +44 -42
  340. package/.next/server/chunks/1210.js +1 -0
  341. package/.next/server/chunks/153.js +1 -0
  342. package/.next/server/chunks/1886.js +1 -1
  343. package/.next/server/chunks/21.js +1 -0
  344. package/.next/server/chunks/2119.js +1 -1
  345. package/.next/server/chunks/2445.js +1 -1
  346. package/.next/server/chunks/3077.js +67 -0
  347. package/.next/server/chunks/3086.js +1 -0
  348. package/.next/server/chunks/3241.js +1 -1
  349. package/.next/server/chunks/3270.js +1 -0
  350. package/.next/server/chunks/3543.js +1 -1
  351. package/.next/server/chunks/3730.js +1 -0
  352. package/.next/server/chunks/3925.js +1 -0
  353. package/.next/server/chunks/3945.js +1 -1
  354. package/.next/server/chunks/4443.js +2 -1
  355. package/.next/server/chunks/5043.js +1 -1
  356. package/.next/server/chunks/5164.js +1 -1
  357. package/.next/server/chunks/5220.js +1 -1
  358. package/.next/server/chunks/5354.js +1 -1
  359. package/.next/server/chunks/595.js +3 -3
  360. package/.next/server/chunks/6286.js +48 -0
  361. package/.next/server/chunks/6306.js +1 -0
  362. package/.next/server/chunks/6363.js +1 -0
  363. package/.next/server/chunks/6401.js +1 -1
  364. package/.next/server/chunks/6491.js +103 -0
  365. package/.next/server/chunks/{9798.js → 6661.js} +1 -2
  366. package/.next/server/chunks/6838.js +1 -0
  367. package/.next/server/chunks/7875.js +25 -0
  368. package/.next/server/chunks/7890.js +1 -0
  369. package/.next/server/chunks/8063.js +32 -0
  370. package/.next/server/chunks/8118.js +1 -1
  371. package/.next/server/chunks/{7587.js → 8554.js} +1 -1
  372. package/.next/server/chunks/8687.js +1 -0
  373. package/.next/server/chunks/8807.js +37 -3
  374. package/.next/server/chunks/8918.js +6 -4
  375. package/.next/server/chunks/9123.js +2 -2
  376. package/.next/server/chunks/9130.js +1 -1
  377. package/.next/server/chunks/9584.js +1 -1
  378. package/.next/server/chunks/9627.js +21 -5
  379. package/.next/server/middleware-build-manifest.js +1 -1
  380. package/.next/server/middleware-manifest.json +5 -5
  381. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  382. package/.next/server/pages/500.html +1 -1
  383. package/.next/server/server-reference-manifest.json +1 -1
  384. package/.next/static/Lno4w_zWXdGdlfXg06Vp8/_buildManifest.js +1 -0
  385. package/.next/static/chunks/{5694.dda65070757534df.js → 3313.53f7ff985c0c8852.js} +1 -1
  386. package/.next/static/chunks/4718-9d63107c612a065d.js +1 -0
  387. package/.next/static/chunks/{4974-35592ec312322124.js → 5694-498765336d0b8c2b.js} +1 -1
  388. package/.next/static/chunks/{7485.442b21101fca7257.js → 7485.52361bc061cc663a.js} +1 -1
  389. package/.next/static/chunks/8019-cbf130d0e6334d2d.js +1 -0
  390. package/.next/static/chunks/8361-9bb887203c456edb.js +1 -0
  391. package/.next/static/chunks/8772-9be53a530950d804.js +1 -0
  392. package/.next/static/chunks/998-ac0ded6d5eeb4dc0.js +1 -0
  393. package/.next/static/chunks/app/api/agents/update/route-8bc5b680c5f3eae4.js +1 -0
  394. package/.next/static/chunks/app/api/agents/versions/route-8bc5b680c5f3eae4.js +1 -0
  395. package/.next/static/chunks/app/api/app/update/route-8bc5b680c5f3eae4.js +1 -0
  396. package/.next/static/chunks/app/api/app/update-check/route-8bc5b680c5f3eae4.js +1 -0
  397. package/.next/static/chunks/app/api/assistant/conversation/route-8bc5b680c5f3eae4.js +1 -0
  398. package/.next/static/chunks/app/api/assistant/current-output/route-8bc5b680c5f3eae4.js +1 -0
  399. package/.next/static/chunks/app/api/assistant/messages/route-8bc5b680c5f3eae4.js +1 -0
  400. package/.next/static/chunks/app/api/assistant/session/route-8bc5b680c5f3eae4.js +1 -0
  401. package/.next/static/chunks/app/api/assistant/start/route-8bc5b680c5f3eae4.js +1 -0
  402. package/.next/static/chunks/app/api/assistant/terminal/route-8bc5b680c5f3eae4.js +1 -0
  403. package/.next/static/chunks/app/api/assistant/tools/route-8bc5b680c5f3eae4.js +1 -0
  404. package/.next/static/chunks/app/api/auth/login/route-8bc5b680c5f3eae4.js +1 -0
  405. package/.next/static/chunks/app/api/auth/logout/route-8bc5b680c5f3eae4.js +1 -0
  406. package/.next/static/chunks/app/api/auth/status/route-8bc5b680c5f3eae4.js +1 -0
  407. package/.next/static/chunks/app/api/capabilities/route-8bc5b680c5f3eae4.js +1 -0
  408. package/.next/static/chunks/app/api/daily-summary/route-8bc5b680c5f3eae4.js +1 -0
  409. package/.next/static/chunks/app/api/daily-summary/status/route-8bc5b680c5f3eae4.js +1 -0
  410. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8bc5b680c5f3eae4.js +1 -0
  411. package/.next/static/chunks/app/api/external-apps/[id]/route-8bc5b680c5f3eae4.js +1 -0
  412. package/.next/static/chunks/app/api/external-apps/route-8bc5b680c5f3eae4.js +1 -0
  413. package/.next/static/chunks/app/api/fs/browse/route-8bc5b680c5f3eae4.js +1 -0
  414. package/.next/static/chunks/app/api/fs/recent-paths/route-8bc5b680c5f3eae4.js +1 -0
  415. package/.next/static/chunks/app/api/hooks/agent-event/route-8bc5b680c5f3eae4.js +1 -0
  416. package/.next/static/chunks/app/api/hooks/claude-done/route-8bc5b680c5f3eae4.js +1 -0
  417. package/.next/static/chunks/app/api/hooks/permission-request/route-8bc5b680c5f3eae4.js +1 -0
  418. package/.next/static/chunks/app/api/metrics/vibe/route-8bc5b680c5f3eae4.js +1 -0
  419. package/.next/static/chunks/app/api/ollama/models/route-8bc5b680c5f3eae4.js +1 -0
  420. package/.next/static/chunks/app/api/push/escalation/route-8bc5b680c5f3eae4.js +1 -0
  421. package/.next/static/chunks/app/api/push/subscriptions/route-8bc5b680c5f3eae4.js +1 -0
  422. package/.next/static/chunks/app/api/push/vapid/route-8bc5b680c5f3eae4.js +1 -0
  423. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  424. package/.next/static/chunks/app/api/relays/route-8bc5b680c5f3eae4.js +1 -0
  425. package/.next/static/chunks/app/api/remote/pair/route-8bc5b680c5f3eae4.js +1 -0
  426. package/.next/static/chunks/app/api/repositories/[id]/route-8bc5b680c5f3eae4.js +1 -0
  427. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
  428. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
  429. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8bc5b680c5f3eae4.js +1 -0
  430. package/.next/static/chunks/app/api/repositories/clone/route-8bc5b680c5f3eae4.js +1 -0
  431. package/.next/static/chunks/app/api/repositories/excluded/route-8bc5b680c5f3eae4.js +1 -0
  432. package/.next/static/chunks/app/api/repositories/restore/route-8bc5b680c5f3eae4.js +1 -0
  433. package/.next/static/chunks/app/api/repositories/route-8bc5b680c5f3eae4.js +1 -0
  434. package/.next/static/chunks/app/api/repositories/scan/route-8bc5b680c5f3eae4.js +1 -0
  435. package/.next/static/chunks/app/api/repositories/sync/route-8bc5b680c5f3eae4.js +1 -0
  436. package/.next/static/chunks/app/api/repositories/validate-path/route-8bc5b680c5f3eae4.js +1 -0
  437. package/.next/static/chunks/app/api/settings/default-agents/route-8bc5b680c5f3eae4.js +1 -0
  438. package/.next/static/chunks/app/api/settings/default-surface-mode/route-8bc5b680c5f3eae4.js +1 -0
  439. package/.next/static/chunks/app/api/sidebar/group-order/route-8bc5b680c5f3eae4.js +1 -0
  440. package/.next/static/chunks/app/api/skills/[id]/route-8bc5b680c5f3eae4.js +1 -0
  441. package/.next/static/chunks/app/api/skills/installations/route-8bc5b680c5f3eae4.js +1 -0
  442. package/.next/static/chunks/app/api/skills/operations/route-8bc5b680c5f3eae4.js +1 -0
  443. package/.next/static/chunks/app/api/skills/reindex/route-8bc5b680c5f3eae4.js +1 -0
  444. package/.next/static/chunks/app/api/skills/route-8bc5b680c5f3eae4.js +1 -0
  445. package/.next/static/chunks/app/api/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
  446. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  447. package/.next/static/chunks/app/api/tasks/[taskId]/route-8bc5b680c5f3eae4.js +1 -0
  448. package/.next/static/chunks/app/api/templates/[id]/route-8bc5b680c5f3eae4.js +1 -0
  449. package/.next/static/chunks/app/api/templates/route-8bc5b680c5f3eae4.js +1 -0
  450. package/.next/static/chunks/app/api/todos/route-8bc5b680c5f3eae4.js +1 -0
  451. package/.next/static/chunks/app/api/verification/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
  452. package/.next/static/chunks/app/api/verification/runs/route-8bc5b680c5f3eae4.js +1 -0
  453. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8bc5b680c5f3eae4.js +1 -0
  454. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8bc5b680c5f3eae4.js +1 -0
  455. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-8bc5b680c5f3eae4.js +1 -0
  456. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-8bc5b680c5f3eae4.js +1 -0
  457. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8bc5b680c5f3eae4.js +1 -0
  458. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8bc5b680c5f3eae4.js +1 -0
  459. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8bc5b680c5f3eae4.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/[id]/env/route-8bc5b680c5f3eae4.js +1 -0
  461. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8bc5b680c5f3eae4.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8bc5b680c5f3eae4.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8bc5b680c5f3eae4.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8bc5b680c5f3eae4.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8bc5b680c5f3eae4.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8bc5b680c5f3eae4.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8bc5b680c5f3eae4.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8bc5b680c5f3eae4.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8bc5b680c5f3eae4.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8bc5b680c5f3eae4.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8bc5b680c5f3eae4.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8bc5b680c5f3eae4.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8bc5b680c5f3eae4.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8bc5b680c5f3eae4.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8bc5b680c5f3eae4.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8bc5b680c5f3eae4.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8bc5b680c5f3eae4.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8bc5b680c5f3eae4.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8bc5b680c5f3eae4.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8bc5b680c5f3eae4.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8bc5b680c5f3eae4.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8bc5b680c5f3eae4.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8bc5b680c5f3eae4.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8bc5b680c5f3eae4.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8bc5b680c5f3eae4.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-8bc5b680c5f3eae4.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8bc5b680c5f3eae4.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8bc5b680c5f3eae4.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8bc5b680c5f3eae4.js +1 -0
  491. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8bc5b680c5f3eae4.js +1 -0
  492. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8bc5b680c5f3eae4.js +1 -0
  493. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8bc5b680c5f3eae4.js +1 -0
  494. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8bc5b680c5f3eae4.js +1 -0
  495. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8bc5b680c5f3eae4.js +1 -0
  496. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-8bc5b680c5f3eae4.js +1 -0
  497. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-8bc5b680c5f3eae4.js +1 -0
  498. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-8bc5b680c5f3eae4.js +1 -0
  499. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8bc5b680c5f3eae4.js +1 -0
  500. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-8bc5b680c5f3eae4.js +1 -0
  501. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8bc5b680c5f3eae4.js +1 -0
  502. package/.next/static/chunks/app/api/worktrees/[id]/route-8bc5b680c5f3eae4.js +1 -0
  503. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8bc5b680c5f3eae4.js +1 -0
  504. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8bc5b680c5f3eae4.js +1 -0
  505. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8bc5b680c5f3eae4.js +1 -0
  506. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8bc5b680c5f3eae4.js +1 -0
  507. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8bc5b680c5f3eae4.js +1 -0
  508. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8bc5b680c5f3eae4.js +1 -0
  509. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8bc5b680c5f3eae4.js +1 -0
  510. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8bc5b680c5f3eae4.js +1 -0
  511. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8bc5b680c5f3eae4.js +1 -0
  512. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8bc5b680c5f3eae4.js +1 -0
  513. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-8bc5b680c5f3eae4.js +1 -0
  514. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-8bc5b680c5f3eae4.js +1 -0
  515. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8bc5b680c5f3eae4.js +1 -0
  516. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
  517. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8bc5b680c5f3eae4.js +1 -0
  518. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8bc5b680c5f3eae4.js +1 -0
  519. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8bc5b680c5f3eae4.js +1 -0
  520. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8bc5b680c5f3eae4.js +1 -0
  521. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8bc5b680c5f3eae4.js +1 -0
  522. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
  523. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
  524. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  525. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8bc5b680c5f3eae4.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-8bc5b680c5f3eae4.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8bc5b680c5f3eae4.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8bc5b680c5f3eae4.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8bc5b680c5f3eae4.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-8bc5b680c5f3eae4.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/route-8bc5b680c5f3eae4.js +1 -0
  535. package/.next/static/chunks/app/chat/{page-37d7615d17d7e2a0.js → page-e60d07c4c79602f0.js} +1 -1
  536. package/.next/static/chunks/app/manifest.webmanifest/route-8bc5b680c5f3eae4.js +1 -0
  537. package/.next/static/chunks/app/more/{page-353a3924e6d7968e.js → page-fc94f86aa881489e.js} +1 -1
  538. package/.next/static/chunks/app/{page-c2bf871d953a1d6f.js → page-6871cca022b24807.js} +1 -1
  539. package/.next/static/chunks/app/proxy/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  540. package/.next/static/chunks/app/repositories/{page-7d0f26df0537254c.js → page-788ded1b72963d94.js} +1 -1
  541. package/.next/static/chunks/app/review/{page-e3f141b2829973e9.js → page-35b99baaf3c93b38.js} +1 -1
  542. package/.next/static/chunks/app/sessions/{page-53f188ed9ca49e5f.js → page-fa2d62f3e8436c69.js} +1 -1
  543. package/.next/static/chunks/app/skills/[skillId]/{page-80569b720aea59cc.js → page-06799157652e8fa9.js} +1 -1
  544. package/.next/static/chunks/app/skills/installed/{page-dbd2690ad72da95b.js → page-2f3987e3a131c8d0.js} +1 -1
  545. package/.next/static/chunks/app/skills/{page-dacd36f9c11aa7da.js → page-e70bfcf5ed4e4865.js} +1 -1
  546. package/.next/static/chunks/app/worktrees/[id]/layout-8bc5b680c5f3eae4.js +1 -0
  547. package/.next/static/chunks/app/worktrees/[id]/page-3d82a9355d5612d9.js +1 -0
  548. package/.next/static/chunks/webpack-1dc9eb5ebb4fa5ff.js +1 -0
  549. package/.next/static/css/96d94a4ba771efc3.css +1 -0
  550. package/.next/trace +13 -13
  551. package/.next/types/app/api/relays/[relayId]/cancel/route.ts +347 -0
  552. package/.next/types/app/api/relays/route.ts +347 -0
  553. package/.next/types/routes.d.ts +3 -1
  554. package/.next/types/validator.ts +18 -0
  555. package/README.md +6 -2
  556. package/dist/cli/commands/ask.d.ts +34 -0
  557. package/dist/cli/commands/ask.d.ts.map +1 -0
  558. package/dist/cli/commands/ask.js +494 -0
  559. package/dist/cli/commands/capture.d.ts +20 -0
  560. package/dist/cli/commands/capture.d.ts.map +1 -1
  561. package/dist/cli/commands/capture.js +80 -30
  562. package/dist/cli/commands/docs.d.ts.map +1 -1
  563. package/dist/cli/commands/docs.js +47 -4
  564. package/dist/cli/commands/instances.d.ts +67 -0
  565. package/dist/cli/commands/instances.d.ts.map +1 -1
  566. package/dist/cli/commands/instances.js +147 -22
  567. package/dist/cli/commands/peers.d.ts +64 -0
  568. package/dist/cli/commands/peers.d.ts.map +1 -0
  569. package/dist/cli/commands/peers.js +208 -0
  570. package/dist/cli/commands/relays.d.ts +92 -0
  571. package/dist/cli/commands/relays.d.ts.map +1 -0
  572. package/dist/cli/commands/relays.js +293 -0
  573. package/dist/cli/commands/report.d.ts +3 -0
  574. package/dist/cli/commands/report.d.ts.map +1 -1
  575. package/dist/cli/commands/report.js +29 -1
  576. package/dist/cli/commands/respond.d.ts.map +1 -1
  577. package/dist/cli/commands/respond.js +13 -10
  578. package/dist/cli/commands/send.d.ts.map +1 -1
  579. package/dist/cli/commands/send.js +66 -20
  580. package/dist/cli/commands/task.d.ts.map +1 -1
  581. package/dist/cli/commands/task.js +30 -0
  582. package/dist/cli/commands/wait.d.ts +20 -0
  583. package/dist/cli/commands/wait.d.ts.map +1 -1
  584. package/dist/cli/commands/wait.js +55 -6
  585. package/dist/cli/commands/whoami.d.ts +176 -0
  586. package/dist/cli/commands/whoami.d.ts.map +1 -0
  587. package/dist/cli/commands/whoami.js +377 -0
  588. package/dist/cli/docs/agent-operations.d.ts +25 -1
  589. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  590. package/dist/cli/docs/agent-operations.js +184 -1
  591. package/dist/cli/index.d.ts +13 -0
  592. package/dist/cli/index.d.ts.map +1 -1
  593. package/dist/cli/index.js +25 -1
  594. package/dist/cli/types/api-responses.d.ts +93 -0
  595. package/dist/cli/types/api-responses.d.ts.map +1 -1
  596. package/dist/cli/types/index.d.ts +16 -0
  597. package/dist/cli/types/index.d.ts.map +1 -1
  598. package/dist/cli/utils/api-client.d.ts +30 -1
  599. package/dist/cli/utils/api-client.d.ts.map +1 -1
  600. package/dist/cli/utils/api-client.js +28 -5
  601. package/dist/lib/cli/command-reference.d.ts +179 -0
  602. package/dist/lib/cli/command-reference.d.ts.map +1 -0
  603. package/dist/lib/cli/command-reference.js +210 -0
  604. package/dist/lib/detection/ansi.d.ts +14 -1
  605. package/dist/lib/detection/ansi.d.ts.map +1 -1
  606. package/dist/lib/detection/ansi.js +40 -3
  607. package/dist/lib/detection/status-reason.d.ts +28 -0
  608. package/dist/lib/detection/status-reason.d.ts.map +1 -1
  609. package/dist/lib/detection/status-reason.js +28 -0
  610. package/dist/server/locales/en/worktree.json +23 -0
  611. package/dist/server/locales/ja/worktree.json +23 -0
  612. package/dist/server/src/lib/auto-yes-poller.js +26 -11
  613. package/dist/server/src/lib/db/chat-db.js +161 -7
  614. package/dist/server/src/lib/db/migrations/index.js +2 -0
  615. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  616. package/dist/server/src/lib/db/migrations/v60-session-relays.js +110 -0
  617. package/dist/server/src/lib/db/relay-db.js +343 -0
  618. package/dist/server/src/lib/detection/ansi.js +40 -3
  619. package/dist/server/src/lib/detection/cli-patterns.js +206 -2
  620. package/dist/server/src/lib/detection/selection-shape.js +72 -1
  621. package/dist/server/src/lib/detection/status-reason.js +28 -0
  622. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +13 -7
  623. package/dist/server/src/lib/detection/tools/command-code/detect.js +33 -0
  624. package/dist/server/src/lib/history/user-turn-recorder.js +79 -16
  625. package/dist/server/src/lib/hooks/agent-event-service.js +27 -5
  626. package/dist/server/src/lib/hooks/sources/codex/history.js +63 -3
  627. package/dist/server/src/lib/hooks/sources/codex/transcript.js +53 -1
  628. package/dist/server/src/lib/hooks/sources/launch-command.js +112 -15
  629. package/dist/server/src/lib/hooks/stop-history-capture.js +252 -50
  630. package/dist/server/src/lib/polling/response-checker.js +174 -13
  631. package/dist/server/src/lib/polling/response-dedup.js +136 -0
  632. package/dist/server/src/lib/polling/structured-history-gate.js +14 -1
  633. package/dist/server/src/lib/realtime/terminal-broadcast.js +5 -0
  634. package/dist/server/src/lib/realtime/waiting-broadcast.js +12 -0
  635. package/dist/server/src/lib/relay/relay-delivery.js +554 -0
  636. package/dist/server/src/lib/relay/relay-messages.js +144 -0
  637. package/dist/server/src/lib/relay/relay-policy.js +127 -0
  638. package/dist/server/src/lib/relay/relay-readiness.js +63 -0
  639. package/dist/server/src/lib/relay/relay-session-ref.js +72 -0
  640. package/dist/server/src/lib/relay/relay-system-line.js +79 -0
  641. package/dist/server/src/lib/relay/relay-triggers.js +177 -0
  642. package/dist/server/src/lib/relay/types.js +25 -0
  643. package/dist/server/src/lib/session/current-output-builder.js +18 -0
  644. package/dist/server/src/lib/session/send-user-message.js +1 -0
  645. package/package.json +1 -1
  646. package/.next/server/chunks/1058.js +0 -1
  647. package/.next/server/chunks/1068.js +0 -1
  648. package/.next/server/chunks/1990.js +0 -103
  649. package/.next/server/chunks/261.js +0 -1
  650. package/.next/server/chunks/2739.js +0 -1
  651. package/.next/server/chunks/2839.js +0 -1
  652. package/.next/server/chunks/3484.js +0 -1
  653. package/.next/server/chunks/358.js +0 -1
  654. package/.next/server/chunks/3869.js +0 -1
  655. package/.next/server/chunks/4325.js +0 -1
  656. package/.next/server/chunks/4393.js +0 -1
  657. package/.next/server/chunks/5017.js +0 -1
  658. package/.next/server/chunks/5120.js +0 -1
  659. package/.next/server/chunks/552.js +0 -25
  660. package/.next/server/chunks/6130.js +0 -1
  661. package/.next/server/chunks/7836.js +0 -1
  662. package/.next/server/chunks/7859.js +0 -21
  663. package/.next/server/chunks/9696.js +0 -3
  664. package/.next/static/0hTIackGXw6v7diXJS6yN/_buildManifest.js +0 -1
  665. package/.next/static/chunks/2813-de885de8a4b11910.js +0 -1
  666. package/.next/static/chunks/4718-07ec4e10186928db.js +0 -1
  667. package/.next/static/chunks/6170-951b9f5fe6b4b3b5.js +0 -1
  668. package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +0 -1
  669. package/.next/static/chunks/8593-fa0eb2802e0ce68a.js +0 -1
  670. package/.next/static/chunks/app/api/agents/update/route-ee11f7b8a34cba8c.js +0 -1
  671. package/.next/static/chunks/app/api/agents/versions/route-ee11f7b8a34cba8c.js +0 -1
  672. package/.next/static/chunks/app/api/app/update/route-ee11f7b8a34cba8c.js +0 -1
  673. package/.next/static/chunks/app/api/app/update-check/route-ee11f7b8a34cba8c.js +0 -1
  674. package/.next/static/chunks/app/api/assistant/conversation/route-ee11f7b8a34cba8c.js +0 -1
  675. package/.next/static/chunks/app/api/assistant/current-output/route-ee11f7b8a34cba8c.js +0 -1
  676. package/.next/static/chunks/app/api/assistant/messages/route-ee11f7b8a34cba8c.js +0 -1
  677. package/.next/static/chunks/app/api/assistant/session/route-ee11f7b8a34cba8c.js +0 -1
  678. package/.next/static/chunks/app/api/assistant/start/route-ee11f7b8a34cba8c.js +0 -1
  679. package/.next/static/chunks/app/api/assistant/terminal/route-ee11f7b8a34cba8c.js +0 -1
  680. package/.next/static/chunks/app/api/assistant/tools/route-ee11f7b8a34cba8c.js +0 -1
  681. package/.next/static/chunks/app/api/auth/login/route-ee11f7b8a34cba8c.js +0 -1
  682. package/.next/static/chunks/app/api/auth/logout/route-ee11f7b8a34cba8c.js +0 -1
  683. package/.next/static/chunks/app/api/auth/status/route-ee11f7b8a34cba8c.js +0 -1
  684. package/.next/static/chunks/app/api/capabilities/route-ee11f7b8a34cba8c.js +0 -1
  685. package/.next/static/chunks/app/api/daily-summary/route-ee11f7b8a34cba8c.js +0 -1
  686. package/.next/static/chunks/app/api/daily-summary/status/route-ee11f7b8a34cba8c.js +0 -1
  687. package/.next/static/chunks/app/api/external-apps/[id]/health/route-ee11f7b8a34cba8c.js +0 -1
  688. package/.next/static/chunks/app/api/external-apps/[id]/route-ee11f7b8a34cba8c.js +0 -1
  689. package/.next/static/chunks/app/api/external-apps/route-ee11f7b8a34cba8c.js +0 -1
  690. package/.next/static/chunks/app/api/fs/browse/route-ee11f7b8a34cba8c.js +0 -1
  691. package/.next/static/chunks/app/api/fs/recent-paths/route-ee11f7b8a34cba8c.js +0 -1
  692. package/.next/static/chunks/app/api/hooks/agent-event/route-ee11f7b8a34cba8c.js +0 -1
  693. package/.next/static/chunks/app/api/hooks/claude-done/route-ee11f7b8a34cba8c.js +0 -1
  694. package/.next/static/chunks/app/api/hooks/permission-request/route-ee11f7b8a34cba8c.js +0 -1
  695. package/.next/static/chunks/app/api/metrics/vibe/route-ee11f7b8a34cba8c.js +0 -1
  696. package/.next/static/chunks/app/api/ollama/models/route-ee11f7b8a34cba8c.js +0 -1
  697. package/.next/static/chunks/app/api/push/escalation/route-ee11f7b8a34cba8c.js +0 -1
  698. package/.next/static/chunks/app/api/push/subscriptions/route-ee11f7b8a34cba8c.js +0 -1
  699. package/.next/static/chunks/app/api/push/vapid/route-ee11f7b8a34cba8c.js +0 -1
  700. package/.next/static/chunks/app/api/remote/pair/route-ee11f7b8a34cba8c.js +0 -1
  701. package/.next/static/chunks/app/api/repositories/[id]/route-ee11f7b8a34cba8c.js +0 -1
  702. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
  703. package/.next/static/chunks/app/api/repositories/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
  704. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-ee11f7b8a34cba8c.js +0 -1
  705. package/.next/static/chunks/app/api/repositories/clone/route-ee11f7b8a34cba8c.js +0 -1
  706. package/.next/static/chunks/app/api/repositories/excluded/route-ee11f7b8a34cba8c.js +0 -1
  707. package/.next/static/chunks/app/api/repositories/restore/route-ee11f7b8a34cba8c.js +0 -1
  708. package/.next/static/chunks/app/api/repositories/route-ee11f7b8a34cba8c.js +0 -1
  709. package/.next/static/chunks/app/api/repositories/scan/route-ee11f7b8a34cba8c.js +0 -1
  710. package/.next/static/chunks/app/api/repositories/sync/route-ee11f7b8a34cba8c.js +0 -1
  711. package/.next/static/chunks/app/api/repositories/validate-path/route-ee11f7b8a34cba8c.js +0 -1
  712. package/.next/static/chunks/app/api/settings/default-agents/route-ee11f7b8a34cba8c.js +0 -1
  713. package/.next/static/chunks/app/api/settings/default-surface-mode/route-ee11f7b8a34cba8c.js +0 -1
  714. package/.next/static/chunks/app/api/sidebar/group-order/route-ee11f7b8a34cba8c.js +0 -1
  715. package/.next/static/chunks/app/api/skills/[id]/route-ee11f7b8a34cba8c.js +0 -1
  716. package/.next/static/chunks/app/api/skills/installations/route-ee11f7b8a34cba8c.js +0 -1
  717. package/.next/static/chunks/app/api/skills/operations/route-ee11f7b8a34cba8c.js +0 -1
  718. package/.next/static/chunks/app/api/skills/reindex/route-ee11f7b8a34cba8c.js +0 -1
  719. package/.next/static/chunks/app/api/skills/route-ee11f7b8a34cba8c.js +0 -1
  720. package/.next/static/chunks/app/api/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
  721. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
  722. package/.next/static/chunks/app/api/tasks/[taskId]/route-ee11f7b8a34cba8c.js +0 -1
  723. package/.next/static/chunks/app/api/templates/[id]/route-ee11f7b8a34cba8c.js +0 -1
  724. package/.next/static/chunks/app/api/templates/route-ee11f7b8a34cba8c.js +0 -1
  725. package/.next/static/chunks/app/api/todos/route-ee11f7b8a34cba8c.js +0 -1
  726. package/.next/static/chunks/app/api/verification/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
  727. package/.next/static/chunks/app/api/verification/runs/route-ee11f7b8a34cba8c.js +0 -1
  728. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-ee11f7b8a34cba8c.js +0 -1
  729. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-ee11f7b8a34cba8c.js +0 -1
  730. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-ee11f7b8a34cba8c.js +0 -1
  731. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-ee11f7b8a34cba8c.js +0 -1
  732. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-ee11f7b8a34cba8c.js +0 -1
  733. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-ee11f7b8a34cba8c.js +0 -1
  734. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-ee11f7b8a34cba8c.js +0 -1
  735. package/.next/static/chunks/app/api/worktrees/[id]/env/route-ee11f7b8a34cba8c.js +0 -1
  736. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-ee11f7b8a34cba8c.js +0 -1
  737. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-ee11f7b8a34cba8c.js +0 -1
  738. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  739. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-ee11f7b8a34cba8c.js +0 -1
  740. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-ee11f7b8a34cba8c.js +0 -1
  741. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-ee11f7b8a34cba8c.js +0 -1
  742. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-ee11f7b8a34cba8c.js +0 -1
  743. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-ee11f7b8a34cba8c.js +0 -1
  744. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-ee11f7b8a34cba8c.js +0 -1
  745. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-ee11f7b8a34cba8c.js +0 -1
  746. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-ee11f7b8a34cba8c.js +0 -1
  747. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-ee11f7b8a34cba8c.js +0 -1
  748. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-ee11f7b8a34cba8c.js +0 -1
  749. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-ee11f7b8a34cba8c.js +0 -1
  750. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-ee11f7b8a34cba8c.js +0 -1
  751. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-ee11f7b8a34cba8c.js +0 -1
  752. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-ee11f7b8a34cba8c.js +0 -1
  753. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-ee11f7b8a34cba8c.js +0 -1
  754. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-ee11f7b8a34cba8c.js +0 -1
  755. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-ee11f7b8a34cba8c.js +0 -1
  756. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-ee11f7b8a34cba8c.js +0 -1
  757. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-ee11f7b8a34cba8c.js +0 -1
  758. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-ee11f7b8a34cba8c.js +0 -1
  759. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-ee11f7b8a34cba8c.js +0 -1
  760. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-ee11f7b8a34cba8c.js +0 -1
  761. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-ee11f7b8a34cba8c.js +0 -1
  762. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-ee11f7b8a34cba8c.js +0 -1
  763. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-ee11f7b8a34cba8c.js +0 -1
  764. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-ee11f7b8a34cba8c.js +0 -1
  765. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-ee11f7b8a34cba8c.js +0 -1
  766. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-ee11f7b8a34cba8c.js +0 -1
  767. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-ee11f7b8a34cba8c.js +0 -1
  768. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-ee11f7b8a34cba8c.js +0 -1
  769. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-ee11f7b8a34cba8c.js +0 -1
  770. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-ee11f7b8a34cba8c.js +0 -1
  771. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-ee11f7b8a34cba8c.js +0 -1
  772. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-ee11f7b8a34cba8c.js +0 -1
  773. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-ee11f7b8a34cba8c.js +0 -1
  774. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-ee11f7b8a34cba8c.js +0 -1
  775. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-ee11f7b8a34cba8c.js +0 -1
  776. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-ee11f7b8a34cba8c.js +0 -1
  777. package/.next/static/chunks/app/api/worktrees/[id]/route-ee11f7b8a34cba8c.js +0 -1
  778. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-ee11f7b8a34cba8c.js +0 -1
  779. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-ee11f7b8a34cba8c.js +0 -1
  780. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-ee11f7b8a34cba8c.js +0 -1
  781. package/.next/static/chunks/app/api/worktrees/[id]/search/route-ee11f7b8a34cba8c.js +0 -1
  782. package/.next/static/chunks/app/api/worktrees/[id]/send/route-ee11f7b8a34cba8c.js +0 -1
  783. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-ee11f7b8a34cba8c.js +0 -1
  784. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-ee11f7b8a34cba8c.js +0 -1
  785. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-ee11f7b8a34cba8c.js +0 -1
  786. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-ee11f7b8a34cba8c.js +0 -1
  787. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-ee11f7b8a34cba8c.js +0 -1
  788. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-ee11f7b8a34cba8c.js +0 -1
  789. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-ee11f7b8a34cba8c.js +0 -1
  790. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-ee11f7b8a34cba8c.js +0 -1
  791. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
  792. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-ee11f7b8a34cba8c.js +0 -1
  793. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-ee11f7b8a34cba8c.js +0 -1
  794. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-ee11f7b8a34cba8c.js +0 -1
  795. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-ee11f7b8a34cba8c.js +0 -1
  796. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-ee11f7b8a34cba8c.js +0 -1
  797. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
  798. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
  799. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  800. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-ee11f7b8a34cba8c.js +0 -1
  801. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  802. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-ee11f7b8a34cba8c.js +0 -1
  803. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-ee11f7b8a34cba8c.js +0 -1
  804. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
  805. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
  806. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-ee11f7b8a34cba8c.js +0 -1
  807. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-ee11f7b8a34cba8c.js +0 -1
  808. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-ee11f7b8a34cba8c.js +0 -1
  809. package/.next/static/chunks/app/api/worktrees/route-ee11f7b8a34cba8c.js +0 -1
  810. package/.next/static/chunks/app/manifest.webmanifest/route-ee11f7b8a34cba8c.js +0 -1
  811. package/.next/static/chunks/app/proxy/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  812. package/.next/static/chunks/app/worktrees/[id]/layout-ee11f7b8a34cba8c.js +0 -1
  813. package/.next/static/chunks/app/worktrees/[id]/page-91b639c90795baa9.js +0 -1
  814. package/.next/static/chunks/webpack-9f75198882fdaf08.js +0 -1
  815. package/.next/static/css/acc4b9c3feb04287.css +0 -1
  816. /package/.next/static/{0hTIackGXw6v7diXJS6yN → Lno4w_zWXdGdlfXg06Vp8}/_ssgManifest.js +0 -0
@@ -38,6 +38,22 @@ export interface ApiErrorResult {
38
38
  message: string;
39
39
  exitCode: number;
40
40
  }
41
+ /**
42
+ * What this function knows about the request, beyond its status (Issue #2404).
43
+ *
44
+ * `handleApiError` is a pure classifier over `(status, payload)` and has no way
45
+ * to know which server answered — which is exactly the fact a 404 needs. The
46
+ * caller's `Resource not found. Check the worktree ID.` sent an agent looking
47
+ * for a typo in an id that was correct: the CLI was dialling a *different*
48
+ * CommandMate server than the one that had started its session, and the id it
49
+ * was asking about lived on the other one. Optional so the two callers that
50
+ * classify without a client ({@link ApiClient} aside, `server-capabilities.ts`)
51
+ * keep compiling and keep their wording.
52
+ */
53
+ export interface ApiErrorContext {
54
+ /** The base URL the failing request was actually sent to. */
55
+ serverUrl?: string;
56
+ }
41
57
  /**
42
58
  * Classify API errors into user-friendly messages and exit codes.
43
59
  * [IA3-09] Covers: ECONNREFUSED, 400, 401/403, 404, 429, 500, timeout
@@ -47,9 +63,12 @@ export interface ApiErrorResult {
47
63
  * @param payload - Parsed error body, when the response carried one (Issue #1637).
48
64
  * Used for 5xx only: the 4xx messages below are already specific, and are
49
65
  * pinned by tests as the CLI's own wording.
66
+ * @param context - Which server answered, when the caller knows (Issue #2404).
67
+ * Read by the 404 branch only; the other messages do not send anyone looking
68
+ * in the wrong place.
50
69
  * @returns User-friendly error message and exit code
51
70
  */
52
- export declare function handleApiError(error: unknown, status?: number, payload?: ApiErrorPayload): ApiErrorResult;
71
+ export declare function handleApiError(error: unknown, status?: number, payload?: ApiErrorPayload, context?: ApiErrorContext): ApiErrorResult;
53
72
  /**
54
73
  * API Client for CLI HTTP communication.
55
74
  * Uses Node.js built-in fetch. Handles auth headers and error mapping.
@@ -61,6 +80,16 @@ export declare class ApiClient {
61
80
  baseUrl?: string;
62
81
  token?: string;
63
82
  });
83
+ /**
84
+ * The base URL this client actually dials (Issue #2404).
85
+ *
86
+ * Resolved once in the constructor through the precedence in
87
+ * `loadClientEnv()` (`--base-url` > exported `CM_PORT` > `~/.commandmate/.env`
88
+ * > 3000), which is why it is read from here rather than re-derived by each
89
+ * caller: a second derivation is a second answer, and "which server did this
90
+ * command talk to" only helps if it is the one the request went to.
91
+ */
92
+ get serverUrl(): string;
64
93
  private getHeaders;
65
94
  /**
66
95
  * GET without any status handling, for callers that must read the raw response.
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAK3C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAaD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CASjF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA0BD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CAyEhB;AAeD;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAmB1D,OAAO,CAAC,UAAU;IAUlB;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQ1F;;;OAGG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAuBtC;;;OAGG;IACG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BvD;;;;OAIG;IACG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAyBzD;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxD,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AA0BD;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;aAChB,UAAU,CAAC,EAAE,MAAM;IACnC,gEAAgE;aAChD,OAAO,CAAC,EAAE,eAAe;gBAJzC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,YAAA;IACnC,gEAAgE;IAChD,OAAO,CAAC,EAAE,eAAe,YAAA;IAM3C,uEAAuE;IACvE,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;CACF;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,CAAC,CAiBH;AAOD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASvF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAK3C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAaD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CASjF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA0BD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CA6EhB;AAeD;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAmB1D;;;;;;;;OAQG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,UAAU;IAUlB;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQ1F;;;OAGG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAuBtC;;;OAGG;IACG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BvD;;;;OAIG;IACG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAyBzD;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxD,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AA0BD;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;aAChB,UAAU,CAAC,EAAE,MAAM;IACnC,gEAAgE;aAChD,OAAO,CAAC,EAAE,eAAe;gBAJzC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,YAAA;IACnC,gEAAgE;IAChD,OAAO,CAAC,EAAE,eAAe,YAAA;IAM3C,uEAAuE;IACvE,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;CACF;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,CAAC,CAiBH;AAOD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASvF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE"}
@@ -87,6 +87,10 @@ function serverErrorDetail(payload) {
87
87
  ? `${detail.slice(0, MAX_SERVER_ERROR_DETAIL)}…`
88
88
  : detail;
89
89
  }
90
+ /** Append `(server: <url>)` when the caller named one. */
91
+ function withServerUrl(message, context) {
92
+ return context?.serverUrl ? `${message} (server: ${context.serverUrl})` : message;
93
+ }
90
94
  /**
91
95
  * Classify API errors into user-friendly messages and exit codes.
92
96
  * [IA3-09] Covers: ECONNREFUSED, 400, 401/403, 404, 429, 500, timeout
@@ -96,9 +100,12 @@ function serverErrorDetail(payload) {
96
100
  * @param payload - Parsed error body, when the response carried one (Issue #1637).
97
101
  * Used for 5xx only: the 4xx messages below are already specific, and are
98
102
  * pinned by tests as the CLI's own wording.
103
+ * @param context - Which server answered, when the caller knows (Issue #2404).
104
+ * Read by the 404 branch only; the other messages do not send anyone looking
105
+ * in the wrong place.
99
106
  * @returns User-friendly error message and exit code
100
107
  */
101
- function handleApiError(error, status, payload) {
108
+ function handleApiError(error, status, payload, context) {
102
109
  // HTTP status-based errors
103
110
  if (status !== undefined) {
104
111
  switch (status) {
@@ -114,8 +121,12 @@ function handleApiError(error, status, payload) {
114
121
  exitCode: types_1.ExitCode.CONFIG_ERROR,
115
122
  };
116
123
  case 404:
124
+ // Issue #2404: the sentence stays, so everything matching on it keeps
125
+ // matching; the URL is appended because "check the worktree ID" is
126
+ // advice about the wrong thing whenever the id is fine and the SERVER
127
+ // is the one that is wrong.
117
128
  return {
118
- message: 'Resource not found. Check the worktree ID.',
129
+ message: withServerUrl('Resource not found. Check the worktree ID.', context),
119
130
  exitCode: types_1.ExitCode.UNEXPECTED_ERROR,
120
131
  };
121
132
  case 429:
@@ -205,6 +216,18 @@ class ApiClient {
205
216
  console.error('Warning: Connecting to remote server over HTTP. Auth token will be sent in plaintext. Use HTTPS for non-localhost connections.');
206
217
  }
207
218
  }
219
+ /**
220
+ * The base URL this client actually dials (Issue #2404).
221
+ *
222
+ * Resolved once in the constructor through the precedence in
223
+ * `loadClientEnv()` (`--base-url` > exported `CM_PORT` > `~/.commandmate/.env`
224
+ * > 3000), which is why it is read from here rather than re-derived by each
225
+ * caller: a second derivation is a second answer, and "which server did this
226
+ * command talk to" only helps if it is the one the request went to.
227
+ */
228
+ get serverUrl() {
229
+ return this.baseUrl;
230
+ }
208
231
  getHeaders() {
209
232
  const headers = {
210
233
  'Content-Type': 'application/json',
@@ -250,7 +273,7 @@ class ApiClient {
250
273
  // Issue #1637: read the body first — handleApiError needs it to surface
251
274
  // the server's reason for a 5xx instead of "check the logs".
252
275
  const payload = await readErrorPayload(response);
253
- const errResult = handleApiError(null, response.status, payload);
276
+ const errResult = handleApiError(null, response.status, payload, { serverUrl: this.baseUrl });
254
277
  throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
255
278
  }
256
279
  return (await response.json());
@@ -277,7 +300,7 @@ class ApiClient {
277
300
  // Issue #1637: read the body first — handleApiError needs it to surface
278
301
  // the server's reason for a 5xx instead of "check the logs".
279
302
  const payload = await readErrorPayload(response);
280
- const errResult = handleApiError(null, response.status, payload);
303
+ const errResult = handleApiError(null, response.status, payload, { serverUrl: this.baseUrl });
281
304
  throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
282
305
  }
283
306
  // Handle 204 No Content
@@ -309,7 +332,7 @@ class ApiClient {
309
332
  // Issue #1637: read the body first — handleApiError needs it to surface
310
333
  // the server's reason for a 5xx instead of "check the logs".
311
334
  const payload = await readErrorPayload(response);
312
- const errResult = handleApiError(null, response.status, payload);
335
+ const errResult = handleApiError(null, response.status, payload, { serverUrl: this.baseUrl });
313
336
  throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
314
337
  }
315
338
  const text = await response.text();
@@ -0,0 +1,179 @@
1
+ /**
2
+ * How a CommandMate CLI command is spelled — the single source both the
3
+ * assistant context and the GUI read (Issue #2120).
4
+ *
5
+ * ## Why this file exists
6
+ *
7
+ * `resolveCommandMateBinary()` used to be a module-private function inside
8
+ * `src/lib/assistant/context-builder.ts`, where only the assistant prompt could
9
+ * see it. Issue #2120 puts the same four commands on screen in the roster pane,
10
+ * and a second copy of the `commandmate` / `commandmatedev` rule would be a
11
+ * second authority on the one thing the operator pastes into a shell: a
12
+ * development checkout would keep telling the assistant `commandmatedev` while
13
+ * telling the human `commandmate`, and the human's copy would simply not be on
14
+ * their PATH. So the rule moved here and both callers import it.
15
+ *
16
+ * ## Isomorphic on purpose
17
+ *
18
+ * {@link buildInstanceCliCommands} and {@link buildDelegationBrief} are pure
19
+ * functions of strings so the browser can call them.
20
+ * {@link resolveCommandMateBinary} reads an environment and is meant for the
21
+ * server — a client component cannot read `CM_LAUNCHED_BY` (Next.js inlines
22
+ * only `NEXT_PUBLIC_*` into the browser bundle), which is why
23
+ * `GET /api/worktrees/:id/cli-reference` exists to hand the answer down.
24
+ *
25
+ * Nothing here touches a DOM, and that is load-bearing rather than incidental:
26
+ * `commandmate peers` imports {@link resolveCommandMateBinary} from this file,
27
+ * and the CLI build (`tsconfig.cli.json`) has no DOM lib at all. The delegation
28
+ * brief's delivery into a composer therefore lives with the components that
29
+ * deliver it — see `insertIntoVisibleComposer` in
30
+ * `src/components/common/CommandPalette.tsx` (Issue #2376).
31
+ */
32
+ /** The binary name a globally installed CommandMate puts on PATH. */
33
+ export declare const COMMANDMATE_GLOBAL_BINARY = "commandmate";
34
+ /**
35
+ * The binary name a repository checkout puts on PATH (`npm link` in this repo).
36
+ *
37
+ * Not a fallback in the "we could not tell" sense: `commandmate start` sets
38
+ * `CM_LAUNCHED_BY=commandmate-cli` on itself and on the server child it spawns
39
+ * (`src/cli/commands/start.ts`), so a server that was NOT started that way was
40
+ * started from a checkout, and `commandmatedev` is the command that exists.
41
+ */
42
+ export declare const COMMANDMATE_DEV_BINARY = "commandmatedev";
43
+ /** The marker `commandmate start` stamps on the server process it launches. */
44
+ export declare const COMMANDMATE_CLI_LAUNCH_MARKER = "commandmate-cli";
45
+ /**
46
+ * The port a copied command does not have to name.
47
+ *
48
+ * `src/lib/env.ts` keeps its own private `DEFAULT_PORT` for the server's own
49
+ * binding; this constant answers a different question — "must the pasted line
50
+ * carry a `CM_PORT=` prefix?" — and is exported because the API route that
51
+ * decides it and the builder that renders it are in different layers.
52
+ */
53
+ export declare const DEFAULT_SERVER_PORT = 3000;
54
+ /** The binary name to spell CommandMate commands with. */
55
+ export type CommandMateBinary = typeof COMMANDMATE_GLOBAL_BINARY | typeof COMMANDMATE_DEV_BINARY;
56
+ /**
57
+ * Which binary name the CLI commands aimed at THIS server should use.
58
+ *
59
+ * @param env - The environment to read; defaults to the server's own
60
+ * @returns `commandmate` when the server was started by the installed CLI,
61
+ * `commandmatedev` otherwise
62
+ */
63
+ export declare function resolveCommandMateBinary(env?: Readonly<Record<string, string | undefined>>): CommandMateBinary;
64
+ /** The four session-targeting commands the roster pane offers, in display order. */
65
+ export declare const INSTANCE_CLI_COMMAND_IDS: readonly ["send", "wait", "capture", "respond"];
66
+ export type InstanceCliCommandId = (typeof INSTANCE_CLI_COMMAND_IDS)[number];
67
+ /**
68
+ * The answer `respond` is shown with.
69
+ *
70
+ * A NUMBER, never `yes`. `respond` hands its argument to the pane as keystrokes
71
+ * and does not resolve it semantically, so `yes` on a multiple-choice dialog is
72
+ * typed, ignored, and followed by Enter — which picks whatever the DEFAULT
73
+ * option happens to be. The number is the only form that selects what the
74
+ * operator meant. The note beside the command says so; this constant is what
75
+ * keeps the example itself from teaching the wrong habit.
76
+ */
77
+ export declare const RESPOND_ANSWER_EXAMPLE = "1";
78
+ export interface InstanceCliCommandInput {
79
+ /** From {@link resolveCommandMateBinary}, never hardcoded by the caller. */
80
+ binary: string;
81
+ /** The worktree id as the CLI must be given it. */
82
+ worktreeId: string;
83
+ /**
84
+ * The instance id **as the server resolved it**
85
+ * (`GET /api/worktrees/:id/resolve-target`). Never a roster row read directly:
86
+ * Issue #1925 is the record of what two authorities answering this question
87
+ * cost.
88
+ */
89
+ instanceId: string;
90
+ /**
91
+ * The port to name in a `CM_PORT=` prefix, or null when this server is on
92
+ * {@link DEFAULT_SERVER_PORT} and the prefix would be noise.
93
+ *
94
+ * There is deliberately no `--port` flag here: `send` / `wait` / `capture` /
95
+ * `respond` do not define one (only `start` / `stop` / `status` do), so a
96
+ * pasted `--port 3135` would be rejected by commander as an unknown option.
97
+ * `CM_PORT=<n> commandmate ls` is the documented way to aim one invocation at
98
+ * a non-default server (see `loadClientEnv()` in `src/cli/utils/server-url.ts`).
99
+ */
100
+ portPrefix?: number | null;
101
+ /** Localized stand-in for the message body, e.g. `メッセージ`. */
102
+ messagePlaceholder: string;
103
+ }
104
+ /**
105
+ * Render the four commands that address one agent instance.
106
+ *
107
+ * The message body stays a PLACEHOLDER. Quoting a real body correctly in the
108
+ * browser means getting Japanese text, newlines and embedded quotes past a
109
+ * shell whose dialect this code cannot see, and a near-miss does not fail
110
+ * loudly — it sends a truncated prompt to a live agent.
111
+ *
112
+ * `worktreeId` and `instanceId` need no quoting of their own: both are
113
+ * validated before they can reach a roster row or this route
114
+ * (`isValidWorktreeId` / `isValidInstanceId` allow no shell metacharacter).
115
+ *
116
+ * @param input - Binary, target and presentation details
117
+ * @returns One shell line per command id
118
+ */
119
+ export declare function buildInstanceCliCommands(input: InstanceCliCommandInput): Record<InstanceCliCommandId, string>;
120
+ /**
121
+ * `--timeout` the brief tells session A to use, in seconds.
122
+ *
123
+ * 30 minutes. Long enough that an ordinary implementation request is not cut
124
+ * off mid-turn, short enough that a session which died in its pane surfaces as
125
+ * an exit 124 in the same sitting rather than at the end of the day. A caller
126
+ * who wants a different one edits the line — it is a brief, not a config.
127
+ */
128
+ export declare const DELEGATION_ASK_TIMEOUT_SECONDS = 1800;
129
+ /** The locales the brief is written in. Anything else falls back to English. */
130
+ export type DelegationBriefLocale = 'ja' | 'en';
131
+ export interface DelegationBriefInput {
132
+ /** From {@link resolveCommandMateBinary}, never hardcoded by the caller. */
133
+ binary: string;
134
+ /** The worktree id as the CLI must be given it. */
135
+ worktreeId: string;
136
+ /**
137
+ * The instance id **as the server resolved it**
138
+ * (`GET /api/worktrees/:id/resolve-target`) — the same rule
139
+ * {@link InstanceCliCommandInput.instanceId} states, for the same reason.
140
+ */
141
+ instanceId: string;
142
+ /** The roster alias of the target instance, e.g. `Codex 2`. */
143
+ instanceLabel: string;
144
+ /** Display name of the CLI tool behind the instance, e.g. `Codex`. */
145
+ toolLabel: string;
146
+ /** As {@link InstanceCliCommandInput.portPrefix}. */
147
+ portPrefix?: number | null;
148
+ /** UI locale. Anything but `ja` is written in English. */
149
+ locale: string;
150
+ }
151
+ /**
152
+ * The paragraph one agent session pastes to another agent session's operator —
153
+ * "here is how you delegate to that session" — in the UI's own language.
154
+ *
155
+ * ## Why it lives beside {@link buildInstanceCliCommands}
156
+ *
157
+ * Both answer the same question (how is a CommandMate command aimed at ONE
158
+ * instance spelled?) from the same two server reads, and Issue #2120 already
159
+ * paid for learning that a second copy of the binary-name rule is a copy that
160
+ * tells the human one thing and the assistant another. The panel and the brief
161
+ * therefore share this module, and neither composes a command from what the
162
+ * browser happens to know.
163
+ *
164
+ * ## Why the text is here rather than in `locales/`
165
+ *
166
+ * It is a PROMPT, not a label. The whole value of it is that the four exit
167
+ * codes, the "do not answer their prompt" rule and the command spellings arrive
168
+ * together and unedited; a translator moving a line between keys, or a key
169
+ * resolving to its own name because the namespace was renamed, produces a brief
170
+ * that still looks like a brief and quietly drops the one clause that stops
171
+ * session A from answering session B's permission dialog. The two languages are
172
+ * written out in full, side by side, so a change to one is visibly a change to
173
+ * the other.
174
+ *
175
+ * @param input - Binary, target and locale
176
+ * @returns The brief, ready to be inserted into a composer
177
+ */
178
+ export declare function buildDelegationBrief(input: DelegationBriefInput): string;
179
+ //# sourceMappingURL=command-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-reference.d.ts","sourceRoot":"","sources":["../../../src/lib/cli/command-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,gBAAgB,CAAC;AAEvD;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AAEvD,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,oBAAoB,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GACzB,OAAO,yBAAyB,GAChC,OAAO,sBAAsB,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,iBAAiB,CAInB;AAED,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,iDAAkD,CAAC;AAExF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,MAAM,WAAW,uBAAuB;IACtC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAmBtC;AAMD;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAUnD,gFAAgF;AAChF,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAqDxE"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * How a CommandMate CLI command is spelled — the single source both the
4
+ * assistant context and the GUI read (Issue #2120).
5
+ *
6
+ * ## Why this file exists
7
+ *
8
+ * `resolveCommandMateBinary()` used to be a module-private function inside
9
+ * `src/lib/assistant/context-builder.ts`, where only the assistant prompt could
10
+ * see it. Issue #2120 puts the same four commands on screen in the roster pane,
11
+ * and a second copy of the `commandmate` / `commandmatedev` rule would be a
12
+ * second authority on the one thing the operator pastes into a shell: a
13
+ * development checkout would keep telling the assistant `commandmatedev` while
14
+ * telling the human `commandmate`, and the human's copy would simply not be on
15
+ * their PATH. So the rule moved here and both callers import it.
16
+ *
17
+ * ## Isomorphic on purpose
18
+ *
19
+ * {@link buildInstanceCliCommands} and {@link buildDelegationBrief} are pure
20
+ * functions of strings so the browser can call them.
21
+ * {@link resolveCommandMateBinary} reads an environment and is meant for the
22
+ * server — a client component cannot read `CM_LAUNCHED_BY` (Next.js inlines
23
+ * only `NEXT_PUBLIC_*` into the browser bundle), which is why
24
+ * `GET /api/worktrees/:id/cli-reference` exists to hand the answer down.
25
+ *
26
+ * Nothing here touches a DOM, and that is load-bearing rather than incidental:
27
+ * `commandmate peers` imports {@link resolveCommandMateBinary} from this file,
28
+ * and the CLI build (`tsconfig.cli.json`) has no DOM lib at all. The delegation
29
+ * brief's delivery into a composer therefore lives with the components that
30
+ * deliver it — see `insertIntoVisibleComposer` in
31
+ * `src/components/common/CommandPalette.tsx` (Issue #2376).
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.DELEGATION_ASK_TIMEOUT_SECONDS = exports.RESPOND_ANSWER_EXAMPLE = exports.INSTANCE_CLI_COMMAND_IDS = exports.DEFAULT_SERVER_PORT = exports.COMMANDMATE_CLI_LAUNCH_MARKER = exports.COMMANDMATE_DEV_BINARY = exports.COMMANDMATE_GLOBAL_BINARY = void 0;
35
+ exports.resolveCommandMateBinary = resolveCommandMateBinary;
36
+ exports.buildInstanceCliCommands = buildInstanceCliCommands;
37
+ exports.buildDelegationBrief = buildDelegationBrief;
38
+ /** The binary name a globally installed CommandMate puts on PATH. */
39
+ exports.COMMANDMATE_GLOBAL_BINARY = 'commandmate';
40
+ /**
41
+ * The binary name a repository checkout puts on PATH (`npm link` in this repo).
42
+ *
43
+ * Not a fallback in the "we could not tell" sense: `commandmate start` sets
44
+ * `CM_LAUNCHED_BY=commandmate-cli` on itself and on the server child it spawns
45
+ * (`src/cli/commands/start.ts`), so a server that was NOT started that way was
46
+ * started from a checkout, and `commandmatedev` is the command that exists.
47
+ */
48
+ exports.COMMANDMATE_DEV_BINARY = 'commandmatedev';
49
+ /** The marker `commandmate start` stamps on the server process it launches. */
50
+ exports.COMMANDMATE_CLI_LAUNCH_MARKER = 'commandmate-cli';
51
+ /**
52
+ * The port a copied command does not have to name.
53
+ *
54
+ * `src/lib/env.ts` keeps its own private `DEFAULT_PORT` for the server's own
55
+ * binding; this constant answers a different question — "must the pasted line
56
+ * carry a `CM_PORT=` prefix?" — and is exported because the API route that
57
+ * decides it and the builder that renders it are in different layers.
58
+ */
59
+ exports.DEFAULT_SERVER_PORT = 3000;
60
+ /**
61
+ * Which binary name the CLI commands aimed at THIS server should use.
62
+ *
63
+ * @param env - The environment to read; defaults to the server's own
64
+ * @returns `commandmate` when the server was started by the installed CLI,
65
+ * `commandmatedev` otherwise
66
+ */
67
+ function resolveCommandMateBinary(env = process.env) {
68
+ return env.CM_LAUNCHED_BY === exports.COMMANDMATE_CLI_LAUNCH_MARKER
69
+ ? exports.COMMANDMATE_GLOBAL_BINARY
70
+ : exports.COMMANDMATE_DEV_BINARY;
71
+ }
72
+ /** The four session-targeting commands the roster pane offers, in display order. */
73
+ exports.INSTANCE_CLI_COMMAND_IDS = ['send', 'wait', 'capture', 'respond'];
74
+ /**
75
+ * The answer `respond` is shown with.
76
+ *
77
+ * A NUMBER, never `yes`. `respond` hands its argument to the pane as keystrokes
78
+ * and does not resolve it semantically, so `yes` on a multiple-choice dialog is
79
+ * typed, ignored, and followed by Enter — which picks whatever the DEFAULT
80
+ * option happens to be. The number is the only form that selects what the
81
+ * operator meant. The note beside the command says so; this constant is what
82
+ * keeps the example itself from teaching the wrong habit.
83
+ */
84
+ exports.RESPOND_ANSWER_EXAMPLE = '1';
85
+ /**
86
+ * Render the four commands that address one agent instance.
87
+ *
88
+ * The message body stays a PLACEHOLDER. Quoting a real body correctly in the
89
+ * browser means getting Japanese text, newlines and embedded quotes past a
90
+ * shell whose dialect this code cannot see, and a near-miss does not fail
91
+ * loudly — it sends a truncated prompt to a live agent.
92
+ *
93
+ * `worktreeId` and `instanceId` need no quoting of their own: both are
94
+ * validated before they can reach a roster row or this route
95
+ * (`isValidWorktreeId` / `isValidInstanceId` allow no shell metacharacter).
96
+ *
97
+ * @param input - Binary, target and presentation details
98
+ * @returns One shell line per command id
99
+ */
100
+ function buildInstanceCliCommands(input) {
101
+ const { binary, worktreeId, instanceId, messagePlaceholder } = input;
102
+ const prefix = input.portPrefix != null && input.portPrefix !== exports.DEFAULT_SERVER_PORT
103
+ ? `CM_PORT=${input.portPrefix} `
104
+ : '';
105
+ const target = `--instance ${instanceId}`;
106
+ const head = `${prefix}${binary}`;
107
+ return {
108
+ send: `${head} send ${worktreeId} "${messagePlaceholder}" ${target}`,
109
+ // `--on-prompt human` is part of the copied line, not an afterthought: the
110
+ // default (`agent`) exits 10 the moment a prompt appears, which is right
111
+ // for a script polling in a loop and useless for the operator who just
112
+ // pasted a wait into their own terminal.
113
+ wait: `${head} wait ${worktreeId} ${target} --on-prompt human`,
114
+ capture: `${head} capture ${worktreeId} ${target}`,
115
+ respond: `${head} respond ${worktreeId} "${exports.RESPOND_ANSWER_EXAMPLE}" ${target}`,
116
+ };
117
+ }
118
+ // ===========================================================================
119
+ // Delegation brief (Issue #2376)
120
+ // ===========================================================================
121
+ /**
122
+ * `--timeout` the brief tells session A to use, in seconds.
123
+ *
124
+ * 30 minutes. Long enough that an ordinary implementation request is not cut
125
+ * off mid-turn, short enough that a session which died in its pane surfaces as
126
+ * an exit 124 in the same sitting rather than at the end of the day. A caller
127
+ * who wants a different one edits the line — it is a brief, not a config.
128
+ */
129
+ exports.DELEGATION_ASK_TIMEOUT_SECONDS = 1800;
130
+ /**
131
+ * Rows of pane transcript the brief's progress-check line asks for.
132
+ *
133
+ * Matches what `capture --pane --tail 60` shows a human: enough to see what the
134
+ * other session is doing, short enough to paste into a report.
135
+ */
136
+ const DELEGATION_CAPTURE_TAIL = 60;
137
+ /**
138
+ * The paragraph one agent session pastes to another agent session's operator —
139
+ * "here is how you delegate to that session" — in the UI's own language.
140
+ *
141
+ * ## Why it lives beside {@link buildInstanceCliCommands}
142
+ *
143
+ * Both answer the same question (how is a CommandMate command aimed at ONE
144
+ * instance spelled?) from the same two server reads, and Issue #2120 already
145
+ * paid for learning that a second copy of the binary-name rule is a copy that
146
+ * tells the human one thing and the assistant another. The panel and the brief
147
+ * therefore share this module, and neither composes a command from what the
148
+ * browser happens to know.
149
+ *
150
+ * ## Why the text is here rather than in `locales/`
151
+ *
152
+ * It is a PROMPT, not a label. The whole value of it is that the four exit
153
+ * codes, the "do not answer their prompt" rule and the command spellings arrive
154
+ * together and unedited; a translator moving a line between keys, or a key
155
+ * resolving to its own name because the namespace was renamed, produces a brief
156
+ * that still looks like a brief and quietly drops the one clause that stops
157
+ * session A from answering session B's permission dialog. The two languages are
158
+ * written out in full, side by side, so a change to one is visibly a change to
159
+ * the other.
160
+ *
161
+ * @param input - Binary, target and locale
162
+ * @returns The brief, ready to be inserted into a composer
163
+ */
164
+ function buildDelegationBrief(input) {
165
+ const { binary, worktreeId, instanceId, instanceLabel, toolLabel } = input;
166
+ const prefix = input.portPrefix != null && input.portPrefix !== exports.DEFAULT_SERVER_PORT
167
+ ? `CM_PORT=${input.portPrefix} `
168
+ : '';
169
+ const head = `${prefix}${binary}`;
170
+ const target = `--instance ${instanceId}`;
171
+ const locale = input.locale === 'ja' ? 'ja' : 'en';
172
+ const capture = `${head} capture ${worktreeId} ${target} --pane --tail ${DELEGATION_CAPTURE_TAIL}`;
173
+ // Issue #2377: the same delegation without the block. Offered as the SECOND
174
+ // line rather than as a replacement because the two are different jobs: `ask`
175
+ // is right when the answer is the next thing you need, `--async` is right when
176
+ // it is not — and a brief that only taught the asynchronous form would have
177
+ // agents registering relays for questions they are about to sit and wait for
178
+ // anyway.
179
+ const asyncAsk = `${head} ask ${worktreeId} ${target} "<request>" --async`;
180
+ if (locale === 'ja') {
181
+ const ask = `${head} ask ${worktreeId} ${target} "<依頼文>" --timeout ${exports.DELEGATION_ASK_TIMEOUT_SECONDS}`;
182
+ return [
183
+ `## 別セッション「${instanceLabel}」への委任`,
184
+ `- 宛先: worktree \`${worktreeId}\` / instance \`${instanceId}\`(${toolLabel})`,
185
+ `- 依頼: ${ask}`,
186
+ ' - exit 0: 標準出力が返答本文',
187
+ ' - exit 10: 相手が確認待ち。標準出力のprompt JSONを私に報告して止まる(自分で答えない)',
188
+ ' - exit 124: タイムアウト。captureで状況を見て報告',
189
+ `- 待たない依頼: ${asyncAsk}`,
190
+ ' - 即座に relay id を返して exit 0。完了時に `[from ...]` 付きで返答が私のコンポーザーに届く',
191
+ ` - 状況確認: ${head} relays / 取り消し: ${head} relays cancel <relay-id>`,
192
+ `- 進捗確認: ${capture}`,
193
+ '- 禁止: respondで相手のプロンプトに答える / auto-yesを有効化する',
194
+ ].join('\n');
195
+ }
196
+ const ask = `${head} ask ${worktreeId} ${target} "<request>" --timeout ${exports.DELEGATION_ASK_TIMEOUT_SECONDS}`;
197
+ return [
198
+ `## Delegating to session "${instanceLabel}"`,
199
+ `- Target: worktree \`${worktreeId}\` / instance \`${instanceId}\` (${toolLabel})`,
200
+ `- Ask: ${ask}`,
201
+ ' - exit 0: stdout is the reply body',
202
+ ' - exit 10: they are waiting on a confirmation. Report the prompt JSON on stdout back to me and stop (do not answer it yourself)',
203
+ ' - exit 124: timed out. Look with capture and report what you see',
204
+ `- Ask without waiting: ${asyncAsk}`,
205
+ ' - exits 0 with a relay id on stdout; the reply lands in my composer prefixed `[from ...]` when the turn ends',
206
+ ` - Outstanding: ${head} relays / withdraw: ${head} relays cancel <relay-id>`,
207
+ `- Progress: ${capture}`,
208
+ '- Do not: answer their prompt with respond / turn auto-yes on',
209
+ ].join('\n');
210
+ }
@@ -10,16 +10,29 @@
10
10
  * Covers:
11
11
  * - SGR sequences: ESC[Nm (colors, bold, underline, etc.)
12
12
  * - OSC sequences: ESC]...BEL and ESC]...ST (ESC \\) - window title, and the
13
- * OSC 8 hyperlinks that claude/codex/copilot emit (Issue #1912)
13
+ * OSC 8 hyperlinks that claude/codex/copilot emit (Issue #1912). Also
14
+ * available on its own as {@link stripOsc} (Issue #2369), for a consumer that
15
+ * renders SGR and must not render OSC.
14
16
  * - CSI sequences: ESC[...letter (cursor movement, erase, etc.)
15
17
  *
16
18
  * Known limitations (SEC-002): 8-bit CSI (0x9B), DEC private modes (ESC[?25h),
17
19
  * character-set switching (ESC(0), and some RGB color forms may not match. In
18
20
  * practice tmux capture-pane output rarely contains these.
19
21
  */
22
+ /** {@link OSC_SOURCE} as a reusable global pattern. */
23
+ export declare const OSC_PATTERN: RegExp;
20
24
  export declare const ANSI_PATTERN: RegExp;
21
25
  /** Remove all ANSI escape sequences from a string. */
22
26
  export declare function stripAnsi(str: string): string;
27
+ /**
28
+ * Remove OSC sequences only, leaving SGR (colour) and CSI untouched.
29
+ *
30
+ * For OSC 8 hyperlinks — `ESC ] 8 ; ; <url> ST <label> ESC ] 8 ; ; ST` — this
31
+ * drops both halves of the pair and keeps `<label>`, which is the text the
32
+ * terminal itself shows. See {@link OSC_PATTERN} for who needs this and why
33
+ * `stripAnsi` is not the answer for them.
34
+ */
35
+ export declare function stripOsc(str: string): string;
23
36
  /**
24
37
  * Extract the ANSI escape sequences from a string, in order, discarding all
25
38
  * other characters. Reuses the same tested pattern as {@link stripAnsi} so the
@@ -1 +1 @@
1
- {"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/ansi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,YAAY,QAC8C,CAAC;AAExE,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGxD"}
1
+ {"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/ansi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAwBH,uDAAuD;AACvD,eAAO,MAAM,WAAW,QAA8B,CAAC;AAEvD,eAAO,MAAM,YAAY,QAGxB,CAAC;AAEF,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGxD"}
@@ -11,7 +11,9 @@
11
11
  * Covers:
12
12
  * - SGR sequences: ESC[Nm (colors, bold, underline, etc.)
13
13
  * - OSC sequences: ESC]...BEL and ESC]...ST (ESC \\) - window title, and the
14
- * OSC 8 hyperlinks that claude/codex/copilot emit (Issue #1912)
14
+ * OSC 8 hyperlinks that claude/codex/copilot emit (Issue #1912). Also
15
+ * available on its own as {@link stripOsc} (Issue #2369), for a consumer that
16
+ * renders SGR and must not render OSC.
15
17
  * - CSI sequences: ESC[...letter (cursor movement, erase, etc.)
16
18
  *
17
19
  * Known limitations (SEC-002): 8-bit CSI (0x9B), DEC private modes (ESC[?25h),
@@ -19,14 +21,49 @@
19
21
  * practice tmux capture-pane output rarely contains these.
20
22
  */
21
23
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.ANSI_PATTERN = void 0;
24
+ exports.ANSI_PATTERN = exports.OSC_PATTERN = void 0;
23
25
  exports.stripAnsi = stripAnsi;
26
+ exports.stripOsc = stripOsc;
24
27
  exports.extractAnsiSequences = extractAnsiSequences;
25
- exports.ANSI_PATTERN = /\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)|\[[0-9;]*m/g;
28
+ /**
29
+ * One OSC sequence: `ESC ]`, a payload, and either terminator (BEL or ST).
30
+ *
31
+ * Split out of {@link ANSI_PATTERN} by Issue #2369 so a second consumer can
32
+ * strip OSC **without** stripping SGR. `sanitizeTerminalOutput`
33
+ * (`lib/security/sanitize.ts`) is that consumer: it hands the frame to
34
+ * `ansi-to-html`, which turns SGR into colour and does not know OSC at all — so
35
+ * before this split, Command Code's `/usage` panel rendered its breakdown link
36
+ * as the literal text `]8;;https://commandcode.ai/…\` beside the label. Calling
37
+ * `stripAnsi` there would have thrown the colour away with it.
38
+ *
39
+ * The payload class excludes ESC as well as BEL (Issue #1912) so a sequence
40
+ * ended by ST cannot run on to a BEL later in the buffer and swallow the visible
41
+ * link text between them. An OSC with no terminator at all matches nothing and
42
+ * is left in place, which is the safe answer: eating the rest of the frame is
43
+ * worse than showing one stray escape.
44
+ *
45
+ * The source is shared with {@link ANSI_PATTERN} rather than restated, so the
46
+ * two cannot drift about which terminators exist.
47
+ */
48
+ const OSC_SOURCE = '\\x1b\\][^\\x07\\x1b]*(?:\\x07|\\x1b\\\\)';
49
+ /** {@link OSC_SOURCE} as a reusable global pattern. */
50
+ exports.OSC_PATTERN = new RegExp(OSC_SOURCE, 'g');
51
+ exports.ANSI_PATTERN = new RegExp(`\\x1b\\[[0-9;]*[a-zA-Z]|${OSC_SOURCE}|\\[[0-9;]*m`, 'g');
26
52
  /** Remove all ANSI escape sequences from a string. */
27
53
  function stripAnsi(str) {
28
54
  return str.replace(exports.ANSI_PATTERN, '');
29
55
  }
56
+ /**
57
+ * Remove OSC sequences only, leaving SGR (colour) and CSI untouched.
58
+ *
59
+ * For OSC 8 hyperlinks — `ESC ] 8 ; ; <url> ST <label> ESC ] 8 ; ; ST` — this
60
+ * drops both halves of the pair and keeps `<label>`, which is the text the
61
+ * terminal itself shows. See {@link OSC_PATTERN} for who needs this and why
62
+ * `stripAnsi` is not the answer for them.
63
+ */
64
+ function stripOsc(str) {
65
+ return str.replace(exports.OSC_PATTERN, '');
66
+ }
30
67
  /**
31
68
  * Extract the ANSI escape sequences from a string, in order, discarding all
32
69
  * other characters. Reuses the same tested pattern as {@link stripAnsi} so the