commandmate 0.38.0 → 0.39.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 (785) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +471 -576
  3. package/.next/app-path-routes-manifest.json +32 -42
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/react-loadable-manifest.json +2 -2
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +0 -23
  9. package/.next/server/app/_not-found/page.js +1 -1
  10. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/release-notes/route.js +1 -0
  15. package/.next/server/app/api/app/release-notes/route.js.nft.json +1 -0
  16. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -0
  17. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/app/update-check/route.js +1 -1
  19. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/capabilities/route.js +1 -1
  24. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  33. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  34. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  36. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  37. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  39. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  40. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  45. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  48. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  49. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/relays/route.js +1 -1
  51. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  52. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  56. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/repositories/clone/route.js +1 -1
  59. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  60. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/restore/route.js +1 -1
  63. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/route.js +1 -1
  66. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/scan/route.js +1 -1
  69. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/sync/route.js +1 -1
  72. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  73. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  76. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  77. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  88. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  92. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/verification/runs/route.js +1 -1
  94. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  97. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  100. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  103. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  112. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  169. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  172. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  175. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  199. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  202. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  228. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/route.js +1 -1
  260. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  261. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/login/page.js +1 -1
  263. package/.next/server/app/login/page.js.nft.json +1 -1
  264. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  265. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/more/page.js +2 -2
  267. package/.next/server/app/more/page.js.nft.json +1 -1
  268. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  269. package/.next/server/app/offline/page.js +1 -1
  270. package/.next/server/app/offline/page.js.nft.json +1 -1
  271. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  272. package/.next/server/app/page.js +2 -2
  273. package/.next/server/app/page.js.nft.json +1 -1
  274. package/.next/server/app/page_client-reference-manifest.js +1 -1
  275. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/repositories/page.js +2 -2
  277. package/.next/server/app/repositories/page.js.nft.json +1 -1
  278. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  279. package/.next/server/app/review/page.js +1 -1
  280. package/.next/server/app/review/page.js.nft.json +1 -1
  281. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  282. package/.next/server/app/sessions/page.js +2 -2
  283. package/.next/server/app/sessions/page.js.nft.json +1 -1
  284. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  285. package/.next/server/app/skills/[skillId]/page.js +2 -2
  286. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  287. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  288. package/.next/server/app/skills/installed/page.js +2 -2
  289. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  290. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  291. package/.next/server/app/skills/page.js +1 -1
  292. package/.next/server/app/skills/page.js.nft.json +1 -1
  293. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  294. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
  295. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  296. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  297. package/.next/server/app/worktrees/[id]/page.js +11 -11
  298. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  299. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  300. package/.next/server/app/worktrees/[id]/terminal/page.js +1 -1
  301. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  302. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  303. package/.next/server/app-paths-manifest.json +32 -42
  304. package/.next/server/chunks/1210.js +1 -1
  305. package/.next/server/chunks/1707.js +1 -1
  306. package/.next/server/chunks/1825.js +1 -1
  307. package/.next/server/chunks/2119.js +1 -1
  308. package/.next/server/chunks/2445.js +1 -1
  309. package/.next/server/chunks/3241.js +1 -1
  310. package/.next/server/chunks/3323.js +1 -1
  311. package/.next/server/chunks/3543.js +1 -1
  312. package/.next/server/chunks/366.js +1 -0
  313. package/.next/server/chunks/3945.js +1 -1
  314. package/.next/server/chunks/4443.js +1 -1
  315. package/.next/server/chunks/5164.js +1 -1
  316. package/.next/server/chunks/5354.js +1 -1
  317. package/.next/server/chunks/6130.js +1 -1
  318. package/.next/server/chunks/6159.js +1 -1
  319. package/.next/server/chunks/6401.js +1 -1
  320. package/.next/server/chunks/650.js +1 -1
  321. package/.next/server/chunks/6661.js +1 -1
  322. package/.next/server/chunks/7075.js +1 -1
  323. package/.next/server/chunks/7086.js +15 -0
  324. package/.next/server/chunks/8550.js +1 -0
  325. package/.next/server/chunks/8581.js +60 -0
  326. package/.next/server/chunks/8728.js +2 -2
  327. package/.next/server/chunks/8807.js +184 -323
  328. package/.next/server/chunks/8918.js +1 -1
  329. package/.next/server/chunks/9130.js +3 -3
  330. package/.next/server/chunks/9584.js +1 -1
  331. package/.next/server/chunks/9627.js +1 -1
  332. package/.next/server/chunks/{1886.js → 9731.js} +3 -3
  333. package/.next/server/chunks/{6677.js → 9882.js} +1 -1
  334. package/.next/server/middleware-build-manifest.js +1 -1
  335. package/.next/server/middleware-manifest.json +5 -5
  336. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  337. package/.next/server/pages/500.html +1 -1
  338. package/.next/server/server-reference-manifest.json +1 -1
  339. package/.next/static/CqFH31RhKQbrRZXsMNosJ/_buildManifest.js +1 -0
  340. package/.next/static/chunks/1032-9e43405ac6bf6848.js +1 -0
  341. package/.next/static/chunks/2318-af00abceb9b8eab5.js +1 -0
  342. package/.next/static/chunks/{2407-6fd60b674e20ec06.js → 2407-8fe4e4d0bab1931a.js} +1 -1
  343. package/.next/static/chunks/2619-04bc32f026a0d946.js +1 -0
  344. package/.next/static/chunks/344-6f9fc1f38f01a839.js +1 -0
  345. package/.next/static/chunks/3504-0100ab50762f591b.js +1 -0
  346. package/.next/static/chunks/3778-56f41fc2cecb8c43.js +1 -0
  347. package/.next/static/chunks/4322-f54abdc5d16b7462.js +1 -0
  348. package/.next/static/chunks/4768-0ad5eb716bed5de9.js +1 -0
  349. package/.next/static/chunks/4949-a13ace141c0183d6.js +1 -0
  350. package/.next/static/chunks/5449-550bd273dccc3ae4.js +1 -0
  351. package/.next/static/chunks/5529-83e705fc4134a503.js +1 -0
  352. package/.next/static/chunks/{3313.53f7ff985c0c8852.js → 5694.dda65070757534df.js} +1 -1
  353. package/.next/static/chunks/6322-f1b30ed0ee43518f.js +1 -0
  354. package/.next/static/chunks/6966-bb854d1145783a64.js +1 -0
  355. package/.next/static/chunks/{7485.52361bc061cc663a.js → 7485.442b21101fca7257.js} +1 -1
  356. package/.next/static/chunks/8019-cc6ac1cc033fd5f0.js +1 -0
  357. package/.next/static/chunks/8283-26ad31a4670ea52d.js +1 -0
  358. package/.next/static/chunks/8606-e893c1dab6fb81bc.js +1 -0
  359. package/.next/static/chunks/9619-c3c4c623b0a4f681.js +1 -0
  360. package/.next/static/chunks/app/api/agents/update/route-70779af8b4c8259a.js +1 -0
  361. package/.next/static/chunks/app/api/agents/versions/route-70779af8b4c8259a.js +1 -0
  362. package/.next/static/chunks/app/api/app/release-notes/route-70779af8b4c8259a.js +1 -0
  363. package/.next/static/chunks/app/api/app/update/route-70779af8b4c8259a.js +1 -0
  364. package/.next/static/chunks/app/api/app/update-check/route-70779af8b4c8259a.js +1 -0
  365. package/.next/static/chunks/app/api/auth/login/route-70779af8b4c8259a.js +1 -0
  366. package/.next/static/chunks/app/api/auth/logout/route-70779af8b4c8259a.js +1 -0
  367. package/.next/static/chunks/app/api/auth/status/route-70779af8b4c8259a.js +1 -0
  368. package/.next/static/chunks/app/api/capabilities/route-70779af8b4c8259a.js +1 -0
  369. package/.next/static/chunks/app/api/daily-summary/route-70779af8b4c8259a.js +1 -0
  370. package/.next/static/chunks/app/api/daily-summary/status/route-70779af8b4c8259a.js +1 -0
  371. package/.next/static/chunks/app/api/external-apps/[id]/health/route-70779af8b4c8259a.js +1 -0
  372. package/.next/static/chunks/app/api/external-apps/[id]/route-70779af8b4c8259a.js +1 -0
  373. package/.next/static/chunks/app/api/external-apps/route-70779af8b4c8259a.js +1 -0
  374. package/.next/static/chunks/app/api/fs/browse/route-70779af8b4c8259a.js +1 -0
  375. package/.next/static/chunks/app/api/fs/recent-paths/route-70779af8b4c8259a.js +1 -0
  376. package/.next/static/chunks/app/api/hooks/agent-event/route-70779af8b4c8259a.js +1 -0
  377. package/.next/static/chunks/app/api/hooks/claude-done/route-70779af8b4c8259a.js +1 -0
  378. package/.next/static/chunks/app/api/hooks/permission-request/route-70779af8b4c8259a.js +1 -0
  379. package/.next/static/chunks/app/api/metrics/vibe/route-70779af8b4c8259a.js +1 -0
  380. package/.next/static/chunks/app/api/ollama/models/route-70779af8b4c8259a.js +1 -0
  381. package/.next/static/chunks/app/api/push/escalation/route-70779af8b4c8259a.js +1 -0
  382. package/.next/static/chunks/app/api/push/subscriptions/route-70779af8b4c8259a.js +1 -0
  383. package/.next/static/chunks/app/api/push/vapid/route-70779af8b4c8259a.js +1 -0
  384. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-70779af8b4c8259a.js +1 -0
  385. package/.next/static/chunks/app/api/relays/route-70779af8b4c8259a.js +1 -0
  386. package/.next/static/chunks/app/api/remote/pair/route-70779af8b4c8259a.js +1 -0
  387. package/.next/static/chunks/app/api/repositories/[id]/route-70779af8b4c8259a.js +1 -0
  388. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-70779af8b4c8259a.js +1 -0
  389. package/.next/static/chunks/app/api/repositories/clone/route-70779af8b4c8259a.js +1 -0
  390. package/.next/static/chunks/app/api/repositories/excluded/route-70779af8b4c8259a.js +1 -0
  391. package/.next/static/chunks/app/api/repositories/restore/route-70779af8b4c8259a.js +1 -0
  392. package/.next/static/chunks/app/api/repositories/route-70779af8b4c8259a.js +1 -0
  393. package/.next/static/chunks/app/api/repositories/scan/route-70779af8b4c8259a.js +1 -0
  394. package/.next/static/chunks/app/api/repositories/sync/route-70779af8b4c8259a.js +1 -0
  395. package/.next/static/chunks/app/api/repositories/validate-path/route-70779af8b4c8259a.js +1 -0
  396. package/.next/static/chunks/app/api/settings/default-agents/route-70779af8b4c8259a.js +1 -0
  397. package/.next/static/chunks/app/api/settings/default-surface-mode/route-70779af8b4c8259a.js +1 -0
  398. package/.next/static/chunks/app/api/sidebar/group-order/route-70779af8b4c8259a.js +1 -0
  399. package/.next/static/chunks/app/api/skills/[id]/route-70779af8b4c8259a.js +1 -0
  400. package/.next/static/chunks/app/api/skills/installations/route-70779af8b4c8259a.js +1 -0
  401. package/.next/static/chunks/app/api/skills/operations/route-70779af8b4c8259a.js +1 -0
  402. package/.next/static/chunks/app/api/skills/reindex/route-70779af8b4c8259a.js +1 -0
  403. package/.next/static/chunks/app/api/skills/route-70779af8b4c8259a.js +1 -0
  404. package/.next/static/chunks/app/api/slash-commands/route-70779af8b4c8259a.js +1 -0
  405. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-70779af8b4c8259a.js +1 -0
  406. package/.next/static/chunks/app/api/tasks/[taskId]/route-70779af8b4c8259a.js +1 -0
  407. package/.next/static/chunks/app/api/templates/[id]/route-70779af8b4c8259a.js +1 -0
  408. package/.next/static/chunks/app/api/templates/route-70779af8b4c8259a.js +1 -0
  409. package/.next/static/chunks/app/api/verification/runs/[runId]/route-70779af8b4c8259a.js +1 -0
  410. package/.next/static/chunks/app/api/verification/runs/route-70779af8b4c8259a.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-70779af8b4c8259a.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-70779af8b4c8259a.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-70779af8b4c8259a.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-70779af8b4c8259a.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-70779af8b4c8259a.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-70779af8b4c8259a.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-70779af8b4c8259a.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/env/route-70779af8b4c8259a.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-70779af8b4c8259a.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-70779af8b4c8259a.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-70779af8b4c8259a.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-70779af8b4c8259a.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-70779af8b4c8259a.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-70779af8b4c8259a.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-70779af8b4c8259a.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-70779af8b4c8259a.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-70779af8b4c8259a.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-70779af8b4c8259a.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-70779af8b4c8259a.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-70779af8b4c8259a.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-70779af8b4c8259a.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-70779af8b4c8259a.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-70779af8b4c8259a.js +1 -0
  434. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-70779af8b4c8259a.js +1 -0
  435. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-70779af8b4c8259a.js +1 -0
  436. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-70779af8b4c8259a.js +1 -0
  437. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-70779af8b4c8259a.js +1 -0
  438. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-70779af8b4c8259a.js +1 -0
  439. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-70779af8b4c8259a.js +1 -0
  440. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-70779af8b4c8259a.js +1 -0
  441. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-70779af8b4c8259a.js +1 -0
  442. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-70779af8b4c8259a.js +1 -0
  443. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-70779af8b4c8259a.js +1 -0
  444. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-70779af8b4c8259a.js +1 -0
  445. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-70779af8b4c8259a.js +1 -0
  446. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-70779af8b4c8259a.js +1 -0
  447. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-70779af8b4c8259a.js +1 -0
  448. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-70779af8b4c8259a.js +1 -0
  449. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-70779af8b4c8259a.js +1 -0
  450. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-70779af8b4c8259a.js +1 -0
  451. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-70779af8b4c8259a.js +1 -0
  452. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-70779af8b4c8259a.js +1 -0
  453. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-70779af8b4c8259a.js +1 -0
  454. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-70779af8b4c8259a.js +1 -0
  455. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-70779af8b4c8259a.js +1 -0
  456. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-70779af8b4c8259a.js +1 -0
  457. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-70779af8b4c8259a.js +1 -0
  458. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-70779af8b4c8259a.js +1 -0
  459. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-70779af8b4c8259a.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-70779af8b4c8259a.js +1 -0
  461. package/.next/static/chunks/app/api/worktrees/[id]/route-70779af8b4c8259a.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-70779af8b4c8259a.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-70779af8b4c8259a.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-70779af8b4c8259a.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/search/route-70779af8b4c8259a.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/send/route-70779af8b4c8259a.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-70779af8b4c8259a.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-70779af8b4c8259a.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-70779af8b4c8259a.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-70779af8b4c8259a.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-70779af8b4c8259a.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-70779af8b4c8259a.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-70779af8b4c8259a.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-70779af8b4c8259a.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-70779af8b4c8259a.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-70779af8b4c8259a.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-70779af8b4c8259a.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-70779af8b4c8259a.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-70779af8b4c8259a.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-70779af8b4c8259a.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-70779af8b4c8259a.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-70779af8b4c8259a.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-70779af8b4c8259a.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-70779af8b4c8259a.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-70779af8b4c8259a.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-70779af8b4c8259a.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-70779af8b4c8259a.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-70779af8b4c8259a.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-70779af8b4c8259a.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-70779af8b4c8259a.js +1 -0
  491. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-70779af8b4c8259a.js +1 -0
  492. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-70779af8b4c8259a.js +1 -0
  493. package/.next/static/chunks/app/api/worktrees/route-70779af8b4c8259a.js +1 -0
  494. package/.next/static/chunks/app/{error-c1dc1038d0a84a33.js → error-d9a7067074e7f460.js} +1 -1
  495. package/.next/static/chunks/app/layout-f43045c9edbc4d1f.js +1 -0
  496. package/.next/static/chunks/app/loading-db675c84e696591f.js +1 -0
  497. package/.next/static/chunks/app/login/{page-af7241bb4c4a8e59.js → page-269a9de3b91a45a2.js} +1 -1
  498. package/.next/static/chunks/app/manifest.webmanifest/route-70779af8b4c8259a.js +1 -0
  499. package/.next/static/chunks/app/more/loading-db675c84e696591f.js +1 -0
  500. package/.next/static/chunks/app/more/page-3963a5e56e550442.js +1 -0
  501. package/.next/static/chunks/app/page-0c1a29ff3609bd8b.js +1 -0
  502. package/.next/static/chunks/app/proxy/[...path]/route-70779af8b4c8259a.js +1 -0
  503. package/.next/static/chunks/app/repositories/loading-db675c84e696591f.js +1 -0
  504. package/.next/static/chunks/app/repositories/page-e9ceeefacf87d470.js +1 -0
  505. package/.next/static/chunks/app/review/loading-db675c84e696591f.js +1 -0
  506. package/.next/static/chunks/app/review/page-3028fe95de490236.js +1 -0
  507. package/.next/static/chunks/app/sessions/loading-db675c84e696591f.js +1 -0
  508. package/.next/static/chunks/app/sessions/page-3f39f99b878fdda0.js +1 -0
  509. package/.next/static/chunks/app/skills/[skillId]/page-6f62668eabb635f5.js +1 -0
  510. package/.next/static/chunks/app/skills/installed/page-c6c4ac5e26c4e73e.js +1 -0
  511. package/.next/static/chunks/app/skills/page-bec1d4924004d4de.js +1 -0
  512. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-f3361237420719b4.js → page-2e98f11956fe1aea.js} +1 -1
  513. package/.next/static/chunks/app/worktrees/[id]/layout-70779af8b4c8259a.js +1 -0
  514. package/.next/static/chunks/app/worktrees/[id]/loading-db675c84e696591f.js +1 -0
  515. package/.next/static/chunks/app/worktrees/[id]/page-0305d80c8ebda4cb.js +1 -0
  516. package/.next/static/chunks/app/worktrees/[id]/terminal/page-373ea37b16d930c7.js +1 -0
  517. package/.next/static/chunks/{webpack-0281b30457d46ebc.js → webpack-9f75198882fdaf08.js} +1 -1
  518. package/.next/static/css/2c63c5531f77719e.css +1 -0
  519. package/.next/trace +13 -14
  520. package/.next/types/app/api/{assistant/start → app/release-notes}/route.ts +3 -3
  521. package/.next/types/routes.d.ts +3 -13
  522. package/.next/types/validator.ts +9 -99
  523. package/dist/cli/commands/wait.d.ts +45 -0
  524. package/dist/cli/commands/wait.d.ts.map +1 -1
  525. package/dist/cli/commands/wait.js +172 -3
  526. package/dist/server/locales/en/worktree.json +22 -5
  527. package/dist/server/locales/ja/worktree.json +22 -5
  528. package/dist/server/src/config/activity-bar-config.js +3 -1
  529. package/dist/server/src/lib/cli-tools/copilot.js +244 -11
  530. package/dist/server/src/lib/db/db.js +3 -32
  531. package/dist/server/src/lib/db/worktree-todo-db.js +1 -2
  532. package/dist/server/src/lib/detection/cli-patterns.js +39 -2
  533. package/dist/server/src/lib/detection/tools/codex/prompt.js +15 -1
  534. package/dist/server/src/lib/hooks/agent-event-types.js +19 -1
  535. package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +65 -4
  536. package/dist/server/src/lib/hooks/sources/antigravity/source.js +32 -3
  537. package/dist/server/src/lib/hooks/sources/claude/source.js +5 -0
  538. package/dist/server/src/lib/hooks/sources/codex/source.js +2 -0
  539. package/dist/server/src/lib/hooks/sources/command-code/source.js +2 -0
  540. package/dist/server/src/lib/hooks/sources/copilot/source.js +3 -0
  541. package/dist/server/src/lib/hooks/sources/gemini/source.js +2 -0
  542. package/dist/server/src/lib/hooks/sources/legacy-relay.js +2 -0
  543. package/dist/server/src/lib/hooks/sources/opencode/source.js +2 -0
  544. package/dist/server/src/lib/session/current-output-builder.js +3 -1
  545. package/dist/server/src/lib/session/send-user-message.js +112 -17
  546. package/dist/server/src/lib/verification/verification-reconciler.js +2 -2
  547. package/package.json +3 -2
  548. package/release-notes/0.39.0.json +94 -0
  549. package/.next/server/app/api/assistant/conversation/route.js +0 -1
  550. package/.next/server/app/api/assistant/conversation/route.js.nft.json +0 -1
  551. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +0 -1
  552. package/.next/server/app/api/assistant/current-output/route.js +0 -1
  553. package/.next/server/app/api/assistant/current-output/route.js.nft.json +0 -1
  554. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +0 -1
  555. package/.next/server/app/api/assistant/messages/route.js +0 -1
  556. package/.next/server/app/api/assistant/messages/route.js.nft.json +0 -1
  557. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +0 -1
  558. package/.next/server/app/api/assistant/session/route.js +0 -1
  559. package/.next/server/app/api/assistant/session/route.js.nft.json +0 -1
  560. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +0 -1
  561. package/.next/server/app/api/assistant/start/route.js +0 -32
  562. package/.next/server/app/api/assistant/start/route.js.nft.json +0 -1
  563. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +0 -1
  564. package/.next/server/app/api/assistant/terminal/route.js +0 -34
  565. package/.next/server/app/api/assistant/terminal/route.js.nft.json +0 -1
  566. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +0 -1
  567. package/.next/server/app/api/assistant/tools/route.js +0 -1
  568. package/.next/server/app/api/assistant/tools/route.js.nft.json +0 -1
  569. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +0 -1
  570. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +0 -1
  571. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +0 -1
  572. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +0 -1
  573. package/.next/server/app/api/repositories/[id]/todos/route.js +0 -1
  574. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +0 -1
  575. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +0 -1
  576. package/.next/server/app/api/todos/route.js +0 -1
  577. package/.next/server/app/api/todos/route.js.nft.json +0 -1
  578. package/.next/server/app/api/todos/route_client-reference-manifest.js +0 -1
  579. package/.next/server/app/chat/page.js +0 -2
  580. package/.next/server/app/chat/page.js.nft.json +0 -1
  581. package/.next/server/app/chat/page_client-reference-manifest.js +0 -1
  582. package/.next/server/chunks/1366.js +0 -15
  583. package/.next/server/chunks/1467.js +0 -48
  584. package/.next/server/chunks/180.js +0 -1
  585. package/.next/server/chunks/3123.js +0 -1
  586. package/.next/server/chunks/3708.js +0 -1
  587. package/.next/server/chunks/5364.js +0 -1
  588. package/.next/server/chunks/6015.js +0 -1
  589. package/.next/server/chunks/8118.js +0 -1
  590. package/.next/server/chunks/8554.js +0 -1
  591. package/.next/server/chunks/9123.js +0 -13
  592. package/.next/static/chunks/3160-79d24ca264a528b9.js +0 -1
  593. package/.next/static/chunks/4322-59a7dbd77a7763cc.js +0 -1
  594. package/.next/static/chunks/4388-a778968d9c4e9327.js +0 -1
  595. package/.next/static/chunks/4718-56ebb6e55073ed5e.js +0 -1
  596. package/.next/static/chunks/4949-7dbce1029c6bdbb9.js +0 -1
  597. package/.next/static/chunks/5520-8bde9501846ae660.js +0 -1
  598. package/.next/static/chunks/5694-498765336d0b8c2b.js +0 -1
  599. package/.next/static/chunks/6402-d91e099c3f2d78f4.js +0 -1
  600. package/.next/static/chunks/6983-3ed2099251793bdf.js +0 -1
  601. package/.next/static/chunks/790-d8e6acd26e03679c.js +0 -1
  602. package/.next/static/chunks/8019-cbf130d0e6334d2d.js +0 -1
  603. package/.next/static/chunks/934-a37509667baa86ee.js +0 -1
  604. package/.next/static/chunks/9948-d139e3e5dbecaf73.js +0 -1
  605. package/.next/static/chunks/app/api/agents/update/route-c4d2d5016c5f2a0a.js +0 -1
  606. package/.next/static/chunks/app/api/agents/versions/route-c4d2d5016c5f2a0a.js +0 -1
  607. package/.next/static/chunks/app/api/app/update/route-c4d2d5016c5f2a0a.js +0 -1
  608. package/.next/static/chunks/app/api/app/update-check/route-c4d2d5016c5f2a0a.js +0 -1
  609. package/.next/static/chunks/app/api/assistant/conversation/route-c4d2d5016c5f2a0a.js +0 -1
  610. package/.next/static/chunks/app/api/assistant/current-output/route-c4d2d5016c5f2a0a.js +0 -1
  611. package/.next/static/chunks/app/api/assistant/messages/route-c4d2d5016c5f2a0a.js +0 -1
  612. package/.next/static/chunks/app/api/assistant/session/route-c4d2d5016c5f2a0a.js +0 -1
  613. package/.next/static/chunks/app/api/assistant/start/route-c4d2d5016c5f2a0a.js +0 -1
  614. package/.next/static/chunks/app/api/assistant/terminal/route-c4d2d5016c5f2a0a.js +0 -1
  615. package/.next/static/chunks/app/api/assistant/tools/route-c4d2d5016c5f2a0a.js +0 -1
  616. package/.next/static/chunks/app/api/auth/login/route-c4d2d5016c5f2a0a.js +0 -1
  617. package/.next/static/chunks/app/api/auth/logout/route-c4d2d5016c5f2a0a.js +0 -1
  618. package/.next/static/chunks/app/api/auth/status/route-c4d2d5016c5f2a0a.js +0 -1
  619. package/.next/static/chunks/app/api/capabilities/route-c4d2d5016c5f2a0a.js +0 -1
  620. package/.next/static/chunks/app/api/daily-summary/route-c4d2d5016c5f2a0a.js +0 -1
  621. package/.next/static/chunks/app/api/daily-summary/status/route-c4d2d5016c5f2a0a.js +0 -1
  622. package/.next/static/chunks/app/api/external-apps/[id]/health/route-c4d2d5016c5f2a0a.js +0 -1
  623. package/.next/static/chunks/app/api/external-apps/[id]/route-c4d2d5016c5f2a0a.js +0 -1
  624. package/.next/static/chunks/app/api/external-apps/route-c4d2d5016c5f2a0a.js +0 -1
  625. package/.next/static/chunks/app/api/fs/browse/route-c4d2d5016c5f2a0a.js +0 -1
  626. package/.next/static/chunks/app/api/fs/recent-paths/route-c4d2d5016c5f2a0a.js +0 -1
  627. package/.next/static/chunks/app/api/hooks/agent-event/route-c4d2d5016c5f2a0a.js +0 -1
  628. package/.next/static/chunks/app/api/hooks/claude-done/route-c4d2d5016c5f2a0a.js +0 -1
  629. package/.next/static/chunks/app/api/hooks/permission-request/route-c4d2d5016c5f2a0a.js +0 -1
  630. package/.next/static/chunks/app/api/metrics/vibe/route-c4d2d5016c5f2a0a.js +0 -1
  631. package/.next/static/chunks/app/api/ollama/models/route-c4d2d5016c5f2a0a.js +0 -1
  632. package/.next/static/chunks/app/api/push/escalation/route-c4d2d5016c5f2a0a.js +0 -1
  633. package/.next/static/chunks/app/api/push/subscriptions/route-c4d2d5016c5f2a0a.js +0 -1
  634. package/.next/static/chunks/app/api/push/vapid/route-c4d2d5016c5f2a0a.js +0 -1
  635. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c4d2d5016c5f2a0a.js +0 -1
  636. package/.next/static/chunks/app/api/relays/route-c4d2d5016c5f2a0a.js +0 -1
  637. package/.next/static/chunks/app/api/remote/pair/route-c4d2d5016c5f2a0a.js +0 -1
  638. package/.next/static/chunks/app/api/repositories/[id]/route-c4d2d5016c5f2a0a.js +0 -1
  639. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-c4d2d5016c5f2a0a.js +0 -1
  640. package/.next/static/chunks/app/api/repositories/[id]/todos/route-c4d2d5016c5f2a0a.js +0 -1
  641. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c4d2d5016c5f2a0a.js +0 -1
  642. package/.next/static/chunks/app/api/repositories/clone/route-c4d2d5016c5f2a0a.js +0 -1
  643. package/.next/static/chunks/app/api/repositories/excluded/route-c4d2d5016c5f2a0a.js +0 -1
  644. package/.next/static/chunks/app/api/repositories/restore/route-c4d2d5016c5f2a0a.js +0 -1
  645. package/.next/static/chunks/app/api/repositories/route-c4d2d5016c5f2a0a.js +0 -1
  646. package/.next/static/chunks/app/api/repositories/scan/route-c4d2d5016c5f2a0a.js +0 -1
  647. package/.next/static/chunks/app/api/repositories/sync/route-c4d2d5016c5f2a0a.js +0 -1
  648. package/.next/static/chunks/app/api/repositories/validate-path/route-c4d2d5016c5f2a0a.js +0 -1
  649. package/.next/static/chunks/app/api/settings/default-agents/route-c4d2d5016c5f2a0a.js +0 -1
  650. package/.next/static/chunks/app/api/settings/default-surface-mode/route-c4d2d5016c5f2a0a.js +0 -1
  651. package/.next/static/chunks/app/api/sidebar/group-order/route-c4d2d5016c5f2a0a.js +0 -1
  652. package/.next/static/chunks/app/api/skills/[id]/route-c4d2d5016c5f2a0a.js +0 -1
  653. package/.next/static/chunks/app/api/skills/installations/route-c4d2d5016c5f2a0a.js +0 -1
  654. package/.next/static/chunks/app/api/skills/operations/route-c4d2d5016c5f2a0a.js +0 -1
  655. package/.next/static/chunks/app/api/skills/reindex/route-c4d2d5016c5f2a0a.js +0 -1
  656. package/.next/static/chunks/app/api/skills/route-c4d2d5016c5f2a0a.js +0 -1
  657. package/.next/static/chunks/app/api/slash-commands/route-c4d2d5016c5f2a0a.js +0 -1
  658. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c4d2d5016c5f2a0a.js +0 -1
  659. package/.next/static/chunks/app/api/tasks/[taskId]/route-c4d2d5016c5f2a0a.js +0 -1
  660. package/.next/static/chunks/app/api/templates/[id]/route-c4d2d5016c5f2a0a.js +0 -1
  661. package/.next/static/chunks/app/api/templates/route-c4d2d5016c5f2a0a.js +0 -1
  662. package/.next/static/chunks/app/api/todos/route-c4d2d5016c5f2a0a.js +0 -1
  663. package/.next/static/chunks/app/api/verification/runs/[runId]/route-c4d2d5016c5f2a0a.js +0 -1
  664. package/.next/static/chunks/app/api/verification/runs/route-c4d2d5016c5f2a0a.js +0 -1
  665. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c4d2d5016c5f2a0a.js +0 -1
  666. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c4d2d5016c5f2a0a.js +0 -1
  667. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c4d2d5016c5f2a0a.js +0 -1
  668. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c4d2d5016c5f2a0a.js +0 -1
  669. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c4d2d5016c5f2a0a.js +0 -1
  670. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c4d2d5016c5f2a0a.js +0 -1
  671. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c4d2d5016c5f2a0a.js +0 -1
  672. package/.next/static/chunks/app/api/worktrees/[id]/env/route-c4d2d5016c5f2a0a.js +0 -1
  673. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c4d2d5016c5f2a0a.js +0 -1
  674. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c4d2d5016c5f2a0a.js +0 -1
  675. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c4d2d5016c5f2a0a.js +0 -1
  676. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c4d2d5016c5f2a0a.js +0 -1
  677. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c4d2d5016c5f2a0a.js +0 -1
  678. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c4d2d5016c5f2a0a.js +0 -1
  679. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c4d2d5016c5f2a0a.js +0 -1
  680. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c4d2d5016c5f2a0a.js +0 -1
  681. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c4d2d5016c5f2a0a.js +0 -1
  682. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c4d2d5016c5f2a0a.js +0 -1
  683. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c4d2d5016c5f2a0a.js +0 -1
  684. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c4d2d5016c5f2a0a.js +0 -1
  685. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c4d2d5016c5f2a0a.js +0 -1
  686. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c4d2d5016c5f2a0a.js +0 -1
  687. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c4d2d5016c5f2a0a.js +0 -1
  688. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c4d2d5016c5f2a0a.js +0 -1
  689. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c4d2d5016c5f2a0a.js +0 -1
  690. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c4d2d5016c5f2a0a.js +0 -1
  691. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c4d2d5016c5f2a0a.js +0 -1
  692. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c4d2d5016c5f2a0a.js +0 -1
  693. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c4d2d5016c5f2a0a.js +0 -1
  694. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c4d2d5016c5f2a0a.js +0 -1
  695. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c4d2d5016c5f2a0a.js +0 -1
  696. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c4d2d5016c5f2a0a.js +0 -1
  697. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c4d2d5016c5f2a0a.js +0 -1
  698. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c4d2d5016c5f2a0a.js +0 -1
  699. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c4d2d5016c5f2a0a.js +0 -1
  700. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c4d2d5016c5f2a0a.js +0 -1
  701. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c4d2d5016c5f2a0a.js +0 -1
  702. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c4d2d5016c5f2a0a.js +0 -1
  703. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c4d2d5016c5f2a0a.js +0 -1
  704. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c4d2d5016c5f2a0a.js +0 -1
  705. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c4d2d5016c5f2a0a.js +0 -1
  706. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c4d2d5016c5f2a0a.js +0 -1
  707. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c4d2d5016c5f2a0a.js +0 -1
  708. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c4d2d5016c5f2a0a.js +0 -1
  709. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c4d2d5016c5f2a0a.js +0 -1
  710. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c4d2d5016c5f2a0a.js +0 -1
  711. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c4d2d5016c5f2a0a.js +0 -1
  712. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c4d2d5016c5f2a0a.js +0 -1
  713. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c4d2d5016c5f2a0a.js +0 -1
  714. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c4d2d5016c5f2a0a.js +0 -1
  715. package/.next/static/chunks/app/api/worktrees/[id]/route-c4d2d5016c5f2a0a.js +0 -1
  716. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c4d2d5016c5f2a0a.js +0 -1
  717. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c4d2d5016c5f2a0a.js +0 -1
  718. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c4d2d5016c5f2a0a.js +0 -1
  719. package/.next/static/chunks/app/api/worktrees/[id]/search/route-c4d2d5016c5f2a0a.js +0 -1
  720. package/.next/static/chunks/app/api/worktrees/[id]/send/route-c4d2d5016c5f2a0a.js +0 -1
  721. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c4d2d5016c5f2a0a.js +0 -1
  722. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c4d2d5016c5f2a0a.js +0 -1
  723. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c4d2d5016c5f2a0a.js +0 -1
  724. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c4d2d5016c5f2a0a.js +0 -1
  725. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c4d2d5016c5f2a0a.js +0 -1
  726. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c4d2d5016c5f2a0a.js +0 -1
  727. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c4d2d5016c5f2a0a.js +0 -1
  728. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c4d2d5016c5f2a0a.js +0 -1
  729. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c4d2d5016c5f2a0a.js +0 -1
  730. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c4d2d5016c5f2a0a.js +0 -1
  731. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c4d2d5016c5f2a0a.js +0 -1
  732. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c4d2d5016c5f2a0a.js +0 -1
  733. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c4d2d5016c5f2a0a.js +0 -1
  734. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c4d2d5016c5f2a0a.js +0 -1
  735. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c4d2d5016c5f2a0a.js +0 -1
  736. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c4d2d5016c5f2a0a.js +0 -1
  737. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c4d2d5016c5f2a0a.js +0 -1
  738. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c4d2d5016c5f2a0a.js +0 -1
  739. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c4d2d5016c5f2a0a.js +0 -1
  740. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c4d2d5016c5f2a0a.js +0 -1
  741. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c4d2d5016c5f2a0a.js +0 -1
  742. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c4d2d5016c5f2a0a.js +0 -1
  743. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c4d2d5016c5f2a0a.js +0 -1
  744. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c4d2d5016c5f2a0a.js +0 -1
  745. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c4d2d5016c5f2a0a.js +0 -1
  746. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c4d2d5016c5f2a0a.js +0 -1
  747. package/.next/static/chunks/app/api/worktrees/route-c4d2d5016c5f2a0a.js +0 -1
  748. package/.next/static/chunks/app/chat/loading-c58ba2c3f4363277.js +0 -1
  749. package/.next/static/chunks/app/chat/page-bfc1f5bb17bd771d.js +0 -1
  750. package/.next/static/chunks/app/layout-114dc6e93e332392.js +0 -1
  751. package/.next/static/chunks/app/loading-c58ba2c3f4363277.js +0 -1
  752. package/.next/static/chunks/app/manifest.webmanifest/route-c4d2d5016c5f2a0a.js +0 -1
  753. package/.next/static/chunks/app/more/loading-c58ba2c3f4363277.js +0 -1
  754. package/.next/static/chunks/app/more/page-400ffa825f8f150e.js +0 -1
  755. package/.next/static/chunks/app/page-a4f03c188610c6c8.js +0 -1
  756. package/.next/static/chunks/app/proxy/[...path]/route-c4d2d5016c5f2a0a.js +0 -1
  757. package/.next/static/chunks/app/repositories/loading-c58ba2c3f4363277.js +0 -1
  758. package/.next/static/chunks/app/repositories/page-a15efb4ce1d1721e.js +0 -1
  759. package/.next/static/chunks/app/review/loading-c58ba2c3f4363277.js +0 -1
  760. package/.next/static/chunks/app/review/page-90ac618489676cbc.js +0 -1
  761. package/.next/static/chunks/app/sessions/loading-c58ba2c3f4363277.js +0 -1
  762. package/.next/static/chunks/app/sessions/page-b8651c3f17c36800.js +0 -1
  763. package/.next/static/chunks/app/skills/[skillId]/page-ce8f6fd9e4356580.js +0 -1
  764. package/.next/static/chunks/app/skills/installed/page-566dfde26d7e63ba.js +0 -1
  765. package/.next/static/chunks/app/skills/page-7859540e8092aace.js +0 -1
  766. package/.next/static/chunks/app/worktrees/[id]/layout-c4d2d5016c5f2a0a.js +0 -1
  767. package/.next/static/chunks/app/worktrees/[id]/loading-c58ba2c3f4363277.js +0 -1
  768. package/.next/static/chunks/app/worktrees/[id]/page-86ef4510c70adefc.js +0 -1
  769. package/.next/static/chunks/app/worktrees/[id]/terminal/page-2631bc5c4b0a9fb8.js +0 -1
  770. package/.next/static/css/c511ecdf1e7f18a0.css +0 -1
  771. package/.next/static/rM1BO5QIz3tynGdyJy0T-/_buildManifest.js +0 -1
  772. package/.next/types/app/api/assistant/conversation/route.ts +0 -347
  773. package/.next/types/app/api/assistant/current-output/route.ts +0 -347
  774. package/.next/types/app/api/assistant/messages/route.ts +0 -347
  775. package/.next/types/app/api/assistant/session/route.ts +0 -347
  776. package/.next/types/app/api/assistant/terminal/route.ts +0 -347
  777. package/.next/types/app/api/assistant/tools/route.ts +0 -347
  778. package/.next/types/app/api/repositories/[id]/todos/[todoId]/route.ts +0 -347
  779. package/.next/types/app/api/repositories/[id]/todos/route.ts +0 -347
  780. package/.next/types/app/api/todos/route.ts +0 -347
  781. package/.next/types/app/chat/page.ts +0 -84
  782. package/dist/server/src/lib/db/assistant-conversation-db.js +0 -428
  783. package/dist/server/src/lib/db/todo-db.js +0 -150
  784. package/dist/server/src/types/assistant.js +0 -5
  785. /package/.next/static/{rM1BO5QIz3tynGdyJy0T- → CqFH31RhKQbrRZXsMNosJ}/_ssgManifest.js +0 -0
