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
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ /**
3
+ * relays Command - the standing delegations this machine is holding (#2377)
4
+ *
5
+ * commandmate relays [--worktree <id>] [--instance <id|alias>] [--json]
6
+ * commandmate relays cancel <relay-id>
7
+ *
8
+ * ## Why a command and not a flag on `ls`
9
+ *
10
+ * A relay is the one piece of state in CommandMate that belongs to TWO sessions
11
+ * at once: session A is owed an answer, session B owes one, and neither
12
+ * worktree's own listing can show that without inventing a column for the other
13
+ * side. So the listing is its own thing, and it prints the pair — `from` and
14
+ * `to`, `→` between them — rather than a status word per row.
15
+ *
16
+ * With no `--worktree` it asks the session it is running inside (`whoami`'s
17
+ * resolution) and prints that session's two sides. That is the shape an agent
18
+ * uses: "what am I waiting for, and what do I owe?" is a question about the
19
+ * caller, and making the caller name itself is what #2376 exists to stop.
20
+ *
21
+ * ## What this module exports besides the command
22
+ *
23
+ * The `--reply-to` plumbing, because `send` and `ask` both take that flag and
24
+ * both have to turn one string into the two ids the ledger stores. Keeping
25
+ * {@link resolveRelayEndpoint} here rather than in `send.ts` is what stops the
26
+ * two commands from resolving `self` two different ways.
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ALLOW_RELAY_CHAIN_DESCRIPTION = exports.REPLY_TO_OPTION_DESCRIPTION = exports.RELAY_REFUSAL_CODES = void 0;
30
+ exports.resolveRelayEndpoint = resolveRelayEndpoint;
31
+ exports.resolveEndpointForWorktree = resolveEndpointForWorktree;
32
+ exports.registerRelay = registerRelay;
33
+ exports.cancelRelayQuietly = cancelRelayQuietly;
34
+ exports.createRelaysCommand = createRelaysCommand;
35
+ const commander_1 = require("commander");
36
+ const types_1 = require("../types");
37
+ const api_client_1 = require("../utils/api-client");
38
+ const command_helpers_1 = require("../utils/command-helpers");
39
+ const session_target_1 = require("../utils/session-target");
40
+ const instances_1 = require("./instances");
41
+ const whoami_1 = require("./whoami");
42
+ /** crypto.randomUUID() output; mirrors RELAY_ID_PATTERN in the API route. */
43
+ const RELAY_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
44
+ /** The `--reply-to` values that mean "the session running this command". */
45
+ const SELF_SELECTORS = new Set(['self', 'me']);
46
+ /**
47
+ * The codes `POST /api/relays` refuses with.
48
+ *
49
+ * Mirrors `RelayRefusalCode` in `lib/relay/relay-policy` plus the route's own
50
+ * not-found; duplicated rather than imported so the CLI bundle does not pull the
51
+ * server's database graph in for four strings.
52
+ */
53
+ exports.RELAY_REFUSAL_CODES = new Set([
54
+ 'RELAY_CHAIN_BLOCKED',
55
+ 'RELAY_HOPS_EXCEEDED',
56
+ 'RELAY_DUPLICATE_PENDING',
57
+ 'RELAY_SELF_TARGET',
58
+ 'RELAY_WORKTREE_NOT_FOUND',
59
+ ]);
60
+ /** The text `--reply-to` is documented with, shared by `send` and `ask`. */
61
+ exports.REPLY_TO_OPTION_DESCRIPTION = 'Deliver the target\'s reply to this session when it finishes: '
62
+ + '<worktree-id>[@<instance-id|alias>], or `self` for the session running this command';
63
+ /** The text `--allow-relay-chain` is documented with. */
64
+ exports.ALLOW_RELAY_CHAIN_DESCRIPTION = 'Permit a relay opened while answering a relayed message (refused by default; '
65
+ + 'chains still stop at 3 hops)';
66
+ /**
67
+ * Turn one `--reply-to` value into the two ids the ledger stores.
68
+ *
69
+ * Exits 2 rather than throwing: every failure here is a bad option value or a
70
+ * shell that is not inside a CommandMate session, and both are things the
71
+ * operator fixes on the command line.
72
+ *
73
+ * @param client - API client
74
+ * @param spec - The raw `--reply-to` value
75
+ */
76
+ async function resolveRelayEndpoint(client, spec) {
77
+ if (SELF_SELECTORS.has(spec.trim().toLowerCase())) {
78
+ const identity = await (0, whoami_1.resolveSessionIdentity)(client);
79
+ if (!identity) {
80
+ console.error(whoami_1.NOT_IN_SESSION_MESSAGE);
81
+ console.error(' --reply-to self needs an identity; name the session explicitly instead.');
82
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
83
+ }
84
+ return { worktreeId: identity.worktreeId, instanceId: identity.instanceId };
85
+ }
86
+ const at = spec.indexOf('@');
87
+ const worktreeId = at === -1 ? spec : spec.slice(0, at);
88
+ const selector = at === -1 ? undefined : spec.slice(at + 1);
89
+ if (!(0, api_client_1.isValidWorktreeId)(worktreeId)) {
90
+ console.error('Error: --reply-to must start with a valid worktree ID.');
91
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
92
+ }
93
+ if (selector !== undefined && !(0, instances_1.isInstanceSelector)(selector)) {
94
+ console.error(`Error: --reply-to instance part: ${instances_1.INSTANCE_SELECTOR_ERROR}`);
95
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
96
+ }
97
+ return resolveEndpointForWorktree(client, worktreeId, selector);
98
+ }
99
+ /**
100
+ * The resolved endpoint for a worktree, with or without a named instance.
101
+ *
102
+ * Also what `send` / `ask` use for the relay's OTHER end — the session being
103
+ * asked — because the ledger stores a resolved id at both ends and the send's
104
+ * own `--instance` may have been omitted (meaning "the primary one", which only
105
+ * the server can name).
106
+ *
107
+ * @param client - API client
108
+ * @param worktreeId - Worktree ID
109
+ * @param selector - An instance id or roster alias, or undefined
110
+ * @param requestedAgent - The `--agent` value, if the caller gave one
111
+ */
112
+ async function resolveEndpointForWorktree(client, worktreeId, selector, requestedAgent) {
113
+ if (selector !== undefined) {
114
+ const target = await (0, instances_1.resolveInstanceTarget)(client, worktreeId, selector, requestedAgent);
115
+ const instanceId = target.instanceId;
116
+ if (!instanceId) {
117
+ console.error(`Error: could not resolve instance '${selector}' in ${worktreeId}.`);
118
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
119
+ }
120
+ return { worktreeId, instanceId };
121
+ }
122
+ // No instance named: the server's own default for the worktree, which for a
123
+ // roster of one is that tool's primary instance. Asked rather than assumed —
124
+ // the CLI guessing `claude` is exactly the second authority #1925 removed.
125
+ const target = await (0, session_target_1.resolveSessionTarget)(client, worktreeId, {
126
+ requestedCliTool: requestedAgent,
127
+ });
128
+ const instanceId = target.instanceId ?? target.cliToolId;
129
+ if (!instanceId) {
130
+ console.error(`Error: ${worktreeId} declares no agent, so --reply-to cannot name one of its sessions. `
131
+ + 'Use <worktree-id>@<instance-id>.');
132
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
133
+ }
134
+ return { worktreeId, instanceId };
135
+ }
136
+ /**
137
+ * Open a relay, printing the server's own refusal and exiting 2 on one.
138
+ *
139
+ * Exit 2 and not a bespoke code: every refusal is a decision the operator can
140
+ * change (drop the flag, cancel the other relay, stop forwarding), which is what
141
+ * `CONFIG_ERROR` means everywhere else in this CLI.
142
+ *
143
+ * @returns The relay id
144
+ */
145
+ async function registerRelay(client, input) {
146
+ try {
147
+ const response = await client.post('/api/relays', {
148
+ from: input.from,
149
+ to: input.to,
150
+ allowRelayChain: input.allowRelayChain === true,
151
+ });
152
+ return response.relay.id;
153
+ }
154
+ catch (error) {
155
+ if (error instanceof api_client_1.ApiError && error.apiCode && exports.RELAY_REFUSAL_CODES.has(error.apiCode)) {
156
+ console.error(`Error: ${error.payload?.error ?? error.apiCode}`);
157
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
158
+ }
159
+ throw error;
160
+ }
161
+ }
162
+ /** Withdraw a relay, best effort. Used when the send it accompanied failed. */
163
+ async function cancelRelayQuietly(client, relayId) {
164
+ try {
165
+ await client.post(`/api/relays/${relayId}/cancel`);
166
+ }
167
+ catch {
168
+ console.error(`Warning: could not withdraw relay ${relayId}; it will expire on its own.`);
169
+ }
170
+ }
171
+ function endpointLabel(endpoint) {
172
+ return `${endpoint.worktreeId}/${endpoint.instanceId}`;
173
+ }
174
+ function printRelayLine(relay) {
175
+ console.log([
176
+ relay.id,
177
+ relay.state,
178
+ `${endpointLabel(relay.from)} <- ${endpointLabel(relay.to)}`,
179
+ `hops=${relay.hops}`,
180
+ `expires=${new Date(relay.expiresAt).toISOString()}`,
181
+ ].join('\t'));
182
+ }
183
+ function createRelaysCommand() {
184
+ const cmd = new commander_1.Command('relays');
185
+ cmd
186
+ .description('List the open relays this session is waiting on and owes')
187
+ .option('--worktree <id>', 'Worktree to list (defaults to the session running this command)')
188
+ .option('--instance <id>', 'Agent instance inside --worktree (id or roster alias)')
189
+ .option('--json', 'JSON output')
190
+ .option('--token <token>', command_helpers_1.TOKEN_WARNING)
191
+ .addHelpText('after', `
192
+ Columns: <relay-id> <state> <requester> <- <worker> hops=<n> expires=<iso>
193
+
194
+ States: pending (the worker has not finished), prompt (it stopped on a
195
+ confirmation and the requester was told), delivered / expired / cancelled.
196
+
197
+ Withdraw one with \`commandmate relays cancel <relay-id>\`.
198
+ `)
199
+ .action(async (options) => {
200
+ try {
201
+ if (options.worktree && !(0, api_client_1.isValidWorktreeId)(options.worktree)) {
202
+ console.error('Error: Invalid worktree ID format.');
203
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
204
+ }
205
+ if (options.instance && !(0, instances_1.isInstanceSelector)(options.instance)) {
206
+ console.error(instances_1.INSTANCE_SELECTOR_ERROR);
207
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
208
+ }
209
+ const client = new api_client_1.ApiClient({ token: options.token });
210
+ let endpoint = null;
211
+ if (options.worktree) {
212
+ endpoint = await resolveEndpointForWorktree(client, options.worktree, options.instance);
213
+ }
214
+ else {
215
+ const identity = await (0, whoami_1.resolveSessionIdentity)(client);
216
+ if (identity) {
217
+ endpoint = { worktreeId: identity.worktreeId, instanceId: identity.instanceId };
218
+ }
219
+ }
220
+ const query = new URLSearchParams();
221
+ if (endpoint) {
222
+ query.set('worktree', endpoint.worktreeId);
223
+ query.set('instance', endpoint.instanceId);
224
+ }
225
+ const qs = query.toString();
226
+ const response = await client.get(`/api/relays${qs ? `?${qs}` : ''}`);
227
+ if (options.json) {
228
+ console.log(JSON.stringify(response, null, 2));
229
+ return;
230
+ }
231
+ if (!endpoint) {
232
+ console.error('Not inside a CommandMate agent session and no --worktree given; '
233
+ + 'printing counts only.');
234
+ }
235
+ const { counts } = response;
236
+ console.error(`relays: pending=${counts.pending} prompt=${counts.prompt} `
237
+ + `delivered=${counts.delivered} expired=${counts.expired} cancelled=${counts.cancelled}`);
238
+ if (response.awaiting.length === 0 && response.owed.length === 0) {
239
+ console.error('No open relays.');
240
+ return;
241
+ }
242
+ if (response.awaiting.length > 0) {
243
+ console.error(`# waiting for (${response.awaiting.length})`);
244
+ response.awaiting.forEach(printRelayLine);
245
+ }
246
+ if (response.owed.length > 0) {
247
+ console.error(`# owed by me (${response.owed.length})`);
248
+ response.owed.forEach(printRelayLine);
249
+ }
250
+ }
251
+ catch (error) {
252
+ (0, command_helpers_1.handleCommandError)(error);
253
+ }
254
+ });
255
+ cmd
256
+ .command('cancel')
257
+ .description('Withdraw an open relay so its reply is never delivered')
258
+ .argument('<relay-id>', 'Relay ID')
259
+ .option('--json', 'JSON output')
260
+ .option('--token <token>', command_helpers_1.TOKEN_WARNING)
261
+ .action(async (relayId, options) => {
262
+ try {
263
+ if (!RELAY_ID_PATTERN.test(relayId)) {
264
+ console.error('Error: Invalid relay ID format.');
265
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
266
+ }
267
+ const client = new api_client_1.ApiClient({ token: options.token });
268
+ try {
269
+ const response = await client.post(`/api/relays/${relayId}/cancel`);
270
+ if (options.json) {
271
+ console.log(JSON.stringify(response, null, 2));
272
+ }
273
+ else {
274
+ console.error(`Relay ${relayId} cancelled.`);
275
+ }
276
+ }
277
+ catch (error) {
278
+ // A relay that already delivered is not a failure to report as one:
279
+ // saying "cancelled" would tell the caller they stopped a delivery
280
+ // that in fact happened.
281
+ if (error instanceof api_client_1.ApiError && error.apiCode === 'RELAY_ALREADY_CLOSED') {
282
+ console.error(`Error: ${error.payload?.error ?? 'Relay is already closed.'}`);
283
+ process.exit(types_1.ExitCode.CONFIG_ERROR);
284
+ }
285
+ throw error;
286
+ }
287
+ }
288
+ catch (error) {
289
+ (0, command_helpers_1.handleCommandError)(error);
290
+ }
291
+ });
292
+ return cmd;
293
+ }
@@ -4,5 +4,8 @@
4
4
  * Issue #1551: report metrics (Eval metrics)
