commandmate 0.31.2 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (824) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +454 -440
  3. package/.next/app-path-routes-manifest.json +31 -29
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +12 -12
  6. package/.next/react-loadable-manifest.json +2 -2
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +8 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update-check/route.js +1 -1
  14. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  15. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  17. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  18. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  20. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  21. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/assistant/messages/route.js +1 -1
  23. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  24. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/assistant/session/route.js +1 -1
  26. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  27. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/assistant/start/route.js +1 -32
  29. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  30. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/assistant/terminal/route.js +2 -33
  32. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  33. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/assistant/tools/route.js +1 -1
  35. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  36. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/capabilities/route.js +1 -1
  41. package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
  42. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  51. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  52. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  54. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  55. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  57. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  58. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/push/escalation/route.js +2 -2
  62. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  63. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  65. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/push/vapid/route.js +2 -2
  67. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  68. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -0
  70. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -0
  71. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -0
  72. package/.next/server/app/api/relays/route.js +1 -0
  73. package/.next/server/app/api/relays/route.js.nft.json +1 -0
  74. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -0
  75. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  78. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  80. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  82. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  83. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/repositories/clone/route.js +1 -1
  85. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  86. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/repositories/restore/route.js +1 -1
  89. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  90. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/repositories/route.js +1 -1
  92. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  93. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/repositories/scan/route.js +1 -1
  95. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  96. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/repositories/sync/route.js +1 -1
  98. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  99. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  102. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  103. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/skills/[id]/route.js +1 -1
  107. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  108. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/skills/installations/route.js +1 -1
  110. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  111. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/skills/route.js +1 -1
  115. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  116. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  120. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/todos/route.js +1 -1
  124. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  126. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/verification/runs/route.js +1 -1
  128. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  131. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  134. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  137. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  202. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  205. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  208. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +2 -1
  224. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  225. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +2 -1
  227. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  228. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  231. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  249. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +103 -1
  251. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  252. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  256. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  262. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  274. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  279. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/route.js +1 -1
  301. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/chat/page.js +2 -2
  304. package/.next/server/app/chat/page.js.nft.json +1 -1
  305. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  306. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  307. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/more/page.js +2 -2
  309. package/.next/server/app/more/page.js.nft.json +1 -1
  310. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  311. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  312. package/.next/server/app/page.js +1 -1
  313. package/.next/server/app/page.js.nft.json +1 -1
  314. package/.next/server/app/page_client-reference-manifest.js +1 -1
  315. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  316. package/.next/server/app/repositories/page.js +2 -2
  317. package/.next/server/app/repositories/page.js.nft.json +1 -1
  318. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  319. package/.next/server/app/review/page.js +1 -1
  320. package/.next/server/app/review/page.js.nft.json +1 -1
  321. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  322. package/.next/server/app/sessions/page.js +1 -1
  323. package/.next/server/app/sessions/page.js.nft.json +1 -1
  324. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  325. package/.next/server/app/skills/[skillId]/page.js +2 -2
  326. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  327. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  328. package/.next/server/app/skills/installed/page.js +2 -2
  329. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  330. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  331. package/.next/server/app/skills/page.js +1 -1
  332. package/.next/server/app/skills/page.js.nft.json +1 -1
  333. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  334. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  335. package/.next/server/app/worktrees/[id]/page.js +11 -11
  336. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  337. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  338. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  339. package/.next/server/app-paths-manifest.json +31 -29
  340. package/.next/server/chunks/1191.js +1 -1
  341. package/.next/server/chunks/1210.js +1 -0
  342. package/.next/server/chunks/153.js +1 -0
  343. package/.next/server/chunks/1886.js +1 -1
  344. package/.next/server/chunks/21.js +1 -0
  345. package/.next/server/chunks/2119.js +1 -1
  346. package/.next/server/chunks/2445.js +1 -1
  347. package/.next/server/chunks/3077.js +67 -0
  348. package/.next/server/chunks/3086.js +1 -0
  349. package/.next/server/chunks/3241.js +1 -1
  350. package/.next/server/chunks/3270.js +1 -0
  351. package/.next/server/chunks/3543.js +1 -1
  352. package/.next/server/chunks/3730.js +1 -0
  353. package/.next/server/chunks/3925.js +1 -0
  354. package/.next/server/chunks/3945.js +1 -1
  355. package/.next/server/chunks/4443.js +2 -1
  356. package/.next/server/chunks/5043.js +1 -1
  357. package/.next/server/chunks/5164.js +1 -1
  358. package/.next/server/chunks/5220.js +1 -1
  359. package/.next/server/chunks/5354.js +1 -1
  360. package/.next/server/chunks/595.js +8 -0
  361. package/.next/server/chunks/6286.js +48 -0
  362. package/.next/server/chunks/6306.js +1 -0
  363. package/.next/server/chunks/6363.js +1 -0
  364. package/.next/server/chunks/6401.js +1 -1
  365. package/.next/server/chunks/6491.js +103 -0
  366. package/.next/server/chunks/6661.js +1 -0
  367. package/.next/server/chunks/6838.js +1 -0
  368. package/.next/server/chunks/7875.js +25 -0
  369. package/.next/server/chunks/7890.js +1 -0
  370. package/.next/server/chunks/8063.js +32 -0
  371. package/.next/server/chunks/8118.js +1 -1
  372. package/.next/server/chunks/{7587.js → 8554.js} +1 -1
  373. package/.next/server/chunks/8687.js +1 -0
  374. package/.next/server/chunks/8800.js +1 -1
  375. package/.next/server/chunks/8807.js +37 -3
  376. package/.next/server/chunks/8918.js +6 -4
  377. package/.next/server/chunks/9123.js +2 -2
  378. package/.next/server/chunks/9130.js +2 -2
  379. package/.next/server/chunks/9584.js +1 -1
  380. package/.next/server/chunks/9627.js +22 -6
  381. package/.next/server/middleware-build-manifest.js +1 -1
  382. package/.next/server/middleware-manifest.json +5 -5
  383. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  384. package/.next/server/pages/500.html +1 -1
  385. package/.next/server/server-reference-manifest.json +1 -1
  386. package/.next/static/UIUPchtWvcEuQgcbGJv4g/_buildManifest.js +1 -0
  387. package/.next/static/chunks/{5694.dda65070757534df.js → 3313.53f7ff985c0c8852.js} +1 -1
  388. package/.next/static/chunks/4718-0053d42fb635e700.js +1 -0
  389. package/.next/static/chunks/{4974-35592ec312322124.js → 5694-498765336d0b8c2b.js} +1 -1
  390. package/.next/static/chunks/{7485.442b21101fca7257.js → 7485.52361bc061cc663a.js} +1 -1
  391. package/.next/static/chunks/8019-cbf130d0e6334d2d.js +1 -0
  392. package/.next/static/chunks/8361-9bb887203c456edb.js +1 -0
  393. package/.next/static/chunks/8772-9be53a530950d804.js +1 -0
  394. package/.next/static/chunks/998-ac0ded6d5eeb4dc0.js +1 -0
  395. package/.next/static/chunks/app/api/agents/update/route-8bc5b680c5f3eae4.js +1 -0
  396. package/.next/static/chunks/app/api/agents/versions/route-8bc5b680c5f3eae4.js +1 -0
  397. package/.next/static/chunks/app/api/app/update/route-8bc5b680c5f3eae4.js +1 -0
  398. package/.next/static/chunks/app/api/app/update-check/route-8bc5b680c5f3eae4.js +1 -0
  399. package/.next/static/chunks/app/api/assistant/conversation/route-8bc5b680c5f3eae4.js +1 -0
  400. package/.next/static/chunks/app/api/assistant/current-output/route-8bc5b680c5f3eae4.js +1 -0
  401. package/.next/static/chunks/app/api/assistant/messages/route-8bc5b680c5f3eae4.js +1 -0
  402. package/.next/static/chunks/app/api/assistant/session/route-8bc5b680c5f3eae4.js +1 -0
  403. package/.next/static/chunks/app/api/assistant/start/route-8bc5b680c5f3eae4.js +1 -0
  404. package/.next/static/chunks/app/api/assistant/terminal/route-8bc5b680c5f3eae4.js +1 -0
  405. package/.next/static/chunks/app/api/assistant/tools/route-8bc5b680c5f3eae4.js +1 -0
  406. package/.next/static/chunks/app/api/auth/login/route-8bc5b680c5f3eae4.js +1 -0
  407. package/.next/static/chunks/app/api/auth/logout/route-8bc5b680c5f3eae4.js +1 -0
  408. package/.next/static/chunks/app/api/auth/status/route-8bc5b680c5f3eae4.js +1 -0
  409. package/.next/static/chunks/app/api/capabilities/route-8bc5b680c5f3eae4.js +1 -0
  410. package/.next/static/chunks/app/api/daily-summary/route-8bc5b680c5f3eae4.js +1 -0
  411. package/.next/static/chunks/app/api/daily-summary/status/route-8bc5b680c5f3eae4.js +1 -0
  412. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8bc5b680c5f3eae4.js +1 -0
  413. package/.next/static/chunks/app/api/external-apps/[id]/route-8bc5b680c5f3eae4.js +1 -0
  414. package/.next/static/chunks/app/api/external-apps/route-8bc5b680c5f3eae4.js +1 -0
  415. package/.next/static/chunks/app/api/fs/browse/route-8bc5b680c5f3eae4.js +1 -0
  416. package/.next/static/chunks/app/api/fs/recent-paths/route-8bc5b680c5f3eae4.js +1 -0
  417. package/.next/static/chunks/app/api/hooks/agent-event/route-8bc5b680c5f3eae4.js +1 -0
  418. package/.next/static/chunks/app/api/hooks/claude-done/route-8bc5b680c5f3eae4.js +1 -0
  419. package/.next/static/chunks/app/api/hooks/permission-request/route-8bc5b680c5f3eae4.js +1 -0
  420. package/.next/static/chunks/app/api/metrics/vibe/route-8bc5b680c5f3eae4.js +1 -0
  421. package/.next/static/chunks/app/api/ollama/models/route-8bc5b680c5f3eae4.js +1 -0
  422. package/.next/static/chunks/app/api/push/escalation/route-8bc5b680c5f3eae4.js +1 -0
  423. package/.next/static/chunks/app/api/push/subscriptions/route-8bc5b680c5f3eae4.js +1 -0
  424. package/.next/static/chunks/app/api/push/vapid/route-8bc5b680c5f3eae4.js +1 -0
  425. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  426. package/.next/static/chunks/app/api/relays/route-8bc5b680c5f3eae4.js +1 -0
  427. package/.next/static/chunks/app/api/remote/pair/route-8bc5b680c5f3eae4.js +1 -0
  428. package/.next/static/chunks/app/api/repositories/[id]/route-8bc5b680c5f3eae4.js +1 -0
  429. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
  430. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
  431. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8bc5b680c5f3eae4.js +1 -0
  432. package/.next/static/chunks/app/api/repositories/clone/route-8bc5b680c5f3eae4.js +1 -0
  433. package/.next/static/chunks/app/api/repositories/excluded/route-8bc5b680c5f3eae4.js +1 -0
  434. package/.next/static/chunks/app/api/repositories/restore/route-8bc5b680c5f3eae4.js +1 -0
  435. package/.next/static/chunks/app/api/repositories/route-8bc5b680c5f3eae4.js +1 -0
  436. package/.next/static/chunks/app/api/repositories/scan/route-8bc5b680c5f3eae4.js +1 -0
  437. package/.next/static/chunks/app/api/repositories/sync/route-8bc5b680c5f3eae4.js +1 -0
  438. package/.next/static/chunks/app/api/repositories/validate-path/route-8bc5b680c5f3eae4.js +1 -0
  439. package/.next/static/chunks/app/api/settings/default-agents/route-8bc5b680c5f3eae4.js +1 -0
  440. package/.next/static/chunks/app/api/settings/default-surface-mode/route-8bc5b680c5f3eae4.js +1 -0
  441. package/.next/static/chunks/app/api/sidebar/group-order/route-8bc5b680c5f3eae4.js +1 -0
  442. package/.next/static/chunks/app/api/skills/[id]/route-8bc5b680c5f3eae4.js +1 -0
  443. package/.next/static/chunks/app/api/skills/installations/route-8bc5b680c5f3eae4.js +1 -0
  444. package/.next/static/chunks/app/api/skills/operations/route-8bc5b680c5f3eae4.js +1 -0
  445. package/.next/static/chunks/app/api/skills/reindex/route-8bc5b680c5f3eae4.js +1 -0
  446. package/.next/static/chunks/app/api/skills/route-8bc5b680c5f3eae4.js +1 -0
  447. package/.next/static/chunks/app/api/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
  448. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  449. package/.next/static/chunks/app/api/tasks/[taskId]/route-8bc5b680c5f3eae4.js +1 -0
  450. package/.next/static/chunks/app/api/templates/[id]/route-8bc5b680c5f3eae4.js +1 -0
  451. package/.next/static/chunks/app/api/templates/route-8bc5b680c5f3eae4.js +1 -0
  452. package/.next/static/chunks/app/api/todos/route-8bc5b680c5f3eae4.js +1 -0
  453. package/.next/static/chunks/app/api/verification/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
  454. package/.next/static/chunks/app/api/verification/runs/route-8bc5b680c5f3eae4.js +1 -0
  455. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8bc5b680c5f3eae4.js +1 -0
  456. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8bc5b680c5f3eae4.js +1 -0
  457. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-8bc5b680c5f3eae4.js +1 -0
  458. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-8bc5b680c5f3eae4.js +1 -0
  459. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8bc5b680c5f3eae4.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8bc5b680c5f3eae4.js +1 -0
  461. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8bc5b680c5f3eae4.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/env/route-8bc5b680c5f3eae4.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8bc5b680c5f3eae4.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8bc5b680c5f3eae4.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8bc5b680c5f3eae4.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8bc5b680c5f3eae4.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8bc5b680c5f3eae4.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8bc5b680c5f3eae4.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8bc5b680c5f3eae4.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8bc5b680c5f3eae4.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8bc5b680c5f3eae4.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8bc5b680c5f3eae4.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8bc5b680c5f3eae4.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8bc5b680c5f3eae4.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8bc5b680c5f3eae4.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8bc5b680c5f3eae4.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8bc5b680c5f3eae4.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8bc5b680c5f3eae4.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8bc5b680c5f3eae4.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8bc5b680c5f3eae4.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8bc5b680c5f3eae4.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8bc5b680c5f3eae4.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8bc5b680c5f3eae4.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8bc5b680c5f3eae4.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8bc5b680c5f3eae4.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8bc5b680c5f3eae4.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8bc5b680c5f3eae4.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-8bc5b680c5f3eae4.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8bc5b680c5f3eae4.js +1 -0
  491. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8bc5b680c5f3eae4.js +1 -0
  492. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8bc5b680c5f3eae4.js +1 -0
  493. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8bc5b680c5f3eae4.js +1 -0
  494. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8bc5b680c5f3eae4.js +1 -0
  495. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8bc5b680c5f3eae4.js +1 -0
  496. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8bc5b680c5f3eae4.js +1 -0
  497. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8bc5b680c5f3eae4.js +1 -0
  498. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-8bc5b680c5f3eae4.js +1 -0
  499. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-8bc5b680c5f3eae4.js +1 -0
  500. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-8bc5b680c5f3eae4.js +1 -0
  501. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8bc5b680c5f3eae4.js +1 -0
  502. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-8bc5b680c5f3eae4.js +1 -0
  503. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8bc5b680c5f3eae4.js +1 -0
  504. package/.next/static/chunks/app/api/worktrees/[id]/route-8bc5b680c5f3eae4.js +1 -0
  505. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8bc5b680c5f3eae4.js +1 -0
  506. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8bc5b680c5f3eae4.js +1 -0
  507. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8bc5b680c5f3eae4.js +1 -0
  508. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8bc5b680c5f3eae4.js +1 -0
  509. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8bc5b680c5f3eae4.js +1 -0
  510. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8bc5b680c5f3eae4.js +1 -0
  511. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8bc5b680c5f3eae4.js +1 -0
  512. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8bc5b680c5f3eae4.js +1 -0
  513. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8bc5b680c5f3eae4.js +1 -0
  514. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8bc5b680c5f3eae4.js +1 -0
  515. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-8bc5b680c5f3eae4.js +1 -0
  516. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-8bc5b680c5f3eae4.js +1 -0
  517. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8bc5b680c5f3eae4.js +1 -0
  518. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
  519. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8bc5b680c5f3eae4.js +1 -0
  520. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8bc5b680c5f3eae4.js +1 -0
  521. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8bc5b680c5f3eae4.js +1 -0
  522. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8bc5b680c5f3eae4.js +1 -0
  523. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8bc5b680c5f3eae4.js +1 -0
  524. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
  525. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8bc5b680c5f3eae4.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-8bc5b680c5f3eae4.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8bc5b680c5f3eae4.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8bc5b680c5f3eae4.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8bc5b680c5f3eae4.js +1 -0
  535. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-8bc5b680c5f3eae4.js +1 -0
  536. package/.next/static/chunks/app/api/worktrees/route-8bc5b680c5f3eae4.js +1 -0
  537. package/.next/static/chunks/app/chat/{page-37d7615d17d7e2a0.js → page-e60d07c4c79602f0.js} +1 -1
  538. package/.next/static/chunks/app/manifest.webmanifest/route-8bc5b680c5f3eae4.js +1 -0
  539. package/.next/static/chunks/app/more/{page-353a3924e6d7968e.js → page-fc94f86aa881489e.js} +1 -1
  540. package/.next/static/chunks/app/{page-c2bf871d953a1d6f.js → page-6871cca022b24807.js} +1 -1
  541. package/.next/static/chunks/app/proxy/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  542. package/.next/static/chunks/app/repositories/{page-7d0f26df0537254c.js → page-788ded1b72963d94.js} +1 -1
  543. package/.next/static/chunks/app/review/{page-e3f141b2829973e9.js → page-35b99baaf3c93b38.js} +1 -1
  544. package/.next/static/chunks/app/sessions/{page-53f188ed9ca49e5f.js → page-fa2d62f3e8436c69.js} +1 -1
  545. package/.next/static/chunks/app/skills/[skillId]/{page-80569b720aea59cc.js → page-06799157652e8fa9.js} +1 -1
  546. package/.next/static/chunks/app/skills/installed/{page-dbd2690ad72da95b.js → page-2f3987e3a131c8d0.js} +1 -1
  547. package/.next/static/chunks/app/skills/{page-dacd36f9c11aa7da.js → page-e70bfcf5ed4e4865.js} +1 -1
  548. package/.next/static/chunks/app/worktrees/[id]/layout-8bc5b680c5f3eae4.js +1 -0
  549. package/.next/static/chunks/app/worktrees/[id]/page-06e1ff5ce2d126fd.js +1 -0
  550. package/.next/static/chunks/webpack-1dc9eb5ebb4fa5ff.js +1 -0
  551. package/.next/static/css/96d94a4ba771efc3.css +1 -0
  552. package/.next/trace +13 -13
  553. package/.next/types/app/api/relays/[relayId]/cancel/route.ts +347 -0
  554. package/.next/types/app/api/relays/route.ts +347 -0
  555. package/.next/types/routes.d.ts +3 -1
  556. package/.next/types/validator.ts +18 -0
  557. package/dist/cli/commands/ask.d.ts +34 -0
  558. package/dist/cli/commands/ask.d.ts.map +1 -0
  559. package/dist/cli/commands/ask.js +494 -0
  560. package/dist/cli/commands/capture.d.ts +20 -0
  561. package/dist/cli/commands/capture.d.ts.map +1 -1
  562. package/dist/cli/commands/capture.js +80 -30
  563. package/dist/cli/commands/docs.d.ts.map +1 -1
  564. package/dist/cli/commands/docs.js +47 -4
  565. package/dist/cli/commands/instances.d.ts +67 -0
  566. package/dist/cli/commands/instances.d.ts.map +1 -1
  567. package/dist/cli/commands/instances.js +103 -7
  568. package/dist/cli/commands/peers.d.ts +64 -0
  569. package/dist/cli/commands/peers.d.ts.map +1 -0
  570. package/dist/cli/commands/peers.js +196 -0
  571. package/dist/cli/commands/relays.d.ts +92 -0
  572. package/dist/cli/commands/relays.d.ts.map +1 -0
  573. package/dist/cli/commands/relays.js +293 -0
  574. package/dist/cli/commands/report.d.ts +3 -0
  575. package/dist/cli/commands/report.d.ts.map +1 -1
  576. package/dist/cli/commands/report.js +29 -1
  577. package/dist/cli/commands/respond.d.ts.map +1 -1
  578. package/dist/cli/commands/respond.js +13 -10
  579. package/dist/cli/commands/send.d.ts.map +1 -1
  580. package/dist/cli/commands/send.js +66 -20
  581. package/dist/cli/commands/task.d.ts.map +1 -1
  582. package/dist/cli/commands/task.js +30 -0
  583. package/dist/cli/commands/wait.d.ts +20 -0
  584. package/dist/cli/commands/wait.d.ts.map +1 -1
  585. package/dist/cli/commands/wait.js +55 -6
  586. package/dist/cli/commands/whoami.d.ts +109 -0
  587. package/dist/cli/commands/whoami.d.ts.map +1 -0
  588. package/dist/cli/commands/whoami.js +271 -0
  589. package/dist/cli/docs/agent-operations.d.ts +25 -1
  590. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  591. package/dist/cli/docs/agent-operations.js +184 -1
  592. package/dist/cli/index.d.ts +13 -0
  593. package/dist/cli/index.d.ts.map +1 -1
  594. package/dist/cli/index.js +25 -1
  595. package/dist/cli/types/api-responses.d.ts +93 -0
  596. package/dist/cli/types/api-responses.d.ts.map +1 -1
  597. package/dist/cli/types/index.d.ts +16 -0
  598. package/dist/cli/types/index.d.ts.map +1 -1
  599. package/dist/lib/cli/command-reference.d.ts +179 -0
  600. package/dist/lib/cli/command-reference.d.ts.map +1 -0
  601. package/dist/lib/cli/command-reference.js +210 -0
  602. package/dist/lib/detection/ansi.d.ts +14 -1
  603. package/dist/lib/detection/ansi.d.ts.map +1 -1
  604. package/dist/lib/detection/ansi.js +40 -3
  605. package/dist/lib/detection/status-reason.d.ts +28 -0
  606. package/dist/lib/detection/status-reason.d.ts.map +1 -1
  607. package/dist/lib/detection/status-reason.js +28 -0
  608. package/dist/lib/detection/tools/verified-against.d.ts +24 -24
  609. package/dist/lib/detection/tools/verified-against.js +24 -24
  610. package/dist/server/locales/en/worktree.json +1425 -0
  611. package/dist/server/locales/ja/worktree.json +1425 -0
  612. package/dist/server/src/lib/auto-yes-poller.js +26 -11
  613. package/dist/server/src/lib/db/chat-db.js +204 -7
  614. package/dist/server/src/lib/db/migrations/index.js +2 -0
  615. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  616. package/dist/server/src/lib/db/migrations/v60-session-relays.js +110 -0
  617. package/dist/server/src/lib/db/relay-db.js +343 -0
  618. package/dist/server/src/lib/detection/ansi.js +40 -3
  619. package/dist/server/src/lib/detection/cli-patterns.js +157 -23
  620. package/dist/server/src/lib/detection/model-info-extractor.js +185 -4
  621. package/dist/server/src/lib/detection/selection-shape.js +72 -1
  622. package/dist/server/src/lib/detection/status-reason.js +28 -0
  623. package/dist/server/src/lib/detection/tools/antigravity/detect.js +105 -25
  624. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +239 -0
  625. package/dist/server/src/lib/detection/tools/command-code/detect.js +33 -0
  626. package/dist/server/src/lib/detection/tools/verified-against.js +24 -24
  627. package/dist/server/src/lib/history/user-turn-recorder.js +79 -16
  628. package/dist/server/src/lib/hooks/hook-settings-generator.js +16 -0
  629. package/dist/server/src/lib/hooks/sources/claude/model-switch.js +169 -0
  630. package/dist/server/src/lib/hooks/sources/claude/source.js +14 -1
  631. package/dist/server/src/lib/polling/response-checker.js +55 -2
  632. package/dist/server/src/lib/polling/structured-history-gate.js +14 -1
  633. package/dist/server/src/lib/push/index.js +13 -1
  634. package/dist/server/src/lib/push/model-change-push-notifier.js +174 -0
  635. package/dist/server/src/lib/push/push-sender.js +48 -20
  636. package/dist/server/src/lib/realtime/model-change-broadcast.js +171 -0
  637. package/dist/server/src/lib/realtime/terminal-broadcast.js +5 -0
  638. package/dist/server/src/lib/realtime/types.js +19 -1
  639. package/dist/server/src/lib/realtime/waiting-broadcast.js +25 -0
  640. package/dist/server/src/lib/relay/relay-delivery.js +400 -0
  641. package/dist/server/src/lib/relay/relay-messages.js +144 -0
  642. package/dist/server/src/lib/relay/relay-policy.js +127 -0
  643. package/dist/server/src/lib/relay/relay-readiness.js +63 -0
  644. package/dist/server/src/lib/relay/relay-session-ref.js +72 -0
  645. package/dist/server/src/lib/relay/relay-system-line.js +79 -0
  646. package/dist/server/src/lib/relay/relay-triggers.js +177 -0
  647. package/dist/server/src/lib/relay/types.js +25 -0
  648. package/dist/server/src/lib/session/agent-event-state.js +344 -12
  649. package/dist/server/src/lib/session/current-output-builder.js +18 -0
  650. package/dist/server/src/lib/session/send-user-message.js +1 -0
  651. package/package.json +1 -1
  652. package/.next/server/chunks/1058.js +0 -1
  653. package/.next/server/chunks/1068.js +0 -1
  654. package/.next/server/chunks/1990.js +0 -103
  655. package/.next/server/chunks/261.js +0 -1
  656. package/.next/server/chunks/2739.js +0 -1
  657. package/.next/server/chunks/2839.js +0 -1
  658. package/.next/server/chunks/3869.js +0 -1
  659. package/.next/server/chunks/4325.js +0 -1
  660. package/.next/server/chunks/4393.js +0 -1
  661. package/.next/server/chunks/5017.js +0 -1
  662. package/.next/server/chunks/5120.js +0 -1
  663. package/.next/server/chunks/552.js +0 -25
  664. package/.next/server/chunks/6130.js +0 -1
  665. package/.next/server/chunks/6894.js +0 -8
  666. package/.next/server/chunks/7187.js +0 -1
  667. package/.next/server/chunks/7472.js +0 -1
  668. package/.next/server/chunks/7836.js +0 -1
  669. package/.next/server/chunks/7859.js +0 -21
  670. package/.next/server/chunks/9696.js +0 -3
  671. package/.next/server/chunks/9798.js +0 -2
  672. package/.next/static/GiOqe8rfQGQ0NvzB5qr3q/_buildManifest.js +0 -1
  673. package/.next/static/chunks/1783-11c9b4d8a52ebd91.js +0 -1
  674. package/.next/static/chunks/4718-0d4d93c4c75f336e.js +0 -1
  675. package/.next/static/chunks/6170-951b9f5fe6b4b3b5.js +0 -1
  676. package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +0 -1
  677. package/.next/static/chunks/8593-fa0eb2802e0ce68a.js +0 -1
  678. package/.next/static/chunks/app/api/agents/update/route-ee11f7b8a34cba8c.js +0 -1
  679. package/.next/static/chunks/app/api/agents/versions/route-ee11f7b8a34cba8c.js +0 -1
  680. package/.next/static/chunks/app/api/app/update/route-ee11f7b8a34cba8c.js +0 -1
  681. package/.next/static/chunks/app/api/app/update-check/route-ee11f7b8a34cba8c.js +0 -1
  682. package/.next/static/chunks/app/api/assistant/conversation/route-ee11f7b8a34cba8c.js +0 -1
  683. package/.next/static/chunks/app/api/assistant/current-output/route-ee11f7b8a34cba8c.js +0 -1
  684. package/.next/static/chunks/app/api/assistant/messages/route-ee11f7b8a34cba8c.js +0 -1
  685. package/.next/static/chunks/app/api/assistant/session/route-ee11f7b8a34cba8c.js +0 -1
  686. package/.next/static/chunks/app/api/assistant/start/route-ee11f7b8a34cba8c.js +0 -1
  687. package/.next/static/chunks/app/api/assistant/terminal/route-ee11f7b8a34cba8c.js +0 -1
  688. package/.next/static/chunks/app/api/assistant/tools/route-ee11f7b8a34cba8c.js +0 -1
  689. package/.next/static/chunks/app/api/auth/login/route-ee11f7b8a34cba8c.js +0 -1
  690. package/.next/static/chunks/app/api/auth/logout/route-ee11f7b8a34cba8c.js +0 -1
  691. package/.next/static/chunks/app/api/auth/status/route-ee11f7b8a34cba8c.js +0 -1
  692. package/.next/static/chunks/app/api/capabilities/route-ee11f7b8a34cba8c.js +0 -1
  693. package/.next/static/chunks/app/api/daily-summary/route-ee11f7b8a34cba8c.js +0 -1
  694. package/.next/static/chunks/app/api/daily-summary/status/route-ee11f7b8a34cba8c.js +0 -1
  695. package/.next/static/chunks/app/api/external-apps/[id]/health/route-ee11f7b8a34cba8c.js +0 -1
  696. package/.next/static/chunks/app/api/external-apps/[id]/route-ee11f7b8a34cba8c.js +0 -1
  697. package/.next/static/chunks/app/api/external-apps/route-ee11f7b8a34cba8c.js +0 -1
  698. package/.next/static/chunks/app/api/fs/browse/route-ee11f7b8a34cba8c.js +0 -1
  699. package/.next/static/chunks/app/api/fs/recent-paths/route-ee11f7b8a34cba8c.js +0 -1
  700. package/.next/static/chunks/app/api/hooks/agent-event/route-ee11f7b8a34cba8c.js +0 -1
  701. package/.next/static/chunks/app/api/hooks/claude-done/route-ee11f7b8a34cba8c.js +0 -1
  702. package/.next/static/chunks/app/api/hooks/permission-request/route-ee11f7b8a34cba8c.js +0 -1
  703. package/.next/static/chunks/app/api/metrics/vibe/route-ee11f7b8a34cba8c.js +0 -1
  704. package/.next/static/chunks/app/api/ollama/models/route-ee11f7b8a34cba8c.js +0 -1
  705. package/.next/static/chunks/app/api/push/escalation/route-ee11f7b8a34cba8c.js +0 -1
  706. package/.next/static/chunks/app/api/push/subscriptions/route-ee11f7b8a34cba8c.js +0 -1
  707. package/.next/static/chunks/app/api/push/vapid/route-ee11f7b8a34cba8c.js +0 -1
  708. package/.next/static/chunks/app/api/remote/pair/route-ee11f7b8a34cba8c.js +0 -1
  709. package/.next/static/chunks/app/api/repositories/[id]/route-ee11f7b8a34cba8c.js +0 -1
  710. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
  711. package/.next/static/chunks/app/api/repositories/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
  712. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-ee11f7b8a34cba8c.js +0 -1
  713. package/.next/static/chunks/app/api/repositories/clone/route-ee11f7b8a34cba8c.js +0 -1
  714. package/.next/static/chunks/app/api/repositories/excluded/route-ee11f7b8a34cba8c.js +0 -1
  715. package/.next/static/chunks/app/api/repositories/restore/route-ee11f7b8a34cba8c.js +0 -1
  716. package/.next/static/chunks/app/api/repositories/route-ee11f7b8a34cba8c.js +0 -1
  717. package/.next/static/chunks/app/api/repositories/scan/route-ee11f7b8a34cba8c.js +0 -1
  718. package/.next/static/chunks/app/api/repositories/sync/route-ee11f7b8a34cba8c.js +0 -1
  719. package/.next/static/chunks/app/api/repositories/validate-path/route-ee11f7b8a34cba8c.js +0 -1
  720. package/.next/static/chunks/app/api/settings/default-agents/route-ee11f7b8a34cba8c.js +0 -1
  721. package/.next/static/chunks/app/api/settings/default-surface-mode/route-ee11f7b8a34cba8c.js +0 -1
  722. package/.next/static/chunks/app/api/sidebar/group-order/route-ee11f7b8a34cba8c.js +0 -1
  723. package/.next/static/chunks/app/api/skills/[id]/route-ee11f7b8a34cba8c.js +0 -1
  724. package/.next/static/chunks/app/api/skills/installations/route-ee11f7b8a34cba8c.js +0 -1
  725. package/.next/static/chunks/app/api/skills/operations/route-ee11f7b8a34cba8c.js +0 -1
  726. package/.next/static/chunks/app/api/skills/reindex/route-ee11f7b8a34cba8c.js +0 -1
  727. package/.next/static/chunks/app/api/skills/route-ee11f7b8a34cba8c.js +0 -1
  728. package/.next/static/chunks/app/api/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
  729. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
  730. package/.next/static/chunks/app/api/tasks/[taskId]/route-ee11f7b8a34cba8c.js +0 -1
  731. package/.next/static/chunks/app/api/templates/[id]/route-ee11f7b8a34cba8c.js +0 -1
  732. package/.next/static/chunks/app/api/templates/route-ee11f7b8a34cba8c.js +0 -1
  733. package/.next/static/chunks/app/api/todos/route-ee11f7b8a34cba8c.js +0 -1
  734. package/.next/static/chunks/app/api/verification/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
  735. package/.next/static/chunks/app/api/verification/runs/route-ee11f7b8a34cba8c.js +0 -1
  736. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-ee11f7b8a34cba8c.js +0 -1
  737. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-ee11f7b8a34cba8c.js +0 -1
  738. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-ee11f7b8a34cba8c.js +0 -1
  739. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-ee11f7b8a34cba8c.js +0 -1
  740. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-ee11f7b8a34cba8c.js +0 -1
  741. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-ee11f7b8a34cba8c.js +0 -1
  742. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-ee11f7b8a34cba8c.js +0 -1
  743. package/.next/static/chunks/app/api/worktrees/[id]/env/route-ee11f7b8a34cba8c.js +0 -1
  744. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-ee11f7b8a34cba8c.js +0 -1
  745. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-ee11f7b8a34cba8c.js +0 -1
  746. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  747. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-ee11f7b8a34cba8c.js +0 -1
  748. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-ee11f7b8a34cba8c.js +0 -1
  749. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-ee11f7b8a34cba8c.js +0 -1
  750. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-ee11f7b8a34cba8c.js +0 -1
  751. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-ee11f7b8a34cba8c.js +0 -1
  752. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-ee11f7b8a34cba8c.js +0 -1
  753. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-ee11f7b8a34cba8c.js +0 -1
  754. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-ee11f7b8a34cba8c.js +0 -1
  755. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-ee11f7b8a34cba8c.js +0 -1
  756. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-ee11f7b8a34cba8c.js +0 -1
  757. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-ee11f7b8a34cba8c.js +0 -1
  758. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-ee11f7b8a34cba8c.js +0 -1
  759. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-ee11f7b8a34cba8c.js +0 -1
  760. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-ee11f7b8a34cba8c.js +0 -1
  761. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-ee11f7b8a34cba8c.js +0 -1
  762. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-ee11f7b8a34cba8c.js +0 -1
  763. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-ee11f7b8a34cba8c.js +0 -1
  764. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-ee11f7b8a34cba8c.js +0 -1
  765. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-ee11f7b8a34cba8c.js +0 -1
  766. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-ee11f7b8a34cba8c.js +0 -1
  767. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-ee11f7b8a34cba8c.js +0 -1
  768. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-ee11f7b8a34cba8c.js +0 -1
  769. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-ee11f7b8a34cba8c.js +0 -1
  770. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-ee11f7b8a34cba8c.js +0 -1
  771. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-ee11f7b8a34cba8c.js +0 -1
  772. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-ee11f7b8a34cba8c.js +0 -1
  773. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-ee11f7b8a34cba8c.js +0 -1
  774. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-ee11f7b8a34cba8c.js +0 -1
  775. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-ee11f7b8a34cba8c.js +0 -1
  776. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-ee11f7b8a34cba8c.js +0 -1
  777. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-ee11f7b8a34cba8c.js +0 -1
  778. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-ee11f7b8a34cba8c.js +0 -1
  779. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-ee11f7b8a34cba8c.js +0 -1
  780. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-ee11f7b8a34cba8c.js +0 -1
  781. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-ee11f7b8a34cba8c.js +0 -1
  782. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-ee11f7b8a34cba8c.js +0 -1
  783. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-ee11f7b8a34cba8c.js +0 -1
  784. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-ee11f7b8a34cba8c.js +0 -1
  785. package/.next/static/chunks/app/api/worktrees/[id]/route-ee11f7b8a34cba8c.js +0 -1
  786. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-ee11f7b8a34cba8c.js +0 -1
  787. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-ee11f7b8a34cba8c.js +0 -1
  788. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-ee11f7b8a34cba8c.js +0 -1
  789. package/.next/static/chunks/app/api/worktrees/[id]/search/route-ee11f7b8a34cba8c.js +0 -1
  790. package/.next/static/chunks/app/api/worktrees/[id]/send/route-ee11f7b8a34cba8c.js +0 -1
  791. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-ee11f7b8a34cba8c.js +0 -1
  792. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-ee11f7b8a34cba8c.js +0 -1
  793. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-ee11f7b8a34cba8c.js +0 -1
  794. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-ee11f7b8a34cba8c.js +0 -1
  795. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-ee11f7b8a34cba8c.js +0 -1
  796. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-ee11f7b8a34cba8c.js +0 -1
  797. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-ee11f7b8a34cba8c.js +0 -1
  798. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-ee11f7b8a34cba8c.js +0 -1
  799. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
  800. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-ee11f7b8a34cba8c.js +0 -1
  801. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-ee11f7b8a34cba8c.js +0 -1
  802. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-ee11f7b8a34cba8c.js +0 -1
  803. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-ee11f7b8a34cba8c.js +0 -1
  804. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-ee11f7b8a34cba8c.js +0 -1
  805. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
  806. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
  807. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  808. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-ee11f7b8a34cba8c.js +0 -1
  809. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  810. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-ee11f7b8a34cba8c.js +0 -1
  811. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-ee11f7b8a34cba8c.js +0 -1
  812. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
  813. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
  814. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-ee11f7b8a34cba8c.js +0 -1
  815. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-ee11f7b8a34cba8c.js +0 -1
  816. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-ee11f7b8a34cba8c.js +0 -1
  817. package/.next/static/chunks/app/api/worktrees/route-ee11f7b8a34cba8c.js +0 -1
  818. package/.next/static/chunks/app/manifest.webmanifest/route-ee11f7b8a34cba8c.js +0 -1
  819. package/.next/static/chunks/app/proxy/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  820. package/.next/static/chunks/app/worktrees/[id]/layout-ee11f7b8a34cba8c.js +0 -1
  821. package/.next/static/chunks/app/worktrees/[id]/page-7a0915e32a2af4d3.js +0 -1
  822. package/.next/static/chunks/webpack-9f75198882fdaf08.js +0 -1
  823. package/.next/static/css/5c13ea243dfdcb66.css +0 -1
  824. /package/.next/static/{GiOqe8rfQGQ0NvzB5qr3q → UIUPchtWvcEuQgcbGJv4g}/_ssgManifest.js +0 -0
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ /**
3
+ * Antigravity (agy)'s numbered permission dialogs, read on their own terms
4
+ * (Issue #2364).
5
+ *
6
+ * ## What was measured (agy 1.1.27, pane 200x1000, 2026-09-06)
7
+ *
8
+ * `tests/fixtures/antigravity-live-2364/` holds the frames. The two that this
9
+ * module exists for:
10
+ *
11
+ * | frame | question | options | shape |
12
+ * |---------------------------|---------------------------------|---------|------------------------------------|
13
+ * | `dialog-create-file.txt` | `Allow creation of this file?` | 2 | diff preview above the question |
14
+ * | `dialog-bash-wrapped.txt` | `Do you want to proceed?` | 4 | options 2 and 3 wrap onto 3 rows |
15
+ *
16
+ * Before this Issue the first resolved as `antigravity_selection_list`
17
+ * (`hasActivePrompt: false`, so the chat surface drew an arrow pad and no
18
+ * yes/no panel) because Issue #2270's discriminator was the sentence `Do you
19
+ * want to proceed?`; the second passed the discriminator and then failed in the
20
+ * generic multiple-choice parser, which reads one row per option, so the
21
+ * `esc to cancel` status row fell through to the thinking pattern and the pane
22
+ * was published as `running` / `thinking_indicator` — "generating", with `wait`
23
+ * never returning. agy prints the command text inside the option label, so
24
+ * every Bash approval of a multi-line command takes the second shape.
25
+ *
26
+ * ## What this reads
27
+ *
28
+ * The block between the nearest boundary row and the `↑/↓ Navigate` footer
29
+ * ({@link locateAntigravityDialogRegion}), through the shared
30
+ * {@link findNumberedOptionBlock}: a run of `N. label` rows descending to `1.`,
31
+ * every non-numbered row folded into the label above it, the `>` gutter naming
32
+ * the highlighted option. The question is the one `?`-terminated row directly
33
+ * above option 1 — NOT the five rows the generic parser joins, which on the
34
+ * file-creation menu put the diff preview into the question
35
+ * (`…hello-agy.txt +1 1 + hello from antigravity Allow creation of this file?`).
36
+ * The diff, the command and the panel header go to `instructionText`, where the
37
+ * prompt panels render them as context.
38
+ *
39
+ * ## Who calls it
40
+ *
41
+ * Every producer of the wire, so that they cannot disagree about one screen:
42
+ * `antigravity/detect.ts` (the status verdict `/current-output` publishes),
43
+ * `polling/response-checker.ts` (`detectPromptOnCleanFrame` — the `prompt` row
44
+ * the poller stores, the push notification it raises, AND the Auto-Yes poller's
45
+ * reading) and the `prompt-response` route's re-verification.
46
+ *
47
+ * Issue #2364 left the Auto-Yes poller on the generic pass, on the premise that
48
+ * agy's `PreToolUse` hook answers the permission request before the dialog is
49
+ * drawn. Measured false (#2368): agy 1.1.27 ignores a hook `allow` in
50
+ * interactive mode and draws the dialog anyway (#1779), so agy's Auto-Yes
51
+ * depends entirely on this TUI reading — and without it every wrapped Bash
52
+ * approval sat unanswered while `/current-output` published it as waiting.
53
+ * #2368 put that poller on the same entry.
54
+ *
55
+ * Deliberately NOT a change to the generic multiple-choice parser: folding
56
+ * continuation rows there would change what every other tool's dialogs read
57
+ * as, and each of those readings is pinned to its own live captures.
58
+ *
59
+ * ## Input contract
60
+ *
61
+ * ANSI-stripped text; box drawing optional (the poller's copy has been through
62
+ * `stripBoxDrawing`, the status path's has not, and the block is bounded the
63
+ * same way on both — see {@link ANTIGRAVITY_DIALOG_BOUNDARY_PATTERN}).
64
+ */
65
+ Object.defineProperty(exports, "__esModule", { value: true });
66
+ exports.readAntigravityNumberedDialog = readAntigravityNumberedDialog;
67
+ exports.detectAntigravityNumberedDialogPrompt = detectAntigravityNumberedDialogPrompt;
68
+ const cli_patterns_1 = require("../../cli-patterns");
69
+ const prompt_detect_multiple_choice_1 = require("../../prompt-detect-multiple-choice");
70
+ const tui_detection_frame_1 = require("../../tui-detection-frame");
71
+ const dialog_block_1 = require("../dialog-block");
72
+ /**
73
+ * How many non-blank rows above option 1 may be searched for the question.
74
+ *
75
+ * On every measured frame the question is the row directly above option 1;
76
+ * the allowance is for a blank row or a wrapped question, not for reaching up
77
+ * into the diff preview.
78
+ */
79
+ const QUESTION_SCAN_ROWS = 3;
80
+ /**
81
+ * How far above the question the panel header may sit.
82
+ *
83
+ * The `●` tool-call row that opens the panel is what `instructionText` starts
84
+ * under; the cap keeps a frame with no such row from carrying the whole
85
+ * transcript into the panel text.
86
+ */
87
+ const INSTRUCTION_LOOKBACK_ROWS = 40;
88
+ /**
89
+ * How many non-blank rows under the bottom option row may be its wrapped tail.
90
+ *
91
+ * Handed to {@link findNumberedOptionBlock} as its footer scan, because the
92
+ * region this reader hands it ends above the real footer. Sized well past the
93
+ * three-row labels agy 1.1.27 draws; a command long enough to exceed it is
94
+ * elided by agy itself (`pr...'`).
95
+ */
96
+ const LAST_OPTION_TAIL_ROWS = 12;
97
+ /** The `●` tool-call row that opens every measured agy permission panel. */
98
+ const TOOL_CALL_ROW_PATTERN = /^\s*●\s/;
99
+ /** A horizontal rule; dropped from `instructionText`, where a 200-column rule is noise. */
100
+ const RULE_ROW_PATTERN = /^\s*─{3,}\s*$/;
101
+ /** A row that asks something — the shape the question row takes on every measured dialog. */
102
+ const QUESTION_ROW_PATTERN = /[??]\s*$/;
103
+ /**
104
+ * The same tail limits `prompt-detector.ts` applies to `rawContent`
105
+ * (`RAW_CONTENT_MAX_LINES` / `RAW_CONTENT_MAX_CHARS`), restated because that
106
+ * helper is private to it. A prompt row stores this text as its message body,
107
+ * so an unbounded 1000-row pane must not go in.
108
+ */
109
+ const RAW_CONTENT_MAX_LINES = 200;
110
+ const RAW_CONTENT_MAX_CHARS = 5000;
111
+ function truncateRawContent(content) {
112
+ const lines = content.split('\n');
113
+ const tail = lines.length > RAW_CONTENT_MAX_LINES ? lines.slice(-RAW_CONTENT_MAX_LINES) : lines;
114
+ const joined = tail.join('\n');
115
+ return joined.length > RAW_CONTENT_MAX_CHARS ? joined.slice(-RAW_CONTENT_MAX_CHARS) : joined;
116
+ }
117
+ /**
118
+ * Read agy's numbered dialog off ANSI-stripped rows.
119
+ *
120
+ * Null when the frame has no `↑/↓ Navigate` footer, when the rows above it do
121
+ * not form a numbered run reaching `1.` (the Switch Model picker, the trust
122
+ * screen, the slash popup), or when the block sits under a `Switch Model`
123
+ * header. A caller that has already passed `isAntigravityNumberedDialog` and
124
+ * still gets null here is looking at a numbered dialog this reader cannot
125
+ * parse — which is an unclassified frame, not a picker.
126
+ */
127
+ function readAntigravityNumberedDialog(lines) {
128
+ const region = (0, cli_patterns_1.locateAntigravityDialogRegion)(lines);
129
+ if (region === null)
130
+ return null;
131
+ const regionRows = lines.slice(region.start, region.footer);
132
+ if (regionRows.some(row => cli_patterns_1.ANTIGRAVITY_SWITCH_MODEL_HEADER_PATTERN.test(row)))
133
+ return null;
134
+ // The slice stops ABOVE the footer row, so the rows the block reader files
135
+ // as `footer` — the non-option rows between the bottom option and the region
136
+ // end — are the wrapped tail of the LAST option, not chrome: agy 1.1.27 draws
137
+ // `6. No, and always deny for commands that start with '<cmd>` over three
138
+ // rows on a repeated denial (`dialog-bash-wrapped-six.txt`), and the
139
+ // `↑/↓ Navigate` footer this region is anchored on already vouched for the
140
+ // block. Every other row of the region above the block is question / preview
141
+ // and never reached (the run stops at `1.`).
142
+ const block = (0, dialog_block_1.findNumberedOptionBlock)(regionRows, regionRows.length, LAST_OPTION_TAIL_ROWS);
143
+ if (block === null)
144
+ return null;
145
+ const options = [...block.options];
146
+ if (block.footer !== '') {
147
+ const last = options.length - 1;
148
+ options[last] = [options[last], ...block.footer.split('\n')].join(' ').trim();
149
+ }
150
+ const firstOptionRow = region.start + block.firstRow;
151
+ // The question: the nearest `?`-terminated row above option 1, looking past
152
+ // blank rows and at most QUESTION_SCAN_ROWS non-blank ones, none of which
153
+ // may be a boundary (that would be the previous turn, not this panel).
154
+ let questionRow = -1;
155
+ let fallbackRow = -1;
156
+ let scanned = 0;
157
+ for (let i = firstOptionRow - 1; i >= region.start && scanned < QUESTION_SCAN_ROWS; i--) {
158
+ const row = lines[i];
159
+ if (row.trim() === '')
160
+ continue;
161
+ if (cli_patterns_1.ANTIGRAVITY_DIALOG_BOUNDARY_PATTERN.test(row) || RULE_ROW_PATTERN.test(row))
162
+ break;
163
+ scanned++;
164
+ if (fallbackRow < 0)
165
+ fallbackRow = i;
166
+ if (QUESTION_ROW_PATTERN.test(row)) {
167
+ questionRow = i;
168
+ break;
169
+ }
170
+ }
171
+ if (questionRow < 0)
172
+ questionRow = fallbackRow;
173
+ return {
174
+ question: questionRow < 0 ? 'Please select an option:' : lines[questionRow].trim(),
175
+ options,
176
+ selectedIndex: block.selectedIndex,
177
+ questionRow: questionRow < 0 ? firstOptionRow : questionRow,
178
+ firstOptionRow,
179
+ footerRow: region.footer,
180
+ };
181
+ }
182
+ /**
183
+ * The panel text above the options, for the prompt panels' context box.
184
+ *
185
+ * From the row under the `●` tool-call row that opened the panel (`Command`,
186
+ * `Create file`, the `Requesting permission for:` block, the diff preview),
187
+ * through the question, the options and the footer — rules dropped. Falls back
188
+ * to the dialog region when no tool-call row is within reach.
189
+ */
190
+ function extractInstructionText(lines, dialog) {
191
+ const region = (0, cli_patterns_1.locateAntigravityDialogRegion)(lines);
192
+ let start = region?.start ?? dialog.questionRow;
193
+ const floor = Math.max(0, dialog.questionRow - INSTRUCTION_LOOKBACK_ROWS);
194
+ for (let i = dialog.questionRow - 1; i >= floor; i--) {
195
+ if (TOOL_CALL_ROW_PATTERN.test(lines[i])) {
196
+ start = i + 1;
197
+ break;
198
+ }
199
+ }
200
+ const text = lines
201
+ .slice(start, dialog.footerRow + 1)
202
+ .filter(row => !RULE_ROW_PATTERN.test(row))
203
+ .map(row => row.trimEnd())
204
+ .join('\n')
205
+ .trim();
206
+ return text.length > 0 ? text : undefined;
207
+ }
208
+ /**
209
+ * Read agy's numbered dialog as the `multiple_choice` prompt the rest of the
210
+ * system consumes, or null when the frame does not carry one.
211
+ *
212
+ * The result has the same shape `detectPrompt` produces for a numbered dialog
213
+ * — `promptData.type === 'multiple_choice'`, `options[].isDefault` on the
214
+ * highlighted row, `instructionText` / `approvalTarget` / `rawContent` filled
215
+ * the way Issues #235 and #1699 defined them — so `PromptPanel`,
216
+ * `MobilePromptSheet`, `respond`, the deny patterns and the prompt-history
217
+ * writers all read it unchanged.
218
+ *
219
+ * @param text - ANSI-stripped capture, box drawing optional
220
+ */
221
+ function detectAntigravityNumberedDialogPrompt(text) {
222
+ const normalized = (0, tui_detection_frame_1.normalizeTuiFrameForDetection)(text);
223
+ const lines = normalized.split('\n');
224
+ const dialog = readAntigravityNumberedDialog(lines);
225
+ if (dialog === null)
226
+ return null;
227
+ return (0, prompt_detect_multiple_choice_1.buildMultipleChoiceResult)(dialog.question, dialog.options.map((label, index) => ({
228
+ number: index + 1,
229
+ label,
230
+ isDefault: index === dialog.selectedIndex,
231
+ })), {
232
+ instructionText: extractInstructionText(lines, dialog),
233
+ // Issue #1699's machine-facing surface: bounded above at the previous
234
+ // turn's boundary and below at the footer, so the command in the
235
+ // `Requesting permission for:` block and in the labels is judged and
236
+ // nothing from an earlier, already-answered approval is.
237
+ approvalTarget: (0, prompt_detect_multiple_choice_1.joinApprovalTarget)(lines, (0, prompt_detect_multiple_choice_1.findApprovalContextStart)(lines, dialog.questionRow), dialog.footerRow),
238
+ }, normalized, truncateRawContent);
239
+ }
@@ -55,6 +55,13 @@
55
55
  * numbered-response path, because Command Code fires `PreToolUse` AFTER the