@@ -23,7 +23,9 @@ const lucide_react_1 = require("lucide-react");
23
23
  * navigation order (ArrowDown/ArrowUp).
24
24
  */
25
25
  exports.ACTIVITIES = [
26
- { id: 'files', labelKey: 'activityBar.files', icon: lucide_react_1.File },
26
+ // Issue #2616: the two-sheet `Files`, not the single-sheet `File` — at 20px
27
+ // `File` and `notes`' `StickyNote` both read as one dog-eared page.
28
+ { id: 'files', labelKey: 'activityBar.files', icon: lucide_react_1.Files },
27
29
  { id: 'git', labelKey: 'activityBar.git', icon: lucide_react_1.GitBranch },
28
30
  { id: 'notes', labelKey: 'activityBar.notes', icon: lucide_react_1.StickyNote },
29
31
  { id: 'schedules', labelKey: 'activityBar.schedules', icon: lucide_react_1.Calendar },
@@ -18,6 +18,9 @@
18
18
  */
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.CopilotTool = exports.COPILOT_EXIT_COMMAND = void 0;
21
+ exports.isCopilotStartupLoading = isCopilotStartupLoading;
22
+ exports.readCopilotModelSwitchOutcomes = readCopilotModelSwitchOutcomes;
23
+ exports.judgeCopilotModelSwitch = judgeCopilotModelSwitch;
21
24
  const base_1 = require("./base");
22
25
  const tmux_1 = require("../tmux/tmux");
23
26
  const submit_verified_sender_1 = require("./submit-verified-sender");
@@ -99,6 +102,136 @@ const COPILOT_COMPOSER_ROW_PATTERN = /^[>❯](?:\s|$)/;
99
102
  * one that cannot be mistaken for a prompt, so it is what is sent.
100
103
  */
101
104
  exports.COPILOT_EXIT_COMMAND = '/exit';
105
+ /** How often the pane is read while waiting for `/model`'s answer (Issue #2623). */
106
+ const COPILOT_MODEL_SWITCH_POLL_MS = 250;
107
+ /**
108
+ * copilot's start-up row (Issue #2623).
109
+ *
110
+ * Measured on copilot 1.0.85 at the production 200x1000 geometry
111
+ * (`tests/fixtures/copilot-model-switch-2623.ts`). The composer — `❯` between
112
+ * two full-width rules — is on screen ~2.5 s after launch, but the row under it
113
+ * is not the status bar yet: it reads ` ● Loading: 6 hooks, 16 skills, 1 MCP
114
+ * server` (the glyph spins) for another 3–4.5 s, and only then becomes
115
+ * `← open sidebar · / commands · ? help · tab next tab`.
116
+ *
117
+ * Keys sent inside that window are drawn only once loading ends, and a line
118
+ * submitted there is not reliably run. All on a fresh launch:
119
+ *
120
+ * - `/model <id>` and then the body 0.3 s later — the sequence `send --model`
121
+ * produced: the `/model` line was held and ran when loading ended, the body
122
+ * never ran. 4 of 4 (three through this module as it was, one of them with
123
+ * an unsupported id; one with raw keys): three times it stayed in the
124
+ * composer, once it was simply gone, as in the Issue's report (that run had
125
+ * hooks wired, and neither `UserPromptSubmit` nor `Stop` fired);
126
+ * - the body alone: sent through this module while the row read
127
+ * `Loading: 16 skills`, it ran; typed with raw keys the moment the composer
128
+ * appeared and submitted 0.1 s later (the row still a bare `Loading:`), it
129
+ * stayed in the composer until a later Enter, sent by hand once loading had
130
+ * ended;
131
+ * - `/model`, then the body only once the switch row AND the idle status bar
132
+ * were on screen: the turn ran and answered every time, and in the run with
133
+ * hooks wired `UserPromptSubmit` and `Stop` both fired.
134
+ *
135
+ * The raw-key runs also show why the read-back after Enter did not catch it:
136
+ * the pane still drew an EMPTY composer 90 ms after the Enter and the body
137
+ * appeared ~0.7 s after it, so a 200 ms read-back reads `submitted`.
138
+ *
139
+ * `MCP Servers reloaded: 1 server connected`, which the Issue suspected, is not
140
+ * it. It is printed once per launch, 2–6 s after loading ends, whether or not
141
+ * `/model` was sent; a body typed one key at a time over the 5 s before it
142
+ * arrived intact, and a turn submitted 3 s before it ran through it.
143
+ */
144
+ const COPILOT_LOADING_ROW_PATTERN = /^\s*\S\s+Loading:/;
145
+ /**
146
+ * Whether copilot is still on its start-up row (Issue #2623).
147
+ *
148
+ * Reads the bottom non-blank row only — where the status bar goes — for the
149
+ * same reason as `readCopilotStatusBar`: a `Loading:` a reply happened to print
150
+ * higher up must not hold a send.
151
+ *
152
+ * @param lines - Frame rows, ANSI already stripped, in pane order
153
+ */
154
+ function isCopilotStartupLoading(lines) {
155
+ for (let i = lines.length - 1; i >= 0; i--) {
156
+ if (lines[i].trim() === '')
157
+ continue;
158
+ return COPILOT_LOADING_ROW_PATTERN.test(lines[i]);
159
+ }
160
+ return false;
161
+ }
162
+ function escapeRegExp(text) {
163
+ return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
164
+ }
165
+ /**
166
+ * Count what copilot has printed in answer to `/model <modelName>`
167
+ * (Issue #2623).
168
+ *
169
+ * The argument form never opens a picker (#1895); it prints one row into the
170
+ * transcript. The spellings, all measured on 1.0.85:
171
+ *
172
+ * ● Model changed from gpt-5.6-terra (xhigh) to claude-sonnet-5 (medium) for this session
173
+ * ● Switched model to: gpt-5.6-terra (already on that model)
174
+ * ✗ Model "claude-opus-4.6" is unsupported. (not a model id)
175
+ * ✗ Model "claude-opus-5" is unavailable. (a model the plan does not include)
176
+ *
177
+ * The refusal rows are followed by the lists of valid ids (` - "claude-sonnet-5"`),
178
+ * so every pattern is anchored at the row's own bullet and the id is matched
179
+ * whole — `gpt-5` must not count a switch to `gpt-5-mini`. 1.0.80 printed the
180
+ * same success row with `. Use /config to set default` on the end, which the
181
+ * lookahead still accepts.
182
+ *
183
+ * Counted rather than tested for presence because the pane keeps every earlier
184
+ * answer: a second `--model` send for the same id must wait for a NEW row.
185
+ *
186
+ * @param output - Pane capture; ANSI is stripped here
187
+ * @param modelName - The id that was (or is about to be) sent
188
+ */
189
+ function readCopilotModelSwitchOutcomes(output, modelName) {
190
+ const id = escapeRegExp(modelName);
191
+ const switchedRows = [
192
+ new RegExp(`^\\s*●\\s+Model changed from .+ to ${id}(?=\\s|$)`),
193
+ new RegExp(`^\\s*●\\s+Switched model to:\\s*${id}\\s*$`),
194
+ ];
195
+ const rejectedRow = new RegExp(`^\\s*✗\\s+Model "${id}" is \\S`);
196
+ const outcomes = { switched: 0, rejected: [] };
197
+ for (const line of (0, cli_patterns_1.stripAnsi)(output).split('\n')) {
198
+ if (switchedRows.some((pattern) => pattern.test(line))) {
199
+ outcomes.switched++;
200
+ }
201
+ else if (rejectedRow.test(line)) {
202
+ outcomes.rejected.push(line.trim().replace(/^✗\s+/, ''));
203
+ }
204
+ }
205
+ return outcomes;
206
+ }
207
+ /**
208
+ * Has `/model <modelName>` answered since `before` was read? (Issue #2623)
209
+ *
210
+ * A refusal wins over a success: the two cannot both be new, and if a frame
211
+ * ever claimed they were, sending the body to a model nobody confirmed is the
212
+ * outcome to avoid.
213
+ */
214
+ function judgeCopilotModelSwitch(before, output, modelName) {
215
+ const after = readCopilotModelSwitchOutcomes(output, modelName);
216
+ if (after.rejected.length > before.rejected.length) {
217
+ return { kind: 'rejected', reason: after.rejected[after.rejected.length - 1] };
218
+ }
219
+ if (after.switched > before.switched) {
220
+ return { kind: 'switched' };
221
+ }
222
+ return { kind: 'pending' };
223
+ }
224
+ /** The pane's bottom non-blank row, squeezed, for an error message a person reads. */
225
+ function describeBottomRow(output) {
226
+ const lines = (0, cli_patterns_1.stripAnsi)(output).split('\n');
227
+ for (let i = lines.length - 1; i >= 0; i--) {
228
+ const row = lines[i].trim().replace(/\s{2,}/g, ' ');
229
+ if (row === '')
230
+ continue;
231
+ return JSON.stringify(row.length > 80 ? `${row.slice(0, 80)}…` : row);
232
+ }
233
+ return 'an empty pane';
234
+ }
102
235
  /**
103
236
  * Copilot CLI tool implementation
104
237
  * Manages GitHub Copilot interactive sessions using tmux
@@ -398,19 +531,32 @@ class CopilotTool extends base_1.BaseCLITool {
398
531
  * above: `sendUserMessage` and the terminal route both consult
399
532
  * `isPromptWaiting` (#1708/#1737) and refuse before reaching here.
400
533
  *
534
+ * Issue #2623 adds a third case, measured on 1.0.85: **composer on screen,
535
+ * copilot still starting — until loading ends (3–4.5 s).** The composer is drawn
536
+ * before hooks, skills and MCP servers have loaded, and a line submitted then
537
+ * is not reliably run (see {@link COPILOT_LOADING_ROW_PATTERN}). The `❯` alone
538
+ * used to end this wait in 0 ms right there, which is how `send --model` on a
539
+ * session it had just started typed a body that never ran.
540
+ *
541
+ * Timing out still only logs and lets the send proceed, as before; the caller
542
+ * that must not proceed ({@link sendModelCommand}) reads the result.
543
+ *
401
544
  * @param sessionName - tmux session name
402
545
  * @param timeoutMs - Optional timeout in ms (default: COPILOT_PROMPT_WAIT_TIMEOUT_MS)
546
+ * @param until - What counts as ready (Issue #2623, default `composer`)
547
+ * @returns Whether the pane got there, and the last frame read (ANSI stripped)
403
548
  */
404
- async waitForPrompt(sessionName, timeoutMs = COPILOT_PROMPT_WAIT_TIMEOUT_MS) {
549
+ async waitForPrompt(sessionName, timeoutMs = COPILOT_PROMPT_WAIT_TIMEOUT_MS, until = 'composer') {
405
550
  const startTime = Date.now();
406
551
  const pollInterval = 500;
407
552
  let trustDialogHandled = false;
553
+ let output = '';
408
554
  while (Date.now() - startTime < timeoutMs) {
409
555
  try {
410
556
  const rawOutput = await (0, tmux_1.capturePane)(sessionName, 50);
411
- const output = (0, cli_patterns_1.stripAnsi)(rawOutput);
412
- if (cli_patterns_1.COPILOT_PROMPT_PATTERN.test(output)) {
413
- return;
557
+ output = (0, cli_patterns_1.stripAnsi)(rawOutput);
558
+ if (this.isReadyFor(until, output)) {
559
+ return { ready: true, output };
414
560
  }
415
561
  // Issue #1886: `startSession` returns early for a session that already
416
562
  // exists, so a pane adopted from outside CommandMate -- or one whose
@@ -430,7 +576,27 @@ class CopilotTool extends base_1.BaseCLITool {
430
576
  }
431
577
  await new Promise((resolve) => setTimeout(resolve, pollInterval));
432
578
  }
433
- logger.info('copilot-prompt-not-detected');
579
+ logger.info('copilot-prompt-not-detected', { until, bottomRow: describeBottomRow(output) });
580
+ return { ready: false, output };
581
+ }
582
+ /**
583
+ * The readiness test behind {@link waitForPrompt} (Issue #2623).
584
+ *
585
+ * `COPILOT_PROMPT_PATTERN` is still the composer test, unchanged: the
586
+ * folder-trust dialog has no `❯` at column 0, so it keeps reading as not ready
587
+ * (#1886). What is new is that the start-up row is never ready, and that
588
+ * `idle` asks the status bar as well.
589
+ *
590
+ * @param until - What counts as ready
591
+ * @param output - ANSI-stripped pane capture
592
+ */
593
+ isReadyFor(until, output) {
594
+ if (!cli_patterns_1.COPILOT_PROMPT_PATTERN.test(output))
595
+ return false;
596
+ const lines = output.split('\n');
597
+ if (isCopilotStartupLoading(lines))
598
+ return false;
599
+ return until === 'composer' || (0, cli_patterns_1.readCopilotStatusBar)(lines) === 'idle';
434
600
  }
435
601
  /**
436
602
  * Extract slash command name from a message (e.g., "/model" → "model").
@@ -532,10 +698,11 @@ class CopilotTool extends base_1.BaseCLITool {
532
698
  *
533
699
  * Flow:
534
700
  * 1. Verify session exists
535
- * 2. Send `/model <modelName>` + Enter
536
- * 3. Wait for prompt recovery with extended timeout
701
+ * 2. Wait until copilot is idle (Issue #2623)
702
+ * 3. Send `/model <modelName>` + Enter
703
+ * 4. Wait for copilot's answer to it (Issue #2623); a refusal or no answer throws
537
704
  *
538
- * Steps 3 and 4 of the original flow -- wait up to 5s for the picker, then
705
+ * The original flow's picker steps -- wait up to 5s for the picker, then
539
706
  * send Enter if it appeared -- are gone (Issue #1895). `/model` opens a picker
540
707
  * only when it is given NO argument; with one it switches in place and prints
541
708
  * `● Model changed from gpt-5.6-terra (xhigh) to gpt-5-mini (medium) for this
@@ -545,8 +712,37 @@ class CopilotTool extends base_1.BaseCLITool {
545
712
  * expire, and the `C-m` it guarded was a bare Enter aimed at whatever was on
546
713
  * screen 5 seconds after a switch that had already finished.
547
714
  *
715
+ * Issue #2623 replaced "wait for the composer" with steps 2 and 4, because the
716
+ * composer is on screen before, during and after a switch and so proved
717
+ * nothing: that wait returned in 22 ms on every call, and `sendUserMessage`
718
+ * typed the body 0.3 s later into a copilot still loading
719
+ * ({@link COPILOT_LOADING_ROW_PATTERN}). Measured on 1.0.85:
720
+ *
721
+ * - **Idle before, not just drawn.** On a fresh launch the switch waited for
722
+ * loading anyway (its row appeared 3.2 s after the keystroke); the body sent
723
+ * behind it did not survive. And `/model` sent during a running turn
724
+ * switched SILENTLY near the end of that turn — the status bar changed, no
725
+ * row was printed — so there would be nothing to wait for. Sending it only
726
+ * from an idle, empty composer makes step 4's row the one thing to look for,
727
+ * and keeps `/model` from being spliced after text already in the composer.
728
+ * - **An answer after, not a composer.** An idle switch printed its row 0.4–1.2 s
729
+ * after the keystroke, and the status-bar label can change first, so the
730
+ * row is what is waited for ({@link readCopilotModelSwitchOutcomes} has the
731
+ * four spellings). A
732
+ * refusal is not a switch, yet the body used to follow it regardless: on a
733
+ * launch it was left in the composer, and on a ready session nothing kept
734
+ * it from the model already in effect. Now the caller is told, in copilot's
735
+ * own words, and nothing else is typed.
736
+ *
737
+ * Both waits use {@link COPILOT_MODEL_SWITCH_TIMEOUT_MS} each. Running out
738
+ * throws rather than proceeds: a body sent without the answer is the defect
739
+ * this replaces. The one blind spot is a transcript long enough to scroll, if
740
+ * an older row for the same id leaves the top just as the new one lands: the
741
+ * count stands still, and that also throws rather than sends.
742
+ *
548
743
  * @param worktreeId - Worktree ID
549
744
  * @param modelName - Model name to switch to
745
+ * @throws Error when copilot is not idle, refuses the model, or does not answer
550
746
  */
551
747
  async sendModelCommand(worktreeId, modelName, instanceId) {
552
748
  const sessionName = this.getSessionName(worktreeId, instanceId);
@@ -556,13 +752,26 @@ class CopilotTool extends base_1.BaseCLITool {
556
752
  throw new Error(`Copilot session ${sessionName} does not exist. Start the session first.`);
557
753
  }
558
754
  try {
755
+ const idle = await this.waitForPrompt(sessionName, copilot_constants_1.COPILOT_MODEL_SWITCH_TIMEOUT_MS, 'idle');
756
+ if (!idle.ready) {
757
+ throw new Error(`copilot did not become idle within ${copilot_constants_1.COPILOT_MODEL_SWITCH_TIMEOUT_MS}ms, so /model was not sent ` +
758
+ `(bottom row: ${describeBottomRow(idle.output)})`);
759
+ }
760
+ const before = readCopilotModelSwitchOutcomes(idle.output, modelName);
559
761
  // Send /model <modelName> command with Enter. An argument means an
560
762
  // in-place switch, never a picker (Issue #1895).
561
763
  await (0, tmux_1.sendKeys)(sessionName, `/model ${modelName}`, true);
562
- // Wait for prompt recovery with extended timeout for model switching
563
- await this.waitForPrompt(sessionName, copilot_constants_1.COPILOT_MODEL_SWITCH_TIMEOUT_MS);
564
- // Invalidate cache after model switch
764
+ const verdict = await this.waitForModelSwitchOutcome(sessionName, modelName, before);
565
765
  (0, tmux_capture_cache_1.invalidateCache)(sessionName);
766
+ if (verdict.kind === 'rejected') {
767
+ logger.warn('copilot-model-rejected', { model: modelName, reason: verdict.reason });
768
+ throw new Error(`copilot refused it: ${verdict.reason}`);
769
+ }
770
+ if (verdict.kind === 'pending') {
771
+ logger.warn('copilot-model-switch-unconfirmed', { model: modelName, bottomRow: verdict.bottomRow });
772
+ throw new Error(`copilot printed no answer to /model within ${copilot_constants_1.COPILOT_MODEL_SWITCH_TIMEOUT_MS}ms ` +
773
+ `(bottom row: ${verdict.bottomRow}); the switch may still take effect, and nothing further was typed`);
774
+ }
566
775
  logger.info('copilot-model-switched', { model: modelName });
567
776
  }
568
777
  catch (error) {
@@ -570,6 +779,30 @@ class CopilotTool extends base_1.BaseCLITool {
570
779
  throw new Error(`Failed to switch Copilot model to ${modelName}: ${errorMessage}`);
571
780
  }
572
781
  }
782
+ /**
783
+ * Poll until `/model <modelName>` has answered (Issue #2623).
784
+ *
785
+ * @param before - What the idle frame held before the command was sent
786
+ * @returns The verdict; `pending` carries the last bottom row for the error
787
+ */
788
+ async waitForModelSwitchOutcome(sessionName, modelName, before) {
789
+ const startTime = Date.now();
790
+ let output = '';
791
+ while (Date.now() - startTime < copilot_constants_1.COPILOT_MODEL_SWITCH_TIMEOUT_MS) {
792
+ await new Promise((resolve) => setTimeout(resolve, COPILOT_MODEL_SWITCH_POLL_MS));
793
+ try {
794
+ output = await (0, tmux_1.capturePane)(sessionName, 50);
795
+ }
796
+ catch {
797
+ // Capture may fail - continue polling
798
+ continue;
799
+ }
800
+ const verdict = judgeCopilotModelSwitch(before, output, modelName);
801
+ if (verdict.kind !== 'pending')
802
+ return verdict;
803
+ }
804
+ return { kind: 'pending', bottomRow: describeBottomRow(output) };
805
+ }
573
806
  /**
574
807
  * Kill Copilot session
575
808
  *
@@ -11,8 +11,8 @@
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.updateSessionState = exports.getSessionState = exports.getMessagesByDateRange = exports.ACTIVE_FILTER = exports.recordAnsweredPrompt = exports.markPendingPromptsAsAnswered = exports.updatePromptData = exports.getMessageById = exports.recomputeLastUserMessage = exports.clearLastUserMessage = exports.updateLastUserMessage = exports.deleteMessagesByInstance = exports.deleteMessagesByCliTool = exports.deleteMessageById = exports.deleteAllMessages = exports.findMessageByRequestId = exports.getLastMessage = exports.getLastUserMessage = exports.getMessages = exports.updateMessageContent = exports.createMessage = exports.getLastAssistantMessageAt = exports.getAliasedWorktreeIds = exports.getAllWorktreeAliases = exports.getWorktreeAliases = exports.resolveWorktreeIdWithAlias = exports.recordWorktreeAlias = exports.deleteWorktreesByIds = exports.deleteRepositoryWorktrees = exports.migrateWorktreeIdPreservingChildren = exports.getAllWorktreePathIds = exports.getAllWorktreeIds = exports.getWorktreesByRepository = exports.getWorktreeIdsByRepository = exports.getInitialBranch = exports.saveInitialBranch = exports.updateVibeLocalContextWindow = exports.updateVibeLocalModel = exports.updateSelectedAgents = exports.updateCliToolId = exports.updateStatus = exports.updateFavorite = exports.updateLastViewedAt = exports.updateWorktreeLink = exports.updateWorktreeDescription = exports.upsertWorktree = exports.getWorktreeById = exports.getRepositories = exports.getWorktrees = exports.initDatabase = void 0;
14
- exports.updateAssistantConversation = exports.createAssistantConversation = exports.getAssistantConversationByRepositoryAndCliTool = exports.getAssistantConversationById = exports.updateDailyReportContent = exports.saveDailyReport = exports.getDailyReport = exports.recoverStuckSendingTimers = exports.clearTimerHistory = exports.cleanupOldTimers = exports.getPendingTimerCountByWorktree = exports.cancelTimersByWorktree = exports.cancelTimer = exports.updateTimerStatus = exports.getPendingTimers = exports.getTimerById = exports.getTimersByWorktree = exports.createTimer = exports.WORKTREE_TODO_STATUSES = exports.isWorktreeTodoStatus = exports.reorderWorktreeTodos = exports.deleteWorktreeTodo = exports.updateWorktreeTodo = exports.createWorktreeTodo = exports.getWorktreeTodoById = exports.getTodosByWorktreeId = exports.deleteTodo = exports.updateTodo = exports.createTodo = exports.getTodoById = exports.getAllTodos = exports.getTodosByRepositoryId = exports.MemoDbError = exports.reorderMemos = exports.deleteMemo = exports.updateMemo = exports.createMemo = exports.getMemoById = exports.getMemosByWorktreeId = exports.InvalidAgentInstanceError = exports.AgentInstanceLimitError = exports.removeAgentInstance = exports.addAgentInstance = exports.setAgentInstances = exports.countAgentInstances = exports.getAgentInstance = exports.getAgentInstances = exports.deleteSessionState = exports.clearInProgressMessageId = exports.setInProgressMessageId = void 0;
15
- exports.listTaskEvents = exports.ACTIVE_TASK_STATUSES = exports.TERMINAL_TASK_STATUSES = exports.TASK_STATUSES = exports.isTerminalTaskStatus = exports.getActiveTaskForInstance = exports.getActiveTask = exports.listTasks = exports.getTask = exports.createTask = exports.VERIFICATION_GATE_SOURCES = exports.VERIFICATION_TRIGGERS = exports.MAX_RUN_HISTORY_DAYS = exports.MAX_RUN_HISTORY_LIMIT = exports.DEFAULT_RUN_HISTORY_LIMIT = exports.listVerificationRunsForPeriod = exports.listRunningVerificationRuns = exports.getRunningVerificationRun = exports.listVerificationRuns = exports.getVerificationRun = exports.finishGateResult = exports.createGateResult = exports.finishVerificationRun = exports.createVerificationRun = exports.pushSubscriptionNeedsDefaultsNotice = exports.PUSH_DEFAULTS_VERSION = exports.NEW_SUBSCRIPTION_DEFAULTS = exports.deletePushSubscriptionByEndpoint = exports.updatePushSubscriptionPreferences = exports.countPushSubscriptionsForKind = exports.getPushSubscriptionsForKind = exports.getAllPushSubscriptions = exports.getPushSubscriptionByEndpoint = exports.upsertPushSubscription = exports.deleteAssistantSessionState = exports.updateAssistantSessionState = exports.getAssistantSessionState = exports.listRunningAssistantExecutions = exports.getRunningAssistantExecutionByConversation = exports.getLatestAssistantExecutionByConversation = exports.getAssistantExecutionById = exports.updateAssistantExecution = exports.createAssistantExecution = exports.archiveAssistantMessagesFrom = exports.archiveAllAssistantMessages = exports.getAssistantMessageById = exports.getAssistantMessages = exports.updateAssistantMessageStatus = exports.createAssistantMessage = void 0;
14
+ exports.pushSubscriptionNeedsDefaultsNotice = exports.PUSH_DEFAULTS_VERSION = exports.NEW_SUBSCRIPTION_DEFAULTS = exports.deletePushSubscriptionByEndpoint = exports.updatePushSubscriptionPreferences = exports.countPushSubscriptionsForKind = exports.getPushSubscriptionsForKind = exports.getAllPushSubscriptions = exports.getPushSubscriptionByEndpoint = exports.upsertPushSubscription = exports.updateDailyReportContent = exports.saveDailyReport = exports.getDailyReport = exports.recoverStuckSendingTimers = exports.clearTimerHistory = exports.cleanupOldTimers = exports.getPendingTimerCountByWorktree = exports.cancelTimersByWorktree = exports.cancelTimer = exports.updateTimerStatus = exports.getPendingTimers = exports.getTimerById = exports.getTimersByWorktree = exports.createTimer = exports.WORKTREE_TODO_STATUSES = exports.isWorktreeTodoStatus = exports.reorderWorktreeTodos = exports.deleteWorktreeTodo = exports.updateWorktreeTodo = exports.createWorktreeTodo = exports.getWorktreeTodoById = exports.getTodosByWorktreeId = exports.MemoDbError = exports.reorderMemos = exports.deleteMemo = exports.updateMemo = exports.createMemo = exports.getMemoById = exports.getMemosByWorktreeId = exports.InvalidAgentInstanceError = exports.AgentInstanceLimitError = exports.removeAgentInstance = exports.addAgentInstance = exports.setAgentInstances = exports.countAgentInstances = exports.getAgentInstance = exports.getAgentInstances = exports.deleteSessionState = exports.clearInProgressMessageId = exports.setInProgressMessageId = void 0;
15
+ exports.listTaskEvents = exports.ACTIVE_TASK_STATUSES = exports.TERMINAL_TASK_STATUSES = exports.TASK_STATUSES = exports.isTerminalTaskStatus = exports.getActiveTaskForInstance = exports.getActiveTask = exports.listTasks = exports.getTask = exports.createTask = exports.VERIFICATION_GATE_SOURCES = exports.VERIFICATION_TRIGGERS = exports.MAX_RUN_HISTORY_DAYS = exports.MAX_RUN_HISTORY_LIMIT = exports.DEFAULT_RUN_HISTORY_LIMIT = exports.listVerificationRunsForPeriod = exports.listRunningVerificationRuns = exports.getRunningVerificationRun = exports.listVerificationRuns = exports.getVerificationRun = exports.finishGateResult = exports.createGateResult = exports.finishVerificationRun = exports.createVerificationRun = void 0;
16
16
  // init-db
17
17
  var init_db_1 = require("./init-db");
18
18
  Object.defineProperty(exports, "initDatabase", { enumerable: true, get: function () { return init_db_1.initDatabase; } });
@@ -95,16 +95,8 @@ Object.defineProperty(exports, "updateMemo", { enumerable: true, get: function (
95
95
  Object.defineProperty(exports, "deleteMemo", { enumerable: true, get: function () { return memo_db_1.deleteMemo; } });
96
96
  Object.defineProperty(exports, "reorderMemos", { enumerable: true, get: function () { return memo_db_1.reorderMemos; } });
97
97
  Object.defineProperty(exports, "MemoDbError", { enumerable: true, get: function () { return memo_db_1.MemoDbError; } });
98
- // todo-db (repository-scoped Home ToDo widget)
99
- var todo_db_1 = require("./todo-db");
100
- Object.defineProperty(exports, "getTodosByRepositoryId", { enumerable: true, get: function () { return todo_db_1.getTodosByRepositoryId; } });
101
- Object.defineProperty(exports, "getAllTodos", { enumerable: true, get: function () { return todo_db_1.getAllTodos; } });
102
- Object.defineProperty(exports, "getTodoById", { enumerable: true, get: function () { return todo_db_1.getTodoById; } });
103
- Object.defineProperty(exports, "createTodo", { enumerable: true, get: function () { return todo_db_1.createTodo; } });
104
- Object.defineProperty(exports, "updateTodo", { enumerable: true, get: function () { return todo_db_1.updateTodo; } });
105
- Object.defineProperty(exports, "deleteTodo", { enumerable: true, get: function () { return todo_db_1.deleteTodo; } });
106
98
  // worktree-todo-db (branch-scoped ToDo list, Issue #1015)
107
- // Aliased to avoid colliding with the repository-scoped todo-db exports above.
99
+ // Exported under Worktree-prefixed aliases (the API routes import these names).
108
100
  var worktree_todo_db_1 = require("./worktree-todo-db");
109
101
  Object.defineProperty(exports, "getTodosByWorktreeId", { enumerable: true, get: function () { return worktree_todo_db_1.getTodosByWorktreeId; } });
110
102
  Object.defineProperty(exports, "getWorktreeTodoById", { enumerable: true, get: function () { return worktree_todo_db_1.getTodoById; } });
@@ -132,27 +124,6 @@ var daily_report_db_1 = require("./daily-report-db");
132
124
  Object.defineProperty(exports, "getDailyReport", { enumerable: true, get: function () { return daily_report_db_1.getDailyReport; } });
133
125
  Object.defineProperty(exports, "saveDailyReport", { enumerable: true, get: function () { return daily_report_db_1.saveDailyReport; } });
134
126
  Object.defineProperty(exports, "updateDailyReportContent", { enumerable: true, get: function () { return daily_report_db_1.updateDailyReportContent; } });
135
- // assistant-conversation-db
136
- var assistant_conversation_db_1 = require("./assistant-conversation-db");
137
- Object.defineProperty(exports, "getAssistantConversationById", { enumerable: true, get: function () { return assistant_conversation_db_1.getAssistantConversationById; } });
138
- Object.defineProperty(exports, "getAssistantConversationByRepositoryAndCliTool", { enumerable: true, get: function () { return assistant_conversation_db_1.getAssistantConversationByRepositoryAndCliTool; } });
139
- Object.defineProperty(exports, "createAssistantConversation", { enumerable: true, get: function () { return assistant_conversation_db_1.createAssistantConversation; } });
140
- Object.defineProperty(exports, "updateAssistantConversation", { enumerable: true, get: function () { return assistant_conversation_db_1.updateAssistantConversation; } });
141
- Object.defineProperty(exports, "createAssistantMessage", { enumerable: true, get: function () { return assistant_conversation_db_1.createAssistantMessage; } });
142
- Object.defineProperty(exports, "updateAssistantMessageStatus", { enumerable: true, get: function () { return assistant_conversation_db_1.updateAssistantMessageStatus; } });
143
- Object.defineProperty(exports, "getAssistantMessages", { enumerable: true, get: function () { return assistant_conversation_db_1.getAssistantMessages; } });
144
- Object.defineProperty(exports, "getAssistantMessageById", { enumerable: true, get: function () { return assistant_conversation_db_1.getAssistantMessageById; } });
145
- Object.defineProperty(exports, "archiveAllAssistantMessages", { enumerable: true, get: function () { return assistant_conversation_db_1.archiveAllAssistantMessages; } });
146
- Object.defineProperty(exports, "archiveAssistantMessagesFrom", { enumerable: true, get: function () { return assistant_conversation_db_1.archiveAssistantMessagesFrom; } });
147
- Object.defineProperty(exports, "createAssistantExecution", { enumerable: true, get: function () { return assistant_conversation_db_1.createAssistantExecution; } });
148
- Object.defineProperty(exports, "updateAssistantExecution", { enumerable: true, get: function () { return assistant_conversation_db_1.updateAssistantExecution; } });
149
- Object.defineProperty(exports, "getAssistantExecutionById", { enumerable: true, get: function () { return assistant_conversation_db_1.getAssistantExecutionById; } });
150
- Object.defineProperty(exports, "getLatestAssistantExecutionByConversation", { enumerable: true, get: function () { return assistant_conversation_db_1.getLatestAssistantExecutionByConversation; } });
151
- Object.defineProperty(exports, "getRunningAssistantExecutionByConversation", { enumerable: true, get: function () { return assistant_conversation_db_1.getRunningAssistantExecutionByConversation; } });
152
- Object.defineProperty(exports, "listRunningAssistantExecutions", { enumerable: true, get: function () { return assistant_conversation_db_1.listRunningAssistantExecutions; } });
153
- Object.defineProperty(exports, "getAssistantSessionState", { enumerable: true, get: function () { return assistant_conversation_db_1.getAssistantSessionState; } });
154
- Object.defineProperty(exports, "updateAssistantSessionState", { enumerable: true, get: function () { return assistant_conversation_db_1.updateAssistantSessionState; } });
155
- Object.defineProperty(exports, "deleteAssistantSessionState", { enumerable: true, get: function () { return assistant_conversation_db_1.deleteAssistantSessionState; } });
156
127
  // push-subscriptions-db (Web Push, Issue #1125)
157
128
  var push_subscriptions_db_1 = require("./push-subscriptions-db");
158
129
  Object.defineProperty(exports, "upsertPushSubscription", { enumerable: true, get: function () { return push_subscriptions_db_1.upsertPushSubscription; } });
@@ -8,8 +8,7 @@
8
8
  *
9
9
  * Mirrors the worktree_memos pattern (memo-db.ts): the table only stores
10
10
  * `worktree_id`, and rows are removed via ON DELETE CASCADE when the worktree
11
- * is deleted. Distinct from repository_todos (todo-db.ts), which is
12
- * repository-scoped (Home widget). Issue #1015.
11
+ * is deleted. Issue #1015.
13
12
  */
14
13
  Object.defineProperty(exports, "__esModule", { value: true });
15
14
  exports.WORKTREE_TODO_STATUSES = void 0;
@@ -4,8 +4,8 @@
4
4
  * Shared between response-poller.ts and API routes
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.COPILOT_TOOL_VERBS = exports.COPILOT_TRANSCRIPT_DIVIDER_PATTERN = exports.COPILOT_USER_ECHO_PATTERN = exports.COPILOT_REASONING_HEADER_PATTERN = exports.COPILOT_BOX_ROW_PATTERN = exports.COPILOT_SEPARATOR_PATTERN = exports.COPILOT_IDLE_STATUS_PATTERN = exports.COPILOT_WORKING_STATUS_PATTERN = exports.COPILOT_THINKING_PATTERN = exports.COPILOT_PROMPT_PATTERN = exports.OPENCODE_SKIP_PATTERNS = exports.OPENCODE_SEPARATOR_PATTERN = exports.CLAUDE_SELECTION_LIST_FOOTER = exports.CLAUDE_MODEL_OVERLAY_FOOTER_PATTERN = exports.OPENCODE_SELECTION_LIST_PATTERN = exports.OPENCODE_FOOTER_STATUS_PATTERN = exports.OPENCODE_USER_ECHO_PATTERN = exports.OPENCODE_GUTTER_ROW_PATTERN = exports.OPENCODE_COMPOSER_BOTTOM_BORDER = exports.OPENCODE_PROCESSING_INDICATOR = exports.OPENCODE_PERMISSION_PATTERN = exports.OPENCODE_TURN_COMPLETE_PATTERN = exports.OPENCODE_RESPONSE_COMPLETE = exports.OPENCODE_LOADING_PATTERN = exports.OPENCODE_THINKING_PATTERN = exports.OPENCODE_PROMPT_AFTER_RESPONSE = exports.OPENCODE_IDLE_COMPOSER_PATTERN = exports.OPENCODE_PROMPT_PATTERN = exports.GEMINI_THINKING_PATTERN = exports.GEMINI_PROMPT_PATTERN = exports.MAX_PASTED_TEXT_RETRIES = exports.PASTED_TEXT_DETECT_DELAY = exports.PASTED_TEXT_PATTERN = exports.CODEX_USER_ECHO_PATTERN = exports.CODEX_STATUS_BAR_PATTERN = exports.CODEX_PAGER_FOOTER_PATTERN = exports.CODEX_APPROVAL_FOOTER_PATTERN = exports.CODEX_SELECTION_LIST_PATTERN = exports.CODEX_SEPARATOR_PATTERN = exports.CODEX_HOOKS_REVIEW_ANCHORS = exports.CODEX_DIALOG_PATTERN = exports.CODEX_PROMPT_PATTERN = exports.CLAUDE_TRUST_DIALOG_PATTERN = exports.CLAUDE_SEPARATOR_PATTERN = exports.CLAUDE_PROMPT_PATTERN = exports.CODEX_INTERRUPT_HINT_PATTERN = exports.CODEX_THINKING_PATTERN = exports.CLAUDE_INTERRUPT_HINT_PATTERN = exports.CLAUDE_THINKING_PATTERN = exports.CLAUDE_SPINNER_CHARS = void 0;
8
- exports.CLAUDE_SESSION_ERROR_REGEX_PATTERNS = exports.CLAUDE_SESSION_ERROR_PATTERNS = exports.extractAnsiSequences = exports.stripAnsi = exports.COMMAND_CODE_SKIP_PATTERNS = exports.COMMAND_CODE_HOOK_NOTICE_PATTERN = exports.COMMAND_CODE_BANNER_PATTERNS = exports.COMMAND_CODE_MODE_INDICATOR_PATTERN = exports.COMMAND_CODE_COMPLETION_PATTERN = exports.COMMAND_CODE_RESPONSE_MARKER_PATTERN = exports.COMMAND_CODE_THINKING_PATTERN = exports.COMMAND_CODE_INTERRUPT_HINT_PATTERN = exports.COMMAND_CODE_SEPARATOR_PATTERN = exports.COMMAND_CODE_PROMPT_PATTERN = exports.COMMAND_CODE_SPINNER_CHARS = exports.ANTIGRAVITY_SKIP_PATTERNS = exports.ANTIGRAVITY_SURVEY_PATTERN = exports.ANTIGRAVITY_DIALOG_MAX_ROWS = exports.ANTIGRAVITY_DIALOG_BOUNDARY_PATTERN = exports.ANTIGRAVITY_SWITCH_MODEL_HEADER_PATTERN = exports.ANTIGRAVITY_NUMBERED_OPTION_PATTERN = exports.ANTIGRAVITY_NAVIGATE_FOOTER_PATTERN = exports.ANTIGRAVITY_SELECTION_LIST_PATTERN = exports.ANTIGRAVITY_SEPARATOR_PATTERN = exports.ANTIGRAVITY_THINKING_PATTERN = exports.ANTIGRAVITY_PROMPT_PATTERN = exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_PATTERN = exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_SOURCE = exports.VIBE_LOCAL_THINKING_PATTERN = exports.VIBE_LOCAL_PROMPT_PATTERN = exports.COPILOT_SKIP_PATTERNS = exports.COPILOT_FOLDER_TRUST_ANSWER_KEY = exports.COPILOT_FOLDER_TRUST_SESSION_OPTION_PATTERN = exports.COPILOT_FOLDER_TRUST_ANCHORS = exports.COPILOT_SELECTION_FOOTER_PATTERN = exports.COPILOT_BOOT_BANNER_ANCHORS = exports.COPILOT_TRANSCRIPT_CONTINUATION_PATTERN = exports.COPILOT_TOOL_ROW_PATTERN = void 0;
7
+ exports.COPILOT_TRANSCRIPT_DIVIDER_PATTERN = exports.COPILOT_USER_ECHO_PATTERN = exports.COPILOT_REASONING_HEADER_PATTERN = exports.COPILOT_BOX_ROW_PATTERN = exports.COPILOT_SEPARATOR_PATTERN = exports.COPILOT_IDLE_STATUS_PATTERN = exports.COPILOT_WORKING_STATUS_PATTERN = exports.COPILOT_THINKING_PATTERN = exports.COPILOT_PROMPT_PATTERN = exports.OPENCODE_SKIP_PATTERNS = exports.OPENCODE_SEPARATOR_PATTERN = exports.CLAUDE_SELECTION_LIST_FOOTER = exports.CLAUDE_MODEL_OVERLAY_FOOTER_PATTERN = exports.OPENCODE_SELECTION_LIST_PATTERN = exports.OPENCODE_FOOTER_STATUS_PATTERN = exports.OPENCODE_USER_ECHO_PATTERN = exports.OPENCODE_GUTTER_ROW_PATTERN = exports.OPENCODE_COMPOSER_BOTTOM_BORDER = exports.OPENCODE_PROCESSING_INDICATOR = exports.OPENCODE_PERMISSION_PATTERN = exports.OPENCODE_TURN_COMPLETE_PATTERN = exports.OPENCODE_RESPONSE_COMPLETE = exports.OPENCODE_LOADING_PATTERN = exports.OPENCODE_THINKING_PATTERN = exports.OPENCODE_PROMPT_AFTER_RESPONSE = exports.OPENCODE_IDLE_COMPOSER_PATTERN = exports.OPENCODE_PROMPT_PATTERN = exports.GEMINI_THINKING_PATTERN = exports.GEMINI_PROMPT_PATTERN = exports.MAX_PASTED_TEXT_RETRIES = exports.PASTED_TEXT_DETECT_DELAY = exports.PASTED_TEXT_PATTERN = exports.CODEX_USER_ECHO_PATTERN = exports.CODEX_STATUS_BAR_PATTERN = exports.CODEX_PAGER_FOOTER_PATTERN = exports.CODEX_FORM_SUBMIT_FOOTER_PATTERN = exports.CODEX_APPROVAL_FOOTER_PATTERN = exports.CODEX_SELECTION_LIST_PATTERN = exports.CODEX_SEPARATOR_PATTERN = exports.CODEX_HOOKS_REVIEW_ANCHORS = exports.CODEX_DIALOG_PATTERN = exports.CODEX_PROMPT_PATTERN = exports.CLAUDE_TRUST_DIALOG_PATTERN = exports.CLAUDE_SEPARATOR_PATTERN = exports.CLAUDE_PROMPT_PATTERN = exports.CODEX_INTERRUPT_HINT_PATTERN = exports.CODEX_THINKING_PATTERN = exports.CLAUDE_INTERRUPT_HINT_PATTERN = exports.CLAUDE_THINKING_PATTERN = exports.CLAUDE_SPINNER_CHARS = void 0;
8
+ exports.CLAUDE_SESSION_ERROR_REGEX_PATTERNS = exports.CLAUDE_SESSION_ERROR_PATTERNS = exports.extractAnsiSequences = exports.stripAnsi = exports.COMMAND_CODE_SKIP_PATTERNS = exports.COMMAND_CODE_HOOK_NOTICE_PATTERN = exports.COMMAND_CODE_BANNER_PATTERNS = exports.COMMAND_CODE_MODE_INDICATOR_PATTERN = exports.COMMAND_CODE_COMPLETION_PATTERN = exports.COMMAND_CODE_RESPONSE_MARKER_PATTERN = exports.COMMAND_CODE_THINKING_PATTERN = exports.COMMAND_CODE_INTERRUPT_HINT_PATTERN = exports.COMMAND_CODE_SEPARATOR_PATTERN = exports.COMMAND_CODE_PROMPT_PATTERN = exports.COMMAND_CODE_SPINNER_CHARS = exports.ANTIGRAVITY_SKIP_PATTERNS = exports.ANTIGRAVITY_SURVEY_PATTERN = exports.ANTIGRAVITY_DIALOG_MAX_ROWS = exports.ANTIGRAVITY_DIALOG_BOUNDARY_PATTERN = exports.ANTIGRAVITY_SWITCH_MODEL_HEADER_PATTERN = exports.ANTIGRAVITY_NUMBERED_OPTION_PATTERN = exports.ANTIGRAVITY_NAVIGATE_FOOTER_PATTERN = exports.ANTIGRAVITY_SELECTION_LIST_PATTERN = exports.ANTIGRAVITY_SEPARATOR_PATTERN = exports.ANTIGRAVITY_THINKING_PATTERN = exports.ANTIGRAVITY_PROMPT_PATTERN = exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_PATTERN = exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_SOURCE = exports.VIBE_LOCAL_THINKING_PATTERN = exports.VIBE_LOCAL_PROMPT_PATTERN = exports.COPILOT_SKIP_PATTERNS = exports.COPILOT_FOLDER_TRUST_ANSWER_KEY = exports.COPILOT_FOLDER_TRUST_SESSION_OPTION_PATTERN = exports.COPILOT_FOLDER_TRUST_ANCHORS = exports.COPILOT_SELECTION_FOOTER_PATTERN = exports.COPILOT_BOOT_BANNER_ANCHORS = exports.COPILOT_TRANSCRIPT_CONTINUATION_PATTERN = exports.COPILOT_TOOL_ROW_PATTERN = exports.COPILOT_TOOL_VERBS = void 0;
9
9
  exports.isCodexTurnActive = isCodexTurnActive;
10
10
  exports.findClaudeChromeStart = findClaudeChromeStart;
11
11
  exports.isCodexPromptReady = isCodexPromptReady;
@@ -532,6 +532,43 @@ exports.CODEX_SELECTION_LIST_PATTERN = /press\s+enter\s+to\s+(?:confirm|select)/
532
532
  * No /g flag (keeps .test() stateless), no nested quantifiers (ReDoS-safe).
533
533
  */
534
534
  exports.CODEX_APPROVAL_FOOTER_PATTERN = /esc\s+to\s+cancel/i;
535
+ /**
536
+ * Codex CLI tool-call approval FORM footer (Issue #2609).
537
+ *
538
+ * Codex asks for some tool calls through a form rather than the classic
539
+ * approval list, and closes it with a different sentence. Measured on a live
540
+ * Browser use approval (2026-09-17, twice in one session):
541
+ *
542
+ * ```text
543
+ * • Calling 修正前の専用GUIを開く
544
+ *
545
+ * Field 1/1
546
+ * Allow Browser use to access http://127.0.0.1:60311?
547
+ *
548
+ * origin: http://127.0.0.1:60311
549
+ *
550
+ * › 1. Allow Run the tool and continue.
551
+ * 2. Always allow Run the tool and remember this choice for future tool calls.
552
+ * 3. Cancel Cancel this tool call
553
+ * enter to submit | esc to cancel
554
+ * ```
555
+ *
556
+ * No `press enter to confirm/select`, so {@link CODEX_SELECTION_LIST_PATTERN}
557
+ * misses it and `detectCodexDialog` returned null for a dialog the status
558
+ * detector reported as `waiting` — which `/prompt-response` read as
559
+ * `prompt_no_longer_active` and Auto-Yes as `unclassified-frame`.
560
+ *
561
+ * Deliberately a separate constant rather than another alternative in
562
+ * CODEX_SELECTION_LIST_PATTERN: that one also drives `detect.ts` branch 0.8, and
563
+ * this footer is consumed ONLY by `detectCodexDialog`'s entry gate. It is the
564
+ * whole measured row and nothing looser — `/m` + `^…$` against the trimmed
565
+ * footer rows `findNumberedOptionBlock` returns, so a sentence that merely
566
+ * contains "enter to submit", or "esc to cancel" on its own (the #1928 mutation
567
+ * that rewords the approval footer), still does not vouch for a block.
568
+ *
569
+ * No /g flag (keeps .test() stateless), no nested quantifiers (ReDoS-safe).
570
+ */
571
+ exports.CODEX_FORM_SUBMIT_FOOTER_PATTERN = /^enter\s+to\s+submit\s*\|\s*esc\s+to\s+cancel$/im;
535
572
  /**
536
573
  * Codex CLI pager / edit-previous (transcript) mode footer pattern (Issue #1017)
537
574
  *
@@ -22,6 +22,14 @@
22
22
  * readings of "is this codex's dialog?" would be two chances to disagree, and
23
23
  * this one is the one Auto-Yes acts on.
24
24
  *
25
+ * Issue #2609 added one more measured footer, and only that one: codex's
26
+ * tool-call approval FORM (`Field 1/1`, seen on a Browser use request) closes
27
+ * with `enter to submit | esc to cancel`
28
+ * ({@link CODEX_FORM_SUBMIT_FOOTER_PATTERN}). `detect.ts` already reported that
29
+ * frame `waiting` through its structural branch (#2310), so without it the two
30
+ * readings disagreed: `respond` answered `prompt_no_longer_active` for a prompt
31
+ * the status API was showing.
32
+ *
25
33
  * ## Why the footer and not the numbers
26
34
  *
27
35
  * Codex draws on the NORMAL screen, so its pane keeps scrollback: an approval
@@ -85,8 +93,14 @@ function detectCodexDialog(frame, context) {
85
93
  // The footer is the whole guard. It is positional as well as textual: only the
86
94
  // rows between the options and the status bar are looked at, so the same words
87
95
  // quoted inside a transcript hundreds of rows up cannot reach it.
88
- if (!cli_patterns_1.CODEX_SELECTION_LIST_PATTERN.test(block.footer))
96
+ //
97
+ // Issue #2609: the approval form's footer is admitted as its own measured row,
98
+ // not by widening the list pattern — an `esc to cancel` alone still vouches
99
+ // for nothing.
100
+ if (!cli_patterns_1.CODEX_SELECTION_LIST_PATTERN.test(block.footer) &&
101
+ !cli_patterns_1.CODEX_FORM_SUBMIT_FOOTER_PATTERN.test(block.footer)) {
89
102
  return null;
103
+ }
90
104
  // Issue #1160: an already-answered block still inside the window is not a
91
105
  // dialog. Codex keeps it on screen and goes on working underneath it.
92
106
  if (context.stalePrompt)
@@ -19,7 +19,7 @@
19
19
  * @module lib/hooks/agent-event-types
20
20
  */
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.PERMISSION_REPLIED_DETAIL = exports.MAX_EVENT_DETAIL_LENGTH = exports.AGENT_EVENT_TYPES = void 0;
22
+ exports.SELF_RESUME_PENDING_DETAIL = exports.PERMISSION_REPLIED_DETAIL = exports.MAX_EVENT_DETAIL_LENGTH = exports.AGENT_EVENT_TYPES = void 0;
23
23
  exports.isAgentEventType = isAgentEventType;
24
24
  /**
25
25
  * Event kinds accepted by `POST /api/hooks/agent-event`.
@@ -68,3 +68,21 @@ exports.MAX_EVENT_DETAIL_LENGTH = 128;
68
68
  * `AgentSourceCapabilities.permissionReplyReleasesPrompt` to declare.
69
69
  */
70
70
  exports.PERMISSION_REPLIED_DETAIL = 'permission_replied';
71
+ /**
72
+ * The `stop` detail meaning "the turn ended, but the agent will resume on its
73
+ * own" (Issue #2614).
74
+ *
75
+ * A turn an agent closes while its own background work is still running — a
76
+ * timer it set, a command it sent to the background, a subagent — is not the
77
+ * end of the work: when that work finishes the agent is woken without anybody
78
+ * typing anything. antigravity's `schedule` measured it on 2026-09-17: four
79
+ * `Stop`s in five minutes, each one ~58 s before the agent woke itself, and
80
+ * `wait` read the first of them as the verdict.
81
+ *
82
+ * Named here rather than in a source's own file for the reason
83
+ * {@link PERMISSION_REPLIED_DETAIL} is: the source that writes it and the CLI
84
+ * that reads it (`src/cli/commands/wait.ts`, which cannot import this module
85
+ * and keeps a pinned copy) have to agree on it. Whether a source can say it at
86
+ * all is `AgentSourceCapabilities.stopReportsSelfResume`, declared below.
87
+ */
88
+ exports.SELF_RESUME_PENDING_DETAIL = 'self_resume_pending';