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
@@ -59,7 +59,7 @@ exports.getAutoYesPollerCompositeKeys = getAutoYesPollerCompositeKeys;
59
59
  exports.stopAutoYesPollingByWorktree = stopAutoYesPollingByWorktree;
60
60
  exports.isAnyPollerActiveForWorktree = isAnyPollerActiveForWorktree;
61
61
  const cli_session_1 = require("./session/cli-session");
62
- const prompt_detector_1 = require("./detection/prompt-detector");
62
+ const response_checker_1 = require("./polling/response-checker");
63
63
  const auto_yes_resolver_1 = require("./polling/auto-yes-resolver");
64
64
  const auto_yes_policy_1 = require("./polling/auto-yes-policy");
65
65
  const auto_yes_suppression_state_1 = require("./polling/auto-yes-suppression-state");
@@ -281,12 +281,27 @@ function processStopConditionDelta(compositeKey, pollerState, cleanOutput) {
281
281
  async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, cleanOutput, precomputedLines, instanceId) {
282
282
  const compositeKey = (0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId);
283
283
  try {
284
- // 1. Detect prompt
285
- const promptOptions = (0, cli_patterns_1.buildDetectPromptOptions)(cliToolId);
286
- const promptDetection = (0, prompt_detector_1.detectPrompt)(cleanOutput, {
287
- ...promptOptions,
288
- ...(precomputedLines && { precomputedLines }),
289
- });
284
+ // 1. Detect prompt.
285
+ //
286
+ // Issue #2368: through `detectPromptOnCleanFrame`, the entry the status
287
+ // path and the response poller already read frames on — NOT the generic
288
+ // `detectPrompt` this used to call. #2364 gave agy its own dialog reader and
289
+ // wired it into three of the four consumers of one frame; this poller was
290
+ // the fourth, and it stayed on the generic multiple-choice parser. That
291
+ // parser folds a wrapped option label only when the continuation row is
292
+ // indented, short or path-shaped (#372, for codex prose), and agy prints the
293
+ // approved command INSIDE the label and wraps it at column 0 — so every
294
+ // Bash approval read as `isPrompt: false` here and Auto-Yes answered
295
+ // nothing, while `/current-output` published the same screen as a waiting
296
+ // four-option prompt. Everything after this point is unchanged: the
297
+ // duplicate key (#306), codex's launch dialogs (#1829), the dialog gate
298
+ // (#1928) and the contract policy (#1547) all still run. What changed is
299
+ // only whether the frame can be READ.
300
+ //
301
+ // `cleanOutput` is handed over already stripped, and the clean-frame entry
302
+ // is the one that does not strip again (`stripBoxDrawing` is not
303
+ // idempotent), so this poller and the response poller judge identical text.
304
+ const promptDetection = (0, response_checker_1.detectPromptOnCleanFrame)(cleanOutput, cliToolId, precomputedLines);
290
305
  if (!promptDetection.isPrompt || !promptDetection.promptData) {
291
306
  pollerState.lastAnsweredPromptKey = null;
292
307
  pollerState.lastAnsweredAt = null;
@@ -312,7 +327,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
312
327
  // '2', '1' — each without a trailing Enter), but only during startSession,
313
328
  // while this poller runs on its own 2s phase for the life of the session.
314
329
  // Whichever sees the dialog first decides, so the fix is to leave them all
315
- // to the tool. Auto-answer layer only: detectPrompt above still reports the
330
+ // to the tool. Auto-answer layer only: the detection above still reports the
316
331
  // prompt, so the human keeps seeing the screen and the response poller
317
332
  // still notifies them about it.
318
333
  const launchDialog = cliToolId === 'codex' ? (0, cli_patterns_1.getCodexLifecycleDialog)(cleanOutput) : null;
@@ -334,7 +349,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
334
349
  return 'no_answer';
335
350
  }
336
351
  // 3.5. Issue #1928 (§4 D1 decision 4): the generic numbered-list inference is
337
- // not enough to send an answer. `detectPrompt` above judges the ROWS, and the
352
+ // not enough to send an answer. The detection above judges the ROWS, and the
338
353
  // rows of an agent's own reply can be indistinguishable from a dialog's --
339
354
  // opencode 1.18 answering "list three options and ask which one" is the
340
355
  // reported case (#1896), and the `1` this poller sent in reply was not
@@ -369,8 +384,8 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
369
384
  return 'no_answer';
370
385
  }
371
386
  // 4. Resolve auto answer under the execution contract's policy (Issue #1547).
372
- // Auto-Yes calls detectPrompt directly instead of going through
373
- // status-detector, so this is the only place the policy can gate an
387
+ // Auto-Yes reads the frame itself instead of going through status-detector
388
+ // (it shares the reader, not the verdict), so this is the only place the policy can gate an
374
389
  // auto-answer: a prompt the policy withholds is left for a human, and the
375
390
  // response poller's prompt path (WS broadcast + Web Push, see
376
391
  // polling/response-checker.ts) is what tells them it is waiting.
@@ -6,7 +6,7 @@
6
6
  * Issue #479: Extracted from db.ts for single-responsibility separation
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.UNKEYED_USER_MESSAGE_LIMIT = exports.ACTIVE_FILTER = void 0;
9
+ exports.RELAY_SYSTEM_REQUEST_ID_PREFIX = exports.RELAY_REQUEST_ID_PREFIX = exports.MODEL_CHANGE_REQUEST_ID_PREFIX = exports.USER_TURN_CANDIDATE_LIMIT = exports.ACTIVE_FILTER = void 0;
10
10
  exports.getLastAssistantMessageAt = getLastAssistantMessageAt;
11
11
  exports.createMessage = createMessage;
12
12
  exports.updateMessageContent = updateMessageContent;
@@ -28,6 +28,12 @@ exports.getMessageById = getMessageById;
28
28
  exports.updatePromptData = updatePromptData;
29
29
  exports.markPendingPromptsAsAnswered = markPendingPromptsAsAnswered;
30
30
  exports.recordAnsweredPrompt = recordAnsweredPrompt;
31
+ exports.createModelChangeMessage = createModelChangeMessage;
32
+ exports.relayRequestId = relayRequestId;
33
+ exports.parseRelayRequestId = parseRelayRequestId;
34
+ exports.getLastUserMessageForInstance = getLastUserMessageForInstance;
35
+ exports.getLatestOpenPromptMessage = getLatestOpenPromptMessage;
36
+ exports.createRelaySystemMessage = createRelaySystemMessage;
31
37
  const crypto_1 = require("crypto");
32
38
  const logger_1 = require("../../lib/logger");
33
39
  const logger = (0, logger_1.createLogger)('chat-db');
@@ -244,16 +250,17 @@ function findMessageByRequestId(db, worktreeId, requestId) {
244
250
  return row ? mapChatMessage(row) : null;
245
251
  }
246
252
  /**
247
- * How many candidate rows {@link findUnkeyedUserMessages} returns.
253
+ * How many candidate rows a user-row candidate lookup returns.
248
254
  *
249
255
  * The caller compares content in JavaScript, so this bounds the work rather than
250
256
  * the correctness. Twenty is far above the number of user rows one instance can
251
257
  * accumulate inside the caller's few-minute window and still small enough that
252
258
  * the query is never the expensive part of a poll.
253
259
  */
254
- exports.UNKEYED_USER_MESSAGE_LIMIT = 20;
260
+ exports.USER_TURN_CANDIDATE_LIMIT = 20;
255
261
  /**
256
- * User rows for one instance that no producer has claimed yet (Issue #2196).
262
+ * User rows for one instance that no producer has claimed yet (Issue #2196)
263
+ * and, on request, the one keyed row that is a duplicate of one (Issue #2392).
257
264
  *
258
265
  * The lookup behind "the operator's input is already in History — `/send` put it
259
266
  * there". A row qualifies when it is this instance's, is a `user` row, sits in
@@ -277,15 +284,40 @@ exports.UNKEYED_USER_MESSAGE_LIMIT = 20;
277
284
  * `ACTIVE_FILTER` applies: an archived row has been cleared out of History, and
278
285
  * adopting one would key a turn to a row nobody can see.
279
286
  *
287
+ * ## The one keyed row this will hand back, and only when asked
288
+ *
289
+ * Issue #2392. `relay-delivery` writes the answer it types into the requesting
290
+ * session's composer as a `relay` user row keyed `relay:<ledgerId>`, and that
291
+ * session's own transcript reader then reads the delivered body back as a prompt
292
+ * it was handed — 662ms later, measured — and duplicated it, because the row it
293
+ * should have recognised was keyed and therefore invisible here.
294
+ *
295
+ * `includeRelayDelivered` widens the predicate to `request_id IS NULL OR (a
296
+ * relay row keyed `relay:…`)`. It is an OR and an opt-in, so no existing caller
297
+ * sees a row it did not see before; `message_type` and the key prefix are both
298
+ * required, because a relay *prompt* delivery is a `relay` row with no key at
299
+ * all and stays an ordinary unkeyed candidate, while a `relay-sys:` row is
300
+ * transcript furniture that is not the delivery.
301
+ *
302
+ * **A row that comes back with a `requestId` must not be claimed.** That key is
303
+ * how `relay-service`'s `findParentRelayHops` reads the ledger back out of the
304
+ * row (#2387), so re-pointing one at a transcript key would silently un-chain
305
+ * every relay opened from the session. {@link setMessageRequestId}'s
306
+ * `request_id IS NULL` predicate refuses the write in any case; the caller is
307
+ * expected to branch on `requestId` rather than rely on that.
308
+ *
280
309
  * @returns Candidate rows, newest first
281
310
  */
282
311
  function findUnkeyedUserMessages(db, query) {
312
+ const keyFilter = query.includeRelayDelivered
313
+ ? `AND (request_id IS NULL OR (message_type = 'relay' AND request_id LIKE ?))`
314
+ : 'AND request_id IS NULL';
283
315
  const stmt = db.prepare(`
284
316
  SELECT id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id, instance_id, archived
285
317
  FROM chat_messages
286
318
  WHERE worktree_id = ?
287
319
  AND role = 'user'
288
- AND request_id IS NULL
320
+ ${keyFilter}
289
321
  AND COALESCE(cli_tool_id, 'claude') = ?
290
322
  AND COALESCE(instance_id, cli_tool_id, 'claude') = ?
291
323
  AND timestamp >= ? AND timestamp <= ?
@@ -293,8 +325,14 @@ function findUnkeyedUserMessages(db, query) {
293
325
  ORDER BY timestamp DESC
294
326
  LIMIT ?
295
327
  `);
296
- const rows = stmt.all(query.worktreeId, query.cliToolId, query.instanceId, query.fromMs, query.toMs, query.limit ?? exports.UNKEYED_USER_MESSAGE_LIMIT);
297
- return rows.map(mapChatMessage);
328
+ const rows = stmt.all(query.worktreeId, ...(query.includeRelayDelivered ? [`${exports.RELAY_REQUEST_ID_PREFIX}%`] : []), query.cliToolId, query.instanceId, query.fromMs, query.toMs, query.limit ?? exports.USER_TURN_CANDIDATE_LIMIT);
329
+ // A bare `relay:` names no ledger entry and so is not a delivery — the rule
330
+ // `parseRelayRequestId` already states for the loop guard, applied here so the
331
+ // two readers cannot disagree about what counts as one. A no-op without the
332
+ // option, where nothing that comes back is keyed at all.
333
+ return rows
334
+ .map(mapChatMessage)
335
+ .filter((message) => !message.requestId || parseRelayRequestId(message.requestId) !== null);
298
336
  }
299
337
  /**
300
338
  * Claim an unkeyed row for a producer, without touching anything else on it
@@ -654,3 +692,162 @@ function recordAnsweredPrompt(db, params) {
654
692
  });
655
693
  return { message, created: true };
656
694
  }
695
+ // ============================================================================
696
+ // Model change rows (Issue #2357)
697
+ // ============================================================================
698
+ /**
699
+ * The `request_id` prefix a model-change row carries (Issue #2357).
700
+ *
701
+ * `chat_messages` has no `system` role — `role` is `user | assistant` and every
702
+ * reader of the column branches on exactly those two — so the sentence "the
703
+ * model changed" is stored as an assistant row and *identified* by its request
704
+ * id instead: `model-changed:<epoch ms>`. A reader that wants to style these
705
+ * rows differently, or a `capture --prompts`-style audit that wants to list
706
+ * them, matches on this prefix rather than on the wording, which is localized
707
+ * at write time and would otherwise have to be matched in every language.
708
+ */
709
+ exports.MODEL_CHANGE_REQUEST_ID_PREFIX = 'model-changed:';
710
+ /**
711
+ * Persist "the model changed" into the instance's history (Issue #2357).
712
+ *
713
+ * One row per transition, written by the model edge's subscriber and nothing
714
+ * else — the chat transcript and the History tab both read this table, so one
715
+ * write reaches both, and the same row is what the `message` frame pushes to a
716
+ * transcript that is open at the time.
717
+ *
718
+ * An assistant row, on purpose: the transcript groups an assistant row that
719
+ * follows no user row as a standalone reply, which is the closest the schema
720
+ * comes to a system line without a migration. The row is a `normal` message
721
+ * (not a `prompt`), so nothing that scans for open dialogs will mistake it for
722
+ * one, and the request id (see {@link MODEL_CHANGE_REQUEST_ID_PREFIX}) is what
723
+ * marks it.
724
+ */
725
+ function createModelChangeMessage(db, params) {
726
+ return createMessage(db, {
727
+ worktreeId: params.worktreeId,
728
+ role: 'assistant',
729
+ content: params.content,
730
+ messageType: 'normal',
731
+ timestamp: new Date(params.at),
732
+ requestId: `${exports.MODEL_CHANGE_REQUEST_ID_PREFIX}${params.at}`,
733
+ cliToolId: params.cliToolId,
734
+ instanceId: params.instanceId ?? params.cliToolId,
735
+ });
736
+ }
737
+ // ===========================================================================
738
+ // Relay rows (Issue #2377)
739
+ // ===========================================================================
740
+ /**
741
+ * The `request_id` prefix a RELAYED message carries.
742
+ *
743
+ * The delivered body is an ordinary user row — session B's answer, typed into
744
+ * session A's composer — and `relay:<relayId>` is what turns that row back into
745
+ * a pointer at the ledger entry that produced it. Two readers depend on that
746
+ * direction:
747
+ *
748
+ * - the ledger's own idempotency, because the id is also
749
+ * `session_relays.sent_request_id` and that column carries a UNIQUE index;
750
+ * - the loop guard, which asks "was the last thing this session was told a
751
+ * relayed message, and if so, whose?" — the answer is the parent relay, and
752
+ * its `hops` is what the new relay's depth is measured from.
753
+ *
754
+ * Same shape and same reasoning as {@link MODEL_CHANGE_REQUEST_ID_PREFIX}: a
755
+ * prefix rather than a wording, because the wording is localized at write time.
756
+ */
757
+ exports.RELAY_REQUEST_ID_PREFIX = 'relay:';
758
+ /** The `request_id` prefix a relay SYSTEM row carries (`relay-sys:<relayId>:<kind>`). */
759
+ exports.RELAY_SYSTEM_REQUEST_ID_PREFIX = 'relay-sys:';
760
+ /** Build the relay message's request id from the ledger id. */
761
+ function relayRequestId(relayId) {
762
+ return `${exports.RELAY_REQUEST_ID_PREFIX}${relayId}`;
763
+ }
764
+ /**
765
+ * The ledger id inside a relayed row's request id, or null.
766
+ *
767
+ * Null for every other row, including a relay SYSTEM row: those are transcript
768
+ * furniture, not the delivery, and treating one as the delivery would let a
769
+ * session's own "delegated, waiting" line count as an inbound relay.
770
+ */
771
+ function parseRelayRequestId(requestId) {
772
+ if (!requestId || !requestId.startsWith(exports.RELAY_REQUEST_ID_PREFIX))
773
+ return null;
774
+ const id = requestId.slice(exports.RELAY_REQUEST_ID_PREFIX.length);
775
+ return id === '' ? null : id;
776
+ }
777
+ /**
778
+ * The newest user-authored row for ONE agent instance.
779
+ *
780
+ * {@link getLastUserMessage} answers the same question for a whole worktree,
781
+ * which is the wrong scope for the loop guard: a worktree runs several sessions
782
+ * and "was I asked this by a relay?" is a question about one of them.
783
+ *
784
+ * `matchResolvedInstance`'s expression is spelled out here rather than reused
785
+ * through `getMessages` because this read wants the newest USER row and
786
+ * `getMessages` bounds by rows of every role — a turn with thirty assistant
787
+ * rows in it would push the user row out of any sane limit.
788
+ */
789
+ function getLastUserMessageForInstance(db, worktreeId, cliToolId, instanceId) {
790
+ const stmt = db.prepare(`
791
+ SELECT id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id, instance_id, archived
792
+ FROM chat_messages
793
+ WHERE worktree_id = ? AND role = 'user' ${exports.ACTIVE_FILTER}
794
+ AND COALESCE(cli_tool_id, 'claude') = ?
795
+ AND COALESCE(instance_id, cli_tool_id, 'claude') = ?
796
+ ORDER BY timestamp DESC
797
+ LIMIT 1
798
+ `);
799
+ const row = stmt.get(worktreeId, cliToolId, instanceId);
800
+ return row ? mapChatMessage(row) : null;
801
+ }
802
+ /**
803
+ * The newest unanswered prompt row for one agent instance, or null.
804
+ *
805
+ * What the confirmation notice is written from. `promptData.status` is the
806
+ * only thing consulted — the row's own wording is what the notice quotes — and
807
+ * a row whose data is one of #1738's degraded records simply yields no options,
808
+ * which the notice renders as a question with no choices rather than dropping.
809
+ */
810
+ function getLatestOpenPromptMessage(db, worktreeId, cliToolId, instanceId) {
811
+ const stmt = db.prepare(`
812
+ SELECT id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id, instance_id, archived
813
+ FROM chat_messages
814
+ WHERE worktree_id = ? AND message_type = 'prompt' ${exports.ACTIVE_FILTER}
815
+ AND COALESCE(cli_tool_id, 'claude') = ?
816
+ AND COALESCE(instance_id, cli_tool_id, 'claude') = ?
817
+ ORDER BY timestamp DESC
818
+ LIMIT 1
819
+ `);
820
+ const row = stmt.get(worktreeId, cliToolId, instanceId);
821
+ if (!row)
822
+ return null;
823
+ const message = mapChatMessage(row);
824
+ return message.promptData?.status === 'answered' ? null : message;
825
+ }
826
+ /**
827
+ * Persist "this session delegated / got an answer" into the transcript (#2377).
828
+ *
829
+ * An assistant row with a marker request id, exactly as
830
+ * {@link createModelChangeMessage} writes the model-change line, and for the
831
+ * same reasons: `chat_messages` has no `system` role, the transcript groups a
832
+ * leading assistant row as a standalone reply, and the row is `normal` so
833
+ * nothing scanning for open dialogs mistakes it for one. Writing it here rather
834
+ * than inventing a fourth history surface is what puts the line in the chat
835
+ * pane AND the History tab from one write.
836
+ *
837
+ * Idempotent by construction at the call site: the request id is
838
+ * `relay-sys:<relayId>:<kind>` and the callers probe
839
+ * {@link findMessageByRequestId} before writing, so a retried delivery does not
840
+ * leave two "waiting for the reply" lines in one transcript.
841
+ */
842
+ function createRelaySystemMessage(db, params) {
843
+ return createMessage(db, {
844
+ worktreeId: params.worktreeId,
845
+ role: 'assistant',
846
+ content: params.content,
847
+ messageType: 'normal',
848
+ timestamp: new Date(params.at),
849
+ requestId: `${exports.RELAY_SYSTEM_REQUEST_ID_PREFIX}${params.relayId}:${params.kind}`,
850
+ cliToolId: params.cliToolId,
851
+ instanceId: params.instanceId ?? params.cliToolId,
852
+ });
853
+ }
@@ -43,6 +43,7 @@ const v56_gate_result_source_1 = require("./v56-gate-result-source");
43
43
  const v57_push_subscription_defaults_notice_1 = require("./v57-push-subscription-defaults-notice");
44
44
  const v58_agent_session_costs_1 = require("./v58-agent-session-costs");
45
45
  const v59_opencode_instance_settings_1 = require("./v59-opencode-instance-settings");
46
+ const v60_session_relays_1 = require("./v60-session-relays");
46
47
  /**
47
48
  * Complete ordered list of all migrations.
48
49
  * Used internally by the barrel file (db-migrations.ts); NOT exported from the barrel (DR2-004).
@@ -89,4 +90,5 @@ exports.migrations = [
89
90
  ...v57_push_subscription_defaults_notice_1.v57_migrations,
90
91
  ...v58_agent_session_costs_1.v58_migrations,
91
92
  ...v59_opencode_instance_settings_1.v59_migrations,
93
+ ...v60_session_relays_1.v60_migrations,
92
94
  ];
@@ -17,7 +17,7 @@ const path_1 = __importDefault(require("path"));
17
17
  * Current schema version
18
18
  * Increment this when adding new migrations
19
19
  */
20
- exports.CURRENT_SCHEMA_VERSION = 59;
20
+ exports.CURRENT_SCHEMA_VERSION = 60;
21
21
  /**
22
22
  * Get current schema version from database
23
23
  */
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /**
3
+ * Migration v60: the relay ledger (Issue #2377).
4
+ *
5
+ * ## What a row is
6
+ *
7
+ * One row is one standing instruction: "when session B finishes the turn it is
8
+ * working on, put its answer into session A's composer". Until this Issue that
9
+ * instruction existed only as a shape in session A's own control flow — `send`,
10
+ * then `wait`, then `capture` — which is why A had to stay blocked to collect a
11
+ * reply it had already asked for. A ledger row is the same intent written down
12
+ * somewhere the server can act on, so A can go and do something else.
13
+ *
14
+ * ## Why `from` is the requester and `to` is the worker
15
+ *
16
+ * The row is named after the DELEGATION, not after the delivery: `from` is the
17
+ * session that asked (and is therefore owed the answer), `to` is the session
18
+ * that was asked. So `commandmate relays` reads "mine, out" as
19
+ * `from = me` and "mine, in" as `to = me`, and the badges the Agent pane draws
20
+ * read the same way round — B's row says it owes A a reply, A's row says it is
21
+ * waiting on n of them.
22
+ *
23
+ * ## The columns that are not just bookkeeping
24
+ *
25
+ * - **`sent_request_id`** is the idempotency key the Issue asks for. The turn's
26
+ * end is judged by two independent producers (the Stop hook and the poller,
27
+ * see `lib/polling/structured-history-gate`), so the delivery has to be
28
+ * claimable exactly once. It carries the `relay:<id>` request id of the row
29
+ * written into A's history, which is also what makes the delivered message
30
+ * findable from the ledger and the ledger findable from the message — that
31
+ * second direction is what the loop guard reads.
32
+ * - **`pending_kind` / `pending_body`** hold a delivery that has been decided
33
+ * but not yet made. A is frequently mid-turn when B finishes, and typing into
34
+ * a running composer interrupts it (#1737's problem, one layer up), so the
35
+ * body waits in the ledger — durable across a restart — and the pump retries.
36
+ * `pending_kind IS NULL` is also the "nobody has captured this turn yet"
37
+ * guard that makes the two producers cost one delivery.
38
+ * - **`prompt_signature`** dedupes the confirmation notice. A wait that lasts
39
+ * twenty minutes must reach A once, not once per poll.
40
+ * - **`hops`** is the chain depth. 1 for a relay a human or an unrelated turn
41
+ * started; n+1 for one created while answering a relay-delivered message.
42
+ *
43
+ * `state` is CHECK-constrained for the reason v50's `tasks.status` is: the five
44
+ * words are the point of the table, and a typo landing as a sixth would create
45
+ * a bucket nothing queries.
46
+ *
47
+ * Both worktree columns declare a foreign key so `getWorktreeChildTables()`
48
+ * finds them by introspection — the pair follows a worktree id rename (v54/v55)
49
+ * and is swept when either side is deleted, which is the right lifetime: a relay
50
+ * whose requester or whose worker is gone can never be delivered.
51
+ *
52
+ * Timestamps are epoch milliseconds (INTEGER), matching v44 onward.
53
+ */
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.v60_migrations = void 0;
56
+ exports.v60_migrations = [
57
+ {
58
+ version: 60,
59
+ name: 'session-relays',
60
+ up: (db) => {
61
+ db.exec(`
62
+ CREATE TABLE IF NOT EXISTS session_relays (
63
+ id TEXT PRIMARY KEY,
64
+ from_worktree_id TEXT NOT NULL,
65
+ from_instance_id TEXT NOT NULL,
66
+ to_worktree_id TEXT NOT NULL,
67
+ to_instance_id TEXT NOT NULL,
68
+ state TEXT NOT NULL CHECK (state IN ('pending','delivered','prompt','expired','cancelled')),
69
+ hops INTEGER NOT NULL DEFAULT 1,
70
+ sent_request_id TEXT,
71
+ pending_kind TEXT,
72
+ pending_body TEXT,
73
+ prompt_signature TEXT,
74
+ created_at INTEGER NOT NULL,
75
+ updated_at INTEGER NOT NULL,
76
+ expires_at INTEGER NOT NULL,
77
+ delivered_at INTEGER,
78
+
79
+ FOREIGN KEY (from_worktree_id) REFERENCES worktrees(id) ON DELETE CASCADE,
80
+ FOREIGN KEY (to_worktree_id) REFERENCES worktrees(id) ON DELETE CASCADE
81
+ );
82
+ `);
83
+ // The idempotency key, enforced rather than merely intended. Partial so
84
+ // the many rows that have not been delivered yet do not collide on NULL.
85
+ db.exec(`
86
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_session_relays_sent_request
87
+ ON session_relays(sent_request_id)
88
+ WHERE sent_request_id IS NOT NULL;
89
+ `);
90
+ // The two lookups every reader makes: "what does this session owe" and
91
+ // "what is this session waiting for".
92
+ db.exec(`
93
+ CREATE INDEX IF NOT EXISTS idx_session_relays_to
94
+ ON session_relays(to_worktree_id, to_instance_id, state);
95
+ `);
96
+ db.exec(`
97
+ CREATE INDEX IF NOT EXISTS idx_session_relays_from
98
+ ON session_relays(from_worktree_id, from_instance_id, state);
99
+ `);
100
+ // The sweep's own read: everything still open, oldest deadline first.
101
+ db.exec(`
102
+ CREATE INDEX IF NOT EXISTS idx_session_relays_open
103
+ ON session_relays(state, expires_at);
104
+ `);
105
+ },
106
+ down: (db) => {
107
+ db.exec('DROP TABLE IF EXISTS session_relays;');
108
+ },
109
+ },
110
+ ];