commandmate 0.44.1 → 0.44.3

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 (604) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +169 -169
  3. package/.next/app-path-routes-manifest.json +35 -35
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +0 -6
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/update/route.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.js +1 -1
  12. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update/route.js +2 -2
  15. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/login/route.js +1 -1
  18. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/capabilities/route.js +1 -1
  22. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/route.js +1 -1
  24. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  27. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  28. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  31. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/external-apps/route.js +1 -1
  33. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  37. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  38. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  40. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  41. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  43. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  44. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/push/escalation/route.js +1 -1
  48. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/push/subscriptions/route.js +2 -2
  50. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/push/vapid/route.js +1 -1
  52. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  54. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  55. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/relays/route.js +1 -1
  57. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  58. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  61. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  63. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/clone/route.js +1 -1
  66. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/restore/route.js +1 -1
  70. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  71. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/repositories/route.js +1 -1
  73. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  74. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/scan/route.js +1 -1
  76. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  77. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/repositories/sync/route.js +1 -1
  79. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  80. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  83. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  84. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/sidebar/group-order/route.js +1 -1
  87. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/skills/[id]/route.js +1 -1
  89. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/skills/route.js +1 -1
  94. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/templates/[id]/route.js +2 -2
  99. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/templates/route.js +2 -2
  101. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  106. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  109. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  112. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -3
  117. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  118. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  121. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  124. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  128. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  129. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -2
  192. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -2
  195. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  199. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  208. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +2 -2
  211. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
  214. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  219. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +3 -3
  221. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  240. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  241. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/route.js +1 -1
  264. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  265. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  267. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  269. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  270. package/.next/server/app/page_client-reference-manifest.js +1 -1
  271. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  273. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  274. package/.next/server/app/sessions/page.js +1 -1
  275. package/.next/server/app/sessions/page.js.nft.json +1 -1
  276. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  277. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  278. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  279. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  280. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  281. package/.next/server/app/worktrees/[id]/page.js +11 -11
  282. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  283. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  284. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  285. package/.next/server/app-paths-manifest.json +35 -35
  286. package/.next/server/chunks/1191.js +2 -2
  287. package/.next/server/chunks/1210.js +1 -1
  288. package/.next/server/chunks/1559.js +2 -0
  289. package/.next/server/chunks/1789.js +1 -0
  290. package/.next/server/chunks/2119.js +1 -1
  291. package/.next/server/chunks/2404.js +1 -1
  292. package/.next/server/chunks/2445.js +1 -1
  293. package/.next/server/chunks/2460.js +1 -0
  294. package/.next/server/chunks/2710.js +1 -1
  295. package/.next/server/chunks/2908.js +1 -0
  296. package/.next/server/chunks/2980.js +1 -1
  297. package/.next/server/chunks/3241.js +1 -1
  298. package/.next/server/chunks/3480.js +1 -1
  299. package/.next/server/chunks/3718.js +1 -1
  300. package/.next/server/chunks/4207.js +2 -2
  301. package/.next/server/chunks/450.js +1 -1
  302. package/.next/server/chunks/4672.js +5 -0
  303. package/.next/server/chunks/{9353.js → 4718.js} +2 -2
  304. package/.next/server/chunks/4837.js +14 -0
  305. package/.next/server/chunks/5048.js +1 -1
  306. package/.next/server/chunks/5209.js +1 -0
  307. package/.next/server/chunks/5595.js +1 -0
  308. package/.next/server/chunks/5625.js +25 -0
  309. package/.next/server/chunks/5845.js +1 -0
  310. package/.next/server/chunks/611.js +1 -1
  311. package/.next/server/chunks/6130.js +1 -1
  312. package/.next/server/chunks/6401.js +1 -1
  313. package/.next/server/chunks/6781.js +1 -1
  314. package/.next/server/chunks/6793.js +3 -3
  315. package/.next/server/chunks/7491.js +2 -2
  316. package/.next/server/chunks/7905.js +1 -1
  317. package/.next/server/chunks/850.js +1 -0
  318. package/.next/server/chunks/8543.js +1 -1
  319. package/.next/server/chunks/8728.js +3 -3
  320. package/.next/server/chunks/8791.js +1 -1
  321. package/.next/server/chunks/8800.js +1 -1
  322. package/.next/server/chunks/8918.js +7 -7
  323. package/.next/server/chunks/9130.js +1 -5
  324. package/.next/server/chunks/9390.js +2 -3
  325. package/.next/server/chunks/9584.js +1 -1
  326. package/.next/server/chunks/9627.js +6 -6
  327. package/.next/server/chunks/9731.js +3 -3
  328. package/.next/server/middleware-manifest.json +5 -5
  329. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  330. package/.next/server/pages/500.html +1 -1
  331. package/.next/server/server-reference-manifest.json +1 -1
  332. package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
  333. package/.next/static/chunks/{2407-f1f258d4a1d92620.js → 2407-06d35bb1aa02de80.js} +1 -1
  334. package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
  335. package/.next/static/chunks/4727-5d695d71e3fdf97b.js +1 -0
  336. package/.next/static/chunks/{8165-3853772f6ae1299b.js → 8165-3525fb42f1b4976e.js} +1 -1
  337. package/.next/static/chunks/app/{layout-da66300cc20244ed.js → layout-0d1750b833f5cc3e.js} +1 -1
  338. package/.next/static/chunks/app/sessions/page-2af68c63211c751f.js +1 -0
  339. package/.next/static/chunks/app/worktrees/[id]/page-e36898c3a80e7302.js +1 -0
  340. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
  341. package/.next/static/css/057f64a65726c439.css +1 -0
  342. package/.next/trace +13 -13
  343. package/dist/cli/commands/ask.d.ts.map +1 -1
  344. package/dist/cli/commands/ask.js +120 -119
  345. package/dist/cli/commands/attach.d.ts +94 -0
  346. package/dist/cli/commands/attach.d.ts.map +1 -1
  347. package/dist/cli/commands/attach.js +145 -7
  348. package/dist/cli/commands/auto-yes.js +1 -1
  349. package/dist/cli/commands/capture.d.ts.map +1 -1
  350. package/dist/cli/commands/capture.js +10 -13
  351. package/dist/cli/commands/command-target.d.ts +23 -0
  352. package/dist/cli/commands/command-target.d.ts.map +1 -0
  353. package/dist/cli/commands/command-target.js +25 -0
  354. package/dist/cli/commands/instances.d.ts.map +1 -1
  355. package/dist/cli/commands/instances.js +41 -2
  356. package/dist/cli/commands/message-dispatch.d.ts +36 -0
  357. package/dist/cli/commands/message-dispatch.d.ts.map +1 -0
  358. package/dist/cli/commands/message-dispatch.js +63 -0
  359. package/dist/cli/commands/reply.d.ts.map +1 -1
  360. package/dist/cli/commands/reply.js +2 -5
  361. package/dist/cli/commands/respond.d.ts.map +1 -1
  362. package/dist/cli/commands/respond.js +3 -6
  363. package/dist/cli/commands/send.d.ts.map +1 -1
  364. package/dist/cli/commands/send.js +149 -146
  365. package/dist/cli/commands/wait.d.ts.map +1 -1
  366. package/dist/cli/commands/wait.js +608 -416
  367. package/dist/cli/types/api-responses.d.ts +174 -27
  368. package/dist/cli/types/api-responses.d.ts.map +1 -1
  369. package/dist/cli/types/api-responses.js +4 -2
  370. package/dist/cli/utils/api-client.d.ts +25 -5
  371. package/dist/cli/utils/api-client.d.ts.map +1 -1
  372. package/dist/cli/utils/api-client.js +87 -55
  373. package/dist/cli/utils/server-url.d.ts +1 -0
  374. package/dist/cli/utils/server-url.d.ts.map +1 -1
  375. package/dist/cli/utils/server-url.js +7 -0
  376. package/dist/config/uat-isolation.d.ts +140 -0
  377. package/dist/config/uat-isolation.d.ts.map +1 -0
  378. package/dist/config/uat-isolation.js +246 -0
  379. package/dist/lib/global-state.d.ts +12 -0
  380. package/dist/lib/global-state.d.ts.map +1 -0
  381. package/dist/lib/global-state.js +16 -0
  382. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +33 -0
  383. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -0
  384. package/dist/lib/polling/auto-yes-suppression-reason.js +2 -0
  385. package/dist/lib/session/prompt-view.d.ts +228 -0
  386. package/dist/lib/session/prompt-view.d.ts.map +1 -0
  387. package/dist/lib/session/prompt-view.js +290 -0
  388. package/dist/lib/session/status-evidence-type.d.ts +16 -0
  389. package/dist/lib/session/status-evidence-type.d.ts.map +1 -0
  390. package/dist/lib/session/status-evidence-type.js +2 -0
  391. package/dist/lib/tmux/legacy-session-alias.d.ts.map +1 -1
  392. package/dist/lib/tmux/legacy-session-alias.js +2 -1
  393. package/dist/server/locales/en/worktree.json +3 -1
  394. package/dist/server/locales/ja/worktree.json +3 -1
  395. package/dist/server/server.js +5 -3
  396. package/dist/server/src/cli/types/api-responses.js +4 -2
  397. package/dist/server/src/config/cli-tool-timing-config.js +1 -6
  398. package/dist/server/src/config/uat-isolation.js +246 -0
  399. package/dist/server/src/lib/assistant-response-saver.js +62 -3
  400. package/dist/server/src/lib/auto-yes-lifecycle.js +139 -0
  401. package/dist/server/src/lib/auto-yes-poller.js +465 -160
  402. package/dist/server/src/lib/auto-yes-state.js +2 -2
  403. package/dist/server/src/lib/cli-tools/antigravity.js +39 -80
  404. package/dist/server/src/lib/cli-tools/base.js +151 -0
  405. package/dist/server/src/lib/cli-tools/codex.js +44 -80
  406. package/dist/server/src/lib/cli-tools/command-code.js +24 -56
  407. package/dist/server/src/lib/cli-tools/copilot.js +25 -67
  408. package/dist/server/src/lib/cli-tools/direct-input.js +8 -0
  409. package/dist/server/src/lib/cli-tools/gemini.js +23 -73
  410. package/dist/server/src/lib/cli-tools/opencode-pane-width.js +53 -0
  411. package/dist/server/src/lib/cli-tools/opencode-v2.js +9 -7
  412. package/dist/server/src/lib/cli-tools/opencode.js +21 -85
  413. package/dist/server/src/lib/cli-tools/submit-verified-sender.js +127 -4
  414. package/dist/server/src/lib/cli-tools/vibe-local.js +21 -66
  415. package/dist/server/src/lib/detection/cli-patterns.js +374 -3047
  416. package/dist/server/src/lib/detection/idle-evidence-observation.js +2 -2
  417. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +7 -32
  418. package/dist/server/src/lib/detection/prompt-detector.js +2 -35
  419. package/dist/server/src/lib/detection/selection-shape-patterns.js +69 -0
  420. package/dist/server/src/lib/detection/selection-shape.js +32 -520
  421. package/dist/server/src/lib/detection/shared/pasted-text.js +41 -0
  422. package/dist/server/src/lib/detection/shared/shell-pane-command.js +16 -0
  423. package/dist/server/src/lib/detection/shared/strip-box-drawing.js +25 -0
  424. package/dist/server/src/lib/detection/status-detector.js +1 -1
  425. package/dist/server/src/lib/detection/tools/antigravity/detect.js +12 -60
  426. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +2 -15
  427. package/dist/server/src/lib/detection/tools/antigravity/live-region.js +39 -0
  428. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +286 -0
  429. package/dist/server/src/lib/detection/tools/claude/detect.js +11 -17
  430. package/dist/server/src/lib/detection/tools/claude/live-region.js +26 -0
  431. package/dist/server/src/lib/detection/tools/claude/patterns.js +264 -4
  432. package/dist/server/src/lib/detection/tools/claude/prompt.js +2 -10
  433. package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +1 -1
  434. package/dist/server/src/lib/detection/tools/codex/detect.js +71 -130
  435. package/dist/server/src/lib/detection/tools/codex/live-region.js +104 -0
  436. package/dist/server/src/lib/detection/tools/codex/patterns.js +855 -0
  437. package/dist/server/src/lib/detection/tools/codex/prompt.js +2 -10
  438. package/dist/server/src/lib/detection/tools/command-code/detect.js +19 -50
  439. package/dist/server/src/lib/detection/tools/command-code/dialog.js +2 -18
  440. package/dist/server/src/lib/detection/tools/command-code/live-region.js +36 -0
  441. package/dist/server/src/lib/detection/tools/command-code/patterns.js +234 -0
  442. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +461 -0
  443. package/dist/server/src/lib/detection/tools/context-above.js +20 -0
  444. package/dist/server/src/lib/detection/tools/copilot/detect.js +13 -35
  445. package/dist/server/src/lib/detection/tools/copilot/live-region.js +52 -0
  446. package/dist/server/src/lib/detection/tools/copilot/patterns.js +640 -0
  447. package/dist/server/src/lib/detection/tools/copilot/prompt.js +2 -10
  448. package/dist/server/src/lib/detection/tools/frame.js +36 -2
  449. package/dist/server/src/lib/detection/tools/gemini/patterns.js +29 -0
  450. package/dist/server/src/lib/detection/tools/live-region-specs.js +31 -0
  451. package/dist/server/src/lib/detection/tools/live-region.js +204 -0
  452. package/dist/server/src/lib/detection/tools/opencode/detect.js +11 -49
  453. package/dist/server/src/lib/detection/tools/opencode/live-region.js +24 -0
  454. package/dist/server/src/lib/detection/tools/opencode/patterns.js +508 -0
  455. package/dist/server/src/lib/detection/tools/opencode-gutter-live-region.js +72 -0
  456. package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +10 -42
  457. package/dist/server/src/lib/detection/tools/opencode-v2/live-region.js +24 -0
  458. package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +63 -0
  459. package/dist/server/src/lib/detection/tools/run-detection.js +31 -50
  460. package/dist/server/src/lib/detection/tools/verdicts.js +59 -0
  461. package/dist/server/src/lib/detection/tools/vibe-local/patterns.js +20 -0
  462. package/dist/server/src/lib/detection/truncate-raw-content.js +38 -0
  463. package/dist/server/src/lib/detection/turn-abandoned.js +66 -0
  464. package/dist/server/src/lib/detection/unclassified-frame-tracker.js +2 -2
  465. package/dist/server/src/lib/global-state.js +16 -0
  466. package/dist/server/src/lib/hooks/agent-session-telemetry.js +4 -6
  467. package/dist/server/src/lib/hooks/permission-decision-state.js +2 -2
  468. package/dist/server/src/lib/hooks/sources/antigravity/history.js +11 -76
  469. package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +63 -1
  470. package/dist/server/src/lib/hooks/sources/antigravity/source.js +16 -0
  471. package/dist/server/src/lib/hooks/sources/antigravity/transcript.js +3 -12
  472. package/dist/server/src/lib/hooks/sources/claude/history.js +17 -156
  473. package/dist/server/src/lib/hooks/sources/claude/queued-notice.js +53 -0
  474. package/dist/server/src/lib/hooks/sources/claude/source.js +33 -3
  475. package/dist/server/src/lib/hooks/sources/claude/transcript.js +3 -13
  476. package/dist/server/src/lib/hooks/sources/codex/history.js +11 -74
  477. package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +147 -11
  478. package/dist/server/src/lib/hooks/sources/codex/relay-install.js +64 -21
  479. package/dist/server/src/lib/hooks/sources/codex/transcript.js +5 -15
  480. package/dist/server/src/lib/hooks/sources/command-code/history.js +20 -121
  481. package/dist/server/src/lib/hooks/sources/command-code/transcript.js +3 -13
  482. package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +161 -31
  483. package/dist/server/src/lib/hooks/sources/define-source.js +40 -55
  484. package/dist/server/src/lib/hooks/sources/event-mapper.js +2 -1
  485. package/dist/server/src/lib/hooks/sources/opencode/diff.js +3 -4
  486. package/dist/server/src/lib/hooks/sources/opencode/history.js +2 -1
  487. package/dist/server/src/lib/hooks/sources/opencode/launch-settings.js +2 -1
  488. package/dist/server/src/lib/hooks/sources/opencode/payloads.js +2 -1
  489. package/dist/server/src/lib/hooks/sources/opencode/ports.js +2 -1
  490. package/dist/server/src/lib/hooks/sources/opencode/subscription.js +4 -3
  491. package/dist/server/src/lib/hooks/sources/opencode/transcript.js +3 -16
  492. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +2 -1
  493. package/dist/server/src/lib/hooks/sources/opencode-v2/mappers.js +5 -4
  494. package/dist/server/src/lib/hooks/sources/opencode-v2/ports.js +2 -1
  495. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +3 -7
  496. package/dist/server/src/lib/hooks/sources/opencode-v2/usage.js +2 -1
  497. package/dist/server/src/lib/hooks/sources/pending-decisions.js +2 -1
  498. package/dist/server/src/lib/hooks/sources/registry.js +3 -2
  499. package/dist/server/src/lib/hooks/sources/transcript-history.js +262 -0
  500. package/dist/server/src/lib/hooks/sources/turn-body.js +31 -0
  501. package/dist/server/src/lib/hooks/tool-input-normalization-state.js +2 -2
  502. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +2 -2
  503. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +16 -4
  504. package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +142 -0
  505. package/dist/server/src/lib/polling/auto-yes-enter-fallback.js +187 -0
  506. package/dist/server/src/lib/polling/auto-yes-resolver.js +9 -3
  507. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +2 -0
  508. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +2 -2
  509. package/dist/server/src/lib/polling/pending-scraped-response.js +190 -0
  510. package/dist/server/src/lib/polling/prompt-dedup-state.js +2 -2
  511. package/dist/server/src/lib/polling/prompt-dedup.js +2 -2
  512. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +95 -0
  513. package/dist/server/src/lib/polling/response-checker-extraction-result.js +50 -0
  514. package/dist/server/src/lib/polling/response-checker-extraction-steps.js +670 -0
  515. package/dist/server/src/lib/polling/response-checker.js +666 -1162
  516. package/dist/server/src/lib/polling/response-dedup.js +3 -4
  517. package/dist/server/src/lib/polling/response-poller-constants.js +17 -0
  518. package/dist/server/src/lib/polling/response-poller-core.js +54 -20
  519. package/dist/server/src/lib/polling/startup-screen.js +142 -0
  520. package/dist/server/src/lib/polling/structured-history-gate.js +3 -2
  521. package/dist/server/src/lib/prompt-answer-semantic.js +178 -0
  522. package/dist/server/src/lib/prompt-answer-sender.js +6 -5
  523. package/dist/server/src/lib/push/failure-episode-state.js +2 -2
  524. package/dist/server/src/lib/push/notification-dedup.js +3 -4
  525. package/dist/server/src/lib/push/prompt-card-state.js +2 -2
  526. package/dist/server/src/lib/push/waiting-push-notifier.js +3 -4
  527. package/dist/server/src/lib/realtime/publisher-registry.js +3 -2
  528. package/dist/server/src/lib/realtime/terminal-broadcast.js +38 -2
  529. package/dist/server/src/lib/realtime/terminal-session-ownership.js +45 -0
  530. package/dist/server/src/lib/relay/relay-delivery.js +6 -2
  531. package/dist/server/src/lib/relay/relay-readiness.js +38 -1
  532. package/dist/server/src/lib/relay/relay-triggers.js +9 -0
  533. package/dist/server/src/lib/resource-cleanup.js +6 -4
  534. package/dist/server/src/lib/response-cleaner.js +24 -1
  535. package/dist/server/src/lib/response-extractor.js +16 -0
  536. package/dist/server/src/lib/schedule-manager.js +8 -10
  537. package/dist/server/src/lib/session/agent-event-ask-user-question.js +168 -0
  538. package/dist/server/src/lib/session/agent-event-awaiting-instruction.js +104 -0
  539. package/dist/server/src/lib/session/agent-event-dedup.js +539 -0
  540. package/dist/server/src/lib/session/agent-event-model.js +562 -0
  541. package/dist/server/src/lib/session/agent-event-record.js +10 -0
  542. package/dist/server/src/lib/session/agent-event-state.js +106 -1854
  543. package/dist/server/src/lib/session/agent-event-structured-state.js +109 -0
  544. package/dist/server/src/lib/session/agent-event-turn.js +811 -0
  545. package/dist/server/src/lib/session/agent-session-lifecycle.js +11 -2
  546. package/dist/server/src/lib/session/chat-turn-progress.js +322 -0
  547. package/dist/server/src/lib/session/claude-executor.js +45 -5
  548. package/dist/server/src/lib/session/claude-session.js +21 -65
  549. package/dist/server/src/lib/session/cli-session.js +17 -0
  550. package/dist/server/src/lib/session/current-output-builder.js +454 -1103
  551. package/dist/server/src/lib/session/current-output-history-writers.js +255 -0
  552. package/dist/server/src/lib/session/current-output-types.js +9 -0
  553. package/dist/server/src/lib/session/detection-divergence.js +55 -0
  554. package/dist/server/src/lib/session/global-session-constants.js +2 -13
  555. package/dist/server/src/lib/session/hook-turn-hold.js +102 -0
  556. package/dist/server/src/lib/session/layer-disagreement.js +2 -2
  557. package/dist/server/src/lib/session/opencode-session-store.js +2 -1
  558. package/dist/server/src/lib/session/prompt-view.js +290 -0
  559. package/dist/server/src/lib/session/prompt-waiting-composition.js +35 -0
  560. package/dist/server/src/lib/session/provisional-turn.js +3 -1
  561. package/dist/server/src/lib/session/send-user-message.js +1 -1
  562. package/dist/server/src/lib/session/session-starting-state.js +4 -6
  563. package/dist/server/src/lib/session/status-evidence-type.js +2 -0
  564. package/dist/server/src/lib/session/status-evidence.js +2 -2
  565. package/dist/server/src/lib/session/structured-status-merge.js +335 -0
  566. package/dist/server/src/lib/session/waiting-episode-state.js +3 -4
  567. package/dist/server/src/lib/session/waiting-kind.js +3 -0
  568. package/dist/server/src/lib/session-cleanup.js +6 -8
  569. package/dist/server/src/lib/skills/install-plan.js +2 -1
  570. package/dist/server/src/lib/skills/snapshot-store.js +2 -2
  571. package/dist/server/src/lib/skills/uninstall-plan.js +2 -2
  572. package/dist/server/src/lib/timer-manager.js +6 -8
  573. package/dist/server/src/lib/tmux/geometry-delegation.js +3 -4
  574. package/dist/server/src/lib/tmux/legacy-session-alias.js +2 -1
  575. package/dist/server/src/lib/tmux/session-hooks.js +2 -1
  576. package/dist/server/src/lib/tmux/session-status-options.js +3 -3
  577. package/dist/server/src/lib/tmux/tmux-capture-cache.js +3 -2
  578. package/dist/server/src/lib/tmux/tmux.js +33 -59
  579. package/dist/server/src/lib/tui-accumulator.js +2 -2
  580. package/dist/server/src/lib/version-checker.js +6 -6
  581. package/dist/server/src/lib/ws-server.js +47 -11
  582. package/docs/en/user-guide/webapp-guide.md +27 -3
  583. package/package.json +1 -1
  584. package/release-notes/0.44.2.json +33 -0
  585. package/release-notes/0.44.3.json +82 -0
  586. package/scripts/hooks/cmate-agent-event.sh +18 -0
  587. package/.next/server/chunks/1068.js +0 -1
  588. package/.next/server/chunks/434.js +0 -1
  589. package/.next/server/chunks/5775.js +0 -1
  590. package/.next/server/chunks/6474.js +0 -14
  591. package/.next/server/chunks/650.js +0 -1
  592. package/.next/server/chunks/6661.js +0 -1
  593. package/.next/server/chunks/8583.js +0 -1
  594. package/.next/server/chunks/964.js +0 -1
  595. package/.next/server/chunks/967.js +0 -1
  596. package/.next/server/chunks/9882.js +0 -25
  597. package/.next/static/chunks/591-308072f285c34787.js +0 -1
  598. package/.next/static/chunks/app/sessions/page-049e06335187aa91.js +0 -1
  599. package/.next/static/chunks/app/worktrees/[id]/page-040c5f0f585e6812.js +0 -1
  600. package/.next/static/css/38070d879efa1371.css +0 -1
  601. package/dist/server/src/lib/cli-tools/index.js +0 -41
  602. package/dist/server/src/lib/polling/global-session-poller.js +0 -140
  603. /package/.next/static/{57lOiz8zSEHdw97XIm0af → tWwHQzmvc-rv9KKUtDWfQ}/_buildManifest.js +0 -0
  604. /package/.next/static/{57lOiz8zSEHdw97XIm0af → tWwHQzmvc-rv9KKUtDWfQ}/_ssgManifest.js +0 -0
