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
@@ -10,7 +10,10 @@
10
10
  * commandmate instances <worktree-id> kill <instance-id>
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.INSTANCE_SELECTOR_ERROR = exports.INSTANCE_ALIAS_HELP_SUFFIX = void 0;
13
14
  exports.resolveInstanceCliTool = resolveInstanceCliTool;
15
+ exports.isInstanceSelector = isInstanceSelector;
16
+ exports.resolveInstanceTarget = resolveInstanceTarget;
14
17
  exports.createInstancesCommand = createInstancesCommand;
15
18
  const commander_1 = require("commander");
16
19
  const types_1 = require("../types");
@@ -19,6 +22,10 @@ const command_helpers_1 = require("../utils/command-helpers");
19
22
  const cli_tool_ids_1 = require("../config/cli-tool-ids");
20
23
  const agent_instances_1 = require("../utils/agent-instances");
21
24
  const session_target_1 = require("../utils/session-target");
25
+ // Issue #2404: "the worktree is not on this server" is a different failure from
26
+ // "the worktree id is wrong", and only the session's own identity can tell them
27
+ // apart.
28
+ const whoami_1 = require("./whoami");
22
29
  // Issue #2317: the tmux session name each instance runs in, so `commandmate
23
30
  // attach` / `tmux attach` need no hand-assembly of `mcbd-<tool>-<wt>[-<suffix>]`.
24
31
  const session_name_1 = require("../../lib/cli-tools/session-name");
