commandmate 0.44.2 → 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 (581) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +149 -149
  3. package/.next/app-path-routes-manifest.json +21 -21
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +12 -12
  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 -1
  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 -1
  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 +2 -2
  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 +21 -21
  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 -1
  294. package/.next/server/chunks/2710.js +1 -1
  295. package/.next/server/chunks/2908.js +1 -1
  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 -1
  308. package/.next/server/chunks/5625.js +25 -0
  309. package/.next/server/chunks/611.js +1 -1
  310. package/.next/server/chunks/6130.js +1 -1
  311. package/.next/server/chunks/6401.js +1 -1
  312. package/.next/server/chunks/6781.js +1 -1
  313. package/.next/server/chunks/6793.js +3 -3
  314. package/.next/server/chunks/7491.js +2 -2
  315. package/.next/server/chunks/7905.js +1 -1
  316. package/.next/server/chunks/850.js +1 -1
  317. package/.next/server/chunks/8728.js +3 -3
  318. package/.next/server/chunks/8791.js +1 -1
  319. package/.next/server/chunks/8800.js +1 -1
  320. package/.next/server/chunks/8918.js +7 -7
  321. package/.next/server/chunks/9130.js +1 -1
  322. package/.next/server/chunks/9390.js +2 -2
  323. package/.next/server/chunks/9584.js +1 -1
  324. package/.next/server/chunks/9627.js +6 -6
  325. package/.next/server/chunks/9731.js +3 -3
  326. package/.next/server/middleware-manifest.json +5 -5
  327. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  328. package/.next/server/pages/500.html +1 -1
  329. package/.next/server/server-reference-manifest.json +1 -1
  330. package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
  331. package/.next/static/chunks/{2407-051f6f84226a9f2c.js → 2407-06d35bb1aa02de80.js} +1 -1
  332. package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
  333. package/.next/static/chunks/4727-5d695d71e3fdf97b.js +1 -0
  334. package/.next/static/chunks/{8165-3853772f6ae1299b.js → 8165-3525fb42f1b4976e.js} +1 -1
  335. package/.next/static/chunks/app/{layout-9da1ab602bcb3051.js → layout-0d1750b833f5cc3e.js} +1 -1
  336. package/.next/static/chunks/app/sessions/page-2af68c63211c751f.js +1 -0
  337. package/.next/static/chunks/app/worktrees/[id]/page-e36898c3a80e7302.js +1 -0
  338. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
  339. package/.next/static/css/057f64a65726c439.css +1 -0
  340. package/.next/trace +13 -13
  341. package/dist/cli/commands/ask.d.ts.map +1 -1
  342. package/dist/cli/commands/ask.js +120 -119
  343. package/dist/cli/commands/attach.d.ts +94 -0
  344. package/dist/cli/commands/attach.d.ts.map +1 -1
  345. package/dist/cli/commands/attach.js +145 -7
  346. package/dist/cli/commands/auto-yes.js +1 -1
  347. package/dist/cli/commands/capture.d.ts.map +1 -1
  348. package/dist/cli/commands/capture.js +3 -5
  349. package/dist/cli/commands/command-target.d.ts +23 -0
  350. package/dist/cli/commands/command-target.d.ts.map +1 -0
  351. package/dist/cli/commands/command-target.js +25 -0
  352. package/dist/cli/commands/instances.d.ts.map +1 -1
  353. package/dist/cli/commands/instances.js +41 -2
  354. package/dist/cli/commands/message-dispatch.d.ts +36 -0
  355. package/dist/cli/commands/message-dispatch.d.ts.map +1 -0
  356. package/dist/cli/commands/message-dispatch.js +63 -0
  357. package/dist/cli/commands/reply.d.ts.map +1 -1
  358. package/dist/cli/commands/reply.js +2 -5
  359. package/dist/cli/commands/respond.d.ts.map +1 -1
  360. package/dist/cli/commands/respond.js +3 -6
  361. package/dist/cli/commands/send.d.ts.map +1 -1
  362. package/dist/cli/commands/send.js +149 -146
  363. package/dist/cli/commands/wait.d.ts.map +1 -1
  364. package/dist/cli/commands/wait.js +589 -431
  365. package/dist/cli/types/api-responses.d.ts +159 -27
  366. package/dist/cli/types/api-responses.d.ts.map +1 -1
  367. package/dist/cli/types/api-responses.js +4 -2
  368. package/dist/cli/utils/api-client.d.ts +25 -5
  369. package/dist/cli/utils/api-client.d.ts.map +1 -1
  370. package/dist/cli/utils/api-client.js +87 -55
  371. package/dist/cli/utils/server-url.d.ts +1 -0
  372. package/dist/cli/utils/server-url.d.ts.map +1 -1
  373. package/dist/cli/utils/server-url.js +7 -0
  374. package/dist/config/uat-isolation.d.ts +140 -0
  375. package/dist/config/uat-isolation.d.ts.map +1 -0
  376. package/dist/config/uat-isolation.js +246 -0
  377. package/dist/lib/global-state.d.ts +12 -0
  378. package/dist/lib/global-state.d.ts.map +1 -0
  379. package/dist/lib/global-state.js +16 -0
  380. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +33 -0
  381. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -0
  382. package/dist/lib/polling/auto-yes-suppression-reason.js +2 -0
  383. package/dist/lib/session/prompt-view.d.ts +26 -3
  384. package/dist/lib/session/prompt-view.d.ts.map +1 -1
  385. package/dist/lib/session/prompt-view.js +26 -3
  386. package/dist/lib/session/status-evidence-type.d.ts +16 -0
  387. package/dist/lib/session/status-evidence-type.d.ts.map +1 -0
  388. package/dist/lib/session/status-evidence-type.js +2 -0
  389. package/dist/lib/tmux/legacy-session-alias.d.ts.map +1 -1
  390. package/dist/lib/tmux/legacy-session-alias.js +2 -1
  391. package/dist/server/locales/en/worktree.json +3 -1
  392. package/dist/server/locales/ja/worktree.json +3 -1
  393. package/dist/server/src/cli/types/api-responses.js +4 -2
  394. package/dist/server/src/config/cli-tool-timing-config.js +1 -6
  395. package/dist/server/src/config/uat-isolation.js +246 -0
  396. package/dist/server/src/lib/assistant-response-saver.js +62 -3
  397. package/dist/server/src/lib/auto-yes-lifecycle.js +6 -0
  398. package/dist/server/src/lib/auto-yes-poller.js +450 -160
  399. package/dist/server/src/lib/auto-yes-state.js +2 -2
  400. package/dist/server/src/lib/cli-tools/antigravity.js +38 -79
  401. package/dist/server/src/lib/cli-tools/base.js +151 -0
  402. package/dist/server/src/lib/cli-tools/codex.js +44 -80
  403. package/dist/server/src/lib/cli-tools/command-code.js +24 -56
  404. package/dist/server/src/lib/cli-tools/copilot.js +25 -67
  405. package/dist/server/src/lib/cli-tools/direct-input.js +8 -0
  406. package/dist/server/src/lib/cli-tools/gemini.js +23 -73
  407. package/dist/server/src/lib/cli-tools/opencode-pane-width.js +53 -0
  408. package/dist/server/src/lib/cli-tools/opencode-v2.js +9 -7
  409. package/dist/server/src/lib/cli-tools/opencode.js +21 -85
  410. package/dist/server/src/lib/cli-tools/submit-verified-sender.js +127 -4
  411. package/dist/server/src/lib/cli-tools/vibe-local.js +21 -66
  412. package/dist/server/src/lib/detection/cli-patterns.js +374 -3065
  413. package/dist/server/src/lib/detection/idle-evidence-observation.js +2 -2
  414. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +7 -32
  415. package/dist/server/src/lib/detection/prompt-detector.js +2 -35
  416. package/dist/server/src/lib/detection/selection-shape-patterns.js +69 -0
  417. package/dist/server/src/lib/detection/selection-shape.js +32 -520
  418. package/dist/server/src/lib/detection/shared/pasted-text.js +41 -0
  419. package/dist/server/src/lib/detection/shared/shell-pane-command.js +16 -0
  420. package/dist/server/src/lib/detection/shared/strip-box-drawing.js +25 -0
  421. package/dist/server/src/lib/detection/tools/antigravity/detect.js +5 -29
  422. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +2 -15
  423. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +286 -0
  424. package/dist/server/src/lib/detection/tools/claude/detect.js +3 -14
  425. package/dist/server/src/lib/detection/tools/claude/patterns.js +264 -4
  426. package/dist/server/src/lib/detection/tools/claude/prompt.js +2 -10
  427. package/dist/server/src/lib/detection/tools/codex/detect.js +46 -85
  428. package/dist/server/src/lib/detection/tools/codex/live-region.js +33 -2
  429. package/dist/server/src/lib/detection/tools/codex/patterns.js +855 -0
  430. package/dist/server/src/lib/detection/tools/codex/prompt.js +2 -10
  431. package/dist/server/src/lib/detection/tools/command-code/detect.js +8 -50
  432. package/dist/server/src/lib/detection/tools/command-code/dialog.js +2 -18
  433. package/dist/server/src/lib/detection/tools/command-code/patterns.js +234 -0
  434. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +461 -0
  435. package/dist/server/src/lib/detection/tools/context-above.js +20 -0
  436. package/dist/server/src/lib/detection/tools/copilot/detect.js +10 -35
  437. package/dist/server/src/lib/detection/tools/copilot/patterns.js +640 -0
  438. package/dist/server/src/lib/detection/tools/copilot/prompt.js +2 -10
  439. package/dist/server/src/lib/detection/tools/gemini/patterns.js +29 -0
  440. package/dist/server/src/lib/detection/tools/live-region-specs.js +1 -1
  441. package/dist/server/src/lib/detection/tools/opencode/detect.js +8 -49
  442. package/dist/server/src/lib/detection/tools/opencode/patterns.js +508 -0
  443. package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +7 -42
  444. package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +63 -0
  445. package/dist/server/src/lib/detection/tools/run-detection.js +6 -47
  446. package/dist/server/src/lib/detection/tools/verdicts.js +59 -0
  447. package/dist/server/src/lib/detection/tools/vibe-local/patterns.js +20 -0
  448. package/dist/server/src/lib/detection/truncate-raw-content.js +38 -0
  449. package/dist/server/src/lib/detection/turn-abandoned.js +66 -0
  450. package/dist/server/src/lib/detection/unclassified-frame-tracker.js +2 -2
  451. package/dist/server/src/lib/global-state.js +16 -0
  452. package/dist/server/src/lib/hooks/agent-session-telemetry.js +4 -6
  453. package/dist/server/src/lib/hooks/permission-decision-state.js +2 -2
  454. package/dist/server/src/lib/hooks/sources/antigravity/history.js +11 -76
  455. package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +63 -1
  456. package/dist/server/src/lib/hooks/sources/antigravity/source.js +16 -0
  457. package/dist/server/src/lib/hooks/sources/antigravity/transcript.js +3 -12
  458. package/dist/server/src/lib/hooks/sources/claude/history.js +17 -156
  459. package/dist/server/src/lib/hooks/sources/claude/queued-notice.js +53 -0
  460. package/dist/server/src/lib/hooks/sources/claude/source.js +33 -3
  461. package/dist/server/src/lib/hooks/sources/claude/transcript.js +3 -13
  462. package/dist/server/src/lib/hooks/sources/codex/history.js +11 -74
  463. package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +147 -11
  464. package/dist/server/src/lib/hooks/sources/codex/relay-install.js +64 -21
  465. package/dist/server/src/lib/hooks/sources/codex/transcript.js +5 -15
  466. package/dist/server/src/lib/hooks/sources/command-code/history.js +20 -121
  467. package/dist/server/src/lib/hooks/sources/command-code/transcript.js +3 -13
  468. package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +161 -31
  469. package/dist/server/src/lib/hooks/sources/define-source.js +40 -55
  470. package/dist/server/src/lib/hooks/sources/event-mapper.js +2 -1
  471. package/dist/server/src/lib/hooks/sources/opencode/diff.js +3 -4
  472. package/dist/server/src/lib/hooks/sources/opencode/history.js +2 -1
  473. package/dist/server/src/lib/hooks/sources/opencode/launch-settings.js +2 -1
  474. package/dist/server/src/lib/hooks/sources/opencode/payloads.js +2 -1
  475. package/dist/server/src/lib/hooks/sources/opencode/ports.js +2 -1
  476. package/dist/server/src/lib/hooks/sources/opencode/subscription.js +4 -3
  477. package/dist/server/src/lib/hooks/sources/opencode/transcript.js +3 -16
  478. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +2 -1
  479. package/dist/server/src/lib/hooks/sources/opencode-v2/mappers.js +5 -4
  480. package/dist/server/src/lib/hooks/sources/opencode-v2/ports.js +2 -1
  481. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +3 -7
  482. package/dist/server/src/lib/hooks/sources/opencode-v2/usage.js +2 -1
  483. package/dist/server/src/lib/hooks/sources/pending-decisions.js +2 -1
  484. package/dist/server/src/lib/hooks/sources/registry.js +3 -2
  485. package/dist/server/src/lib/hooks/sources/transcript-history.js +262 -0
  486. package/dist/server/src/lib/hooks/sources/turn-body.js +31 -0
  487. package/dist/server/src/lib/hooks/tool-input-normalization-state.js +2 -2
  488. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +2 -2
  489. package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +142 -0
  490. package/dist/server/src/lib/polling/auto-yes-enter-fallback.js +187 -0
  491. package/dist/server/src/lib/polling/auto-yes-resolver.js +9 -3
  492. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +2 -0
  493. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +2 -2
  494. package/dist/server/src/lib/polling/pending-scraped-response.js +190 -0
  495. package/dist/server/src/lib/polling/prompt-dedup-state.js +2 -2
  496. package/dist/server/src/lib/polling/prompt-dedup.js +2 -2
  497. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +95 -0
  498. package/dist/server/src/lib/polling/response-checker-extraction-result.js +50 -0
  499. package/dist/server/src/lib/polling/response-checker-extraction-steps.js +670 -0
  500. package/dist/server/src/lib/polling/response-checker.js +641 -1142
  501. package/dist/server/src/lib/polling/response-dedup.js +3 -4
  502. package/dist/server/src/lib/polling/response-poller-constants.js +17 -0
  503. package/dist/server/src/lib/polling/response-poller-core.js +54 -20
  504. package/dist/server/src/lib/polling/startup-screen.js +142 -0
  505. package/dist/server/src/lib/polling/structured-history-gate.js +3 -2
  506. package/dist/server/src/lib/prompt-answer-semantic.js +178 -0
  507. package/dist/server/src/lib/prompt-answer-sender.js +5 -4
  508. package/dist/server/src/lib/push/failure-episode-state.js +2 -2
  509. package/dist/server/src/lib/push/notification-dedup.js +3 -4
  510. package/dist/server/src/lib/push/prompt-card-state.js +2 -2
  511. package/dist/server/src/lib/push/waiting-push-notifier.js +3 -4
  512. package/dist/server/src/lib/realtime/publisher-registry.js +3 -2
  513. package/dist/server/src/lib/realtime/terminal-broadcast.js +38 -5
  514. package/dist/server/src/lib/realtime/terminal-session-ownership.js +45 -0
  515. package/dist/server/src/lib/relay/relay-delivery.js +3 -2
  516. package/dist/server/src/lib/relay/relay-readiness.js +38 -1
  517. package/dist/server/src/lib/response-cleaner.js +24 -1
  518. package/dist/server/src/lib/response-extractor.js +16 -0
  519. package/dist/server/src/lib/schedule-manager.js +8 -10
  520. package/dist/server/src/lib/session/agent-event-ask-user-question.js +168 -0
  521. package/dist/server/src/lib/session/agent-event-awaiting-instruction.js +104 -0
  522. package/dist/server/src/lib/session/agent-event-dedup.js +539 -0
  523. package/dist/server/src/lib/session/agent-event-model.js +562 -0
  524. package/dist/server/src/lib/session/agent-event-record.js +10 -0
  525. package/dist/server/src/lib/session/agent-event-state.js +106 -1854
  526. package/dist/server/src/lib/session/agent-event-structured-state.js +109 -0
  527. package/dist/server/src/lib/session/agent-event-turn.js +811 -0
  528. package/dist/server/src/lib/session/agent-session-lifecycle.js +11 -2
  529. package/dist/server/src/lib/session/chat-turn-progress.js +322 -0
  530. package/dist/server/src/lib/session/claude-executor.js +45 -5
  531. package/dist/server/src/lib/session/claude-session.js +21 -65
  532. package/dist/server/src/lib/session/cli-session.js +17 -0
  533. package/dist/server/src/lib/session/current-output-builder.js +450 -1103
  534. package/dist/server/src/lib/session/current-output-history-writers.js +255 -0
  535. package/dist/server/src/lib/session/current-output-types.js +9 -0
  536. package/dist/server/src/lib/session/detection-divergence.js +55 -0
  537. package/dist/server/src/lib/session/global-session-constants.js +2 -13
  538. package/dist/server/src/lib/session/hook-turn-hold.js +102 -0
  539. package/dist/server/src/lib/session/layer-disagreement.js +2 -2
  540. package/dist/server/src/lib/session/opencode-session-store.js +2 -1
  541. package/dist/server/src/lib/session/prompt-view.js +26 -3
  542. package/dist/server/src/lib/session/prompt-waiting-composition.js +3 -2
  543. package/dist/server/src/lib/session/provisional-turn.js +3 -1
  544. package/dist/server/src/lib/session/send-user-message.js +1 -1
  545. package/dist/server/src/lib/session/session-starting-state.js +4 -6
  546. package/dist/server/src/lib/session/status-evidence-type.js +2 -0
  547. package/dist/server/src/lib/session/status-evidence.js +2 -2
  548. package/dist/server/src/lib/session/structured-status-merge.js +335 -0
  549. package/dist/server/src/lib/session/waiting-episode-state.js +3 -4
  550. package/dist/server/src/lib/session-cleanup.js +1 -5
  551. package/dist/server/src/lib/skills/install-plan.js +2 -1
  552. package/dist/server/src/lib/skills/snapshot-store.js +2 -2
  553. package/dist/server/src/lib/skills/uninstall-plan.js +2 -2
  554. package/dist/server/src/lib/timer-manager.js +6 -8
  555. package/dist/server/src/lib/tmux/geometry-delegation.js +3 -4
  556. package/dist/server/src/lib/tmux/legacy-session-alias.js +2 -1
  557. package/dist/server/src/lib/tmux/session-hooks.js +2 -1
  558. package/dist/server/src/lib/tmux/session-status-options.js +3 -3
  559. package/dist/server/src/lib/tmux/tmux-capture-cache.js +3 -2
  560. package/dist/server/src/lib/tmux/tmux.js +33 -59
  561. package/dist/server/src/lib/tui-accumulator.js +2 -2
  562. package/dist/server/src/lib/version-checker.js +6 -6
  563. package/dist/server/src/lib/ws-server.js +47 -11
  564. package/docs/en/user-guide/webapp-guide.md +27 -3
  565. package/package.json +1 -1
  566. package/release-notes/0.44.3.json +82 -0
  567. package/scripts/hooks/cmate-agent-event.sh +18 -0
  568. package/.next/server/chunks/1068.js +0 -1
  569. package/.next/server/chunks/4372.js +0 -5
  570. package/.next/server/chunks/6474.js +0 -14
  571. package/.next/server/chunks/967.js +0 -1
  572. package/.next/server/chunks/9798.js +0 -2
  573. package/.next/server/chunks/9882.js +0 -25
  574. package/.next/static/chunks/591-539fec878c9dec5e.js +0 -1
  575. package/.next/static/chunks/app/sessions/page-049e06335187aa91.js +0 -1
  576. package/.next/static/chunks/app/worktrees/[id]/page-2a81397e60f17e63.js +0 -1
  577. package/.next/static/css/38070d879efa1371.css +0 -1
  578. package/dist/server/src/lib/cli-tools/index.js +0 -41
  579. package/dist/server/src/lib/polling/global-session-poller.js +0 -140
  580. /package/.next/static/{QlCqLjorauDDBXPa-C7TK → tWwHQzmvc-rv9KKUtDWfQ}/_buildManifest.js +0 -0
  581. /package/.next/static/{QlCqLjorauDDBXPa-C7TK → tWwHQzmvc-rv9KKUtDWfQ}/_ssgManifest.js +0 -0