5
5
  */
6
6
  import { Command } from 'commander';
7
+ import type { RelayCountsResponse } from '../types/api-responses';
8
+ /** The relay line, in the same shape as the four above it. */
9
+ export declare function formatRelayCounts(counts: RelayCountsResponse): string;
7
10
  export declare function createReportCommand(): Command;
8
11
  //# sourceMappingURL=report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwFpC,wBAAgB,mBAAmB,IAAI,OAAO,CA6K7C"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,KAAK,EAGV,mBAAmB,EAKpB,MAAM,wBAAwB,CAAC;AA+EhC,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAKrE;AAmBD,wBAAgB,mBAAmB,IAAI,OAAO,CAiL7C"}
@@ -5,6 +5,7 @@
5
5
  * Issue #1551: report metrics (Eval metrics)
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.formatRelayCounts = formatRelayCounts;
8
9
  exports.createReportCommand = createReportCommand;
9
10
  const commander_1 = require("commander");
10
11
  const types_1 = require("../types");
@@ -59,6 +60,28 @@ const MAX_METRICS_DAYS = 90;
59
60
  function formatRate(value) {
60
61
  return value === null ? 'n/a' : `${(value * 100).toFixed(1)}%`;
61
62
  }
63
+ /**
64
+ * Relay counts over the same window, or null when the daemon has no ledger.
65
+ *
66
+ * Best effort and separate from the vibe metrics on purpose: `/api/metrics/vibe`
67
+ * is computed from tasks and verification runs, and a relay is neither. A daemon
68
+ * that predates Issue #2377 answers 404 here, which is a reason to print the
69
+ * metrics without the relay line, not a reason to fail the command.
70
+ */
71
+ async function readRelayCounts(client, days) {
72
+ try {
73
+ const response = await client.get(`/api/relays?days=${encodeURIComponent(String(days))}`);
74
+ return response.counts ?? null;
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
80
+ /** The relay line, in the same shape as the four above it. */
81
+ function formatRelayCounts(counts) {
82
+ return (`Relays: ${counts.delivered} delivered / ${counts.prompt} waiting on a prompt `
83
+ + `/ ${counts.expired} expired (${counts.pending} still open, ${counts.cancelled} cancelled)`);
84
+ }
62
85
  function formatVibeMetrics(m) {
63
86
  const { tasks, verification, intervention } = m;
64
87
  const topFails = verification.gateFailBreakdown
@@ -215,11 +238,16 @@ function createReportCommand() {
215
238
  }
216
239
  const client = new api_client_1.ApiClient({ token: options.token });
217
240
  const data = await client.get(`/api/metrics/vibe?days=${encodeURIComponent(String(days))}`);
241
+ // Issue #2377: delegation between sessions is work this harness did, and
242
+ // until now it was the only kind that left no mark on the metrics.
243
+ const relays = await readRelayCounts(client, days);
218
244
  if (options.json) {
219
- console.log(JSON.stringify(data.metrics, null, 2));
245
+ console.log(JSON.stringify({ ...data.metrics, relays }, null, 2));
220
246
  }
221
247
  else {
222
248
  console.log(formatVibeMetrics(data.metrics));
249
+ if (relays)
250
+ console.log(formatRelayCounts(relays));
223
251
  }
224
252
  }
225
253
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsJpC,wBAAgB,oBAAoB,IAAI,OAAO,CAqK9C"}
1
+ {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2JpC,wBAAgB,oBAAoB,IAAI,OAAO,CAwK9C"}
@@ -127,7 +127,7 @@ function createRespondCommand() {
127
127
  .argument('<worktree-id>', 'Worktree ID')
128
128
  .argument('[answer]', 'Response answer (yes, no, number, or free text)')
129
129
  .option('--default', "Select the prompt's default option (mutually exclusive with <answer>)")
130
- .option('--instance <id>', agent_target_options_1.INSTANCE_OPTION_DESCRIPTION)
130
+ .option('--instance <id>', `${agent_target_options_1.INSTANCE_OPTION_DESCRIPTION} ${instances_1.INSTANCE_ALIAS_HELP_SUFFIX}`)
131
131
  .option('--agent <agent>', agent_target_options_1.AGENT_OPTION_DESCRIPTION)
132
132
  .option('--token <token>', command_helpers_1.TOKEN_WARNING)
133
133
  .action(async (worktreeId, answer, options) => {
@@ -142,9 +142,9 @@ function createRespondCommand() {
142
142
  console.error('Error: Invalid agent.');
143
143
  process.exit(types_1.ExitCode.CONFIG_ERROR);
144
144
  }
145
- // Issue #868: Validate instance ID if provided
146
- if (options.instance && !(0, api_client_1.isValidInstanceId)(options.instance)) {
147
- console.error('Error: Invalid --instance. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
145
+ // Issue #868 / #2376: an instance id or a roster alias.
146
+ if (options.instance && !(0, instances_1.isInstanceSelector)(options.instance)) {
147
+ console.error(instances_1.INSTANCE_SELECTOR_ERROR);
148
148
  process.exit(types_1.ExitCode.CONFIG_ERROR);
149
149
  }
150
150
  // Issue #1681: exactly one of <answer> / --default
@@ -162,17 +162,20 @@ function createRespondCommand() {
162
162
  // and falls back to the worktree default, so `--instance codex` alone
163
163
  // answered into a session that was never started. Resolve the tool the
164
164
  // instance is registered under first.
165
- const agent = options.instance
166
- ? await (0, instances_1.resolveInstanceCliTool)(client, worktreeId, options.instance, options.agent)
167
- : options.agent;
165
+ const target = options.instance
166
+ ? await (0, instances_1.resolveInstanceTarget)(client, worktreeId, options.instance, options.agent)
167
+ : null;
168
+ const agent = target ? target.cliToolId : options.agent;
169
+ // Issue #2376: the resolved id. /prompt-response reads instance ids.
170
+ const instanceId = target?.instanceId;
168
171
  // [DR2-06] Use prompt-response API with cliTool (not cliToolId)
169
172
  const body = useDefault ? { useDefault: true } : { answer };
170
173
  if (agent) {
171
174
  body.cliTool = agent;
172
175
  }
173
176
  // Issue #868: target a specific agent instance
174
- if (options.instance) {
175
- body.instanceId = options.instance;
177
+ if (instanceId) {
178
+ body.instanceId = instanceId;
176
179
  }
177
180
  // Issue #2040: for an agent that publishes per-decision ids (opencode
178
181
  // today, and only opencode), a bare `respond <worktree> 3` names the ONE
@@ -186,7 +189,7 @@ function createRespondCommand() {
186
189
  // the structured path refuses it (`answerStructuredDecision` says so in
187
190
  // as many words) — while Enter at a `keys` dialog is a real answer that
188
191
  // this command has always been able to give.
189
- const structured = !useDefault && (await addressesDecisionsById(client, worktreeId, agent, options.instance));
192
+ const structured = !useDefault && (await addressesDecisionsById(client, worktreeId, agent, instanceId));
190
193
  let result = null;
191
194
  if (structured) {
192
195
  const outcome = await answerSolePendingDecision(client, worktreeId, body);
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqLpC,wBAAgB,iBAAiB,IAAI,OAAO,CA+L3C"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoMpC,wBAAgB,iBAAiB,IAAI,OAAO,CAkP3C"}
@@ -15,6 +15,7 @@ const agent_target_options_1 = require("../config/agent-target-options");
15
15
  const model_validation_1 = require("../config/model-validation");
16
16
  const agent_instances_1 = require("../utils/agent-instances");
17
17
  const instances_1 = require("./instances");
18
+ const relays_1 = require("./relays");
18
19
  /** Auto-yes duration used when --duration is omitted. */
19
20
  const DEFAULT_AUTO_YES_DURATION = '1h';
20
21
  /**
@@ -58,7 +59,7 @@ function resolveAutoYesDurationMs(duration) {
58
59
  * @param durationMs - Duration already validated by resolveAutoYesDurationMs()
59
60
  * @param agent - CLI tool resolved for --instance (Issue #1629), else --agent
60
61
  */
61
- async function enableAutoYes(client, worktreeId, options, durationMs, agent) {
62
+ async function enableAutoYes(client, worktreeId, options, durationMs, agent, instanceId) {
62
63
  const autoYesBody = {
63
64
  enabled: true,
64
65
  duration: durationMs,
@@ -69,8 +70,8 @@ async function enableAutoYes(client, worktreeId, options, durationMs, agent) {
69
70
  // Issue #896: per-instance auto-yes. When --instance is given, the poller keys
70
71
  // on worktreeId:cliToolId:instanceId so the targeted instance is auto-answered
71
72
  // independently of other instances of the same agent.
72
- if (options.instance) {
73
- autoYesBody.instanceId = options.instance;
73
+ if (instanceId) {
74
+ autoYesBody.instanceId = instanceId;
74
75
  }
75
76
  if (options.stopPattern) {
76
77
  autoYesBody.stopPattern = options.stopPattern;
@@ -104,13 +105,13 @@ async function registerInstance(client, worktreeId, instanceId, cliTool) {
104
105
  * from that worktree's verify.yaml. Every violation the server found is printed
105
106
  * before exiting, so a broken contract is fixed in one pass (Issue #1545).
106
107
  */
107
- async function createContractTask(client, worktreeId, options, agent) {
108
+ async function createContractTask(client, worktreeId, options, agent, instanceId) {
108
109
  const body = { contractPath: options.contract };
109
110
  if (agent) {
110
111
  body.cliToolId = agent;
111
112
  }
112
- if (options.instance) {
113
- body.instanceId = options.instance;
113
+ if (instanceId) {
114
+ body.instanceId = instanceId;
114
115
  }
115
116
  try {
116
117
  const response = await client.post(`/api/worktrees/${worktreeId}/tasks`, body);
@@ -149,7 +150,7 @@ function createSendCommand() {
149
150
  .description('Send a message to a worktree agent')
150
151
  .argument('<worktree-id>', 'Worktree ID')
151
152
  .argument('[message]', 'Message to send (omit when using --contract)')
152
- .option('--instance <id>', agent_target_options_1.INSTANCE_OPTION_DESCRIPTION)
153
+ .option('--instance <id>', `${agent_target_options_1.INSTANCE_OPTION_DESCRIPTION} ${instances_1.INSTANCE_ALIAS_HELP_SUFFIX}`)
153
154
  .option('--agent <agent>', agent_target_options_1.AGENT_OPTION_DESCRIPTION)
154
155
  .option('--register', 'Register the --instance session into the agent-instance roster (needs --agent unless the instance id is itself a CLI tool id)')
155
156
  .option('--model <model>', 'Specify AI model for Copilot or Antigravity agent')
@@ -158,7 +159,20 @@ function createSendCommand() {
158
159
  .option('--stop-pattern <pattern>', 'Auto-yes stop pattern (regex). Matched against terminal output; cannot block commands (use the task contract\'s autoYes.denyPatterns for that)')
159
160
  .option('--contract <path>', 'Execution contract path relative to the worktree root (e.g. .commandmate/tasks/my-task.yaml). Records a task and sends the contract preamble plus its goal.')
160
161
  .option('--ignore-structured-prompt', 'Send even if only the agent\'s hooks report an open dialog (Issue #1737). Use when the pane looks idle but sends are refused; a prompt visible in the terminal is still refused.')
162
+ .option('--reply-to <target>', relays_1.REPLY_TO_OPTION_DESCRIPTION)
163
+ .option('--allow-relay-chain', relays_1.ALLOW_RELAY_CHAIN_DESCRIPTION)
161
164
  .option('--token <token>', command_helpers_1.TOKEN_WARNING)
165
+ .addHelpText('after', `
166
+ --reply-to registers a relay: when the target session finishes this turn,
167
+ CommandMate puts its answer into the named session's composer, prefixed with
168
+ \`[from <alias> / <worktree>]\`. Nothing blocks — there is no wait to run and
169
+ no pane to scrape. Watch it with \`commandmate relays\`, withdraw it with
170
+ \`commandmate relays cancel <id>\`; it expires after 24h either way.
171
+
172
+ Exit 2 when the relay is refused: you are answering a relayed message already
173
+ (pass --allow-relay-chain), the chain would exceed 3 hops, or an open relay
174
+ between these two sessions exists. Nothing is sent in that case.
175
+ `)
162
176
  .action(async (worktreeId, message, options) => {
163
177
  try {
164
178
  // [SEC4-04] Validate worktree ID
@@ -181,9 +195,10 @@ function createSendCommand() {
181
195
  console.error(`Error: Invalid agent. Must be one of: ${cli_tool_ids_1.CLI_TOOL_IDS.join(', ')}`);
182
196
  process.exit(types_1.ExitCode.CONFIG_ERROR);
183
197
  }
184
- // Issue #868: Validate instance ID if provided
185
- if (options.instance && !(0, api_client_1.isValidInstanceId)(options.instance)) {
186
- console.error('Error: Invalid --instance. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
198
+ // Issue #868 / #2376: Validate the instance SELECTOR if provided. An id
199
+ // or an alias — which of the two it is, only the roster knows.
200
+ if (options.instance && !(0, instances_1.isInstanceSelector)(options.instance)) {
201
+ console.error(instances_1.INSTANCE_SELECTOR_ERROR);
187
202
  process.exit(types_1.ExitCode.CONFIG_ERROR);
188
203
  }
189
204
  // Issue #1000: --register requires --instance, and requires --agent
@@ -216,9 +231,14 @@ function createSendCommand() {
216
231
  // the roster is the only place that pairs the two. Resolve it once, up
217
232
  // front, so the task row, the send and auto-yes all name the same tool
218
233
  // as the session that actually starts.
219
- const agent = options.instance
220
- ? await (0, instances_1.resolveInstanceCliTool)(client, worktreeId, options.instance, options.agent)
221
- : options.agent;
234
+ const target = options.instance
235
+ ? await (0, instances_1.resolveInstanceTarget)(client, worktreeId, options.instance, options.agent)
236
+ : null;
237
+ const agent = target ? target.cliToolId : options.agent;
238
+ // Issue #2376: the RESOLVED id, never the string the user typed.
239
+ // `--instance "Codex 2"` has to reach /send as `codex-2`; no route but
240
+ // /resolve-target knows how to read an alias.
241
+ const instanceId = target?.instanceId;
222
242
  // Issue #576/#588/#989: Validate --model option via shared validator (DR1-003).
223
243
  // Issue #1925: judged against the RESOLVED agent, not against --agent.
224
244
  // `--instance copilot-2 --model gpt-5` names a copilot session in the
@@ -246,7 +266,7 @@ function createSendCommand() {
246
266
  let taskId;
247
267
  let content = message;
248
268
  if (options.contract) {
249
- const task = await createContractTask(client, worktreeId, options, agent);
269
+ const task = await createContractTask(client, worktreeId, options, agent, instanceId);
250
270
  taskId = task.taskId;
251
271
  content = task.message;
252
272
  console.error(`Task created: ${taskId}`);
@@ -254,7 +274,27 @@ function createSendCommand() {
254
274
  }
255
275
  // --auto-yes: enable auto-yes first (unless --model is specified, then after send) [DR2-02]
256
276
  if (options.autoYes && !options.model) {
257
- await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent);
277
+ await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent, instanceId);
278
+ }
279
+ // Issue #2377: the relay is registered BEFORE the message goes out, so a
280
+ // session that answers immediately cannot finish its turn in the window
281
+ // between the send and the ledger row — the completion trigger reads the
282
+ // ledger, and a row that does not exist yet is a reply nobody collects.
283
+ // A refusal exits 2 here, having sent nothing.
284
+ let relayId;
285
+ if (options.replyTo) {
286
+ const replyEndpoint = await (0, relays_1.resolveRelayEndpoint)(client, options.replyTo);
287
+ const workerEndpoint = await (0, relays_1.resolveEndpointForWorktree)(client, worktreeId, options.instance, options.agent);
288
+ relayId = await (0, relays_1.registerRelay)(client, {
289
+ from: replyEndpoint,
290
+ to: workerEndpoint,
291
+ allowRelayChain: options.allowRelayChain,
292
+ });
293
+ // stderr, not stdout: `--contract` already owns this command's stdout
294
+ // (it prints the task id there), and two commands writing two ids to
295
+ // one stream is how a `$(…)` capture ends up with both. `ask --async`
296
+ // is the form that hands the relay id back on stdout.
297
+ console.error(`Relay registered: ${relayId}`);
258
298
  }
259
299
  // [DR2-05] Send API uses "content" not "message"
260
300
  const sendBody = { content };
@@ -262,8 +302,8 @@ function createSendCommand() {
262
302
  sendBody.cliToolId = agent;
263
303
  }
264
304
  // Issue #868: Include instance ID in send body
265
- if (options.instance) {
266
- sendBody.instanceId = options.instance;
305
+ if (instanceId) {
306
+ sendBody.instanceId = instanceId;
267
307
  }
268
308
  // Issue #576: Include model in send body
269
309
  if (options.model) {
@@ -284,6 +324,12 @@ function createSendCommand() {
284
324
  if (taskId) {
285
325
  await reportTaskStatus(client, taskId, 'failed');
286
326
  }
327
+ // A relay whose message never arrived can never be answered; leaving
328
+ // it open would have the requester waiting 24h for a turn that was
329
+ // never started.
330
+ if (relayId) {
331
+ await (0, relays_1.cancelRelayQuietly)(client, relayId);
332
+ }
287
333
  // Issue #1708: the session is sitting on a prompt, so the message
288
334
  // would have been typed into the prompt's input line rather than
289
335
  // reaching the agent. Reported on its own so an unattended runner sees
@@ -304,13 +350,13 @@ function createSendCommand() {
304
350
  }
305
351
  // Issue #1000: register the ad-hoc instance into the roster after the
306
352
  // session has started, so a follow-up `commandmate instances` lists it.
307
- if (options.register && options.instance) {
308
- await registerInstance(client, worktreeId, options.instance, options.agent ?? options.instance);
353
+ if (options.register && instanceId) {
354
+ await registerInstance(client, worktreeId, instanceId, options.agent ?? instanceId);
309
355
  }
310
356
  // Issue #576: Enable auto-yes AFTER send when --model is specified
311
357
  // This avoids auto-yes interfering with the /model command interaction
312
358
  if (options.autoYes && options.model) {
313
- await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent);
359
+ await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent, instanceId);
314
360
  }
315
361
  }
316
362
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,iBAAiB,IAAI,OAAO,CA4H3C"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2DpC,wBAAgB,iBAAiB,IAAI,OAAO,CAuI3C"}