@@ -12,9 +12,13 @@
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.STATUS_CHECK_LINE_COUNT = void 0;
14
14
  exports.normalizeFrame = normalizeFrame;
15
+ exports.liveRegionOf = liveRegionOf;
16
+ exports.withLiveRegion = withLiveRegion;
15
17
  const cli_patterns_1 = require("../cli-patterns");
16
18
  const tui_detection_frame_1 = require("../tui-detection-frame");
17
19
  const thinking_constants_1 = require("../../../config/thinking-constants");
20
+ const live_region_specs_1 = require("./live-region-specs");
21
+ const live_region_1 = require("./live-region");
18
22
  /**
19
23
  * Number of lines from the end to check for prompt and input indicators.
20
24
  *
@@ -23,8 +27,17 @@ const thinking_constants_1 = require("../../../config/thinking-constants");
23
27
  * existing importers are unaffected.
24
28
  */
25
29
  exports.STATUS_CHECK_LINE_COUNT = 15;
26
- /** Build the shared {@link NormalizedFrame} for one capture. */
27
- function normalizeFrame(output) {
30
+ /**
31
+ * Build the shared {@link NormalizedFrame} for one capture.
32
+ *
33
+ * @param output - The capture. Pass it as captured (ANSI and box drawing
34
+ * intact): the input-box markers of claude / Command Code / copilot / opencode
35
+ * are rule rows that `stripBoxDrawing` blanks.
36
+ * @param tool - The CLI the capture came from. Names the live-region declaration
37
+ * to apply (Issue #3183); omitted, the region is the whole frame — the reading
38
+ * every rule had before.
39
+ */
40
+ function normalizeFrame(output, tool) {
28
41
  const clean = (0, tui_detection_frame_1.normalizeTuiFrameForDetection)((0, cli_patterns_1.stripAnsi)(output));
29
42
  const lines = clean.split('\n');
30
43
  // Strip trailing empty lines (tmux terminal padding) before windowing.
@@ -40,8 +53,29 @@ function normalizeFrame(output) {
40
53
  clean,
41
54
  lines,
42
55
  contentLines,
56
+ liveRegion: (0, live_region_1.locateLiveRegion)(tool === undefined ? undefined : live_region_specs_1.LIVE_REGION_SPECS[tool], tool ?? null, {
57
+ raw: output,
58
+ contentLines,
59
+ }),
43
60
  lastLines: contentLines.slice(-exports.STATUS_CHECK_LINE_COUNT).join('\n'),
44
61
  // DR-003: Separate thinking detection window (5 lines) from prompt detection window (15 lines)
45
62
  thinkingLines: contentLines.slice(-thinking_constants_1.THINKING_TAIL_LINE_COUNT).join('\n'),
46
63
  };
47
64
  }
65
+ /**
66
+ * The live region of `frame` as `tool` declares it (Issue #3183).
67
+ *
68
+ * `frame.liveRegion` when the frame was normalised for `tool`; recomputed
69
+ * otherwise — a caller that built the frame without naming the tool (older
70
+ * call sites, tests) still gets the tool's own reading, never a stale one.
71
+ */
72
+ function liveRegionOf(frame, tool) {
73
+ if (frame.liveRegion.tool === tool)
74
+ return frame.liveRegion;
75
+ return (0, live_region_1.locateLiveRegion)(live_region_specs_1.LIVE_REGION_SPECS[tool], tool, { raw: frame.raw, contentLines: frame.contentLines });
76
+ }
77
+ /** `frame` with its live region located for `tool` (the same object when it already is). */
78
+ function withLiveRegion(frame, tool) {
79
+ const liveRegion = liveRegionOf(frame, tool);
80
+ return liveRegion === frame.liveRegion ? frame : { ...frame, liveRegion };
81
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * Gemini pattern constants moved out of `../../cli-patterns.ts`
4
+ * (Issue #3217). `cli-patterns.ts` re-exports every public name.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.GEMINI_THINKING_PATTERN = exports.GEMINI_PROMPT_PATTERN = void 0;
8
+ /**
9
+ * Gemini interactive REPL prompt pattern
10
+ * Gemini CLI shows a `>` or `❯` prompt when waiting for user input in interactive mode.
11
+ *
12
+ * Two branches (Issue #386):
13
+ * - Branch 1: `^[>❯]\s*$` -- bare prompt character (empty input line)
14
+ * - Branch 2: `^\s*[>❯]\s+Type your message.*$` -- new-format prompt with placeholder text
15
+ * (e.g., " > Type your message or @path/to/file"). Leading whitespace is allowed
16
+ * because tmux capture-pane output may include padding.
17
+ *
18
+ * Branch 2 requires "Type your message" after the indicator to avoid false positives
19
+ * on quoted response lines (e.g., "> some quoted text").
20
+ *
21
+ * @see CLAUDE_PROMPT_PATTERN for similar dual-format matching approach
22
+ */
23
+ // [S4-5] /g flag prohibited: would make test() stateful
24
+ exports.GEMINI_PROMPT_PATTERN = /^[>❯]\s*$|^\s*[>❯]\s+Type your message.*$/m;
25
+ /**
26
+ * Gemini thinking/processing pattern
27
+ * Gemini CLI shows braille spinner characters and status text while processing.
28
+ */
29
+ exports.GEMINI_THINKING_PATTERN = /[\u2800-\u28FF]|Thinking\.\.\./;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * Every tool's live-region declaration, by tool (Issue #3183).
4
+ *
5
+ * A table of its own rather than a lookup through the detector registry:
6
+ * `normalizeFrame` reads it, and the detector modules import `normalizeFrame`,
7
+ * so going through `registry.ts` would close an import cycle. Each detector
8
+ * declares the same object as its `ToolDetectorSpec.liveRegion`, and
9
+ * `live-region-markers.test.ts` holds the two to identity.
10
+ *
11
+ * `gemini` and `vibe-local` have no measured frames and no declaration: their
12
+ * frames carry the whole-frame region, which is the pre-#3183 reading.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.LIVE_REGION_SPECS = void 0;
16
+ const live_region_1 = require("./antigravity/live-region");
17
+ const live_region_2 = require("./claude/live-region");
18
+ const live_region_3 = require("./codex/live-region");
19
+ const live_region_4 = require("./command-code/live-region");
20
+ const live_region_5 = require("./copilot/live-region");
21
+ const live_region_6 = require("./opencode/live-region");
22
+ const live_region_7 = require("./opencode-v2/live-region");
23
+ exports.LIVE_REGION_SPECS = {
24
+ claude: live_region_2.CLAUDE_LIVE_REGION,
25
+ codex: live_region_3.CODEX_LIVE_REGION,
26
+ antigravity: live_region_1.ANTIGRAVITY_LIVE_REGION,
27
+ 'command-code': live_region_4.COMMAND_CODE_LIVE_REGION,
28
+ copilot: live_region_5.COPILOT_LIVE_REGION,
29
+ opencode: live_region_6.OPENCODE_LIVE_REGION,
30
+ 'opencode-v2': live_region_7.OPENCODE_V2_LIVE_REGION,
31
+ };
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ /**
3
+ * The live region: "where on this frame does the part the operator can act on
4
+ * begin?" (Issue #3183, `docs/design/3183-live-region-extraction.md`).
5
+ *
6
+ * Before this module every tool answered that question on its own — codex by
7
+ * the bottom-most `›` row (#892) and again by its SGR (#2841), agy by a `>`
8
+ * under the list (#2845 / #2851), Command Code by a footer at the very bottom
9
+ * (#2846), claude by the input box (#2847) — and a fix to one tool reached no
10
+ * other. Here the answer is computed once per frame, by `normalizeFrame`, from
11
+ * each tool's {@link LiveRegionSpec}; the status chain and the Auto-Yes path
12
+ * then apply the SAME two rules to it:
13
+ *
14
+ * - {@link isQuotedNumberedPrompt}: a numbered list on a frame whose input box
15
+ * is the bottom of the pane is conversation text, not a dialog;
16
+ * - {@link vetoesDialog}: likewise for a tool's own dialog reading.
17
+ *
18
+ * This file holds the shared parts the per-tool declarations are built from and
19
+ * the two rules. It must stay free of the detector modules (`<tool>/detect.ts`)
20
+ * so `normalizeFrame` can use it without an import cycle.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.wholeFrameRegion = wholeFrameRegion;
24
+ exports.locateLiveRegion = locateLiveRegion;
25
+ exports.isQuotedNumberedPrompt = isQuotedNumberedPrompt;
26
+ exports.vetoesDialog = vetoesDialog;
27
+ exports.fencedComposer = fencedComposer;
28
+ exports.bottomMostComposerRow = bottomMostComposerRow;
29
+ exports.dialogTopFrom = dialogTopFrom;
30
+ exports.ruleAboveOptionRun = ruleAboveOptionRun;
31
+ exports.lastContentRow = lastContentRow;
32
+ /** The whole frame — the reading every rule had before Issue #3183. */
33
+ function wholeFrameRegion(tool, contentLines) {
34
+ return {
35
+ tool,
36
+ anchor: 'none',
37
+ startRow: 0,
38
+ composerAtBottom: false,
39
+ composerHidesDialogs: false,
40
+ lines: contentLines,
41
+ };
42
+ }
43
+ /**
44
+ * Locate the live region of one frame from one tool's declaration.
45
+ *
46
+ * The composer wins over the dialog top: a tool that draws its input box is,
47
+ * by every measurement in the design doc §7, not showing a dialog above it.
48
+ */
49
+ function locateLiveRegion(spec, tool, rows) {
50
+ const { contentLines } = rows;
51
+ if (spec === undefined)
52
+ return wholeFrameRegion(tool, contentLines);
53
+ const composer = spec.composer.locate(rows);
54
+ if (composer !== null) {
55
+ return {
56
+ tool,
57
+ anchor: 'composer',
58
+ startRow: composer.start,
59
+ composerEndRow: composer.end ?? composer.start,
60
+ composerAtBottom: composer.atBottom ?? true,
61
+ composerHidesDialogs: spec.composerHidesDialogs,
62
+ lines: contentLines.slice(composer.start),
63
+ };
64
+ }
65
+ const dialog = spec.dialogTop?.locate(rows) ?? null;
66
+ if (dialog !== null) {
67
+ return {
68
+ tool,
69
+ anchor: 'dialog',
70
+ startRow: dialog.start,
71
+ composerAtBottom: false,
72
+ composerHidesDialogs: spec.composerHidesDialogs,
73
+ lines: contentLines.slice(dialog.start),
74
+ };
75
+ }
76
+ return wholeFrameRegion(tool, contentLines);
77
+ }
78
+ /**
79
+ * Is the numbered list the generic parser read a quotation? (Issue #3183)
80
+ *
81
+ * True when it is a `multiple_choice` reading on a frame whose input box is the
82
+ * bottom of the pane, for a tool whose every answerable screen replaces the
83
+ * input box ({@link LiveRegion.composerHidesDialogs}): the list then sits in
84
+ * the conversation above it — an agent's reply quoting a dialog, or a dialog
85
+ * left in the scrollback.
86
+ *
87
+ * For copilot and the opencode family a composer at the bottom does not prove
88
+ * that much (their pickers are drawn over it), and their numbered candidates
89
+ * stay with their own dialog rules — the Auto-Yes gate, which both enforce, and
90
+ * opencode-v2's `requireVouchedPrompt`.
91
+ *
92
+ * The one rule both the status chain (`run-detection.ts`) and the Auto-Yes
93
+ * path (`response-checker.ts`'s `detectPromptOnCleanFrame`) apply.
94
+ */
95
+ function isQuotedNumberedPrompt(region, prompt) {
96
+ return (prompt.isPrompt &&
97
+ prompt.promptData?.type === 'multiple_choice' &&
98
+ region.composerAtBottom &&
99
+ region.composerHidesDialogs);
100
+ }
101
+ /**
102
+ * Should a tool's own dialog reading be discarded because the input box is the
103
+ * bottom of the pane? (Issue #3183)
104
+ *
105
+ * Numbered dialogs always are: every tool measured removes its input box while
106
+ * one is up (design doc §7). Arrow-key surfaces are only for tools whose every
107
+ * screen replaces the input box ({@link LiveRegion.composerHidesDialogs}):
108
+ * copilot and opencode draw their pickers OVER a live composer, so there a
109
+ * composer at the bottom says nothing about a `keys` overlay.
110
+ */
111
+ function vetoesDialog(region, verdict) {
112
+ if (verdict === null || !region.composerAtBottom)
113
+ return false;
114
+ return verdict.answerMode === 'numbered' || region.composerHidesDialogs;
115
+ }
116
+ // ---------------------------------------------------------------------------
117
+ // Shared parts the per-tool declarations are built from.
118
+ // ---------------------------------------------------------------------------
119
+ /**
120
+ * A composer fenced by rules and pinned to the bottom (claude, Command Code,
121
+ * copilot): the tool's own structural finder, which returns the index of the
122
+ * block's first row or -1. The block runs to the last content row (the status
123
+ * bar under the fence is part of it), so it is the bottom by construction.
124
+ */
125
+ function fencedComposer(find) {
126
+ return {
127
+ locate({ contentLines }) {
128
+ const start = find(contentLines);
129
+ if (start < 0)
130
+ return null;
131
+ return { start, end: lastContentRow(contentLines), atBottom: true };
132
+ },
133
+ };
134
+ }
135
+ /**
136
+ * The bottom-most row `isComposerRow` accepts (agy's bare `>`, codex's `›`).
137
+ * `atBottom` decides whether the rows below it still hold something live.
138
+ */
139
+ function bottomMostComposerRow(options) {
140
+ return {
141
+ locate(rows) {
142
+ const { contentLines } = rows;
143
+ for (let i = contentLines.length - 1; i >= 0; i--) {
144
+ if (options.isComposerRow(contentLines[i])) {
145
+ return { start: i, end: i, atBottom: options.atBottom(rows, i) };
146
+ }
147
+ }
148
+ return null;
149
+ },
150
+ };
151
+ }
152
+ /** A dialog top found by a tool's own function over `contentLines` (-1 when absent). */
153
+ function dialogTopFrom(find) {
154
+ return {
155
+ locate({ contentLines }) {
156
+ const start = find(contentLines);
157
+ return start < 0 ? null : { start };
158
+ },
159
+ };
160
+ }
161
+ /** A numbered option row, cursor glyph optional (`❯ 1. Yes`, ` 2. No`, `› 3. …`). */
162
+ const OPTION_ONE_ROW_PATTERN = /^\s*(?:[❯›>●]\s*)?1[.)]\s+\S/;
163
+ /**
164
+ * The top of a dialog drawn as: rule, title, …, `1.` option, …, footer
165
+ * (claude, Command Code). From the bottom-most footer, up to the first option,
166
+ * up to the nearest rule. Searching from the OPTION rather than the footer is
167
+ * what keeps an AskUserQuestion picker's second, inner rule (between its
168
+ * options and its footer) from being taken for the top.
169
+ */
170
+ function ruleAboveOptionRun(options) {
171
+ return dialogTopFrom(lines => {
172
+ let footer = -1;
173
+ for (let i = lines.length - 1; i >= 0; i--) {
174
+ if (options.footer(lines[i])) {
175
+ footer = i;
176
+ break;
177
+ }
178
+ }
179
+ if (footer < 0)
180
+ return -1;
181
+ const floor = Math.max(0, footer - options.maxRows);
182
+ let optionOne = -1;
183
+ for (let i = footer - 1; i >= floor; i--) {
184
+ if (OPTION_ONE_ROW_PATTERN.test(lines[i])) {
185
+ optionOne = i;
186
+ break;
187
+ }
188
+ }
189
+ if (optionOne < 0)
190
+ return -1;
191
+ for (let i = optionOne - 1; i >= floor; i--) {
192
+ if (options.rule.test(lines[i].trimEnd()))
193
+ return i;
194
+ }
195
+ return -1;
196
+ });
197
+ }
198
+ /** The last non-blank row's index, or -1. */
199
+ function lastContentRow(lines) {
200
+ let i = lines.length - 1;
201
+ while (i >= 0 && lines[i].trim() === '')
202
+ i--;
203
+ return i;
204
+ }
@@ -11,10 +11,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.opencodeStatusDetector = exports.VERIFIED_AGAINST = void 0;
12
12
  exports.readIdleEvidence = readIdleEvidence;
13
13
  const cli_patterns_1 = require("../../cli-patterns");
14
+ const verdicts_1 = require("../verdicts");
14
15
  const status_reason_1 = require("../../status-reason");
15
16
  const opencode_modal_overlay_1 = require("../../opencode-modal-overlay");
16
17
  const prompt_1 = require("./prompt");
17
18
  const frame_1 = require("../frame");
19
+ const live_region_1 = require("./live-region");
18
20
  const run_detection_1 = require("../run-detection");
19
21
  const verified_against_1 = require("../verified-against");
20
22
  const thinking_constants_1 = require("../../../../config/thinking-constants");
@@ -81,6 +83,8 @@ function readIdleEvidence(frame) {
81
83
  exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
82
84
  tool: 'opencode',
83
85
  verifiedAgainst: exports.VERIFIED_AGAINST,
86
+ // Issue #3183: where the live part of the frame begins (`./live-region.ts`).
87
+ liveRegion: live_region_1.OPENCODE_LIVE_REGION,
84
88
  afterThinking(frame) {
85
89
  // 2.5. OpenCode status detection (Issue #379)
86
90
  // OpenCode TUI layout: content area (top) | empty padding (~150 lines) | footer status bar (~6 lines at bottom).
@@ -123,23 +127,11 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
123
127
  // `wait` still stops for it (`isSelectionListActive` → exit 10) and the UI
124
128
  // renders NavigationButtons, which send exactly the keys the strip takes.
125
129
  if (cli_patterns_1.OPENCODE_PERMISSION_PATTERN.test(frame.lastLines)) {
126
- return {
127
- status: 'waiting',
128
- confidence: 'high',
129
- reason: status_reason_1.STATUS_REASON.OPENCODE_PERMISSION_PROMPT,
130
- hasActivePrompt: false,
131
- evidence: 'positive',
132
- };
130
+ return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_PERMISSION_PROMPT);
133
131
  }
134
132
  // A. Check footer for processing indicator ("esc interrupt" replaces "ctrl+t variants..." during processing)
135
133
  if (cli_patterns_1.OPENCODE_PROCESSING_INDICATOR.test(frame.lastLines)) {
136
- return {
137
- status: 'running',
138
- confidence: 'high',
139
- reason: status_reason_1.STATUS_REASON.OPENCODE_PROCESSING_INDICATOR,
140
- hasActivePrompt: false,
141
- evidence: 'positive',
142
- };
134
+ return (0, verdicts_1.positiveVerdict)('running', status_reason_1.STATUS_REASON.OPENCODE_PROCESSING_INDICATOR);
143
135
  }
144
136
  const { candidates, lastIndex } = findContentEnd(frame);
145
137
  if (lastIndex < 0)
@@ -149,13 +141,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
149
141
  .slice(Math.max(0, lastIndex - thinking_constants_1.THINKING_TAIL_LINE_COUNT + 1), lastIndex + 1)
150
142
  .join('\n');
151
143
  if ((0, cli_patterns_1.detectThinking)('opencode', contentThinkingWindow)) {
152
- return {
153
- status: 'running',
154
- confidence: 'high',
155
- reason: status_reason_1.STATUS_REASON.THINKING_INDICATOR,
156
- hasActivePrompt: false,
157
- evidence: 'positive',
158
- };
144
+ return (0, verdicts_1.positiveVerdict)('running', status_reason_1.STATUS_REASON.THINKING_INDICATOR);
159
145
  }
160
146
  // C. Check content area for selection list (Issue #473: fuzzy-search list detection)
161
147
  // Selection list header ("Select model"/"Select provider") may be far above the
@@ -164,13 +150,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
164
150
  .slice(Math.max(0, lastIndex - frame_1.STATUS_CHECK_LINE_COUNT + 1), lastIndex + 1)
165
151
  .join('\n');
166
152
  if (cli_patterns_1.OPENCODE_SELECTION_LIST_PATTERN.test(candidates.join('\n'))) {
167
- return {
168
- status: 'waiting',
169
- confidence: 'high',
170
- reason: status_reason_1.STATUS_REASON.OPENCODE_SELECTION_LIST,
171
- hasActivePrompt: false,
172
- evidence: 'positive',
173
- };
153
+ return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_SELECTION_LIST);
174
154
  }
175
155
  // C2. A modal overlay painted over the transcript (Issue #2112).
176
156
  //
@@ -205,13 +185,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
205
185
  // production caller of `detectSessionStatus` passes the `capture-pane -e`
206
186
  // bytes (`lib/tmux/tmux.ts` always passes `-e`).
207
187
  if ((0, opencode_modal_overlay_1.detectOpenCodeModalOverlay)(frame.raw) !== null) {
208
- return {
209
- status: 'waiting',
210
- confidence: 'high',
211
- reason: status_reason_1.STATUS_REASON.OPENCODE_MODAL_OVERLAY,
212
- hasActivePrompt: false,
213
- evidence: 'positive',
214
- };
188
+ return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_MODAL_OVERLAY);
215
189
  }
216
190
  // D. Check last few content lines for the finished-turn marker.
217
191
  //
@@ -224,13 +198,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
224
198
  // through to the heuristics rather than claiming a completion that never
225
199
  // happened, which is what design rule D1 asks for.
226
200
  if (cli_patterns_1.OPENCODE_TURN_COMPLETE_PATTERN.test(contentCheckWindow)) {
227
- return {
228
- status: 'ready',
229
- confidence: 'high',
230
- reason: status_reason_1.STATUS_REASON.OPENCODE_RESPONSE_COMPLETE,
231
- hasActivePrompt: false,
232
- evidence: 'positive',
233
- };
201
+ return (0, verdicts_1.positiveVerdict)('ready', status_reason_1.STATUS_REASON.OPENCODE_RESPONSE_COMPLETE);
234
202
  }
235
203
  // E. Idle composer (Issue #473 found the row; Issue #1883 made it positive).
236
204
  //
@@ -254,13 +222,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
254
222
  .slice(Math.max(0, lastIndex - frame_1.STATUS_CHECK_LINE_COUNT + 1), lastIndex + 1)
255
223
  .join('\n');
256
224
  if (cli_patterns_1.OPENCODE_IDLE_COMPOSER_PATTERN.test(composerWindow)) {
257
- return {
258
- status: 'ready',
259
- confidence: 'high',
260
- reason: status_reason_1.STATUS_REASON.INPUT_PROMPT,
261
- hasActivePrompt: false,
262
- evidence: 'positive',
263
- };
225
+ return (0, verdicts_1.positiveVerdict)('ready', status_reason_1.STATUS_REASON.INPUT_PROMPT);
264
226
  }
265
227
  return null;
266
228
  },
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * opencode (v1)'s live region (Issue #3183; design doc §7 "opencode").
4
+ *
5
+ * - **composer** — the gutter block above `╹▀▀…` and the `ctrl+p` footer.
6
+ * Measured: `opencode-agent-health-3021/quoted-dialog-reply-done.txt`
7
+ * L192-L199 (1.18.33).
8
+ * - **dialog top** — the `┃ △ Permission required` row. Measured:
9
+ * `opencode-live-1893/permission-bash.txt` L192 / L198 (1.18.21).
10
+ *
11
+ * `composerHidesDialogs: false`: opencode draws its pickers and the command
12
+ * palette over a live composer, so a composer at the bottom vetoes only the
13
+ * numbered readings.
14
+ *
15
+ * @module lib/detection/tools/opencode/live-region
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.OPENCODE_LIVE_REGION = void 0;
19
+ const opencode_gutter_live_region_1 = require("../opencode-gutter-live-region");
20
+ exports.OPENCODE_LIVE_REGION = {
21
+ composer: opencode_gutter_live_region_1.OPENCODE_GUTTER_COMPOSER,
22
+ dialogTop: (0, opencode_gutter_live_region_1.opencodeGutterDialogTop)(/△ Permission required/),
23
+ composerHidesDialogs: false,
24
+ };