@@ -64,19 +64,15 @@
64
64
  * written once.
65
65
  */
66
66
  Object.defineProperty(exports, "__esModule", { value: true });
67
- exports.COMMAND_CODE_PLAN_APPROVE_CHOICE_FOOTER = exports.COMMAND_CODE_PLAN_APPROVE_CHOICE_ROW = exports.COMMAND_CODE_PLAN_REVIEW_FOOTER = exports.DISMISSABLE_PANEL_FOOTER_PATTERN = exports.COMMAND_CODE_SELECTION_LIST_FOOTER = exports.SET_AS_DEFAULT_FOOTER_PATTERN = exports.SESSION_SCOPE_FOOTER_PATTERN = exports.MAX_OPTION_NUMBER = exports.SELECTION_SHAPE_TAIL_LINE_COUNT = void 0;
68
- exports.isCommandCodePlanApproveChoice = isCommandCodePlanApproveChoice;
69
- exports.hasCommandCodeSelectionListFooterAtBottom = hasCommandCodeSelectionListFooterAtBottom;
70
- exports.hasCommandCodeDismissablePanelFooterAtBottom = hasCommandCodeDismissablePanelFooterAtBottom;
71
- exports.hasCommandCodePlanReviewFooterAtBottom = hasCommandCodePlanReviewFooterAtBottom;
72
- exports.hasDismissablePanelFooter = hasDismissablePanelFooter;
67
+ exports.readCommandCodeReviewPage = exports.isCommandCodePlanApproveChoice = exports.hasDismissablePanelFooter = exports.hasCommandCodeSelectionListFooterAtBottom = exports.hasCommandCodePlanReviewFooterAtBottom = exports.hasCommandCodeDismissablePanelFooterAtBottom = exports.DISMISSABLE_PANEL_FOOTER_PATTERN = exports.COMMAND_CODE_SELECTION_LIST_FOOTER = exports.COMMAND_CODE_PLAN_APPROVE_CHOICE_ROW = exports.COMMAND_CODE_PLAN_APPROVE_CHOICE_FOOTER = exports.SET_AS_DEFAULT_FOOTER_PATTERN = exports.SESSION_SCOPE_FOOTER_PATTERN = exports.MAX_OPTION_NUMBER = exports.SELECTION_SHAPE_TAIL_LINE_COUNT = exports.COMMAND_CODE_PLAN_REVIEW_FOOTER = void 0;
73
68
  exports.readCommandCodeQuestionRegion = readCommandCodeQuestionRegion;