@@ -103,20 +110,113 @@ function formatInstancesTable(rows) {
103
110
  * @returns the CLI tool to send, or undefined to let an older server decide
104
111
  */
105
112
  async function resolveInstanceCliTool(client, worktreeId, instanceId, requestedAgent, mode = 'strict') {
106
- const target = await (0, session_target_1.resolveSessionTarget)(client, worktreeId, {
107
- instanceId,
108
- requestedCliTool: requestedAgent,
109
- });
113
+ return (await resolveInstanceTarget(client, worktreeId, instanceId, requestedAgent, mode))
114
+ .cliToolId;
115
+ }
116
+ // ===========================================================================
117
+ // Instance selectors: an id OR an alias (Issue #2376)
118
+ // ===========================================================================
119
+ /**
120
+ * The server's code for an `--instance` two roster rows answer to.
121
+ *
122
+ * Mirrors `AMBIGUOUS_INSTANCE_ALIAS` in
123
+ * `src/app/api/worktrees/[id]/resolve-target/route.ts`; duplicated rather than
124
+ * imported because a route module may export only the names Next.js accepts
125
+ * (`scripts/check-route-exports.mjs`, Issue #1946) — the same arrangement
126
+ * `send.ts` has with `PROMPT_WAITING`.
127
+ */
128
+ const AMBIGUOUS_INSTANCE_ALIAS_CODE = 'ambiguous_instance_alias';
129
+ /**
130
+ * Whether `value` is something the server could resolve to an instance.
131
+ *
132
+ * An instance id, or an alias. Issue #2376 widened `--instance` to accept the
133
+ * second because it is the only name a human has for `codex-2`: the roster pane
134
+ * shows `Codex 2`, `commandmate instances <id>` prints it in the ALIAS column,
135
+ * and `--instance "Codex 2"` used to be rejected here — before any request —
136
+ * with "must be an alphanumeric identifier".
137
+ *
138
+ * The check is deliberately loose: an alias is free text (`レビュー担当`), and
139
+ * the authority on whether one EXISTS is the roster, which only the server has.
140
+ * All this rules out is a value no alias can be — empty, longer than the alias
141
+ * field allows, or carrying control characters.
142
+ *
143
+ * @param value - The `--instance` value as given
144
+ */
145
+ function isInstanceSelector(value) {
146
+ if ((0, api_client_1.isValidInstanceId)(value))
147
+ return true;
148
+ if (value.length === 0 || value.length > agent_instances_1.MAX_AGENT_ALIAS_LENGTH)
149
+ return false;
150
+ // eslint-disable-next-line no-control-regex
151
+ return !/[\u0000-\u001f\u007f]/.test(value);
152
+ }
153
+ /**
154
+ * The sentence appended to every command's `--instance` help (Issue #2376).
155
+ *
156
+ * Kept beside the validator that accepts the form, not in
157
+ * `config/agent-target-options.ts`, so the help and the check cannot drift: the
158
+ * day the alias stage is removed, both go together.
159
+ */
160
+ exports.INSTANCE_ALIAS_HELP_SUFFIX = 'Also accepts a roster alias as shown by `commandmate instances <worktree-id>` '
161
+ + '(e.g. --instance "Codex 2"); an alias two rows answer to is exit 2 with the candidates listed.';
162
+ /** The sentence `--instance` is rejected with. One place, five commands. */
163
+ exports.INSTANCE_SELECTOR_ERROR = 'Error: Invalid --instance. Give an instance id (alphanumeric/underscore/hyphen, max 64 chars) '
164
+ + `or a roster alias (max ${agent_instances_1.MAX_AGENT_ALIAS_LENGTH} chars).`;
165
+ /**
166
+ * Resolve `--instance` — id or alias — to the agent and instance id to address.
167
+ *
168
+ * The one resolution path, as Issue #1925 established: the server answers,
169
+ * `resolveSessionTarget` asks, and this adds only what a CLI caller has to do
170
+ * with the two answers it can get back that a browser does not care about — a
171
+ * roster contradiction ({@link InstanceConflictMode}) and, since Issue #2376, an
172
+ * alias that names more than one row.
173
+ *
174
+ * The ambiguity is exit 2 with every candidate printed, never a pick: two rows
175
+ * called `Codex` are two different tmux sessions, and choosing one for the
176
+ * operator is how a message reaches the wrong agent silently.
177
+ *
178
+ * @param client - API client aimed at the server
179
+ * @param worktreeId - Worktree ID
180
+ * @param selector - The `--instance` value (an instance id or a roster alias),
181
+ * or undefined for a caller that resolves only to learn the agent
182
+ * @param requestedAgent - The `--agent` value, if the user gave one
183
+ * @param mode - What a roster contradiction means for this caller
184
+ */
185
+ async function resolveInstanceTarget(client, worktreeId, selector, requestedAgent, mode = 'strict') {
186
+ let target;
187
+ try {
188
+ target = await (0, session_target_1.resolveSessionTarget)(client, worktreeId, {
189
+ instanceId: selector,
190
+ requestedCliTool: requestedAgent,
191
+ });
192
+ }
193
+ catch (error) {
194
+ if (error instanceof api_client_1.ApiError && error.apiCode === AMBIGUOUS_INSTANCE_ALIAS_CODE) {
195
+ console.error(`Error: ${error.payload?.error ?? `--instance '${selector}' is ambiguous.`}`);
196
+ for (const candidate of error.payload?.issues ?? []) {
197
+ console.error(` - ${candidate}`);
198
+ }
199
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
200
+ }
201
+ throw error;
202
+ }
110
203
  if (target.conflict) {
111
204
  const detail = (0, session_target_1.describeSessionTargetConflict)(target.conflict);
112
205
  if (mode === 'strict') {
113
206
  console.error(`Error: ${detail}`);
114
207
  process.exit(types_1.ExitCode.CONFIG_ERROR);
115
- return requestedAgent;
116
208
  }
117
- console.error(`Warning: ${detail} Reading ${target.conflict.rosterCliTool}.`);
209
+ else {
210
+ console.error(`Warning: ${detail} Reading ${target.conflict.rosterCliTool}.`);
211
+ }
118
212
  }
119
- return target.cliToolId;
213
+ return {
214
+ cliToolId: target.cliToolId,
215
+ // The server always echoes the effective instance; the fallback covers the
216
+ // `client-fallback` path against a daemon older than the endpoint, where the
217
+ // value the user typed is the only one there is.
218
+ instanceId: selector === undefined ? undefined : (target.instanceId ?? selector),
219
+ };
120
220
  }
121
221
  /**
122
222
  * The opencode session each instance will resume, keyed by instance id
@@ -147,8 +247,7 @@ async function fetchOpencodeSessions(client, worktreeId, instances) {
147
247
  * Probes GET .../current-output?cliTool=&instance= per instance (same
148
248
  * endpoint capture.ts uses) since the roster itself carries no session state.
149
249
  */
150
- async function listInstances(worktreeId, options) {
151
- const client = new api_client_1.ApiClient({ token: options.token });
250
+ async function listInstances(client, worktreeId, options) {
152
251
  const instances = await (0, agent_instances_1.fetchAgentInstances)(client, worktreeId);
153
252
  // Issue #2038: one extra request for the whole worktree, and only when there
154
253
  // is an opencode instance to ask about — the endpoint is opencode-only and a
@@ -190,7 +289,7 @@ async function listInstances(worktreeId, options) {
190
289
  /**
191
290
  * Add action: append a new instance to the roster (PATCH full replacement).
192
291
  */
193
- async function addInstance(worktreeId, options) {
292
+ async function addInstance(client, worktreeId, options) {
194
293
  if (!options.agent) {
195
294
  console.error('Error: add requires --agent <tool>.');
196
295
  process.exit(types_1.ExitCode.CONFIG_ERROR);
@@ -207,7 +306,6 @@ async function addInstance(worktreeId, options) {
207
306
  console.error(`Error: --alias exceeds ${agent_instances_1.MAX_AGENT_ALIAS_LENGTH} characters.`);
208
307
  process.exit(types_1.ExitCode.CONFIG_ERROR);
209
308
  }
210
- const client = new api_client_1.ApiClient({ token: options.token });
211
309
  const existing = await (0, agent_instances_1.fetchAgentInstances)(client, worktreeId);
212
310
  if (existing.length >= agent_instances_1.MAX_AGENT_INSTANCES) {
213
311
  console.error(`Error: worktree already has the maximum of ${agent_instances_1.MAX_AGENT_INSTANCES} agent instances.`);
@@ -236,12 +334,11 @@ async function addInstance(worktreeId, options) {
236
334
  * Remove action: drop an instance from the roster. Kills the session first
237
335
  * (when --kill) so the server can still resolve its CLI tool from the roster.
238
336
  */
239
- async function removeInstance(worktreeId, instanceId, options) {
337
+ async function removeInstance(client, worktreeId, instanceId, options) {
240
338
  if (!(0, api_client_1.isValidInstanceId)(instanceId)) {
241
339
  console.error('Error: Invalid instance id. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
242
340
  process.exit(types_1.ExitCode.CONFIG_ERROR);
243
341
  }
244
- const client = new api_client_1.ApiClient({ token: options.token });
245
342
  const existing = await (0, agent_instances_1.fetchAgentInstances)(client, worktreeId);
246
343
  if (!existing.some(inst => inst.id === instanceId)) {
247
344
  console.error(`Error: instance '${instanceId}' not found in roster.`);
@@ -267,7 +364,7 @@ async function removeInstance(worktreeId, instanceId, options) {
267
364
  /**
268
365
  * Alias action: rename an existing instance's display label.
269
366
  */
270
- async function renameInstance(worktreeId, instanceId, alias, options) {
367
+ async function renameInstance(client, worktreeId, instanceId, alias) {
271
368
  if (!(0, api_client_1.isValidInstanceId)(instanceId)) {
272
369
  console.error('Error: Invalid instance id. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
273
370
  process.exit(types_1.ExitCode.CONFIG_ERROR);
@@ -276,7 +373,6 @@ async function renameInstance(worktreeId, instanceId, alias, options) {
276
373
  console.error(`Error: alias must be 1-${agent_instances_1.MAX_AGENT_ALIAS_LENGTH} characters.`);
277
374
  process.exit(types_1.ExitCode.CONFIG_ERROR);
278
375
  }
279
- const client = new api_client_1.ApiClient({ token: options.token });
280
376
  const existing = await (0, agent_instances_1.fetchAgentInstances)(client, worktreeId);
281
377
  const index = existing.findIndex(inst => inst.id === instanceId);
282
378
  if (index === -1) {
@@ -292,15 +388,33 @@ async function renameInstance(worktreeId, instanceId, alias, options) {
292
388
  * The server resolves the backing CLI tool from the roster via the `instance`
293
389
  * query param (kill-session/route.ts), so no extra lookup is needed here.
294
390
  */
295
- async function killInstance(worktreeId, instanceId, options) {
391
+ async function killInstance(client, worktreeId, instanceId) {
296
392
  if (!(0, api_client_1.isValidInstanceId)(instanceId)) {
297
393
  console.error('Error: Invalid instance id. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
298
394
  process.exit(types_1.ExitCode.CONFIG_ERROR);
299
395
  }
300
- const client = new api_client_1.ApiClient({ token: options.token });
301
396
  await client.post(`/api/worktrees/${worktreeId}/kill-session?instance=${encodeURIComponent(instanceId)}`);
302
397
  console.error(`Session killed: ${instanceId}`);
303
398
  }
399
+ /**
400
+ * Print the "you are on another server" hint when that is what a 404 means
401
+ * (Issue #2404).
402
+ *
403
+ * Runs only on a failure path, so the extra `tmux display-message` +
404
+ * `GET /api/worktrees` it costs buys the difference between a correct diagnosis
405
+ * and a wrong one. Never throws: {@link describeServerMismatch} swallows its own
406
+ * failures, and a diagnosis must not replace the error being diagnosed.
407
+ *
408
+ * @param client - The client whose request failed
409
+ * @param error - The caught error, diagnosed only when it is a 404
410
+ */
411
+ async function warnIfDifferentServer(client, error) {
412
+ if (!(error instanceof api_client_1.ApiError) || error.statusCode !== 404)
413
+ return;
414
+ const mismatch = await (0, whoami_1.describeServerMismatch)(client);
415
+ if (mismatch)
416
+ console.error((0, whoami_1.formatServerMismatchHint)(mismatch));
417
+ }
304
418
  function createInstancesCommand() {
305
419
  const cmd = new commander_1.Command('instances');
306
420
  cmd
@@ -315,6 +429,10 @@ function createInstancesCommand() {
315
429
  .option('--kill', 'Also kill the running session when removing an instance')
316
430
  .option('--token <token>', command_helpers_1.TOKEN_WARNING)
317
431
  .action(async (worktreeId, action, rest, options) => {
432
+ // One client for the whole invocation (Issue #2404): every action built
433
+ // its own identical one, and the failure path below has to report the URL
434
+ // the request actually went to — a second construction is a second answer.
435
+ const client = new api_client_1.ApiClient({ token: options.token });
318
436
  try {
319
437
  if (!(0, api_client_1.isValidWorktreeId)(worktreeId)) {
320
438
  console.error('Error: Invalid worktree ID format.');
@@ -322,10 +440,10 @@ function createInstancesCommand() {
322
440
  }
323
441
  switch (action ?? 'list') {
324
442
  case 'list':
325
- await listInstances(worktreeId, options);
443
+ await listInstances(client, worktreeId, options);
326
444
  break;
327
445
  case 'add':
328
- await addInstance(worktreeId, options);
446
+ await addInstance(client, worktreeId, options);
329
447
  break;
330
448
  case 'remove': {
331
449
  const [instanceId] = rest;
@@ -333,7 +451,7 @@ function createInstancesCommand() {
333
451
  console.error('Error: remove requires an <instance-id> argument.');
334
452
  process.exit(types_1.ExitCode.CONFIG_ERROR);
335
453
  }
336
- await removeInstance(worktreeId, instanceId, options);
454
+ await removeInstance(client, worktreeId, instanceId, options);
337
455
  break;
338
456
  }
339
457
  case 'alias': {
@@ -343,7 +461,7 @@ function createInstancesCommand() {
343
461
  console.error('Error: alias requires <instance-id> and <new-alias> arguments.');
344
462
  process.exit(types_1.ExitCode.CONFIG_ERROR);
345
463
  }
346
- await renameInstance(worktreeId, instanceId, alias, options);
464
+ await renameInstance(client, worktreeId, instanceId, alias);
347
465
  break;
348
466
  }
349
467
  case 'kill': {
@@ -352,7 +470,7 @@ function createInstancesCommand() {
352
470
  console.error('Error: kill requires an <instance-id> argument.');
353
471
  process.exit(types_1.ExitCode.CONFIG_ERROR);
354
472
  }
355
- await killInstance(worktreeId, instanceId, options);
473
+ await killInstance(client, worktreeId, instanceId);
356
474
  break;
357
475
  }
358
476
  default:
@@ -361,6 +479,13 @@ function createInstancesCommand() {
361
479
  }
362
480
  }
363
481
  catch (error) {
482
+ // Issue #2404: a 404 here says "no such worktree ON THIS SERVER", and
483
+ // `Resource not found. Check the worktree ID.` reads as "you typed it
484
+ // wrong". When the caller's own session belongs to a worktree this
485
+ // server does not list, the id was never the problem — say so before
486
+ // handleCommandError() exits, so nobody re-checks a correct id and then
487
+ // delegates to whatever this server does have.
488
+ await warnIfDifferentServer(client, error);
364
489
  (0, command_helpers_1.handleCommandError)(error);
365
490
  }
366
491
  });
@@ -0,0 +1,64 @@
1
+ /**
2
+ * peers Command - the other agent sessions this one can talk to (Issue #2376)
3
+ *
4
+ * commandmate peers [--json]
5
+ *
6
+ * ## Why `ls` + `instances` was not enough
7
+ *
8
+ * The two ids `ask` needs live in two different commands and neither one knows
9
+ * the caller. `ls` lists every worktree on the machine — including the dozen
10
+ * belonging to repositories this session has nothing to do with — and
11
+ * `instances` needs a worktree id per call. So working out "who can I ask?" was
12
+ * a fan-out plus a filter the agent had to invent, and inventing it is what
13
+ * produced the wrong `--instance` values this Issue exists to stop.
14
+ *
15
+ * This is that fan-out, done once, narrowed to the caller's own repository, with
16
+ * the caller's own row marked `(you)` and a ready-to-run `ask` line against
17
+ * every other row. The listing is the answer AND the example: the acceptance
18
+ * criterion for this command is that a line pasted out of it works.
19
+ *
20
+ * Scoped to the repository rather than to everything because that is the unit a
21
+ * delegation is about — sibling worktrees of one project, which is what
22
+ * `/worktree-setup` produces — and because a global listing is what `ls`
23
+ * already is.
24
+ */
25
+ import { Command } from 'commander';
26
+ import type { WorktreeItem } from '../types/api-responses';
27
+ import { type SessionIdentity } from './whoami';
28
+ /**
29
+ * The repository fields the list API sends and `WorktreeItem` does not declare.
30
+ *
31
+ * `src/cli/types/api-responses.ts` declares only the fields the CLI reads ("Only
32
+ * the fields the CLI reads are declared"), and until this command nothing read
33
+ * these two. Mirrored locally rather than widened there so the shared type keeps
34
+ * meaning what its header says it means; both are optional because a row written
35
+ * before the field existed, or by a non-sync path, carries neither.
36
+ */
37
+ interface PeerWorktreeItem extends WorktreeItem {
38
+ repositoryPath?: string;
39
+ repositoryName?: string;
40
+ }
41
+ /** One session in the listing. */
42
+ interface PeerRow {
43
+ worktreeId: string;
44
+ instanceId: string;
45
+ cliTool: string;
46
+ alias: string;
47
+ /** The worktree's aggregate STATUS word, as `commandmate ls` prints it. */
48
+ status: string;
49
+ /** True for the session running this command. */
50
+ isSelf: boolean;
51
+ /** The line to paste, or null for the caller's own row. */
52
+ ask: string | null;
53
+ }
54
+ /**
55
+ * Build the listing.
56
+ *
57
+ * @param worktrees - Every worktree the server knows
58
+ * @param identity - Who is asking
59
+ * @param binary - The command name to spell the examples with
60
+ */
61
+ export declare function buildPeerRows(worktrees: PeerWorktreeItem[], identity: SessionIdentity, binary: string): PeerRow[];
62
+ export declare function createPeersCommand(): Command;
63
+ export {};
64
+ //# sourceMappingURL=peers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peers.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/peers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAiB,YAAY,EAAwB,MAAM,wBAAwB,CAAC;AAIhG,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAElB;;;;;;;;GAQG;AACH,UAAU,gBAAiB,SAAQ,YAAY;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,kCAAkC;AAClC,UAAU,OAAO;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,2DAA2D;IAC3D,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAuED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,gBAAgB,EAAE,EAC7B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,EAAE,CAuBX;AAoBD,wBAAgB,kBAAkB,IAAI,OAAO,CAkE5C"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * peers Command - the other agent sessions this one can talk to (Issue #2376)
4
+ *
5
+ * commandmate peers [--json]
6
+ *
7
+ * ## Why `ls` + `instances` was not enough
8
+ *
9
+ * The two ids `ask` needs live in two different commands and neither one knows
10
+ * the caller. `ls` lists every worktree on the machine — including the dozen
11
+ * belonging to repositories this session has nothing to do with — and
12
+ * `instances` needs a worktree id per call. So working out "who can I ask?" was
13
+ * a fan-out plus a filter the agent had to invent, and inventing it is what
14
+ * produced the wrong `--instance` values this Issue exists to stop.
15
+ *
16
+ * This is that fan-out, done once, narrowed to the caller's own repository, with
17
+ * the caller's own row marked `(you)` and a ready-to-run `ask` line against
18
+ * every other row. The listing is the answer AND the example: the acceptance
19
+ * criterion for this command is that a line pasted out of it works.
20
+ *
21
+ * Scoped to the repository rather than to everything because that is the unit a
22
+ * delegation is about — sibling worktrees of one project, which is what
23
+ * `/worktree-setup` produces — and because a global listing is what `ls`
24
+ * already is.
25
+ */
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.buildPeerRows = buildPeerRows;
28
+ exports.createPeersCommand = createPeersCommand;
29
+ const commander_1 = require("commander");
30
+ const api_client_1 = require("../utils/api-client");
31
+ const command_helpers_1 = require("../utils/command-helpers");
32
+ const command_reference_1 = require("../../lib/cli/command-reference");
33
+ const whoami_1 = require("./whoami");
34
+ /**
35
+ * The four-word status vocabulary, derived exactly as `ls` derives it.
36
+ *
37
+ * Duplicated from `ls.ts` rather than shared: this is three lines of precedence
38
+ * over three booleans, and the alternative — exporting `deriveStatus` from a
39
+ * command module so another command module can import it — couples two
40
+ * commands to save nothing. The vocabulary itself is pinned by `ls`'s own tests.
41
+ */
42
+ function deriveStatus(wt) {
43
+ if (wt.isWaitingForResponse)
44
+ return 'waiting';
45
+ if (wt.isProcessing)
46
+ return 'running';
47
+ if (wt.isSessionRunning)
48
+ return 'ready';
49
+ return 'idle';
50
+ }
51
+ /**
52
+ * Whether `wt` belongs to the same repository as `self`.
53
+ *
54
+ * `repositoryPath` is the identity — two checkouts of the same upstream have the
55
+ * same `repositoryName` and are not the same repository — and the name is the
56
+ * fallback for a row that predates the field. A row with neither is excluded
57
+ * rather than assumed: a listing that quietly widened to the whole machine
58
+ * would put a `--instance` for somebody else's project in front of an agent.
59
+ *
60
+ * @param wt - Candidate worktree
61
+ * @param self - The caller's own worktree row
62
+ */
63
+ function sameRepository(wt, self) {
64
+ if (self.repositoryPath && wt.repositoryPath) {
65
+ return wt.repositoryPath === self.repositoryPath;
66
+ }
67
+ if (self.repositoryName && wt.repositoryName) {
68
+ return wt.repositoryName === self.repositoryName;
69
+ }
70
+ // Neither side declares one: the caller's own worktree is still a peer group
71
+ // of one, and nothing else can be shown to belong to it.
72
+ return wt.id === self.id;
73
+ }
74
+ /**
75
+ * The roster of a worktree as the list API sent it.
76
+ *
77
+ * A worktree with no roster still has its primary instance — that is what
78
+ * `--instance` resolves to with no roster row at all (#868) — so an empty
79
+ * roster is reported as the worktree's own CLI tool rather than as no sessions.
80
+ *
81
+ * A worktree that declares no CLI tool either contributes NO rows, rather than
82
+ * a row for the agent it is statistically most likely to be running. An `ask`
83
+ * line naming the wrong tool is a message typed into a session that was never
84
+ * started, and the whole point of this listing is that its lines run.
85
+ */
86
+ function rosterOf(wt) {
87
+ if (wt.agentInstances && wt.agentInstances.length > 0)
88
+ return wt.agentInstances;
89
+ if (!wt.cliToolId)
90
+ return [];
91
+ return [{ id: wt.cliToolId, cliTool: wt.cliToolId, alias: wt.cliToolId, order: 0 }];
92
+ }
93
+ /**
94
+ * Quote an argument for the `ask` example when it needs it.
95
+ *
96
+ * Instance ids never do (`isValidInstanceId` allows no shell metacharacter) but
97
+ * this command prints ids, not aliases, precisely so the line is paste-safe.
98
+ * The guard is here so a future id shape cannot silently produce a line that
99
+ * means something else in a shell.
100
+ */
101
+ function shellArg(value) {
102
+ return /^[A-Za-z0-9_.:@+-]+$/.test(value) ? value : JSON.stringify(value);
103
+ }
104
+ /**
105
+ * Build the listing.
106
+ *
107
+ * @param worktrees - Every worktree the server knows
108
+ * @param identity - Who is asking
109
+ * @param binary - The command name to spell the examples with
110
+ */
111
+ function buildPeerRows(worktrees, identity, binary) {
112
+ const self = worktrees.find((wt) => wt.id === identity.worktreeId);
113
+ const scoped = self ? worktrees.filter((wt) => sameRepository(wt, self)) : [];
114
+ const rows = [];
115
+ for (const wt of scoped) {
116
+ const status = deriveStatus(wt);
117
+ for (const inst of rosterOf(wt)) {
118
+ const isSelf = wt.id === identity.worktreeId && inst.id === identity.instanceId;
119
+ rows.push({
120
+ worktreeId: wt.id,
121
+ instanceId: inst.id,
122
+ cliTool: inst.cliTool,
123
+ alias: inst.alias,
124
+ status,
125
+ isSelf,
126
+ ask: isSelf
127
+ ? null
128
+ : `${binary} ask ${shellArg(wt.id)} --instance ${shellArg(inst.id)} "<request>"`,
129
+ });
130
+ }
131
+ }
132
+ return rows;
133
+ }
134
+ /** Render the listing for a terminal. */
135
+ function formatPeers(rows) {
136
+ if (rows.length === 0)
137
+ return 'No peer sessions found.';
138
+ return rows
139
+ .map((row) => {
140
+ const head = `${row.worktreeId} / ${row.instanceId}`;
141
+ const marker = row.isSelf ? ' (you)' : '';
142
+ const lines = [
143
+ `${head}${marker}`,
144
+ ` alias: ${row.alias} tool: ${row.cliTool} status: ${row.status}`,
145
+ ];
146
+ if (row.ask)
147
+ lines.push(` ${row.ask}`);
148
+ return lines.join('\n');
149
+ })
150
+ .join('\n');
151
+ }
152
+ function createPeersCommand() {
153
+ const cmd = new commander_1.Command('peers');
154
+ cmd
155
+ .description('List the other agent sessions in this repository, with a ready-to-run `ask` line each')
156
+ .option('--json', 'JSON output')
157
+ .option('--token <token>', command_helpers_1.TOKEN_WARNING)
158
+ .action(async (options) => {
159
+ try {
160
+ const client = new api_client_1.ApiClient({ token: options.token });
161
+ const identity = await (0, whoami_1.resolveSessionIdentity)(client);
162
+ if (!identity) {
163
+ console.error(whoami_1.NOT_IN_SESSION_MESSAGE);
164
+ process.exit(whoami_1.NOT_IN_SESSION);
165
+ return;
166
+ }
167
+ const response = await client.get('/api/worktrees');
168
+ const worktrees = (response.worktrees ?? []);
169
+ // The same rule the GUI's panel and brief use (Issue #2120), from the
170
+ // same function: `CM_LAUNCHED_BY` is stamped by `commandmate start` on
171
+ // the server it spawns, and an agent pane inherits it — so a session
172
+ // started by the installed CLI is told `commandmate` and one started
173
+ // from a checkout is told `commandmatedev`, which is the name that
174
+ // actually exists on that PATH. A literal here would be a second
175
+ // authority on the one string the caller pastes into a shell.
176
+ const binary = (0, command_reference_1.resolveCommandMateBinary)();
177
+ const rows = buildPeerRows(worktrees, identity, binary);
178
+ // Issue #2404: the listing above is empty precisely when the caller's own
179
+ // worktree is absent from `worktrees` — which is what "you are on another
180
+ // server" looks like from here, and which `No peer sessions found.` reads
181
+ // as "you have no siblings". The list is already in hand, so the check is
182
+ // free and applies whichever source named the worktree.
183
+ const mismatch = (0, whoami_1.detectServerMismatch)(identity, new Set(worktrees.map((wt) => wt.id)), client.serverUrl);
184
+ if (mismatch)
185
+ console.error((0, whoami_1.formatServerMismatchWarning)(mismatch));
186
+ if (options.json) {
187
+ console.log(JSON.stringify({
188
+ // `self` is unchanged: it answers "who is asking", and the server is
189
+ // not part of that. The connection target is its own top-level field.
190
+ self: {
191
+ worktreeId: identity.worktreeId,
192
+ instanceId: identity.instanceId,
193
+ cliToolId: identity.cliToolId,
194
+ },
195
+ serverUrl: client.serverUrl,
196
+ ...(mismatch ? { serverMismatch: true } : {}),
197
+ peers: rows,
198
+ }, null, 2));
199
+ return;
200
+ }
201
+ console.log(formatPeers(rows));
202
+ }
203
+ catch (error) {
204
+ (0, command_helpers_1.handleCommandError)(error);
205
+ }
206
+ });
207
+ return cmd;
208
+ }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * relays Command - the standing delegations this machine is holding (#2377)
3
+ *
4
+ * commandmate relays [--worktree <id>] [--instance <id|alias>] [--json]
5
+ * commandmate relays cancel <relay-id>
6
+ *
7
+ * ## Why a command and not a flag on `ls`
8
+ *
9
+ * A relay is the one piece of state in CommandMate that belongs to TWO sessions
10
+ * at once: session A is owed an answer, session B owes one, and neither
11
+ * worktree's own listing can show that without inventing a column for the other
12
+ * side. So the listing is its own thing, and it prints the pair — `from` and
13
+ * `to`, `→` between them — rather than a status word per row.
14
+ *
15
+ * With no `--worktree` it asks the session it is running inside (`whoami`'s
16
+ * resolution) and prints that session's two sides. That is the shape an agent
17
+ * uses: "what am I waiting for, and what do I owe?" is a question about the
18
+ * caller, and making the caller name itself is what #2376 exists to stop.
19
+ *
20
+ * ## What this module exports besides the command
21
+ *
22
+ * The `--reply-to` plumbing, because `send` and `ask` both take that flag and
23
+ * both have to turn one string into the two ids the ledger stores. Keeping
24
+ * {@link resolveRelayEndpoint} here rather than in `send.ts` is what stops the
25
+ * two commands from resolving `self` two different ways.
26
+ */
27
+ import { Command } from 'commander';
28
+ import { ApiClient } from '../utils/api-client';
29
+ /**
30
+ * The codes `POST /api/relays` refuses with.
31
+ *
32
+ * Mirrors `RelayRefusalCode` in `lib/relay/relay-policy` plus the route's own
33
+ * not-found; duplicated rather than imported so the CLI bundle does not pull the
34
+ * server's database graph in for four strings.
35
+ */
36
+ export declare const RELAY_REFUSAL_CODES: Set<string>;
37
+ /** One end of a relay, as the API wants it. */
38
+ export interface RelayEndpointArg {
39
+ worktreeId: string;
40
+ instanceId: string;
41
+ }
42
+ /** The text `--reply-to` is documented with, shared by `send` and `ask`. */
43
+ export declare const REPLY_TO_OPTION_DESCRIPTION: string;
44
+ /** The text `--allow-relay-chain` is documented with. */
45
+ export declare const ALLOW_RELAY_CHAIN_DESCRIPTION: string;
46
+ /**
47
+ * Turn one `--reply-to` value into the two ids the ledger stores.
48
+ *
49
+ * Exits 2 rather than throwing: every failure here is a bad option value or a
50
+ * shell that is not inside a CommandMate session, and both are things the
51
+ * operator fixes on the command line.
52
+ *
53
+ * @param client - API client
54
+ * @param spec - The raw `--reply-to` value
55
+ */
56
+ export declare function resolveRelayEndpoint(client: ApiClient, spec: string): Promise<RelayEndpointArg>;
57
+ /**
58
+ * The resolved endpoint for a worktree, with or without a named instance.
59
+ *
60
+ * Also what `send` / `ask` use for the relay's OTHER end — the session being
61
+ * asked — because the ledger stores a resolved id at both ends and the send's
62
+ * own `--instance` may have been omitted (meaning "the primary one", which only
63
+ * the server can name).
64
+ *
65
+ * @param client - API client
66
+ * @param worktreeId - Worktree ID
67
+ * @param selector - An instance id or roster alias, or undefined
68
+ * @param requestedAgent - The `--agent` value, if the caller gave one
69
+ */
70
+ export declare function resolveEndpointForWorktree(client: ApiClient, worktreeId: string, selector: string | undefined, requestedAgent?: string): Promise<RelayEndpointArg>;
71
+ /** What {@link registerRelay} needs. */
72
+ export interface RegisterRelayInput {
73
+ /** The session that will receive the reply. */
74
+ from: RelayEndpointArg;
75
+ /** The session being asked. */
76
+ to: RelayEndpointArg;
77
+ allowRelayChain?: boolean;
78
+ }
79
+ /**
80
+ * Open a relay, printing the server's own refusal and exiting 2 on one.
81
+ *
82
+ * Exit 2 and not a bespoke code: every refusal is a decision the operator can
83
+ * change (drop the flag, cancel the other relay, stop forwarding), which is what
84
+ * `CONFIG_ERROR` means everywhere else in this CLI.
85
+ *
86
+ * @returns The relay id
87
+ */
88
+ export declare function registerRelay(client: ApiClient, input: RegisterRelayInput): Promise<string>;
89
+ /** Withdraw a relay, best effort. Used when the send it accompanied failed. */
90
+ export declare function cancelRelayQuietly(client: ApiClient, relayId: string): Promise<void>;
91
+ export declare function createRelaysCommand(): Command;
92
+ //# sourceMappingURL=relays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relays.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/relays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,EAAE,SAAS,EAA+B,MAAM,qBAAqB,CAAC;AAgB7E;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,aAM9B,CAAC;AAEH,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,QAEiD,CAAC;AAE1F,yDAAyD;AACzD,eAAO,MAAM,6BAA6B,QAER,CAAC;AAEnC;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA0B3B;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,IAAI,EAAE,gBAAgB,CAAC;IACvB,+BAA+B;IAC/B,EAAE,EAAE,gBAAgB,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,+EAA+E;AAC/E,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1F;AAyBD,wBAAgB,mBAAmB,IAAI,OAAO,CA8H7C"}