commandmate 0.31.2 → 0.32.0

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 (824) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +454 -440
  3. package/.next/app-path-routes-manifest.json +31 -29
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +12 -12
  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 +2 -2
  62. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  63. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  65. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/push/vapid/route.js +2 -2
  67. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  68. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -0
  70. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -0
  71. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -0
  72. package/.next/server/app/api/relays/route.js +1 -0
  73. package/.next/server/app/api/relays/route.js.nft.json +1 -0
  74. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -0
  75. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  78. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  80. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  82. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  83. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/repositories/clone/route.js +1 -1
  85. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  86. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/repositories/restore/route.js +1 -1
  89. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  90. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/repositories/route.js +1 -1
  92. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  93. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/repositories/scan/route.js +1 -1
  95. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  96. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/repositories/sync/route.js +1 -1
  98. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  99. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  102. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  103. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/skills/[id]/route.js +1 -1
  107. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  108. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/skills/installations/route.js +1 -1
  110. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  111. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/skills/route.js +1 -1
  115. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  116. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  120. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/todos/route.js +1 -1
  124. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  126. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/verification/runs/route.js +1 -1
  128. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  131. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  134. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  137. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  202. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  205. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  208. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +2 -1
  224. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  225. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +2 -1
  227. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  228. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  231. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  249. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +103 -1
  251. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  252. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  256. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  262. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +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 +31 -29
  340. package/.next/server/chunks/1191.js +1 -1
  341. package/.next/server/chunks/1210.js +1 -0
  342. package/.next/server/chunks/153.js +1 -0
  343. package/.next/server/chunks/1886.js +1 -1
  344. package/.next/server/chunks/21.js +1 -0
  345. package/.next/server/chunks/2119.js +1 -1
  346. package/.next/server/chunks/2445.js +1 -1
  347. package/.next/server/chunks/3077.js +67 -0
  348. package/.next/server/chunks/3086.js +1 -0
  349. package/.next/server/chunks/3241.js +1 -1
  350. package/.next/server/chunks/3270.js +1 -0
  351. package/.next/server/chunks/3543.js +1 -1
  352. package/.next/server/chunks/3730.js +1 -0
  353. package/.next/server/chunks/3925.js +1 -0
  354. package/.next/server/chunks/3945.js +1 -1
  355. package/.next/server/chunks/4443.js +2 -1
  356. package/.next/server/chunks/5043.js +1 -1
  357. package/.next/server/chunks/5164.js +1 -1
  358. package/.next/server/chunks/5220.js +1 -1
  359. package/.next/server/chunks/5354.js +1 -1
  360. package/.next/server/chunks/595.js +8 -0
  361. package/.next/server/chunks/6286.js +48 -0
  362. package/.next/server/chunks/6306.js +1 -0
  363. package/.next/server/chunks/6363.js +1 -0
  364. package/.next/server/chunks/6401.js +1 -1
  365. package/.next/server/chunks/6491.js +103 -0
  366. package/.next/server/chunks/6661.js +1 -0
  367. package/.next/server/chunks/6838.js +1 -0
  368. package/.next/server/chunks/7875.js +25 -0
  369. package/.next/server/chunks/7890.js +1 -0
  370. package/.next/server/chunks/8063.js +32 -0
  371. package/.next/server/chunks/8118.js +1 -1
  372. package/.next/server/chunks/{7587.js → 8554.js} +1 -1
  373. package/.next/server/chunks/8687.js +1 -0
  374. package/.next/server/chunks/8800.js +1 -1
  375. package/.next/server/chunks/8807.js +37 -3
  376. package/.next/server/chunks/8918.js +6 -4
  377. package/.next/server/chunks/9123.js +2 -2
  378. package/.next/server/chunks/9130.js +2 -2
  379. package/.next/server/chunks/9584.js +1 -1
  380. package/.next/server/chunks/9627.js +22 -6
  381. package/.next/server/middleware-build-manifest.js +1 -1
  382. package/.next/server/middleware-manifest.json +5 -5
  383. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  384. package/.next/server/pages/500.html +1 -1
  385. package/.next/server/server-reference-manifest.json +1 -1
  386. package/.next/static/UIUPchtWvcEuQgcbGJv4g/_buildManifest.js +1 -0
  387. package/.next/static/chunks/{5694.dda65070757534df.js → 3313.53f7ff985c0c8852.js} +1 -1
  388. package/.next/static/chunks/4718-0053d42fb635e700.js +1 -0
  389. package/.next/static/chunks/{4974-35592ec312322124.js → 5694-498765336d0b8c2b.js} +1 -1
  390. package/.next/static/chunks/{7485.442b21101fca7257.js → 7485.52361bc061cc663a.js} +1 -1
  391. package/.next/static/chunks/8019-cbf130d0e6334d2d.js +1 -0
  392. package/.next/static/chunks/8361-9bb887203c456edb.js +1 -0
  393. package/.next/static/chunks/8772-9be53a530950d804.js +1 -0
  394. package/.next/static/chunks/998-ac0ded6d5eeb4dc0.js +1 -0
  395. package/.next/static/chunks/app/api/agents/update/route-8bc5b680c5f3eae4.js +1 -0
  396. package/.next/static/chunks/app/api/agents/versions/route-8bc5b680c5f3eae4.js +1 -0
  397. package/.next/static/chunks/app/api/app/update/route-8bc5b680c5f3eae4.js +1 -0
  398. package/.next/static/chunks/app/api/app/update-check/route-8bc5b680c5f3eae4.js +1 -0
  399. package/.next/static/chunks/app/api/assistant/conversation/route-8bc5b680c5f3eae4.js +1 -0
  400. package/.next/static/chunks/app/api/assistant/current-output/route-8bc5b680c5f3eae4.js +1 -0
  401. package/.next/static/chunks/app/api/assistant/messages/route-8bc5b680c5f3eae4.js +1 -0
  402. package/.next/static/chunks/app/api/assistant/session/route-8bc5b680c5f3eae4.js +1 -0
  403. package/.next/static/chunks/app/api/assistant/start/route-8bc5b680c5f3eae4.js +1 -0
  404. package/.next/static/chunks/app/api/assistant/terminal/route-8bc5b680c5f3eae4.js +1 -0
  405. package/.next/static/chunks/app/api/assistant/tools/route-8bc5b680c5f3eae4.js +1 -0
  406. package/.next/static/chunks/app/api/auth/login/route-8bc5b680c5f3eae4.js +1 -0
  407. package/.next/static/chunks/app/api/auth/logout/route-8bc5b680c5f3eae4.js +1 -0
  408. package/.next/static/chunks/app/api/auth/status/route-8bc5b680c5f3eae4.js +1 -0
  409. package/.next/static/chunks/app/api/capabilities/route-8bc5b680c5f3eae4.js +1 -0
  410. package/.next/static/chunks/app/api/daily-summary/route-8bc5b680c5f3eae4.js +1 -0
  411. package/.next/static/chunks/app/api/daily-summary/status/route-8bc5b680c5f3eae4.js +1 -0
  412. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8bc5b680c5f3eae4.js +1 -0
  413. package/.next/static/chunks/app/api/external-apps/[id]/route-8bc5b680c5f3eae4.js +1 -0
  414. package/.next/static/chunks/app/api/external-apps/route-8bc5b680c5f3eae4.js +1 -0
  415. package/.next/static/chunks/app/api/fs/browse/route-8bc5b680c5f3eae4.js +1 -0
  416. package/.next/static/chunks/app/api/fs/recent-paths/route-8bc5b680c5f3eae4.js +1 -0
  417. package/.next/static/chunks/app/api/hooks/agent-event/route-8bc5b680c5f3eae4.js +1 -0
  418. package/.next/static/chunks/app/api/hooks/claude-done/route-8bc5b680c5f3eae4.js +1 -0
  419. package/.next/static/chunks/app/api/hooks/permission-request/route-8bc5b680c5f3eae4.js +1 -0
  420. package/.next/static/chunks/app/api/metrics/vibe/route-8bc5b680c5f3eae4.js +1 -0
  421. package/.next/static/chunks/app/api/ollama/models/route-8bc5b680c5f3eae4.js +1 -0
  422. package/.next/static/chunks/app/api/push/escalation/route-8bc5b680c5f3eae4.js +1 -0
  423. package/.next/static/chunks/app/api/push/subscriptions/route-8bc5b680c5f3eae4.js +1 -0
  424. package/.next/static/chunks/app/api/push/vapid/route-8bc5b680c5f3eae4.js +1 -0
  425. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  426. package/.next/static/chunks/app/api/relays/route-8bc5b680c5f3eae4.js +1 -0
  427. package/.next/static/chunks/app/api/remote/pair/route-8bc5b680c5f3eae4.js +1 -0
  428. package/.next/static/chunks/app/api/repositories/[id]/route-8bc5b680c5f3eae4.js +1 -0
  429. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
  430. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
  431. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8bc5b680c5f3eae4.js +1 -0
  432. package/.next/static/chunks/app/api/repositories/clone/route-8bc5b680c5f3eae4.js +1 -0
  433. package/.next/static/chunks/app/api/repositories/excluded/route-8bc5b680c5f3eae4.js +1 -0
  434. package/.next/static/chunks/app/api/repositories/restore/route-8bc5b680c5f3eae4.js +1 -0
  435. package/.next/static/chunks/app/api/repositories/route-8bc5b680c5f3eae4.js +1 -0
  436. package/.next/static/chunks/app/api/repositories/scan/route-8bc5b680c5f3eae4.js +1 -0
  437. package/.next/static/chunks/app/api/repositories/sync/route-8bc5b680c5f3eae4.js +1 -0
  438. package/.next/static/chunks/app/api/repositories/validate-path/route-8bc5b680c5f3eae4.js +1 -0
  439. package/.next/static/chunks/app/api/settings/default-agents/route-8bc5b680c5f3eae4.js +1 -0
  440. package/.next/static/chunks/app/api/settings/default-surface-mode/route-8bc5b680c5f3eae4.js +1 -0
  441. package/.next/static/chunks/app/api/sidebar/group-order/route-8bc5b680c5f3eae4.js +1 -0
  442. package/.next/static/chunks/app/api/skills/[id]/route-8bc5b680c5f3eae4.js +1 -0
  443. package/.next/static/chunks/app/api/skills/installations/route-8bc5b680c5f3eae4.js +1 -0
  444. package/.next/static/chunks/app/api/skills/operations/route-8bc5b680c5f3eae4.js +1 -0
  445. package/.next/static/chunks/app/api/skills/reindex/route-8bc5b680c5f3eae4.js +1 -0
  446. package/.next/static/chunks/app/api/skills/route-8bc5b680c5f3eae4.js +1 -0
  447. package/.next/static/chunks/app/api/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
  448. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  449. package/.next/static/chunks/app/api/tasks/[taskId]/route-8bc5b680c5f3eae4.js +1 -0
  450. package/.next/static/chunks/app/api/templates/[id]/route-8bc5b680c5f3eae4.js +1 -0
  451. package/.next/static/chunks/app/api/templates/route-8bc5b680c5f3eae4.js +1 -0
  452. package/.next/static/chunks/app/api/todos/route-8bc5b680c5f3eae4.js +1 -0
  453. package/.next/static/chunks/app/api/verification/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
  454. package/.next/static/chunks/app/api/verification/runs/route-8bc5b680c5f3eae4.js +1 -0
  455. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8bc5b680c5f3eae4.js +1 -0
  456. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8bc5b680c5f3eae4.js +1 -0
  457. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-8bc5b680c5f3eae4.js +1 -0
  458. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-8bc5b680c5f3eae4.js +1 -0
  459. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8bc5b680c5f3eae4.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8bc5b680c5f3eae4.js +1 -0
  461. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8bc5b680c5f3eae4.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/env/route-8bc5b680c5f3eae4.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8bc5b680c5f3eae4.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8bc5b680c5f3eae4.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8bc5b680c5f3eae4.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8bc5b680c5f3eae4.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8bc5b680c5f3eae4.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8bc5b680c5f3eae4.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8bc5b680c5f3eae4.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8bc5b680c5f3eae4.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8bc5b680c5f3eae4.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8bc5b680c5f3eae4.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8bc5b680c5f3eae4.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8bc5b680c5f3eae4.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8bc5b680c5f3eae4.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8bc5b680c5f3eae4.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8bc5b680c5f3eae4.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8bc5b680c5f3eae4.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8bc5b680c5f3eae4.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8bc5b680c5f3eae4.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8bc5b680c5f3eae4.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8bc5b680c5f3eae4.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8bc5b680c5f3eae4.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8bc5b680c5f3eae4.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8bc5b680c5f3eae4.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8bc5b680c5f3eae4.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8bc5b680c5f3eae4.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-8bc5b680c5f3eae4.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8bc5b680c5f3eae4.js +1 -0
  491. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8bc5b680c5f3eae4.js +1 -0
  492. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8bc5b680c5f3eae4.js +1 -0
  493. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8bc5b680c5f3eae4.js +1 -0
  494. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8bc5b680c5f3eae4.js +1 -0
  495. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8bc5b680c5f3eae4.js +1 -0
  496. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8bc5b680c5f3eae4.js +1 -0
  497. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8bc5b680c5f3eae4.js +1 -0
  498. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-8bc5b680c5f3eae4.js +1 -0
  499. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-8bc5b680c5f3eae4.js +1 -0
  500. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-8bc5b680c5f3eae4.js +1 -0
  501. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8bc5b680c5f3eae4.js +1 -0
  502. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-8bc5b680c5f3eae4.js +1 -0
  503. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8bc5b680c5f3eae4.js +1 -0
  504. package/.next/static/chunks/app/api/worktrees/[id]/route-8bc5b680c5f3eae4.js +1 -0
  505. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8bc5b680c5f3eae4.js +1 -0
  506. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8bc5b680c5f3eae4.js +1 -0
  507. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8bc5b680c5f3eae4.js +1 -0
  508. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8bc5b680c5f3eae4.js +1 -0
  509. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8bc5b680c5f3eae4.js +1 -0
  510. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8bc5b680c5f3eae4.js +1 -0
  511. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8bc5b680c5f3eae4.js +1 -0
  512. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8bc5b680c5f3eae4.js +1 -0
  513. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8bc5b680c5f3eae4.js +1 -0
  514. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8bc5b680c5f3eae4.js +1 -0
  515. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-8bc5b680c5f3eae4.js +1 -0
  516. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-8bc5b680c5f3eae4.js +1 -0
  517. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8bc5b680c5f3eae4.js +1 -0
  518. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
  519. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8bc5b680c5f3eae4.js +1 -0
  520. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8bc5b680c5f3eae4.js +1 -0
  521. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8bc5b680c5f3eae4.js +1 -0
  522. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8bc5b680c5f3eae4.js +1 -0
  523. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8bc5b680c5f3eae4.js +1 -0
  524. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
  525. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8bc5b680c5f3eae4.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-8bc5b680c5f3eae4.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8bc5b680c5f3eae4.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8bc5b680c5f3eae4.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8bc5b680c5f3eae4.js +1 -0
  535. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-8bc5b680c5f3eae4.js +1 -0
  536. package/.next/static/chunks/app/api/worktrees/route-8bc5b680c5f3eae4.js +1 -0
  537. package/.next/static/chunks/app/chat/{page-37d7615d17d7e2a0.js → page-e60d07c4c79602f0.js} +1 -1
  538. package/.next/static/chunks/app/manifest.webmanifest/route-8bc5b680c5f3eae4.js +1 -0
  539. package/.next/static/chunks/app/more/{page-353a3924e6d7968e.js → page-fc94f86aa881489e.js} +1 -1
  540. package/.next/static/chunks/app/{page-c2bf871d953a1d6f.js → page-6871cca022b24807.js} +1 -1
  541. package/.next/static/chunks/app/proxy/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  542. package/.next/static/chunks/app/repositories/{page-7d0f26df0537254c.js → page-788ded1b72963d94.js} +1 -1
  543. package/.next/static/chunks/app/review/{page-e3f141b2829973e9.js → page-35b99baaf3c93b38.js} +1 -1
  544. package/.next/static/chunks/app/sessions/{page-53f188ed9ca49e5f.js → page-fa2d62f3e8436c69.js} +1 -1
  545. package/.next/static/chunks/app/skills/[skillId]/{page-80569b720aea59cc.js → page-06799157652e8fa9.js} +1 -1
  546. package/.next/static/chunks/app/skills/installed/{page-dbd2690ad72da95b.js → page-2f3987e3a131c8d0.js} +1 -1
  547. package/.next/static/chunks/app/skills/{page-dacd36f9c11aa7da.js → page-e70bfcf5ed4e4865.js} +1 -1
  548. package/.next/static/chunks/app/worktrees/[id]/layout-8bc5b680c5f3eae4.js +1 -0
  549. package/.next/static/chunks/app/worktrees/[id]/page-06e1ff5ce2d126fd.js +1 -0
  550. package/.next/static/chunks/webpack-1dc9eb5ebb4fa5ff.js +1 -0
  551. package/.next/static/css/96d94a4ba771efc3.css +1 -0
  552. package/.next/trace +13 -13
  553. package/.next/types/app/api/relays/[relayId]/cancel/route.ts +347 -0
  554. package/.next/types/app/api/relays/route.ts +347 -0
  555. package/.next/types/routes.d.ts +3 -1
  556. package/.next/types/validator.ts +18 -0
  557. package/dist/cli/commands/ask.d.ts +34 -0
  558. package/dist/cli/commands/ask.d.ts.map +1 -0
  559. package/dist/cli/commands/ask.js +494 -0
  560. package/dist/cli/commands/capture.d.ts +20 -0
  561. package/dist/cli/commands/capture.d.ts.map +1 -1
  562. package/dist/cli/commands/capture.js +80 -30
  563. package/dist/cli/commands/docs.d.ts.map +1 -1
  564. package/dist/cli/commands/docs.js +47 -4
  565. package/dist/cli/commands/instances.d.ts +67 -0
  566. package/dist/cli/commands/instances.d.ts.map +1 -1
  567. package/dist/cli/commands/instances.js +103 -7
  568. package/dist/cli/commands/peers.d.ts +64 -0
  569. package/dist/cli/commands/peers.d.ts.map +1 -0
  570. package/dist/cli/commands/peers.js +196 -0
  571. package/dist/cli/commands/relays.d.ts +92 -0
  572. package/dist/cli/commands/relays.d.ts.map +1 -0
  573. package/dist/cli/commands/relays.js +293 -0
  574. package/dist/cli/commands/report.d.ts +3 -0
  575. package/dist/cli/commands/report.d.ts.map +1 -1
  576. package/dist/cli/commands/report.js +29 -1
  577. package/dist/cli/commands/respond.d.ts.map +1 -1
  578. package/dist/cli/commands/respond.js +13 -10
  579. package/dist/cli/commands/send.d.ts.map +1 -1
  580. package/dist/cli/commands/send.js +66 -20
  581. package/dist/cli/commands/task.d.ts.map +1 -1
  582. package/dist/cli/commands/task.js +30 -0
  583. package/dist/cli/commands/wait.d.ts +20 -0
  584. package/dist/cli/commands/wait.d.ts.map +1 -1
  585. package/dist/cli/commands/wait.js +55 -6
  586. package/dist/cli/commands/whoami.d.ts +109 -0
  587. package/dist/cli/commands/whoami.d.ts.map +1 -0
  588. package/dist/cli/commands/whoami.js +271 -0
  589. package/dist/cli/docs/agent-operations.d.ts +25 -1
  590. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  591. package/dist/cli/docs/agent-operations.js +184 -1
  592. package/dist/cli/index.d.ts +13 -0
  593. package/dist/cli/index.d.ts.map +1 -1
  594. package/dist/cli/index.js +25 -1
  595. package/dist/cli/types/api-responses.d.ts +93 -0
  596. package/dist/cli/types/api-responses.d.ts.map +1 -1
  597. package/dist/cli/types/index.d.ts +16 -0
  598. package/dist/cli/types/index.d.ts.map +1 -1
  599. package/dist/lib/cli/command-reference.d.ts +179 -0
  600. package/dist/lib/cli/command-reference.d.ts.map +1 -0
  601. package/dist/lib/cli/command-reference.js +210 -0
  602. package/dist/lib/detection/ansi.d.ts +14 -1
  603. package/dist/lib/detection/ansi.d.ts.map +1 -1
  604. package/dist/lib/detection/ansi.js +40 -3
  605. package/dist/lib/detection/status-reason.d.ts +28 -0
  606. package/dist/lib/detection/status-reason.d.ts.map +1 -1
  607. package/dist/lib/detection/status-reason.js +28 -0
  608. package/dist/lib/detection/tools/verified-against.d.ts +24 -24
  609. package/dist/lib/detection/tools/verified-against.js +24 -24
  610. package/dist/server/locales/en/worktree.json +1425 -0
  611. package/dist/server/locales/ja/worktree.json +1425 -0
  612. package/dist/server/src/lib/auto-yes-poller.js +26 -11
  613. package/dist/server/src/lib/db/chat-db.js +204 -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 +157 -23
  620. package/dist/server/src/lib/detection/model-info-extractor.js +185 -4
  621. package/dist/server/src/lib/detection/selection-shape.js +72 -1
  622. package/dist/server/src/lib/detection/status-reason.js +28 -0
  623. package/dist/server/src/lib/detection/tools/antigravity/detect.js +105 -25
  624. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +239 -0
  625. package/dist/server/src/lib/detection/tools/command-code/detect.js +33 -0
  626. package/dist/server/src/lib/detection/tools/verified-against.js +24 -24
  627. package/dist/server/src/lib/history/user-turn-recorder.js +79 -16
  628. package/dist/server/src/lib/hooks/hook-settings-generator.js +16 -0
  629. package/dist/server/src/lib/hooks/sources/claude/model-switch.js +169 -0
  630. package/dist/server/src/lib/hooks/sources/claude/source.js +14 -1
  631. package/dist/server/src/lib/polling/response-checker.js +55 -2
  632. package/dist/server/src/lib/polling/structured-history-gate.js +14 -1
  633. package/dist/server/src/lib/push/index.js +13 -1
  634. package/dist/server/src/lib/push/model-change-push-notifier.js +174 -0
  635. package/dist/server/src/lib/push/push-sender.js +48 -20
  636. package/dist/server/src/lib/realtime/model-change-broadcast.js +171 -0
  637. package/dist/server/src/lib/realtime/terminal-broadcast.js +5 -0
  638. package/dist/server/src/lib/realtime/types.js +19 -1
  639. package/dist/server/src/lib/realtime/waiting-broadcast.js +25 -0
  640. package/dist/server/src/lib/relay/relay-delivery.js +400 -0
  641. package/dist/server/src/lib/relay/relay-messages.js +144 -0
  642. package/dist/server/src/lib/relay/relay-policy.js +127 -0
  643. package/dist/server/src/lib/relay/relay-readiness.js +63 -0
  644. package/dist/server/src/lib/relay/relay-session-ref.js +72 -0
  645. package/dist/server/src/lib/relay/relay-system-line.js +79 -0
  646. package/dist/server/src/lib/relay/relay-triggers.js +177 -0
  647. package/dist/server/src/lib/relay/types.js +25 -0
  648. package/dist/server/src/lib/session/agent-event-state.js +344 -12
  649. package/dist/server/src/lib/session/current-output-builder.js +18 -0
  650. package/dist/server/src/lib/session/send-user-message.js +1 -0
  651. package/package.json +1 -1
  652. package/.next/server/chunks/1058.js +0 -1
  653. package/.next/server/chunks/1068.js +0 -1
  654. package/.next/server/chunks/1990.js +0 -103
  655. package/.next/server/chunks/261.js +0 -1
  656. package/.next/server/chunks/2739.js +0 -1
  657. package/.next/server/chunks/2839.js +0 -1
  658. package/.next/server/chunks/3869.js +0 -1
  659. package/.next/server/chunks/4325.js +0 -1
  660. package/.next/server/chunks/4393.js +0 -1
  661. package/.next/server/chunks/5017.js +0 -1
  662. package/.next/server/chunks/5120.js +0 -1
  663. package/.next/server/chunks/552.js +0 -25
  664. package/.next/server/chunks/6130.js +0 -1
  665. package/.next/server/chunks/6894.js +0 -8
  666. package/.next/server/chunks/7187.js +0 -1
  667. package/.next/server/chunks/7472.js +0 -1
  668. package/.next/server/chunks/7836.js +0 -1
  669. package/.next/server/chunks/7859.js +0 -21
  670. package/.next/server/chunks/9696.js +0 -3
  671. package/.next/server/chunks/9798.js +0 -2
  672. package/.next/static/GiOqe8rfQGQ0NvzB5qr3q/_buildManifest.js +0 -1
  673. package/.next/static/chunks/1783-11c9b4d8a52ebd91.js +0 -1
  674. package/.next/static/chunks/4718-0d4d93c4c75f336e.js +0 -1
  675. package/.next/static/chunks/6170-951b9f5fe6b4b3b5.js +0 -1
  676. package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +0 -1
  677. package/.next/static/chunks/8593-fa0eb2802e0ce68a.js +0 -1
  678. package/.next/static/chunks/app/api/agents/update/route-ee11f7b8a34cba8c.js +0 -1
  679. package/.next/static/chunks/app/api/agents/versions/route-ee11f7b8a34cba8c.js +0 -1
  680. package/.next/static/chunks/app/api/app/update/route-ee11f7b8a34cba8c.js +0 -1
  681. package/.next/static/chunks/app/api/app/update-check/route-ee11f7b8a34cba8c.js +0 -1
  682. package/.next/static/chunks/app/api/assistant/conversation/route-ee11f7b8a34cba8c.js +0 -1
  683. package/.next/static/chunks/app/api/assistant/current-output/route-ee11f7b8a34cba8c.js +0 -1
  684. package/.next/static/chunks/app/api/assistant/messages/route-ee11f7b8a34cba8c.js +0 -1
  685. package/.next/static/chunks/app/api/assistant/session/route-ee11f7b8a34cba8c.js +0 -1
  686. package/.next/static/chunks/app/api/assistant/start/route-ee11f7b8a34cba8c.js +0 -1
  687. package/.next/static/chunks/app/api/assistant/terminal/route-ee11f7b8a34cba8c.js +0 -1
  688. package/.next/static/chunks/app/api/assistant/tools/route-ee11f7b8a34cba8c.js +0 -1
  689. package/.next/static/chunks/app/api/auth/login/route-ee11f7b8a34cba8c.js +0 -1
  690. package/.next/static/chunks/app/api/auth/logout/route-ee11f7b8a34cba8c.js +0 -1
  691. package/.next/static/chunks/app/api/auth/status/route-ee11f7b8a34cba8c.js +0 -1
  692. package/.next/static/chunks/app/api/capabilities/route-ee11f7b8a34cba8c.js +0 -1
  693. package/.next/static/chunks/app/api/daily-summary/route-ee11f7b8a34cba8c.js +0 -1
  694. package/.next/static/chunks/app/api/daily-summary/status/route-ee11f7b8a34cba8c.js +0 -1
  695. package/.next/static/chunks/app/api/external-apps/[id]/health/route-ee11f7b8a34cba8c.js +0 -1
  696. package/.next/static/chunks/app/api/external-apps/[id]/route-ee11f7b8a34cba8c.js +0 -1
  697. package/.next/static/chunks/app/api/external-apps/route-ee11f7b8a34cba8c.js +0 -1
  698. package/.next/static/chunks/app/api/fs/browse/route-ee11f7b8a34cba8c.js +0 -1
  699. package/.next/static/chunks/app/api/fs/recent-paths/route-ee11f7b8a34cba8c.js +0 -1
  700. package/.next/static/chunks/app/api/hooks/agent-event/route-ee11f7b8a34cba8c.js +0 -1
  701. package/.next/static/chunks/app/api/hooks/claude-done/route-ee11f7b8a34cba8c.js +0 -1
  702. package/.next/static/chunks/app/api/hooks/permission-request/route-ee11f7b8a34cba8c.js +0 -1
  703. package/.next/static/chunks/app/api/metrics/vibe/route-ee11f7b8a34cba8c.js +0 -1
  704. package/.next/static/chunks/app/api/ollama/models/route-ee11f7b8a34cba8c.js +0 -1
  705. package/.next/static/chunks/app/api/push/escalation/route-ee11f7b8a34cba8c.js +0 -1
  706. package/.next/static/chunks/app/api/push/subscriptions/route-ee11f7b8a34cba8c.js +0 -1
  707. package/.next/static/chunks/app/api/push/vapid/route-ee11f7b8a34cba8c.js +0 -1
  708. package/.next/static/chunks/app/api/remote/pair/route-ee11f7b8a34cba8c.js +0 -1
  709. package/.next/static/chunks/app/api/repositories/[id]/route-ee11f7b8a34cba8c.js +0 -1
  710. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
  711. package/.next/static/chunks/app/api/repositories/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
  712. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-ee11f7b8a34cba8c.js +0 -1
  713. package/.next/static/chunks/app/api/repositories/clone/route-ee11f7b8a34cba8c.js +0 -1
  714. package/.next/static/chunks/app/api/repositories/excluded/route-ee11f7b8a34cba8c.js +0 -1
  715. package/.next/static/chunks/app/api/repositories/restore/route-ee11f7b8a34cba8c.js +0 -1
  716. package/.next/static/chunks/app/api/repositories/route-ee11f7b8a34cba8c.js +0 -1
  717. package/.next/static/chunks/app/api/repositories/scan/route-ee11f7b8a34cba8c.js +0 -1
  718. package/.next/static/chunks/app/api/repositories/sync/route-ee11f7b8a34cba8c.js +0 -1
  719. package/.next/static/chunks/app/api/repositories/validate-path/route-ee11f7b8a34cba8c.js +0 -1
  720. package/.next/static/chunks/app/api/settings/default-agents/route-ee11f7b8a34cba8c.js +0 -1
  721. package/.next/static/chunks/app/api/settings/default-surface-mode/route-ee11f7b8a34cba8c.js +0 -1
  722. package/.next/static/chunks/app/api/sidebar/group-order/route-ee11f7b8a34cba8c.js +0 -1
  723. package/.next/static/chunks/app/api/skills/[id]/route-ee11f7b8a34cba8c.js +0 -1
  724. package/.next/static/chunks/app/api/skills/installations/route-ee11f7b8a34cba8c.js +0 -1
  725. package/.next/static/chunks/app/api/skills/operations/route-ee11f7b8a34cba8c.js +0 -1
  726. package/.next/static/chunks/app/api/skills/reindex/route-ee11f7b8a34cba8c.js +0 -1
  727. package/.next/static/chunks/app/api/skills/route-ee11f7b8a34cba8c.js +0 -1
  728. package/.next/static/chunks/app/api/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
  729. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
  730. package/.next/static/chunks/app/api/tasks/[taskId]/route-ee11f7b8a34cba8c.js +0 -1
  731. package/.next/static/chunks/app/api/templates/[id]/route-ee11f7b8a34cba8c.js +0 -1
  732. package/.next/static/chunks/app/api/templates/route-ee11f7b8a34cba8c.js +0 -1
  733. package/.next/static/chunks/app/api/todos/route-ee11f7b8a34cba8c.js +0 -1
  734. package/.next/static/chunks/app/api/verification/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
  735. package/.next/static/chunks/app/api/verification/runs/route-ee11f7b8a34cba8c.js +0 -1
  736. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-ee11f7b8a34cba8c.js +0 -1
  737. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-ee11f7b8a34cba8c.js +0 -1
  738. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-ee11f7b8a34cba8c.js +0 -1
  739. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-ee11f7b8a34cba8c.js +0 -1
  740. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-ee11f7b8a34cba8c.js +0 -1
  741. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-ee11f7b8a34cba8c.js +0 -1
  742. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-ee11f7b8a34cba8c.js +0 -1
  743. package/.next/static/chunks/app/api/worktrees/[id]/env/route-ee11f7b8a34cba8c.js +0 -1
  744. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-ee11f7b8a34cba8c.js +0 -1
  745. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-ee11f7b8a34cba8c.js +0 -1
  746. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  747. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-ee11f7b8a34cba8c.js +0 -1
  748. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-ee11f7b8a34cba8c.js +0 -1
  749. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-ee11f7b8a34cba8c.js +0 -1
  750. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-ee11f7b8a34cba8c.js +0 -1
  751. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-ee11f7b8a34cba8c.js +0 -1
  752. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-ee11f7b8a34cba8c.js +0 -1
  753. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-ee11f7b8a34cba8c.js +0 -1
  754. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-ee11f7b8a34cba8c.js +0 -1
  755. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-ee11f7b8a34cba8c.js +0 -1
  756. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-ee11f7b8a34cba8c.js +0 -1
  757. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-ee11f7b8a34cba8c.js +0 -1
  758. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-ee11f7b8a34cba8c.js +0 -1
  759. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-ee11f7b8a34cba8c.js +0 -1
  760. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-ee11f7b8a34cba8c.js +0 -1
  761. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-ee11f7b8a34cba8c.js +0 -1
  762. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-ee11f7b8a34cba8c.js +0 -1
  763. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-ee11f7b8a34cba8c.js +0 -1
  764. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-ee11f7b8a34cba8c.js +0 -1
  765. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-ee11f7b8a34cba8c.js +0 -1
  766. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-ee11f7b8a34cba8c.js +0 -1
  767. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-ee11f7b8a34cba8c.js +0 -1
  768. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-ee11f7b8a34cba8c.js +0 -1
  769. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-ee11f7b8a34cba8c.js +0 -1
  770. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-ee11f7b8a34cba8c.js +0 -1
  771. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-ee11f7b8a34cba8c.js +0 -1
  772. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-ee11f7b8a34cba8c.js +0 -1
  773. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-ee11f7b8a34cba8c.js +0 -1
  774. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-ee11f7b8a34cba8c.js +0 -1
  775. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-ee11f7b8a34cba8c.js +0 -1
  776. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-ee11f7b8a34cba8c.js +0 -1
  777. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-ee11f7b8a34cba8c.js +0 -1
  778. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-ee11f7b8a34cba8c.js +0 -1
  779. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-ee11f7b8a34cba8c.js +0 -1
  780. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-ee11f7b8a34cba8c.js +0 -1
  781. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-ee11f7b8a34cba8c.js +0 -1
  782. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-ee11f7b8a34cba8c.js +0 -1
  783. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-ee11f7b8a34cba8c.js +0 -1
  784. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-ee11f7b8a34cba8c.js +0 -1
  785. package/.next/static/chunks/app/api/worktrees/[id]/route-ee11f7b8a34cba8c.js +0 -1
  786. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-ee11f7b8a34cba8c.js +0 -1
  787. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-ee11f7b8a34cba8c.js +0 -1
  788. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-ee11f7b8a34cba8c.js +0 -1
  789. package/.next/static/chunks/app/api/worktrees/[id]/search/route-ee11f7b8a34cba8c.js +0 -1
  790. package/.next/static/chunks/app/api/worktrees/[id]/send/route-ee11f7b8a34cba8c.js +0 -1
  791. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-ee11f7b8a34cba8c.js +0 -1
  792. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-ee11f7b8a34cba8c.js +0 -1
  793. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-ee11f7b8a34cba8c.js +0 -1
  794. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-ee11f7b8a34cba8c.js +0 -1
  795. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-ee11f7b8a34cba8c.js +0 -1
  796. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-ee11f7b8a34cba8c.js +0 -1
  797. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-ee11f7b8a34cba8c.js +0 -1
  798. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-ee11f7b8a34cba8c.js +0 -1
  799. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
  800. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-ee11f7b8a34cba8c.js +0 -1
  801. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-ee11f7b8a34cba8c.js +0 -1
  802. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-ee11f7b8a34cba8c.js +0 -1
  803. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-ee11f7b8a34cba8c.js +0 -1
  804. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-ee11f7b8a34cba8c.js +0 -1
  805. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
  806. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
  807. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  808. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-ee11f7b8a34cba8c.js +0 -1
  809. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  810. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-ee11f7b8a34cba8c.js +0 -1
  811. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-ee11f7b8a34cba8c.js +0 -1
  812. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
  813. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
  814. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-ee11f7b8a34cba8c.js +0 -1
  815. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-ee11f7b8a34cba8c.js +0 -1
  816. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-ee11f7b8a34cba8c.js +0 -1
  817. package/.next/static/chunks/app/api/worktrees/route-ee11f7b8a34cba8c.js +0 -1
  818. package/.next/static/chunks/app/manifest.webmanifest/route-ee11f7b8a34cba8c.js +0 -1
  819. package/.next/static/chunks/app/proxy/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  820. package/.next/static/chunks/app/worktrees/[id]/layout-ee11f7b8a34cba8c.js +0 -1
  821. package/.next/static/chunks/app/worktrees/[id]/page-7a0915e32a2af4d3.js +0 -1
  822. package/.next/static/chunks/webpack-9f75198882fdaf08.js +0 -1
  823. package/.next/static/css/5c13ea243dfdcb66.css +0 -1
  824. /package/.next/static/{GiOqe8rfQGQ0NvzB5qr3q → UIUPchtWvcEuQgcbGJv4g}/_ssgManifest.js +0 -0
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ /**
3
+ * Every sentence a relay puts in front of an agent or a reader (Issue #2377).
4
+ *
5
+ * ## Why the text is here and not in `locales/`
6
+ *
7
+ * Two of the four go into an AGENT's composer, which makes them prompts rather
8
+ * than labels: the `[from …]` header is what tells session A that the paragraph
9
+ * underneath it was written by somebody else, and a key that resolved to its own
10
+ * name — a renamed namespace, a dictionary that failed to load — would hand A an
11
+ * unattributed wall of text from another session and no way to tell. The same
12
+ * argument `buildDelegationBrief` makes in `lib/cli/command-reference`, and the
13
+ * same shape `buildModelChangedSentence` uses for the model-change history row
14
+ * (#2357): both languages written out side by side so a change to one is
15
+ * visibly a change to the other.
16
+ *
17
+ * The UI's own labels — the badges, the chat strip — ARE in `locales/`, because
18
+ * those are labels.
19
+ *
20
+ * ## The header is machine-readable on purpose
21
+ *
22
+ * {@link RELAY_HEADER_PREFIX} opens every delivered body in both languages, so
23
+ * a reader (a human, an agent, a later `capture`) can recognise a relayed
24
+ * message without knowing which language the server was speaking. The body
25
+ * after it is B's own text, untouched — summarising or translating it is out of
26
+ * scope by the Issue's own words.
27
+ *
28
+ * @module lib/relay/relay-messages
29
+ */
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.RELAY_HEADER_PREFIX = void 0;
32
+ exports.buildRelayHeader = buildRelayHeader;
33
+ exports.buildRelayReplyMessage = buildRelayReplyMessage;
34
+ exports.buildRelayPromptMessage = buildRelayPromptMessage;
35
+ exports.buildRelayExpiredMessage = buildRelayExpiredMessage;
36
+ exports.buildRelaySystemLine = buildRelaySystemLine;
37
+ /**
38
+ * The literal every relayed body starts with.
39
+ *
40
+ * `[from ` and not a localized word: it is the one token a consumer may match
41
+ * on, and it has to mean the same thing in both dictionaries.
42
+ */
43
+ exports.RELAY_HEADER_PREFIX = '[from ';
44
+ /** How long a quoted prompt question may be before it is elided. */
45
+ const PROMPT_SUMMARY_MAX_CHARS = 200;
46
+ /** How many options of a confirmation are listed before the rest are counted. */
47
+ const PROMPT_OPTIONS_MAX = 9;
48
+ /**
49
+ * `[from <alias> / <worktree>]` — the attribution line.
50
+ *
51
+ * Both fields, always: an alias alone is ambiguous across worktrees (every
52
+ * repository's roster tends to contain a `Codex 2`) and a worktree alone does
53
+ * not say which of its sessions answered.
54
+ */
55
+ function buildRelayHeader(sender) {
56
+ return `${exports.RELAY_HEADER_PREFIX}${sender.alias} / ${sender.worktreeId}]`;
57
+ }
58
+ /**
59
+ * B's reply, attributed.
60
+ *
61
+ * The body is passed through verbatim — no summary, no translation, no
62
+ * re-wrapping. A blank body still gets a header: "they finished and said
63
+ * nothing" is information, and swallowing the delivery would leave A waiting on
64
+ * a relay that has already closed.
65
+ */
66
+ function buildRelayReplyMessage(sender, reply) {
67
+ const body = reply.trim();
68
+ return body === ''
69
+ ? `${buildRelayHeader(sender)} (no reply body)`
70
+ : `${buildRelayHeader(sender)} ${body}`;
71
+ }
72
+ /** Collapse whitespace and clip, so a 40-line dialog is one readable line. */
73
+ function squeeze(text, max) {
74
+ const flat = text.replace(/\s+/g, ' ').trim();
75
+ return flat.length <= max ? flat : `${flat.slice(0, max - 1)}…`;
76
+ }
77
+ const PROMPT_TEMPLATES = {
78
+ en: {
79
+ waiting: 'is waiting for a confirmation:',
80
+ options: 'Options:',
81
+ more: '(+{n} more)',
82
+ },
83
+ ja: {
84
+ waiting: '確認待ちです:',
85
+ options: '選択肢:',
86
+ more: '(他 {n} 件)',
87
+ },
88
+ };
89
+ /**
90
+ * "They are blocked on a dialog, and here is what it asks."
91
+ *
92
+ * Deliberately NOT an instruction to answer it. `respond` on somebody else's
93
+ * dialog picks whatever option happens to be highlighted (#1681), and the
94
+ * delegation brief already forbids it; this notice exists so A can decide what
95
+ * to do, which is usually to tell a human.
96
+ */
97
+ function buildRelayPromptMessage(locale, sender, notice) {
98
+ const t = PROMPT_TEMPLATES[locale];
99
+ const head = `${buildRelayHeader(sender)} ${t.waiting} ${squeeze(notice.question, PROMPT_SUMMARY_MAX_CHARS)}`;
100
+ if (notice.options.length === 0)
101
+ return head;
102
+ const shown = notice.options.slice(0, PROMPT_OPTIONS_MAX);
103
+ const rest = notice.options.length - shown.length;
104
+ const listed = shown.map((o) => `${o.key}) ${squeeze(o.label, 60)}`).join(' ');
105
+ const more = rest > 0 ? ` ${t.more.replace('{n}', String(rest))}` : '';
106
+ return `${head}\n${t.options} ${listed}${more}`;
107
+ }
108
+ const EXPIRED_TEMPLATES = {
109
+ en: 'The reply you were waiting for did not arrive within {hours}h; the relay has expired.',
110
+ ja: '待っていた返信が {hours} 時間以内に届かなかったため、委任は期限切れになりました。',
111
+ };
112
+ /**
113
+ * The single line an expired relay leaves in A's composer.
114
+ *
115
+ * One line and one only — the Issue's "1行だけ通知". The once-ness is enforced
116
+ * by the ledger (`markRelayExpired` is a guarded update), not by this string.
117
+ */
118
+ function buildRelayExpiredMessage(locale, sender, ttlMs) {
119
+ const hours = Math.max(1, Math.round(ttlMs / 3_600_000));
120
+ return `${buildRelayHeader(sender)} ${EXPIRED_TEMPLATES[locale].replace('{hours}', String(hours))}`;
121
+ }
122
+ const SYSTEM_TEMPLATES = {
123
+ en: {
124
+ requested: 'Delegated to {alias}; waiting for the reply.',
125
+ replied: 'Reply from {alias}.',
126
+ waiting: '{alias} is waiting for a confirmation.',
127
+ expired: 'The delegation to {alias} expired without a reply.',
128
+ },
129
+ ja: {
130
+ requested: '{alias} へ委任、返信待ち',
131
+ replied: '{alias} から返信',
132
+ waiting: '{alias} が確認待ち',
133
+ expired: '{alias} への委任が返信のないまま期限切れ',
134
+ },
135
+ };
136
+ /**
137
+ * The one-line system row the chat surface and History both show.
138
+ *
139
+ * Written into `chat_messages` exactly as the model-change row is (#2357), in
140
+ * the readers' language, because a stored row cannot be re-rendered per viewer.
141
+ */
142
+ function buildRelaySystemLine(locale, kind, alias) {
143
+ return SYSTEM_TEMPLATES[locale][kind].replace('{alias}', alias);
144
+ }
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ /**
3
+ * The four rules that stop relays from becoming a loop (Issue #2377).
4
+ *
5
+ * A relay is a standing instruction that fires on somebody else's turn, so the
6
+ * failure mode it introduces is not "a wrong answer" but "two agents talking to
7
+ * each other forever, each one's reply being the other's next prompt". None of
8
+ * the guards below is expensive; all four exist because the cheap version of
9
+ * this feature has no natural stopping point.
10
+ *
11
+ * 1. **A relayed message may not open a relay** (`RELAY_CHAIN_BLOCKED`). The
12
+ * default. `--allow-relay-chain` is the deliberate override, and the flag is
13
+ * named after what it permits rather than after what it disables.
14
+ * 2. **Chains are bounded** (`RELAY_HOPS_EXCEEDED`). Even with the override,
15
+ * depth stops at {@link MAX_RELAY_HOPS}.
16
+ * 3. **One open relay per direction** (`RELAY_DUPLICATE_PENDING`). A second
17
+ * standing instruction from A to B says nothing the first does not, and both
18
+ * would fire on the same finished turn.
19
+ * 4. **A session may not relay to itself** (`RELAY_SELF_TARGET`), which is a
20
+ * one-message loop with no second party in it at all.
21
+ *
22
+ * Pure: every decision is a function of values the caller already read. The
23
+ * database work — finding the parent relay, counting the open ones — is
24
+ * `relay-service`'s, so the rules can be tested without a schema.
25
+ *
26
+ * @module lib/relay/relay-policy
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.RELAY_PUMP_INTERVAL_MS = exports.RELAY_SCRAPE_QUIET_MS = exports.MAX_OPEN_RELAYS_PER_PAIR = exports.MAX_RELAY_HOPS = exports.MAX_RELAY_TTL_MS = exports.MIN_RELAY_TTL_MS = exports.DEFAULT_RELAY_TTL_MS = void 0;
30
+ exports.isSameEndpoint = isSameEndpoint;
31
+ exports.decideRelayCreation = decideRelayCreation;
32
+ exports.isRelayRefusal = isRelayRefusal;
33
+ exports.resolveRelayTtlMs = resolveRelayTtlMs;
34
+ /** How long a relay stands before it is swept. 24h, per the Issue. */
35
+ exports.DEFAULT_RELAY_TTL_MS = 24 * 60 * 60 * 1000;
36
+ /** Shortest TTL a caller may ask for: one minute. */
37
+ exports.MIN_RELAY_TTL_MS = 60 * 1000;
38
+ /** Longest TTL a caller may ask for: seven days. */
39
+ exports.MAX_RELAY_TTL_MS = 7 * 24 * 60 * 60 * 1000;
40
+ /**
41
+ * How deep a chain may go.
42
+ *
43
+ * Three, by the Issue. Depth 1 is a relay nothing relayed into; a relay opened
44
+ * while answering one is 2, and so on. A request that would create depth 4 is
45
+ * refused — `--allow-relay-chain` widens the door, it does not remove the wall.
46
+ */
47
+ exports.MAX_RELAY_HOPS = 3;
48
+ /** How many open relays one from→to direction may hold at once. */
49
+ exports.MAX_OPEN_RELAYS_PER_PAIR = 1;
50
+ /**
51
+ * How long a scrape-only tool must sit still before its pane counts as a reply.
52
+ *
53
+ * copilot, gemini and vibe-local keep no transcript, so what a completed turn
54
+ * leaves behind is the poller's copy of the SCREEN — and the poller's completion
55
+ * judgement is a string analysis of a frame that is still being drawn. Delivering
56
+ * on the first such judgement is how a half-written answer reaches session A as
57
+ * "the reply". The relay therefore waits, re-reads the newest row and delivers
58
+ * only if nothing newer arrived: the Issue's 「完了検知 + 数秒の静穏」.
59
+ *
60
+ * Tools with a transcript skip this entirely — their reader answers `true` only
61
+ * for a turn the agent has closed, which is a stronger statement than any amount
62
+ * of quiet.
63
+ */
64
+ exports.RELAY_SCRAPE_QUIET_MS = 4_000;
65
+ /** How often the pump retries deliveries and sweeps expired relays. */
66
+ exports.RELAY_PUMP_INTERVAL_MS = 15_000;
67
+ /** Whether two endpoints name the same session. */
68
+ function isSameEndpoint(a, b) {
69
+ return a.worktreeId === b.worktreeId && a.instanceId === b.instanceId;
70
+ }
71
+ /**
72
+ * Apply all four rules and hand back the depth, or the refusal.
73
+ *
74
+ * Order matters only for which sentence an operator sees first, and it is the
75
+ * order they can act on: "you are the same session" is a typo, "this would be a
76
+ * chain" is a flag away, "the chain is too deep" and "you already have one" are
77
+ * decisions about work in flight.
78
+ */
79
+ function decideRelayCreation(input) {
80
+ if (isSameEndpoint(input.from, input.to)) {
81
+ return {
82
+ code: 'RELAY_SELF_TARGET',
83
+ message: 'A session cannot relay a reply to itself. --reply-to must name a different '
84
+ + 'worktree or a different agent instance.',
85
+ };
86
+ }
87
+ const hops = input.parentHops === null ? 1 : input.parentHops + 1;
88
+ if (input.parentHops !== null && !input.allowRelayChain) {
89
+ return {
90
+ code: 'RELAY_CHAIN_BLOCKED',
91
+ message: 'The last message this session was given arrived over a relay, so opening '
92
+ + 'another one would chain two deliveries together. Pass --allow-relay-chain '
93
+ + 'if that is what you mean.',
94
+ };
95
+ }
96
+ if (hops > exports.MAX_RELAY_HOPS) {
97
+ return {
98
+ code: 'RELAY_HOPS_EXCEEDED',
99
+ message: `Relay chains stop at ${exports.MAX_RELAY_HOPS} hops; this one would be ${hops}. `
100
+ + 'Report the reply to whoever asked instead of forwarding it again.',
101
+ };
102
+ }
103
+ if (input.openBetween >= exports.MAX_OPEN_RELAYS_PER_PAIR) {
104
+ return {
105
+ code: 'RELAY_DUPLICATE_PENDING',
106
+ message: 'There is already an open relay between these two sessions. Wait for it, or '
107
+ + 'withdraw it with `commandmate relays cancel <id>`.',
108
+ };
109
+ }
110
+ return { ok: true, hops };
111
+ }
112
+ /** Whether a verdict is a refusal. */
113
+ function isRelayRefusal(verdict) {
114
+ return 'code' in verdict;
115
+ }
116
+ /**
117
+ * Clamp a requested TTL into the supported window.
118
+ *
119
+ * Clamped rather than refused: the TTL is a sweep deadline, not a promise, and
120
+ * an operator who asked for a year gets the longest one that keeps the ledger
121
+ * from accumulating rows nobody will ever collect.
122
+ */
123
+ function resolveRelayTtlMs(requested) {
124
+ if (requested === undefined || !Number.isFinite(requested))
125
+ return exports.DEFAULT_RELAY_TTL_MS;
126
+ return Math.min(exports.MAX_RELAY_TTL_MS, Math.max(exports.MIN_RELAY_TTL_MS, Math.trunc(requested)));
127
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ /**
3
+ * "Can session A be typed into right now?" (Issue #2377).
4
+ *
5
+ * A relay's delivery is a message put into a composer that belongs to somebody
6
+ * else's turn, so it has to ask the question `send` asks and one more besides.
7
+ *
8
+ * - **Is the session alive?** A relay to a pane that was closed has nowhere to
9
+ * land; holding it until the deadline is the honest answer, not starting a
10
+ * session on the operator's behalf to receive an answer they may never read.
11
+ * - **Is it mid-turn?** This is the one `send` does NOT ask, and the Issue asks
12
+ * for it by name: typing into a `running` composer interrupts the turn that
13
+ * is running. The relay waits for `ready` instead — the ledger is durable, so
14
+ * waiting costs nothing but time.
15
+ *
16
+ * The prompt-dialog question is deliberately NOT asked here: `sendUserMessage`
17
+ * already refuses a send that would land in an open dialog (#1708/#1737), and
18
+ * duplicating that judgement would give the relay path its own second opinion
19
+ * about a state the send path is the authority on. A refusal there is a retry
20
+ * here.
21
+ *
22
+ * Fail-open on an unreadable pane, for the same reason `prompt-waiting-guard`
23
+ * fails open: the cost of a wrong "ready" is a message the send path refuses
24
+ * and the pump retries, while the cost of a wrong "not ready" is a relay that
25
+ * expires holding an answer somebody is waiting for.
26
+ *
27
+ * @module lib/relay/relay-readiness
28
+ */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.findRelayHoldReason = findRelayHoldReason;
31
+ const manager_1 = require("../../lib/cli-tools/manager");
32
+ const cli_session_1 = require("../../lib/session/cli-session");
33
+ const status_detector_1 = require("../../lib/detection/status-detector");
34
+ const status_capture_config_1 = require("../../config/status-capture-config");
35
+ const logger_1 = require("../../lib/logger");
36
+ const logger = (0, logger_1.createLogger)('relay-readiness');
37
+ /**
38
+ * Whether a relay may be delivered into this session now.
39
+ *
40
+ * @returns `null` when the session can take the message, else why it cannot
41
+ */
42
+ async function findRelayHoldReason(worktreeId, cliToolId, instanceId) {
43
+ try {
44
+ const cliTool = manager_1.CLIToolManager.getInstance().getTool(cliToolId);
45
+ if (!(await cliTool.isRunning(worktreeId, instanceId)))
46
+ return 'session_stopped';
47
+ const output = await (0, cli_session_1.captureSessionOutput)(worktreeId, cliToolId, status_capture_config_1.STATUS_CAPTURE_LINES, instanceId);
48
+ const status = (0, status_detector_1.detectSessionStatus)(output, cliToolId);
49
+ // Only `running` holds. `waiting` is a dialog, which is the send path's
50
+ // judgement to make (and its refusal is a retry); `idle` and `ready` both
51
+ // mean the composer is the thing on screen.
52
+ return status.status === 'running' ? 'generating' : null;
53
+ }
54
+ catch (error) {
55
+ logger.warn('relay-readiness-check-failed', {
56
+ worktreeId,
57
+ cliToolId,
58
+ instanceId,
59
+ error: error instanceof Error ? error.message : String(error),
60
+ });
61
+ return null;
62
+ }
63
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ /**
3
+ * Turning "worktree + instance" into the three facts a relay needs (#2377).
4
+ *
5
+ * A ledger row stores two ids and nothing else, on purpose — an alias can be
6
+ * renamed and a roster row deleted, and a relay must survive both. Everything
7
+ * else a delivery needs (which CLI tool drives the session, what to call it in
8
+ * the attribution header) is therefore resolved at the moment it is needed, from
9
+ * the roster, with the id as the fallback for every field.
10
+ *
11
+ * Never throws. A relay whose roster cannot be read still delivers, attributed
12
+ * to the instance id — which is worse to read and strictly better than not
13
+ * delivering.
14
+ *
15
+ * @module lib/relay/relay-session-ref
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.resolveRelaySession = resolveRelaySession;
19
+ exports.relayWorktreeExists = relayWorktreeExists;
20
+ const agent_instances_db_1 = require("../../lib/db/agent-instances-db");
21
+ const worktree_db_1 = require("../../lib/db/worktree-db");
22
+ const logger_1 = require("../../lib/logger");
23
+ const logger = (0, logger_1.createLogger)('relay-session-ref');
24
+ /** The tool assumed when neither the roster nor the worktree declares one. */
25
+ const FALLBACK_CLI_TOOL = 'claude';
26
+ /**
27
+ * Resolve one end of a relay.
28
+ *
29
+ * The tool comes from `resolveInstanceCliTool` — the same authority
30
+ * `POST /api/worktrees/:id/send` uses, so a relay cannot address a session the
31
+ * send route would address differently (#1629 is the record of what two
32
+ * authorities on that cost) — falling back to the worktree's own tool and then
33
+ * to claude.
34
+ */
35
+ function resolveRelaySession(db, endpoint) {
36
+ let cliToolId = FALLBACK_CLI_TOOL;
37
+ let alias = endpoint.instanceId;
38
+ try {
39
+ const resolution = (0, agent_instances_db_1.resolveInstanceCliTool)(db, endpoint.worktreeId, endpoint.instanceId);
40
+ if (resolution.ok && resolution.cliToolId) {
41
+ cliToolId = resolution.cliToolId;
42
+ }
43
+ else {
44
+ cliToolId = (0, worktree_db_1.getWorktreeById)(db, endpoint.worktreeId)?.cliToolId ?? FALLBACK_CLI_TOOL;
45
+ }
46
+ const rosterRow = (0, agent_instances_db_1.getAgentInstance)(db, endpoint.worktreeId, endpoint.instanceId);
47
+ if (rosterRow?.alias)
48
+ alias = rosterRow.alias;
49
+ }
50
+ catch (error) {
51
+ logger.warn('relay-session-resolve-failed', {
52
+ worktreeId: endpoint.worktreeId,
53
+ instanceId: endpoint.instanceId,
54
+ error: error instanceof Error ? error.message : String(error),
55
+ });
56
+ }
57
+ return {
58
+ worktreeId: endpoint.worktreeId,
59
+ instanceId: endpoint.instanceId,
60
+ cliToolId,
61
+ alias,
62
+ };
63
+ }
64
+ /** Whether this worktree exists at all. The one check a create must make. */
65
+ function relayWorktreeExists(db, worktreeId) {
66
+ try {
67
+ return (0, worktree_db_1.getWorktreeById)(db, worktreeId) !== null;
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * The one-line system rows a relay leaves in the requester's transcript (#2377).
4
+ *
5
+ * Exactly the mechanism Issue #2357 built for "the model changed": a row in
6
+ * `chat_messages`, written in the readers' language, followed by the same
7
+ * `message` frame `sendUserMessage` publishes. One write therefore reaches the
8
+ * chat surface, the History tab and any transcript that happens to be open,
9
+ * without a fourth history surface being invented for four sentences.
10
+ *
11
+ * Idempotent: the request id is `relay-sys:<relayId>:<kind>` and each row is
12
+ * probed for before it is written, so a delivery that is retried — which the
13
+ * pump does by design — does not stack four "waiting for the reply" lines.
14
+ *
15
+ * Never throws. A transcript line is the least important of a relay's three
16
+ * effects, and it must not cost the delivery.
17
+ *
18
+ * @module lib/relay/relay-system-line
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.writeRelaySystemLine = writeRelaySystemLine;
22
+ const chat_db_1 = require("../../lib/db/chat-db");
23
+ const model_change_push_notifier_1 = require("../../lib/push/model-change-push-notifier");
24
+ const ws_server_1 = require("../../lib/ws-server");
25
+ const relay_messages_1 = require("../../lib/relay/relay-messages");
26
+ const logger_1 = require("../../lib/logger");
27
+ const logger = (0, logger_1.createLogger)('relay-system-line');
28
+ /**
29
+ * Write one system line into `target`'s transcript, once.
30
+ *
31
+ * @param db - Database
32
+ * @param relayId - The ledger row the line is about
33
+ * @param kind - Which of the four sentences
34
+ * @param target - Whose transcript the line goes in (always the requester, A)
35
+ * @param subject - Whose name the sentence carries (always the worker, B)
36
+ * @param at - Epoch ms
37
+ * @returns Whether a row was written by this call
38
+ */
39
+ function writeRelaySystemLine(db, relayId, kind, target, subject, at = Date.now()) {
40
+ const requestId = `${chat_db_1.RELAY_SYSTEM_REQUEST_ID_PREFIX}${relayId}:${kind}`;
41
+ try {
42
+ if ((0, chat_db_1.findMessageByRequestId)(db, target.worktreeId, requestId))
43
+ return false;
44
+ const locale = (0, model_change_push_notifier_1.resolveReadersLocale)(db);
45
+ const message = (0, chat_db_1.createRelaySystemMessage)(db, {
46
+ worktreeId: target.worktreeId,
47
+ cliToolId: target.cliToolId,
48
+ instanceId: target.instanceId,
49
+ content: (0, relay_messages_1.buildRelaySystemLine)(locale, kind, subject.alias),
50
+ relayId,
51
+ kind,
52
+ at,
53
+ });
54
+ try {
55
+ (0, ws_server_1.broadcastMessage)('message', {
56
+ worktreeId: target.worktreeId,
57
+ message: { ...message, cliToolId: target.cliToolId, instanceId: target.instanceId },
58
+ });
59
+ }
60
+ catch (error) {
61
+ // The row is already durable; a socket with no owner must not turn a
62
+ // written line into a failure the caller reports.
63
+ logger.warn('relay-system-line-broadcast-failed', {
64
+ relayId,
65
+ kind,
66
+ error: error instanceof Error ? error.message : String(error),
67
+ });
68
+ }
69
+ return true;
70
+ }
71
+ catch (error) {
72
+ logger.warn('relay-system-line-failed', {
73
+ relayId,
74
+ kind,
75
+ error: error instanceof Error ? error.message : String(error),
76
+ });
77
+ return false;
78
+ }
79
+ }
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ /**
3
+ * Where a relay is woken up (Issue #2377).
4
+ *
5
+ * Three edges matter, and this module is the seam each of them calls into. It
6
+ * exists as a seam rather than as three direct calls for one concrete reason:
7
+ * the delivery reaches `sendUserMessage`, which reaches `response-poller`, which
8
+ * reaches `response-checker` — one of the callers below. A static import would
9
+ * close that cycle, so every entry point here loads `relay-delivery` lazily and
10
+ * the poller's module graph stays what it was. It is the same move
11
+ * `stop-history-capture` makes for the transcript readers, and for the same
12
+ * reason.
13
+ *
14
+ * The three edges:
15
+ *
16
+ * 1. **A turn ended.** {@link onRelayTurnCompleted}, called from the two places
17
+ * that record a finished reply — the structured-history gate (the agent's
18
+ * own transcript; both the Stop hook and the poller reach it) and the
19
+ * poller's own scrape, for the tools that keep no transcript.
20
+ * 2. **A session stopped on a dialog.** The waiting edge, subscribed to here
21
+ * rather than polled: `waiting-episode-state` already makes the crossing
22
+ * observable exactly once, and a fourth surface keeping its own "was it
23
+ * waiting last time?" is precisely what #1786 exists to prevent.
24
+ * 3. **Time passed.** The maintenance tick — expire the deadlines, retry the
25
+ * deliveries a busy composer refused.
26
+ *
27
+ * Armed by `startWaitingStatusBroadcast`, which `ws-server` calls from
28
+ * `setupWebSocket`; disarmed with it. That is where #2357 put the model-change
29
+ * subscription for the same reason: it is the one place in the process that
30
+ * knows the server is up, and a suite that stands a server up and tears it down
31
+ * leaves nothing running.
32
+ *
33
+ * @module lib/relay/relay-triggers
34
+ */
35
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
36
+ if (k2 === undefined) k2 = k;
37
+ var desc = Object.getOwnPropertyDescriptor(m, k);
38
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
39
+ desc = { enumerable: true, get: function() { return m[k]; } };
40
+ }
41
+ Object.defineProperty(o, k2, desc);
42
+ }) : (function(o, m, k, k2) {
43
+ if (k2 === undefined) k2 = k;
44
+ o[k2] = m[k];
45
+ }));
46
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
47
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
48
+ }) : function(o, v) {
49
+ o["default"] = v;
50
+ });
51
+ var __importStar = (this && this.__importStar) || (function () {
52
+ var ownKeys = function(o) {
53
+ ownKeys = Object.getOwnPropertyNames || function (o) {
54
+ var ar = [];
55
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
56
+ return ar;
57
+ };
58
+ return ownKeys(o);
59
+ };
60
+ return function (mod) {
61
+ if (mod && mod.__esModule) return mod;
62
+ var result = {};
63
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
64
+ __setModuleDefault(result, mod);
65
+ return result;
66
+ };
67
+ })();
68
+ Object.defineProperty(exports, "__esModule", { value: true });
69
+ exports.onRelayTurnCompleted = onRelayTurnCompleted;
70
+ exports.onRelayPromptWaiting = onRelayPromptWaiting;
71
+ exports.runRelayMaintenance = runRelayMaintenance;
72
+ exports.startRelayTriggers = startRelayTriggers;
73
+ exports.stopRelayTriggers = stopRelayTriggers;
74
+ exports.areRelayTriggersActive = areRelayTriggersActive;
75
+ const waiting_episode_state_1 = require("../../lib/session/waiting-episode-state");
76
+ const relay_policy_1 = require("../../lib/relay/relay-policy");
77
+ const logger_1 = require("../../lib/logger");
78
+ const logger = (0, logger_1.createLogger)('relay-triggers');
79
+ /**
80
+ * Tell the relays that this instance finished a turn.
81
+ *
82
+ * `settled` distinguishes the two producers: `true` for a turn the agent's own
83
+ * transcript says is closed, `false` for one judged from the screen — which is
84
+ * what makes the quiet window in `relay-delivery` apply to exactly the tools
85
+ * that need it.
86
+ *
87
+ * Fire-and-forget and never throws: this is called from inside the poller's save
88
+ * path and from a hook receiver, and in both a relay failure must not cost the
89
+ * turn that was just recorded.
90
+ */
91
+ function onRelayTurnCompleted(worktreeId, cliToolId, instanceId, settled) {
92
+ const worker = { worktreeId, cliToolId, instanceId: instanceId ?? cliToolId };
93
+ void (async () => {
94
+ try {
95
+ const { notifyRelayTurnCompleted } = await Promise.resolve().then(() => __importStar(require('../../lib/relay/relay-delivery')));
96
+ await notifyRelayTurnCompleted(worker, { settled });
97
+ }
98
+ catch (error) {
99
+ logger.warn('relay-turn-trigger-failed', {
100
+ worktreeId,
101
+ cliToolId,
102
+ instanceId: worker.instanceId,
103
+ error: error instanceof Error ? error.message : String(error),
104
+ });
105
+ }
106
+ })();
107
+ }
108
+ /** Tell the relays that this instance is blocked on a confirmation. */
109
+ function onRelayPromptWaiting(worktreeId, cliToolId, instanceId) {
110
+ const worker = { worktreeId, cliToolId, instanceId: instanceId ?? cliToolId };
111
+ void (async () => {
112
+ try {
113
+ const { notifyRelayPromptWaiting } = await Promise.resolve().then(() => __importStar(require('../../lib/relay/relay-delivery')));
114
+ notifyRelayPromptWaiting(worker);
115
+ }
116
+ catch (error) {
117
+ logger.warn('relay-prompt-trigger-failed', {
118
+ worktreeId,
119
+ cliToolId,
120
+ instanceId: worker.instanceId,
121
+ error: error instanceof Error ? error.message : String(error),
122
+ });
123
+ }
124
+ })();
125
+ }
126
+ /** Run one maintenance tick now. Exported for the suite and for the timer. */
127
+ async function runRelayMaintenance() {
128
+ try {
129
+ const { runRelayMaintenanceTick } = await Promise.resolve().then(() => __importStar(require('../../lib/relay/relay-delivery')));
130
+ await runRelayMaintenanceTick();
131
+ }
132
+ catch (error) {
133
+ logger.warn('relay-maintenance-failed', {
134
+ error: error instanceof Error ? error.message : String(error),
135
+ });
136
+ }
137
+ }
138
+ /**
139
+ * Subscribe to the waiting edge and start the maintenance loop.
140
+ *
141
+ * Idempotent: calling it again replaces what is already armed rather than
142
+ * adding a second copy, so a re-entered `setupWebSocket` cannot notify twice or
143
+ * leave two timers running.
144
+ */
145
+ function startRelayTriggers() {
146
+ stopRelayTriggers();
147
+ globalThis.__relayTriggersUnsubscribe = (0, waiting_episode_state_1.onWaitingTransition)((transition) => {
148
+ // Only the OPENING edge, and only a real dialog. `menu` is a pager or a
149
+ // model picker — nobody is being asked anything — and `unclassified` is a
150
+ // frame the detectors failed on, which is not something to describe to
151
+ // another session as a question it might report to a human.
152
+ if (!transition.waiting || transition.kind !== 'prompt')
153
+ return;
154
+ onRelayPromptWaiting(transition.worktreeId, transition.cliToolId, transition.instanceId);
155
+ });
156
+ const timer = setInterval(() => void runRelayMaintenance(), relay_policy_1.RELAY_PUMP_INTERVAL_MS);
157
+ // The loop must not be the reason a process stays alive: a CLI that imported
158
+ // this graph for one call would otherwise never exit.
159
+ timer.unref?.();
160
+ globalThis.__relayMaintenanceTimer = timer;
161
+ }
162
+ /** Drop the subscription and the timer. Safe when nothing is armed. */
163
+ function stopRelayTriggers() {
164
+ const unsubscribe = globalThis.__relayTriggersUnsubscribe;
165
+ if (unsubscribe) {
166
+ unsubscribe();
167
+ globalThis.__relayTriggersUnsubscribe = undefined;
168
+ }
169
+ if (globalThis.__relayMaintenanceTimer) {
170
+ clearInterval(globalThis.__relayMaintenanceTimer);
171
+ globalThis.__relayMaintenanceTimer = undefined;
172
+ }
173
+ }
174
+ /** Whether the triggers are armed. Test seam. */
175
+ function areRelayTriggersActive() {
176
+ return globalThis.__relayTriggersUnsubscribe !== undefined;
177
+ }