74
69
  exports.hasCommandCodeQuestionChrome = hasCommandCodeQuestionChrome;
75
- exports.readCommandCodeReviewPage = readCommandCodeReviewPage;
76
70
  exports.extractCommandCodeSelectionListFrame = extractCommandCodeSelectionListFrame;
77
71
  exports.readSelectionListShape = readSelectionListShape;
78
72
  exports.shouldOfferOptionNumbers = shouldOfferOptionNumbers;
79
73
  const ansi_1 = require("./ansi");
74
+ const selection_shape_patterns_1 = require("./selection-shape-patterns");
75
+ Object.defineProperty(exports, "COMMAND_CODE_PLAN_REVIEW_FOOTER", { enumerable: true, get: function () { return selection_shape_patterns_1.COMMAND_CODE_PLAN_REVIEW_FOOTER; } });
80
76
  /**
81
77
  * How many rows up from the last content row the shape is read.
82
78
  *
@@ -91,6 +87,10 @@ const ansi_1 = require("./ansi");
91
87
  * Bounded rather than unbounded because the alternative reads the transcript: a
92
88
  * markdown answer that happens to contain `1.` / `2.` sits hundreds of rows
93
89
  * above the dialog on a 200x1000 pane and must not be counted as options.
90
+ *
91
+ * Forty rows is still wider than an inline tool's dialog, so the number KEYS
92
+ * are not decided off this tail alone: `readSelectionListFrame` also counts on
93
+ * the rows the dialog card draws and takes the smaller (Issue #3336).
94
94
  */