56
56
  * dialog is answered, so a hook-driven permission decision cannot dismiss it.
57
57
  *
58
+ * Issue #2369 added a second `afterPrompt` branch for the other screen the
59
+ * shared chain could not read: the `/usage` panel, whose last row is
60
+ * `Press Esc to close`. It is not a picker — nothing moves, nothing commits —
61
+ * so it gets a reason of its own rather than the selection-list token, and the
62
+ * chat surface answers it with the one key it accepts. See
63
+ * `STATUS_REASON.COMMAND_CODE_DISMISSABLE_PANEL`.
64
+ *
58
65
  * `afterPrompt` arrived with Issue #2297, for the one screen the shared chain
59
66
  * genuinely could not read: the picker `/model` opens. It is a provider-grouped
60
67
  * list of model NAMES — no option numbers — over a `› Type to search models...`
@@ -106,6 +113,32 @@ exports.commandCodeStatusDetector = (0, run_detection_1.createToolStatusDetector
106
113
  tool: 'command-code',
107
114
  verifiedAgainst: exports.VERIFIED_AGAINST,
108
115
  afterPrompt(frame) {
116
+ // Issue #2369. `/usage` opens a READ-ONLY panel: a plan header, two usage
117
+ // meters, a breakdown URL, and `Press Esc to close` as its last row. It is
118
+ // matched before the picker footer below because the two are mutually
119
+ // exclusive sentences and this one is the more specific — a whole row that
120
+ // offers a dismiss and nothing else.
121
+ //
122
+ // `waiting` rather than `running`, which is the half of this branch that
123
+ // fixes the reported defect: `isUnclassifiedFrame` (`session/status-evidence`)
124
+ // is `status === 'running' && <floor reason>`, so a `waiting` verdict takes
125
+ // `isUnclassifiedActive` down with it and the chat surface stops answering
126
+ // an eighteen-button card to a one-key panel. The reason is deliberately NOT
127
+ // in `SELECTION_LIST_REASONS`: there is no highlight here, so the arrow pad
128
+ // would be as wrong as the answer keys were. `current-output-builder`
129
+ // publishes it as `isDismissablePanelActive` instead.
130
+ //
131
+ // A human still has to press the key, so `waiting` is also the honest word:
132
+ // nothing on this pane will move until they do.
133
+ if (selection_shape_1.DISMISSABLE_PANEL_FOOTER_PATTERN.test(frame.lastLines)) {
134
+ return {
135
+ status: 'waiting',
136
+ confidence: 'high',
137
+ reason: status_reason_1.STATUS_REASON.COMMAND_CODE_DISMISSABLE_PANEL,
138
+ hasActivePrompt: false,
139
+ evidence: 'positive',
140
+ };
141
+ }
109
142
  // Issue #2297. Command Code's pickers (`/model` measured live on v1.40.1 at
110
143
  // 200x1000) are arrow-driven overlays with a search box and a lower-case
111
144
  // hint-bar footer. Nothing in the shared chain reads that footer, so before
@@ -74,35 +74,35 @@ exports.OPENCODE_VERIFIED_AGAINST = {
74
74
  paneGeometry: '80x200',
75
75
  };
76
76
  /**
77
- * agy these rules were read off (#988 / #995 footer + selection rules, re-read
78
- * against the #2270 live panes).
77
+ * agy these rules were read off (#988 / #995 footer + selection rules, #2270's
78
+ * numbered-dialog carve-out, re-measured and re-captured by #2364).
79
79
  *
80
- * Bumped from `0.4.x` / `2026-07-30` / `inline` because the frames were
81
- * RE-CAPTURED, not because the binary moved: #2270 drove agy 1.1.25 on a private
82
- * tmux socket at the production geometry and kept both panes inline in
83
- * `tests/unit/status-detector-selection.test.ts`
84
- * (`AGY_1125_PERMISSION_PANE`, `AGY_1125_SWITCH_MODEL_PANE`) under the banner
85
- * `Antigravity CLI 1.1.25`, trailing pane padding included. The
86
- * `Do you want to proceed?` + `N. label` rules were measured off those frames,
87
- * and `ANTIGRAVITY_SELECTION_LIST_PATTERN` (#995 / #997) was re-checked against
88
- * them and left unchanged.
80
+ * Bumped from 1.1.25 because the frames were RE-CAPTURED and the rules CHANGED:
81
+ * #2364 drove agy 1.1.27 on a private tmux socket at the production geometry and
82
+ * kept the frames in `tests/fixtures/antigravity-live-2364/` the file-creation
83
+ * menu (`Allow creation of this file?`, two options), the Bash approval whose
84
+ * option labels wrap onto three rows each, the one-row Bash approval #2270 had
85
+ * measured on 1.1.25, the `/model` picker, the folder-trust screen, the
86
+ * slash-command popup, and the first live IDLE agy frame. The numbered-dialog
87
+ * discriminator (`isAntigravityNumberedDialog`) was rewritten off those frames
88
+ * from a question-line match to the footer + numbered-row structure, and the
89
+ * dialogs are now read by `tools/antigravity/dialog.ts` rather than by the
90
+ * generic multiple-choice parser. `ANTIGRAVITY_SELECTION_LIST_PATTERN`
91
+ * (#995 / #997) was re-checked against every frame and left unchanged.
89
92
  *
90
- * `paneGeometry` leaves `inline` because the 1.1.25 permission dialog draws no
91
- * composer row at all — it reproduces only at the 200x1000 pane the server
92
- * captures, and a fixture without the ~970 blank padding rows exercises a
93
- * different `lastLines` slice than production does. That is a statement about
94
- * the capture condition, not about agy: the scrollback-retained rendering the
95
- * `afterThinking` footer rules rest on (#988) is unchanged, and the 1.1.25
96
- * dialog still ends on `esc to cancel`.
93
+ * The #2270 1.1.25 panes stay where they are
94
+ * (`tests/unit/status-detector-selection.test.ts`) and the rules still answer
95
+ * for both builds.
97
96
  *
98
- * What this stamp does NOT claim: #2270 captured `waiting` frames only, so the
99
- * idle (`? for shortcuts`) and generating (spinner) branches are carried over
100
- * from the 0.4 captures rather than re-measured. A live IDLE 1.1.25 frame is
101
- * still uncapturedsee the `readIdleEvidence` note in `antigravity/detect.ts`.
97
+ * What this stamp does NOT claim: the generating (spinner) branch is still
98
+ * carried over from the 0.4 captures rather than re-measured, and the
99
+ * post-answer survey (`[1] Good [0] Skip`) was seen once on the production
100
+ * server and reconstructed from its cleaned rows — the raw frame is not in the
101
+ * fixture directory (see its README).
102
102
  */
103
103
  exports.ANTIGRAVITY_VERIFIED_AGAINST = {
104
- version: '1.1.25',
105
- capturedAt: '2026-09-04',
104
+ version: '1.1.27',
105
+ capturedAt: '2026-09-06',
106
106
  paneGeometry: '200x1000',
107
107
  };
108
108
  /**
@@ -27,6 +27,17 @@
27
27
  * 1. **The key is already on a row** — nothing happens. The callers are pollers,
28
28
  * so being asked to record the same prompt again is the normal case rather
29
29
  * than an error.
30
+ * 1b. **A RELAY delivery's row already holds this text** (Issue #2392) — the
31
+ * same answer, reached without the key. A relay hands session A the reply
32
+ * session B wrote by sending it into A's composer, and the row it writes
33
+ * carries `relay:<ledgerId>` so that the ledger can be read back out of it
34
+ * (#2387). Being keyed is exactly what put it beyond outcome 2's claim, so
35
+ * until this Issue every delivery left the operator reading the reply twice.
36
+ * The row is recognised here but deliberately **not** claimed: nothing is
37
+ * written, its key stays `relay:<ledgerId>`, and the caller is told
38
+ * `already-recorded` with that row's id — because re-pointing it at a
39
+ * transcript key would take the loop guard's only route back to the ledger
40
+ * away with it.
30
41
  * 2. **An unkeyed row already holds this text** — that row is *claimed*, not
31
42
  * duplicated. This is the `/send` case, and it is the whole reason the
32
43
  * recorder is not simply an insert: `sendUserMessage` wrote the operator's
@@ -203,37 +214,46 @@ async function recordUserTurn(target, key, content, timestampMs, options = {}) {
203
214
  }
204
215
  }
205
216
  /**
206
- * Claim the `/send` row for this prompt, if there is one.
217
+ * Recognise the row this prompt is already on, if there is one.
207
218
  *
208
- * The candidates come back newest first and are compared on normalised content;
209
- * the one nearest the agent's clock wins, which only matters when the operator
210
- * sent the same text twice inside the window and is the right tie-break then
211
- * too.
219
+ * One window, two kinds of row in it, and what may be done with them differs:
212
220
  *
213
- * The claim itself can lose `setMessageRequestId` refuses a row that acquired
214
- * a key between the read and the write. Losing means some other producer got
215
- * there first, so the next candidate is tried and, if none is left, the caller
216
- * falls through to the insert. It cannot loop: each attempt either claims a row
217
- * or removes it from contention.
221
+ * 1. the `/send` row, which carries no key and is **claimed** — this is #2196's
222
+ * case and the reason the recorder is not simply an insert;
223
+ * 2. a relay delivery's row, which carries `relay:<ledgerId>` and is **left
224
+ * exactly as it is** Issue #2392. `includeRelayDelivered` is what puts it
225
+ * in the answer at all, and `requestId` is what tells the two apart.
218
226
  *
219
- * @returns The claimed row, or null when nothing here belongs to this prompt
227
+ * The claim is tried across every unkeyed candidate first, so the presence of a
228
+ * delivery cannot cost an orphan row its key. It can lose —
229
+ * `setMessageRequestId` refuses a row that acquired a key between the read and
230
+ * the write. Losing means some other producer got there first, so the next
231
+ * candidate is tried and, if none is left, the delivery is considered and then
232
+ * the caller falls through to the insert. It cannot loop: each attempt either
233
+ * claims a row or removes it from contention.
234
+ *
235
+ * @returns The row this prompt is on, or null when nothing here is this prompt's
220
236
  */
221
237
  function adoptExistingRow(chatDb, db, target, instanceId, key, normalized, at, options) {
222
238
  // `Math.min` and not a replacement: {@link RecordUserTurnOptions} may widen
223
239
  // the search backwards and may never narrow it, so a caller that supplies a
224
240
  // bound *inside* the standard window changes nothing.
225
241
  const fromMs = Math.min(at - exports.USER_TURN_ADOPTION_WINDOW_MS, options.adoptionFromMs ?? Number.POSITIVE_INFINITY);
226
- const candidates = chatDb
227
- .findUnkeyedUserMessages(db, {
242
+ const candidates = sameText(chatDb.findUnkeyedUserMessages(db, {
228
243
  worktreeId: target.worktreeId,
229
244
  cliToolId: target.cliToolId,
230
245
  instanceId,
231
246
  fromMs,
232
247
  toMs: at + exports.USER_TURN_ADOPTION_WINDOW_MS,
233
- })
234
- .filter((row) => normalizeUserTurnContent(row.content) === normalized)
235
- .sort((a, b) => Math.abs(a.timestamp.getTime() - at) - Math.abs(b.timestamp.getTime() - at));
248
+ // Issue #2392. Without this the relay delivery's row is not in the answer
249
+ // at all, and the prompt it holds is inserted a second time.
250
+ includeRelayDelivered: true,
251
+ }), normalized, at);
236
252
  for (const candidate of candidates) {
253
+ // A relay delivery, kept for the pass below: claiming it would overwrite the
254
+ // `relay:<ledgerId>` the loop guard reads the ledger back out of.
255
+ if (candidate.requestId)
256
+ continue;
237
257
  if (!chatDb.setMessageRequestId(db, candidate.id, key))
238
258
  continue;
239
259
  logger.info('user-turn-adopted', {
@@ -248,5 +268,48 @@ function adoptExistingRow(chatDb, db, target, instanceId, key, normalized, at, o
248
268
  timestampMs: candidate.timestamp.getTime(),
249
269
  };
250
270
  }
271
+ // Issue #2392. Nothing is written here and that is the whole point: the row
272
+ // already says what this prompt says, and its `request_id` is the loop guard's
273
+ // only way back to the ledger entry that produced it (`findParentRelayHops`,
274
+ // #2387). So the prompt is reported as recorded on the row that holds it, and
275
+ // the insert below is not reached. `setMessageRequestId` would refuse the
276
+ // write anyway — it is a compare-and-set on `request_id IS NULL` — but the
277
+ // branch above says so explicitly rather than leaning on that.
278
+ //
279
+ // No direction test on the timestamp, unlike #2387's `isEchoOfRelayRow`: that
280
+ // one is deciding whether a row it can already see is an echo, while this is
281
+ // deciding whether to write a row at all, and a transcript whose clock rounds
282
+ // a prompt to a whole second would land just *before* the delivery and bring
283
+ // the duplicate straight back. The symmetric window is safe here because the
284
+ // text being matched is a relay body — `buildRelayReplyMessage`'s framing, not
285
+ // anything an operator types.
286
+ const delivered = candidates.find((candidate) => candidate.requestId);
287
+ if (delivered) {
288
+ logger.info('user-turn-already-relayed', {
289
+ ...describe(target),
290
+ requestId: key,
291
+ messageId: delivered.id,
292
+ relayRequestId: delivered.requestId ?? null,
293
+ driftMs: delivered.timestamp.getTime() - at,
294
+ });
295
+ return {
296
+ outcome: 'already-recorded',
297
+ messageId: delivered.id,
298
+ timestampMs: delivered.timestamp.getTime(),
299
+ };
300
+ }
251
301
  return null;
252
302
  }
303
+ /**
304
+ * The rows here that hold this prompt's text, nearest the agent's clock first.
305
+ *
306
+ * Content is compared normalised, because that is the only comparison
307
+ * `chat_messages` cannot make for itself (see `findUnkeyedUserMessages`). The
308
+ * ordering only matters when the same text sits on two rows inside the window,
309
+ * and nearest-in-time is the right tie-break then too.
310
+ */
311
+ function sameText(rows, normalized, at) {
312
+ return rows
313
+ .filter((row) => normalizeUserTurnContent(row.content) === normalized)
314
+ .sort((a, b) => Math.abs(a.timestamp.getTime() - at) - Math.abs(b.timestamp.getTime() - at));
315
+ }
@@ -64,6 +64,7 @@ const path_1 = require("path");
64
64
  const safe_directory_1 = require("../../config/safe-directory");
65
65
  const env_1 = require("../../lib/env");
66
66
  const types_1 = require("../../lib/cli-tools/types");
67
+ const model_switch_1 = require("../../lib/hooks/sources/claude/model-switch");
67
68
  const tool_id_1 = require("../../lib/hooks/sources/claude/tool-id");
68
69
  const permission_request_payload_1 = require("../../lib/hooks/permission-request-payload");
69
70
  const logger_1 = require("../../lib/logger");
@@ -343,6 +344,17 @@ function buildSessionStartCommand(target, options = {}) {
343
344
  * hook and nothing here delivers it — Claude enforces it itself, before any
344
345
  * `PermissionRequest` exists — which is precisely why it belongs next to the
345
346
  * hook that Auto-Yes answers rather than in the contract layer above it.
347
+ *
348
+ * `PostModelSwitch` (Issue #2363) is the structured report of a `/model` or
349
+ * `/fast` switch, measured on 2.1.263 to reach a `type: "http"` hook injected
350
+ * through this very file (`lib/hooks/sources/claude/model-switch` has the
351
+ * payload). It posts to the event receiver with no matcher: the event fires
352
+ * only when the model actually changes, so there is nothing to narrow. Its
353
+ * `PreModelSwitch` twin is deliberately NOT registered — it is a decision hook
354
+ * whose reply can block the switch, the probe's second session saw it fire
355
+ * twice per switch with inconsistent `from_model` values, and the `Post` event
356
+ * alone says what happened. The omission is pinned by
357
+ * `tests/unit/lib/hooks/hook-settings-post-model-switch-2363.test.ts`.
346
358
  */
347
359
  function buildAgentHookSettings(target, options = {}) {
348
360
  const url = buildAgentEventUrl(target, options);
@@ -369,6 +381,10 @@ function buildAgentHookSettings(target, options = {}) {
369
381
  // Issue #1726. The event receiver, not the permission one: observation.
370
382
  PreToolUse: [{ matcher: exports.TOOL_USE_MATCHER, hooks: [http()] }],
371
383
  PostToolUse: [{ matcher: exports.TOOL_USE_MATCHER, hooks: [http()] }],
384
+ // Issue #2363. The model the session is now on, on every `/model` and
385
+ // `/fast` that changes it. Observation, so the event receiver; and only
386
+ // the `Post` half — see the function comment.
387
+ [model_switch_1.CLAUDE_POST_MODEL_SWITCH_EVENT_NAME]: [{ hooks: [http()] }],
372
388
  // Issue #1724. Points at its own receiver, not the event one.
373
389
  PermissionRequest: [{ hooks: [permissionHttp()] }],
374
390
  },