95
95
  exports.SELECTION_SHAPE_TAIL_LINE_COUNT = 40;
96
96
  /** Highest option number a single keystroke can deliver (`10` is two keys). */
@@ -125,401 +125,18 @@ exports.SESSION_SCOPE_FOOTER_PATTERN = /\bs\s+to\s+use\s+this\s+session\s+only\b
125
125
  * claude's wording for a screen that may not carry it.
126
126
  */
127
127
  exports.SET_AS_DEFAULT_FOOTER_PATTERN = /\bEnter\s+to\s+set\s+as\s+default\b/i;
128
- /**
129
- * A focused search/filter row inside the dialog.
130
- *
131
- * Three measured spellings, and nothing wider — this predicate SUPPRESSES a
132
- * control, so a false positive costs the user their number buttons:
133
- * - `Type to search models...` / `type to search` (Command Code 1.40.1);
134
- * - `Search models…` (copilot 1.0.80's `/model`, recorded verbatim in
135
- * `cli-patterns.ts`'s `COPILOT_SELECTION_FOOTER_PATTERN` docblock);
136
- * - `/ search` (copilot's `/session` and `/settings` footers).
137
- *
138
- * Deliberately does NOT match claude's `/model` blurb ("Switch between Claude
139
- * models…") or codex's ("Access legacy models by running codex -m…"), neither of
140
- * which contains the word.
141
- */
142
- const FILTER_INPUT_PATTERN = /\btype\s+to\s+search\b|\bsearch\s+\w+\s*(?:…|\.\.\.)|(?:^|·)\s*\/\s+search\b/im;
143
- /**
144
- * Command Code's picker footer (v1.40.1, measured at 200x1000 for Issue #2297).
145
- *
146
- * type to search · ↑/↓ navigate · shift+↑/↓ jump provider · enter to select · esc to cancel
147
- *
148
- * Before this Issue no detector branch matched it, so the overlay fell through
149
- * to the `default` floor and the chat surface raised its `unclassified` card —
150
- * whose controls are the `1`–`9` / `y` / `n` answer keys, every one of which
151
- * would have been typed into that `Type to search models...` box. The
152
- * command-code detector imports this and answers
153
- * `STATUS_REASON.COMMAND_CODE_SELECTION_LIST` instead, which puts the arrow pad
154
- * on the card.
155
- *
156
- * Lower case is what Command Code draws, and the `·` separator keeps the pattern
157
- * off ordinary prose — the same two narrowings `COPILOT_SELECTION_FOOTER_PATTERN`
158
- * settled on for the same reason.
159
- */
160
- exports.COMMAND_CODE_SELECTION_LIST_FOOTER = /\benter\s+to\s+select\b\s*[·•]\s*esc\s+to\s+cancel\b/i;
161
- /**
162
- * The footer of an overlay whose ONLY exit is the dismiss (Issue #2369).
163
- *
164
- * Measured on Command Code 1.49's `/usage`, whose last row is verbatim
165
- * `Press Esc to close`. The panel above it is read-only — a plan header, two
166
- * meters, a breakdown URL — so there is no highlight to move and no key to
167
- * confirm with. Before this pattern existed nothing matched the screen, it
168
- * reached the `default` floor, and the chat surface answered an
169
- * eighteen-button `unclassified` card to a panel with one working key.
170
- *
171
- * ## Why it is this narrow
172
- *
173
- * Three narrowings, and each one is there because this predicate SUPPRESSES
174
- * controls — a false positive takes the arrow pad and the answer keys away from
175
- * a screen that needed them:
176
- *
177
- * - **a verb before the key.** `Press`/`Hit`/`Type`, or nothing at all, but not
178
- * an arbitrary run of prose. `esc to cancel` on its own is the tail of every
179
- * picker footer in this file, including
180
- * {@link COMMAND_CODE_SELECTION_LIST_FOOTER}, and those screens have a
181
- * highlight;
182
- * - **`close`/`dismiss`/`exit`, never `cancel` or `go back`.** The distinction
183
- * is measured rather than stylistic: `cancel` is what a screen with a
184
- * COMMITTABLE choice calls its escape (claude's `/model`, codex's picker,
185
- * Command Code's own), while `close` is what a panel that decided nothing
186
- * calls it;
187
- * - **the whole row.** Anchored at both ends (leading/trailing space aside), so
188
- * a hint bar that offers a dismiss ALONGSIDE something else — `↑/↓ navigate ·
189
- * enter to select · esc to close` — does not match, and keeps the arrows the
190
- * other half of its sentence promises.
191
- *
192
- * Case-insensitive because the measured row is `Press Esc to close` and Command
193
- * Code writes its picker hints in lower case; nothing rests on which it uses.
194
- */
195
- exports.DISMISSABLE_PANEL_FOOTER_PATTERN = /^\s*(?:press|hit|type)?\s*(?:<)?esc(?:ape)?(?:>)?\s+to\s+(?:close|dismiss|exit)\b[\s.·•]*$/im;
196
- /**
197
- * The two footer rows of Command Code's plan review overlay (Issue #2761).
198
- *
199
- * Measured on 1.58.0 at 200x1000. The overlay is a rule, a `Plan review: <title>
200
- * · <path> · v1` header, the plan with a line-number gutter, a second rule, a
201
- * ` REVIEW ` badge and then, verbatim:
202
- *
203
- * Approve ctrl+a executes the plan
204
- * Cancel esc
205
- *
206
- * BOTH rows, adjacent, because each half alone is weak: `Cancel esc` is two
207
- * words any picker might print, and `Approve` is a word an agent writes in a
208
- * plan. Multi-line on purpose — it is tested against a joined tail
209
- * (`NormalizedFrame.lastLines`, or the tail {@link readSelectionListShape}
210
- * builds), never against a single row.
211
- *
212
- * Swept against every fixture in `tests/fixtures` and
213
- * `tests/unit/lib/detection/fixtures` when this was written (300 files): the
214
- * only match is the plan review capture itself.
215
- *
216
- * ## The `❯` either row may carry (Issue #2793)
217
- *
218
- * `↓` past the plan's last line moves the focus onto the ACTION list, and the
219
- * focused action is drawn with a `❯ ` in front of it and two spaces before its
220
- * key (`tests/fixtures/command-code-plan-review-2763/`, 1.58.0):
221
- *
222
- * ❯ Approve ctrl+a executes the plan ← `plan-review-action-focus-approve.txt`
223
- * Cancel esc
224
- *
225
- * Approve ctrl+a executes the plan · comments go along as notes
226
- * ❯ Cancel esc ← `plan-review-long-scrolled-cancel-focused.txt`
227
- *
228
- * Without the optional `❯ ` this pattern missed both frames, and they went on to
229
- * the composer check, where `COMMAND_CODE_PROMPT_PATTERN` (`^❯(\s*$|\s+\S)`)
230
- * read the cursor row as the composer and published `ready` / `input_prompt`:
231
- * `wait` exited 0 on a plan nobody had approved — #2754's `❯`-outside-the-list
232
- * family. It is also the frame on which `Enter` EXECUTES the focused action, so
233
- * missing it here would also have left the chat surface's `Enter` on screen
234
- * (see {@link SelectionListShape.offersPlanApprove}). Only `❯`, and only as a
235
- * prefix: `❯ ` + the row is the one measured spelling of a focused action.
236
- * Re-swept over the same two directories with the widened pattern: every match
237
- * is still a `command-code-plan-review-*` capture, which
238
- * `command-code-plan-review-2793.test.ts` keeps pinned.
239
- */
240
- exports.COMMAND_CODE_PLAN_REVIEW_FOOTER = /^\s*(?:❯ +)?Approve\s+ctrl\+a\b[^\n]*\n\s*(?:❯ +)?Cancel\s+esc\s*$/im;
241
- /**
242
- * The radio row `ctrl+a` puts in place of the action list when comments are
243
- * pending (Issue #2793).
244
- *
245
- * Measured on 1.58.0 (`tests/fixtures/command-code-plan-review-2763/`): with
246
- * zero comments `ctrl+a` approves at once, and with one or more it first asks
247
- * what to do with them. The three action rows are replaced by ONE row, and the
248
- * selected side is `(•)`, the other `( )` — readable without the ANSI:
249
- *
250
- * Approve (•) with 4 comments as notes ( ) original plan · discard comments
251
- *
252
- * `comments?` because the badge above it is measured in both numbers
253
- * (`1 pending comment` / `4 pending comments`); the radio itself was captured
254
- * with four.
255
- */
256
- exports.COMMAND_CODE_PLAN_APPROVE_CHOICE_ROW = /^\s*Approve\s+\([• ]\)\s+with\s+\d+\s+comments?\s+as\s+notes\s+\([• ]\)\s+original\s+plan\b/im;
257
- /**
258
- * The hint bar under {@link COMMAND_CODE_PLAN_APPROVE_CHOICE_ROW}, verbatim
259
- * `←/→ choose · enter confirm · esc back`.
260
- *
261
- * Anchored to the LAST row of the text it is tested against (no `m` flag: `$` is
262
- * the end of the input), because that is where the overlay draws every one of
263
- * its five measured hint bars, and because it is what keeps a transcript that
264
- * QUOTES this screen from matching — the composer is always drawn below a
265
- * transcript, so there the quote is never the last row.
266
- */
267
- exports.COMMAND_CODE_PLAN_APPROVE_CHOICE_FOOTER = /(?:^|\n)[ \t]*←\/→\s+choose\s*·\s*enter\s+confirm\s*·\s*esc\s+back\s*$/i;
268
- /**
269
- * Whether this tail is the approve-with-comments confirmation (Issue #2793).
270
- *
271
- * BOTH rows, for the reason {@link COMMAND_CODE_PLAN_REVIEW_FOOTER} gives for
272
- * its two: either half alone is a sentence something else could print. Not
273
- * adjacent — `Editor exited with code 127` and a blank row sit between them on
274
- * both captures — so each is tested on its own.
275
- *
276
- * Deliberately NOT folded into {@link COMMAND_CODE_PLAN_REVIEW_FOOTER}, and
277
- * therefore not {@link SelectionListShape.offersPlanApprove}: on this screen
278
- * `enter` is the documented CONFIRM of an approval the human already started
279
- * with `ctrl+a`, so the chat surface must keep its `Enter`, and what `ctrl+a`
280
- * does here was not measured.
281
- *
282
- * @param tail - the frame's last rows, ANSI stripped, last content row last
283
- */
284
- function isCommandCodePlanApproveChoice(tail) {
285
- return (exports.COMMAND_CODE_PLAN_APPROVE_CHOICE_ROW.test(tail) &&
286
- exports.COMMAND_CODE_PLAN_APPROVE_CHOICE_FOOTER.test(tail));
287
- }
288
- /**
289
- * How many content rows the plan review footer's LAST row (`Cancel esc`) may
290
- * have under it and still be the overlay's own footer (Issue #2846): the footer's
291
- * two rows plus three.
292
- *
293
- * Measured over the sixteen plan review captures that carry the footer
294
- * (`tests/fixtures/command-code-plan-review-2761/`, `-2763/`): fourteen draw ONE
295
- * row below it, the hint bar (`type + enter to comment · …`); one draws two, an
296
- * `Editor exited with code 127` row and then the hint bar; and the garbled
297
- * `editor-killed-staircase.txt` draws three, because the pane wrapped the hint
298
- * bar. So the plan review footer is NOT the last row the way the picker's is,
299
- * and a "last two rows" rule misses every one of them.
300
- *
301
- * What bounds it from above is the composer. A transcript is always drawn above
302
- * one, and its shortest measured form is four rows — rule, `❯ Ask your
303
- * question...`, rule, status row — so a footer QUOTED in a reply has at least
304
- * four content rows under it and its `Approve` row falls outside this window.
305
- * The margin between the widest overlay (3) and the narrowest composer (4) is
306
- * one row; a capture that narrows it is the reason to re-measure, not to widen
307
- * this.
308
- */
309
- const COMMAND_CODE_PLAN_REVIEW_TAIL_ROW_COUNT = 5;
310
- /**
311
- * The last `count` rows of `text` that carry content, joined with `\n`.
312
- *
313
- * Blank rows are dropped rather than counted: the pane is padded with them, and
314
- * a real footer is set off from its hint bar by one.
315
- */
316
- function lastContentRows(text, count) {
317
- return text
318
- .split('\n')
319
- .filter((row) => row.trim() !== '')
320
- .slice(-count)
321
- .join('\n');
322
- }
323
- /**
324
- * Whether the LAST content row of this tail is Command Code's picker footer
325
- * (Issue #2846).
326
- *
327
- * {@link COMMAND_CODE_SELECTION_LIST_FOOTER} matches the sentence anywhere, and
328
- * a reply that quotes the `/model` footer is that sentence in the middle of the
329
- * transcript. The picker draws the footer as the last row of the pane (all four
330
- * captures that carry it do, `tests/fixtures/chat-dialog-card-2254/`), and a
331
- * transcript always has the composer under it — the same reasoning
332
- * {@link COMMAND_CODE_PLAN_APPROVE_CHOICE_FOOTER} anchors with `$`.
333
- *
334
- * @param tail - the frame's last rows, ANSI stripped, last content row last
335
- */
336
- function hasCommandCodeSelectionListFooterAtBottom(tail) {
337
- return exports.COMMAND_CODE_SELECTION_LIST_FOOTER.test(lastContentRows(tail, 1));
338
- }
339
- /**
340
- * Whether the LAST content row of this tail is the dismiss-only panel's footer
341
- * (Issue #2846). `Press Esc to close` is the panel's last row
342
- * ({@link DISMISSABLE_PANEL_FOOTER_PATTERN}); the same row inside a reply has
343
- * the composer under it.
344
- *
345
- * @param tail - the frame's last rows, ANSI stripped, last content row last
346
- */
347
- function hasCommandCodeDismissablePanelFooterAtBottom(tail) {
348
- return exports.DISMISSABLE_PANEL_FOOTER_PATTERN.test(lastContentRows(tail, 1));
349
- }
350
- /**
351
- * Whether the plan review footer ({@link COMMAND_CODE_PLAN_REVIEW_FOOTER}) sits
352
- * at the bottom of this tail (Issue #2846): both of its rows are within the last
353
- * {@link COMMAND_CODE_PLAN_REVIEW_TAIL_ROW_COUNT} content rows, which is the
354
- * overlay's own hint bar and nothing as tall as a composer.
355
- *
356
- * @param tail - the frame's last rows, ANSI stripped, last content row last
357
- */
358
- function hasCommandCodePlanReviewFooterAtBottom(tail) {
359
- return exports.COMMAND_CODE_PLAN_REVIEW_FOOTER.test(lastContentRows(tail, COMMAND_CODE_PLAN_REVIEW_TAIL_ROW_COUNT));
360
- }
361
- /**
362
- * How many rows from the end of the content the dismiss footer is looked for.
363
- *
364
- * The same 15-row tail the detection chain hands a tool module as
365
- * `NormalizedFrame.lastLines` (`STATUS_CHECK_LINE_COUNT`), restated as a number
366
- * here because this module is a browser-safe leaf and `tools/frame.ts` pulls in
367
- * `cli-patterns`. `detect.ts` reads `frame.lastLines` and never this constant,
368
- * so the two cannot disagree about the detector's own window; this one bounds
369
- * the CLIENT-side reading in {@link hasDismissablePanelFooter}.
370
- */
371
- const DISMISSABLE_PANEL_TAIL_LINE_COUNT = 15;
372
- /**
373
- * Whether the tail of this frame is a dismiss-only panel (Issue #2369).
374
- *
375
- * The same question `commandCodeStatusDetector.afterPrompt` asks of
376
- * `frame.lastLines`, asked of a raw capture, so the chat surface can answer for
377
- * a frame whose server verdict has not reached it. The pattern is shared rather
378
- * than restated — one expression, two call sites, exactly as
379
- * {@link COMMAND_CODE_SELECTION_LIST_FOOTER} is shared between the detector and
380
- * the dialog card.
381
- *
382
- * @param frame - a raw `capture-pane -p -e` frame, ANSI intact
383
- */
384
- function hasDismissablePanelFooter(frame) {
385
- if (!frame)
386
- return false;
387
- const lines = (0, ansi_1.stripAnsi)(frame.replace(/\r\n/g, '\n')).split('\n');
388
- let last = lines.length - 1;
389
- while (last >= 0 && lines[last].trim() === '')
390
- last -= 1;
391
- if (last < 0)
392
- return false;
393
- const tail = lines.slice(Math.max(0, last + 1 - DISMISSABLE_PANEL_TAIL_LINE_COUNT), last + 1);
394
- return tail.some((line) => exports.DISMISSABLE_PANEL_FOOTER_PATTERN.test(line));
395
- }
396
- /**
397
- * The horizontal rule Command Code draws directly above a full-screen dialog.
398
- *
399
- * Command Code is an INLINE tool (`alternate_on=0`): opening `/model` does not
400
- * clear the pane, it paints the picker under whatever the session has already
401
- * printed. On the capture taken for Issue #2326 that is 256 rows of banner and
402
- * transcript followed by a 77-row picker, and this rule row is the seam between
403
- * them — 200 columns of U+2500 at the production `TUI_PANE_WIDTH`, the only
404
- * such row anywhere on the frame while the picker is open (the composer's own
405
- * two rules are not drawn while a dialog has the screen).
406
- *
407
- * Matched as "nothing but the rule glyph", not as "contains one", because a box
408
- * border (`╭──…──╮`, which is how copilot draws ITS pickers) carries corners and
409
- * must NOT be read as this seam — see
410
- * {@link extractCommandCodeSelectionListFrame} for why that non-match is the
411
- * safe answer rather than a missed case.
412
- */
413
- const COMMAND_CODE_RULE_ROW_PATTERN = /^\u2500+$/;
414
- /**
415
- * How wide a rule row must be before it counts as the dialog seam.
416
- *
417
- * The measured row is the full pane width (200 columns), and a pure function
418
- * cannot know that width, so this is a floor rather than an equality: it only
419
- * has to reject a short dash run inside a reply. Forty columns is a quarter of
420
- * the production pane and wider than any decorative rule measured in
421
- * `tests/fixtures/`.
422
- */
423
- const COMMAND_CODE_RULE_MIN_COLUMNS = 40;
424
- /**
425
- * The cursor glyph Command Code draws against the highlighted option.
426
- *
427
- * U+276F, measured on the capture Issue #2521 was raised from. Only this one,
428
- * and not codex's `›` or gemini's `●`: {@link readCommandCodeQuestionRegion}
429
- * counts cursors to decide whether the region holds ONE live dialog, and a
430
- * wider alphabet would start counting glyphs that are not cursors at all.
431
- */
432
- const COMMAND_CODE_CURSOR_GLYPH = '❯';
433
- /**
434
- * The markers Command Code paints on a question screen's tab strip.
435
- *
436
- * Measured row: `● Dispatch | ◯ Review` — a filled disc on the tab that has the
437
- * screen and a hollow ring on the one that does not. The names are NOT part of
438
- * the reading (a different question draws different tabs); what is read is the
439
- * strip's structure, which is what {@link isCommandCodeQuestionTabRow} states.
440
- *
441
- * Two families rather than one alphabet, because "one of these is filled and one
442
- * of these is not" is the whole signal. A list of bullets (`● item one`) carries
443
- * the first family and nothing else, and a bullet list is the thing this
444
- * reading must never mistake for a dialog.
445
- */
446
- const COMMAND_CODE_TAB_SELECTED_MARKERS = '●◉⦿';
447
- /** The hollow half of {@link COMMAND_CODE_TAB_SELECTED_MARKERS}'s pair. */
448
- const COMMAND_CODE_TAB_UNSELECTED_MARKERS = '◯○◌⚪';
449
- /**
450
- * The ANSWERED half, measured on 1.54.1 (Issue #2753).
451
- *
452
- * A multi-question `AskUserQuestion` keeps one tab per question and marks the
453
- * ones already answered: `✔ Party size | ✔ Rental car | ● Update scope | ◯ Review`.
454
- * Before this family existed the whole strip failed the cell test, the reader answered
455
- * `none`, and the generic parser read the checkbox list under it as a single
456
- * select — see the Issue for the capture.
457
- *
458
- * U+2714 and nothing else. `✓` (U+2713) and `☑` (U+2611) are the shapes a check
459
- * mark could take; neither has been seen on a pane, and this reading is shared
460
- * with `ChatSurface` and `extractCommandCodeSelectionListFrame`, which run for
461
- * EVERY tool — so an unmeasured glyph here widens what other tools' frames can
462
- * be claimed as this screen.
463
- */
464
- const COMMAND_CODE_TAB_ANSWERED_MARKERS = '✔';
465
- /** One `<marker> <label>` cell of the tab strip. */
466
- const COMMAND_CODE_TAB_SEGMENT_PATTERN = new RegExp(`^\\s*([${COMMAND_CODE_TAB_SELECTED_MARKERS}${COMMAND_CODE_TAB_UNSELECTED_MARKERS}${COMMAND_CODE_TAB_ANSWERED_MARKERS}])\\s+\\S`);
467
- /**
468
- * Is this row Command Code's question-screen tab strip?
469
- *
470
- * Three conditions, and each one is a bullet list this predicate has to refuse:
471
- *
472
- * - **two or more `|`-separated cells.** `● Dispatch` on its own is a bullet;
473
- * `● Dispatch | ◯ Review` is a strip. The separator is the cheapest part of
474
- * the structure and the one prose never has in this position;
475
- * - **every cell is `<marker> <label>`.** A row that is a strip for its first
476
- * cell and prose for its second is prose;
477
- * - **at least one filled marker, and at least one other cell.** A tab strip
478
- * says which tab has the screen. A row of identical bullets does not, and
479
- * `● one | ● two` is exactly the list-with-a-pipe this rules out. The other
480
- * cell may be hollow (not answered yet) or the `✔` of an answered tab
481
- * (measured on 1.54.1 — Issue #2753); what may not be missing is the filled
482
- * one, so `✔ one | ✔ two` is still refused.
483
- */
484
- function isCommandCodeQuestionTabRow(line) {
485
- const segments = line.split('|');
486
- if (segments.length < 2)
487
- return false;
488
- let selected = 0;
489
- let others = 0;
490
- for (const segment of segments) {
491
- const match = COMMAND_CODE_TAB_SEGMENT_PATTERN.exec(segment);
492
- if (match === null)
493
- return false;
494
- if (COMMAND_CODE_TAB_SELECTED_MARKERS.includes(match[1]))
495
- selected += 1;
496
- else
497
- others += 1;
498
- }
499
- return selected > 0 && others > 0;
500
- }
501
- /**
502
- * Rows that mean the region spans more than the one dialog on screen now.
503
- *
504
- * Issue #2521's condition 4: the tab strip and its options have to be the
505
- * SAME screen, with no other turn's generating or completion UI between them.
506
- * Structurally that is mostly settled by taking the LAST rule row as the top
507
- * edge — a new turn repaints the composer, and the composer's own lower rule
508
- * then becomes that edge — so this pattern is the belt to that braces, for a
509
- * frame captured mid-repaint.
510
- *
511
- * Two rows, both restated here rather than imported: `cli-patterns` owns
512
- * Command Code's busy and marker vocabularies and pulls the logger and the tool
513
- * registry in with them, and this module is the browser-safe leaf the chat
514
- * surface imports (see the module docblock).
515
- *
516
- * - `esc to interrupt`, the tail Command Code appends to every status row
517
- * (`COMMAND_CODE_INTERRUPT_HINT_PATTERN`). A turn is in flight;
518
- * - a row that OPENS with U+273B and a word — `✻ Thought for 1 second`,
519
- * `✻ Worked for 4s`. Matched by shape rather than by the two English verbs,
520
- * so a reworded or localised marker still ends the region.
521
- */
522
- const COMMAND_CODE_QUESTION_REGION_REJECT_PATTERN = /\besc\s+to\s+interrupt\b|^[^\S\n]*✻[^\S\n]+\S/im;
128
+ const selection_shape_1 = require("./tools/command-code/selection-shape");
129
+ var selection_shape_2 = require("./tools/command-code/selection-shape");
130
+ Object.defineProperty(exports, "COMMAND_CODE_PLAN_APPROVE_CHOICE_FOOTER", { enumerable: true, get: function () { return selection_shape_2.COMMAND_CODE_PLAN_APPROVE_CHOICE_FOOTER; } });
131
+ Object.defineProperty(exports, "COMMAND_CODE_PLAN_APPROVE_CHOICE_ROW", { enumerable: true, get: function () { return selection_shape_2.COMMAND_CODE_PLAN_APPROVE_CHOICE_ROW; } });
132
+ Object.defineProperty(exports, "COMMAND_CODE_SELECTION_LIST_FOOTER", { enumerable: true, get: function () { return selection_shape_2.COMMAND_CODE_SELECTION_LIST_FOOTER; } });
133
+ Object.defineProperty(exports, "DISMISSABLE_PANEL_FOOTER_PATTERN", { enumerable: true, get: function () { return selection_shape_2.DISMISSABLE_PANEL_FOOTER_PATTERN; } });
134
+ Object.defineProperty(exports, "hasCommandCodeDismissablePanelFooterAtBottom", { enumerable: true, get: function () { return selection_shape_2.hasCommandCodeDismissablePanelFooterAtBottom; } });
135
+ Object.defineProperty(exports, "hasCommandCodePlanReviewFooterAtBottom", { enumerable: true, get: function () { return selection_shape_2.hasCommandCodePlanReviewFooterAtBottom; } });
136
+ Object.defineProperty(exports, "hasCommandCodeSelectionListFooterAtBottom", { enumerable: true, get: function () { return selection_shape_2.hasCommandCodeSelectionListFooterAtBottom; } });
137
+ Object.defineProperty(exports, "hasDismissablePanelFooter", { enumerable: true, get: function () { return selection_shape_2.hasDismissablePanelFooter; } });
138
+ Object.defineProperty(exports, "isCommandCodePlanApproveChoice", { enumerable: true, get: function () { return selection_shape_2.isCommandCodePlanApproveChoice; } });
139
+ Object.defineProperty(exports, "readCommandCodeReviewPage", { enumerable: true, get: function () { return selection_shape_2.readCommandCodeReviewPage; } });
523
140
  /**
524
141
  * Where a footer-less Command Code question screen sits on a pane (Issue #2521).
525
142
  *
@@ -687,111 +304,6 @@ function readCommandCodeQuestionRegion(frame) {
687
304
  function hasCommandCodeQuestionChrome(frame) {
688
305
  return scanCommandCodeQuestionScreen(frame) !== null;
689
306
  }
690
- /**
691
- * The Review page's own three rows, measured on 1.54.1 (Issue #2755 §7).
692
- *
693
- * `Enter` on the `Submit` row does not send the answers — it opens a SECOND
694
- * screen:
695
- *
696
- * ✔ Update scope | ● Review
697
- *
698
- * 1. Which files should I update?
699
- * calc.js
700
- *
701
- * ❯ 1. Submit
702
- * 2. Cancel
703
- *
704
- * ← to go back and edit
705
- *
706
- * ## Why this needs a reading of its own
707
- *
708
- * Because it is a real numbered list under a real tab strip, and the GENERIC
709
- * parser answers it: a two-option `multiple_choice` whose default is `Submit`.
710
- * The default answer on that payload does not pick anything — it COMMITS
711
- * whatever the human has ticked so far, from a payload nobody meant to expose,
712
- * which is #1928's shape one screen later. Auto-Yes fires on defaults.
713
- *
714
- * Words rather than structure, and deliberately: the two numbered rows are
715
- * `Submit` and `Cancel`, which is the same shape as any other two-option
716
- * question. What separates this page from a question is only what it SAYS, so
717
- * all three rows are required together — the confirm pair AND the back hint —
718
- * and the whole thing is anchored inside a recognised question region. A screen
719
- * that carries two of the three keeps every verdict it had.
720
- *
721
- * The cursor glyph is optional on both numbered rows: it rests on `1. Submit`
722
- * when the page is reached by `Enter`, and the Issue is explicit that a pattern
723
- * decided on the bare word would miss it.
724
- */
725
- const COMMAND_CODE_REVIEW_SUBMIT_ROW_PATTERN = /^[^\S\n]*(?:\u276F[^\S\n]*)?1[.)][^\S\n]+Submit[^\S\n]*$/im;
726
- /** The `Cancel` half of {@link COMMAND_CODE_REVIEW_SUBMIT_ROW_PATTERN}'s pair. */
727
- const COMMAND_CODE_REVIEW_CANCEL_ROW_PATTERN = /^[^\S\n]*(?:\u276F[^\S\n]*)?2[.)][^\S\n]+Cancel[^\S\n]*$/im;
728
- /** The footer only the Review page draws. */
729
- const COMMAND_CODE_REVIEW_BACK_HINT_PATTERN = /^[^\S\n]*\u2190[^\S\n]+to[^\S\n]+go[^\S\n]+back[^\S\n]+and[^\S\n]+edit[^\S\n]*$/im;
730
- /**
731
- * The warning the Review page carries when it was reached with answers missing.
732
- *
733
- * Measured from the undocumented `d`, which ends a multi-select from any row:
734
- * `⚠ You have not answered all questions` over a `No answer`. Issue #2755 §7
735
- * requires that such a page is never read as "answered", which is why the
736
- * predicate below reports it rather than hiding it.
737
- */
738
- const COMMAND_CODE_REVIEW_UNANSWERED_PATTERN = /have\s+not\s+answered\s+all\s+questions/i;
739
- /**
740
- * Read Command Code's `AskUserQuestion` Review page, if this frame is one
741
- * (Issue #2755 §7).
742
- *
743
- * The same region {@link readCommandCodeQuestionRegion} works on — last rule
744
- * row, tab strip as the first row under it — plus the three rows above. The
745
- * question-shaped conditions are deliberately NOT applied: this page has no
746
- * question body of its own on the `Submit`/`Cancel` spelling (the answers sit
747
- * where the question would), and it draws `1.` twice, so the strict reading
748
- * declines it for a numbering reason that says nothing about what it is.
749
- *
750
- * `null` for everything else, so no existing verdict moves except the two
751
- * captures this is about.
752
- *
753
- * @param frame - a raw `capture-pane -p -e` frame, ANSI intact (CRLF tolerated)
754
- */
755
- function readCommandCodeReviewPage(frame) {
756
- if (!frame)
757
- return null;
758
- const lines = frame.replace(/\r\n/g, '\n').split('\n').map(ansi_1.stripAnsi);
759
- let last = lines.length - 1;
760
- while (last >= 0 && lines[last].trim() === '')
761
- last -= 1;
762
- if (last < 1)
763
- return null;
764
- let ruleLineIndex = -1;
765
- for (let i = last - 1; i >= 0; i -= 1) {
766
- const row = lines[i].trim();
767
- if (row.length < COMMAND_CODE_RULE_MIN_COLUMNS)
768
- continue;
769
- if (!COMMAND_CODE_RULE_ROW_PATTERN.test(row))
770
- continue;
771
- ruleLineIndex = i;
772
- break;
773
- }
774
- if (ruleLineIndex < 0)
775
- return null;
776
- const region = lines.slice(ruleLineIndex + 1, last + 1);
777
- const tabOffset = region.findIndex((line) => line.trim() !== '');
778
- if (tabOffset < 0)
779
- return null;
780
- if (!isCommandCodeQuestionTabRow(region[tabOffset]))
781
- return null;
782
- const body = region.join('\n');
783
- if (!COMMAND_CODE_REVIEW_SUBMIT_ROW_PATTERN.test(body))
784
- return null;
785
- if (!COMMAND_CODE_REVIEW_CANCEL_ROW_PATTERN.test(body))
786
- return null;
787
- if (!COMMAND_CODE_REVIEW_BACK_HINT_PATTERN.test(body))
788
- return null;
789
- const submitRow = region.find((row) => COMMAND_CODE_REVIEW_SUBMIT_ROW_PATTERN.test(row));
790
- return {
791
- hasUnansweredWarning: COMMAND_CODE_REVIEW_UNANSWERED_PATTERN.test(body),
792
- cursorOnSubmit: submitRow !== undefined && submitRow.includes(COMMAND_CODE_CURSOR_GLYPH),
793
- };
794
- }
795
307
  /**
796
308
  * The structural half of the question-screen reading, shared by the strict
797
309
  * {@link readCommandCodeQuestionRegion} and the weaker
@@ -816,9 +328,9 @@ function scanCommandCodeQuestionScreen(frame) {
816
328
  let ruleLineIndex = -1;
817
329
  for (let i = last - 1; i >= 0; i -= 1) {
818
330
  const row = lines[i].trim();
819
- if (row.length < COMMAND_CODE_RULE_MIN_COLUMNS)
331
+ if (row.length < selection_shape_1.COMMAND_CODE_RULE_MIN_COLUMNS)
820
332
  continue;
821
- if (!COMMAND_CODE_RULE_ROW_PATTERN.test(row))
333
+ if (!selection_shape_1.COMMAND_CODE_RULE_ROW_PATTERN.test(row))
822
334
  continue;
823
335
  ruleLineIndex = i;
824
336
  break;
@@ -828,19 +340,19 @@ function scanCommandCodeQuestionScreen(frame) {
828
340
  const region = lines.slice(ruleLineIndex + 1, last + 1);
829
341
  const body = region.join('\n');
830
342
  // 5. The screens this reading must not take over.
831
- if (FILTER_INPUT_PATTERN.test(body))
343
+ if (selection_shape_patterns_1.FILTER_INPUT_PATTERN.test(body))
832
344
  return null;
833
- if (exports.COMMAND_CODE_SELECTION_LIST_FOOTER.test(body))
345
+ if (selection_shape_1.COMMAND_CODE_SELECTION_LIST_FOOTER.test(body))
834
346
  return null;
835
- if (exports.DISMISSABLE_PANEL_FOOTER_PATTERN.test(body))
347
+ if (selection_shape_1.DISMISSABLE_PANEL_FOOTER_PATTERN.test(body))
836
348
  return null;
837
- if (COMMAND_CODE_QUESTION_REGION_REJECT_PATTERN.test(body))
349
+ if (selection_shape_1.COMMAND_CODE_QUESTION_REGION_REJECT_PATTERN.test(body))
838
350
  return null;
839
351
  // 2. The tab strip opens the region.
840
352
  const tabOffset = region.findIndex((line) => line.trim() !== '');
841
353
  if (tabOffset < 0)
842
354
  return null;
843
- if (!isCommandCodeQuestionTabRow(region[tabOffset]))
355
+ if (!(0, selection_shape_1.isCommandCodeQuestionTabRow)(region[tabOffset]))
844
356
  return null;
845
357
  // 3. Numbered rows under it.
846
358
  const numbers = [];
@@ -893,7 +405,7 @@ function scanCommandCodeQuestionScreen(frame) {
893
405
  let cursorOffset = -1;
894
406
  let cursorOnOptionRow = false;
895
407
  for (let i = 0; i < region.length; i += 1) {
896
- const inRow = region[i].split(COMMAND_CODE_CURSOR_GLYPH).length - 1;
408
+ const inRow = region[i].split(selection_shape_1.COMMAND_CODE_CURSOR_GLYPH).length - 1;
897
409
  if (inRow === 0)
898
410
  continue;
899
411
  cursorCount += inRow;
@@ -977,7 +489,7 @@ function extractCommandCodeSelectionListFrame(frame) {
977
489
  const lines = frame.replace(/\r\n/g, '\n').split('\n');
978
490
  let footer = -1;
979
491
  for (let i = lines.length - 1; i >= 0; i -= 1) {
980
- if (exports.COMMAND_CODE_SELECTION_LIST_FOOTER.test((0, ansi_1.stripAnsi)(lines[i]))) {
492
+ if (selection_shape_1.COMMAND_CODE_SELECTION_LIST_FOOTER.test((0, ansi_1.stripAnsi)(lines[i]))) {
981
493
  footer = i;
982
494
  break;
983
495
  }
@@ -1000,9 +512,9 @@ function extractCommandCodeSelectionListFrame(frame) {
1000
512
  }
1001
513
  for (let i = footer - 1; i >= 0; i -= 1) {
1002
514
  const row = (0, ansi_1.stripAnsi)(lines[i]).trim();
1003
- if (row.length < COMMAND_CODE_RULE_MIN_COLUMNS)
515
+ if (row.length < selection_shape_1.COMMAND_CODE_RULE_MIN_COLUMNS)
1004
516
  continue;
1005
- if (!COMMAND_CODE_RULE_ROW_PATTERN.test(row))
517
+ if (!selection_shape_1.COMMAND_CODE_RULE_ROW_PATTERN.test(row))
1006
518
  continue;
1007
519
  return lines.slice(i + 1, footer + 1).join('\n');
1008
520
  }
@@ -1074,8 +586,8 @@ function readSelectionListShape(frame) {
1074
586
  optionCount: countTrailingOptionRun(lines),
1075
587
  offersSessionScope: exports.SESSION_SCOPE_FOOTER_PATTERN.test(tail),
1076
588
  commitsDefaultOnEnter: exports.SET_AS_DEFAULT_FOOTER_PATTERN.test(tail),
1077
- hasFilterInput: FILTER_INPUT_PATTERN.test(tail),
1078
- offersPlanApprove: exports.COMMAND_CODE_PLAN_REVIEW_FOOTER.test(tail),
589
+ hasFilterInput: selection_shape_patterns_1.FILTER_INPUT_PATTERN.test(tail),
590
+ offersPlanApprove: selection_shape_patterns_1.COMMAND_CODE_PLAN_REVIEW_FOOTER.test(tail),
1079
591
  };
1080
592
  }
1081
593
  /**