commandmate 0.43.0 → 0.44.1

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 (531) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +357 -361
  3. package/.next/app-path-routes-manifest.json +33 -33
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +3 -3
  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.nft.json +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.nft.json +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.js.nft.json +1 -1
  16. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/app/update-check/route.js +1 -1
  18. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  19. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/capabilities/route.js +1 -1
  24. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  26. package/.next/server/app/api/daily-summary/route_client-reference-manifest.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.js.nft.json +1 -1
  30. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  32. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  34. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  36. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  38. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  40. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  41. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  43. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  44. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  46. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  47. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  49. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/push/escalation/route.js +1 -1
  52. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  53. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  55. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/push/vapid/route.js +1 -1
  57. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  58. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  60. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  61. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/relays/route.js +1 -1
  63. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  64. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/remote/pair/route.js +2 -2
  66. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  68. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  70. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  71. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/repositories/clone/route.js +1 -1
  73. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  74. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/restore/route.js +1 -1
  78. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  79. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/repositories/route.js +1 -1
  81. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  82. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/repositories/scan/route.js +1 -1
  84. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  85. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/repositories/sync/route.js +1 -1
  87. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  88. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  90. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  92. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  93. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -1
  95. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  97. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/skills/[id]/route.js +1 -1
  99. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  100. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/skills/installations/route.js +1 -1
  102. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  103. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/skills/operations/route.js +2 -2
  105. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  106. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/skills/reindex/route.js +1 -1
  108. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  109. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/skills/route.js +1 -1
  111. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  112. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  114. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  116. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  118. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  120. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  122. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  124. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  126. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  129. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  132. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  135. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -1
  137. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  139. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  141. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  144. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  147. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  149. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  151. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  156. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js.nft.json +1 -1
  204. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  210. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  217. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +7 -7
  219. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  220. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  226. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  228. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  235. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  237. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  240. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  243. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  247. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  249. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  252. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  255. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +3 -3
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  264. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  267. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  270. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  273. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  276. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  279. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  284. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  286. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/terminal/route.js +103 -1
  288. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  289. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  291. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  294. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  296. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  298. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  300. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  304. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  305. package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -1
  306. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  309. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  311. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  312. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  316. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  317. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  318. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  319. package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -1
  320. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/api/worktrees/route.js +1 -1
  322. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  323. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  325. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  326. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  327. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  328. package/.next/server/app/page_client-reference-manifest.js +1 -1
  329. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  330. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  331. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  332. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  333. package/.next/server/app/sessions/page.js +1 -1
  334. package/.next/server/app/sessions/page.js.nft.json +1 -1
  335. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  336. package/.next/server/app/skills/[skillId]/page.js +1 -1
  337. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  338. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  339. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  340. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  341. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
  342. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  343. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  344. package/.next/server/app/worktrees/[id]/page.js +9 -9
  345. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  346. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  347. package/.next/server/app/worktrees/[id]/terminal/page.js +1 -1
  348. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  349. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  350. package/.next/server/app-paths-manifest.json +33 -33
  351. package/.next/server/chunks/1068.js +1 -1
  352. package/.next/server/chunks/1501.js +3 -3
  353. package/.next/server/chunks/2119.js +1 -1
  354. package/.next/server/chunks/2283.js +15 -0
  355. package/.next/server/chunks/2328.js +1 -1
  356. package/.next/server/chunks/2404.js +1 -1
  357. package/.next/server/chunks/2445.js +1 -1
  358. package/.next/server/chunks/2816.js +1 -1
  359. package/.next/server/chunks/4207.js +1 -1
  360. package/.next/server/chunks/4802.js +1 -1
  361. package/.next/server/chunks/488.js +1 -0
  362. package/.next/server/chunks/5326.js +1 -1
  363. package/.next/server/chunks/5456.js +1 -1
  364. package/.next/server/chunks/611.js +1 -1
  365. package/.next/server/chunks/6130.js +1 -1
  366. package/.next/server/chunks/6401.js +1 -1
  367. package/.next/server/chunks/6474.js +14 -0
  368. package/.next/server/chunks/650.js +1 -0
  369. package/.next/server/chunks/6781.js +1 -1
  370. package/.next/server/chunks/{5742.js → 6927.js} +1 -1
  371. package/.next/server/chunks/7506.js +1 -1
  372. package/.next/server/chunks/7685.js +1 -1
  373. package/.next/server/chunks/7905.js +1 -1
  374. package/.next/server/chunks/8543.js +1 -1
  375. package/.next/server/chunks/8581.js +2 -2
  376. package/.next/server/chunks/8728.js +2 -2
  377. package/.next/server/chunks/8782.js +1 -0
  378. package/.next/server/chunks/8791.js +1 -1
  379. package/.next/server/chunks/8918.js +105 -3
  380. package/.next/server/chunks/9130.js +1 -1
  381. package/.next/server/chunks/9390.js +1 -1
  382. package/.next/server/chunks/967.js +1 -1
  383. package/.next/server/chunks/9731.js +3 -3
  384. package/.next/server/chunks/9882.js +3 -3
  385. package/.next/server/middleware-build-manifest.js +1 -1
  386. package/.next/server/middleware-manifest.json +5 -5
  387. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  388. package/.next/server/pages/500.html +1 -1
  389. package/.next/server/server-reference-manifest.json +1 -1
  390. package/.next/server/src/middleware.js +2 -2
  391. package/.next/server/src/middleware.js.map +1 -1
  392. package/.next/static/chunks/{1642-767aed8e7c61ef7f.js → 1642-fb2e176aaadbd137.js} +1 -1
  393. package/.next/static/chunks/2053-85a974ddfe7498fe.js +1 -0
  394. package/.next/static/chunks/{2407-940df9b11fadafc6.js → 2407-f1f258d4a1d92620.js} +1 -1
  395. package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
  396. package/.next/static/chunks/344-e1cefd00787060e4.js +1 -0
  397. package/.next/static/chunks/3922.f45dcfc1e7da552a.js +1 -0
  398. package/.next/static/chunks/5521-c358c31f60e5e689.js +1 -0
  399. package/.next/static/chunks/591-308072f285c34787.js +1 -0
  400. package/.next/static/chunks/6654-ac431270fac1a283.js +1 -0
  401. package/.next/static/chunks/{8165-3525fb42f1b4976e.js → 8165-3853772f6ae1299b.js} +1 -1
  402. package/.next/static/chunks/{8566-a6a7c70558927410.js → 8566-aeda747542072ace.js} +1 -1
  403. package/.next/static/chunks/8811-29eaa24237f48558.js +1 -0
  404. package/.next/static/chunks/{9619-22adf5367c4b7080.js → 9619-6c17a271f7f98fbb.js} +1 -1
  405. package/.next/static/chunks/998-2eb5883186abd0bd.js +1 -0
  406. package/.next/static/chunks/app/layout-da66300cc20244ed.js +1 -0
  407. package/.next/static/chunks/app/more/{page-30057cf1e0762ad2.js → page-87c84987b2765213.js} +1 -1
  408. package/.next/static/chunks/app/{page-8483ba400af011f5.js → page-1b820c421db48c2c.js} +1 -1
  409. package/.next/static/chunks/app/review/page-95f749caae382f46.js +1 -0
  410. package/.next/static/chunks/app/sessions/page-049e06335187aa91.js +1 -0
  411. package/.next/static/chunks/app/skills/[skillId]/{page-74aac15286504ef4.js → page-9ee7a381636e60cb.js} +1 -1
  412. package/.next/static/chunks/app/worktrees/[id]/page-040c5f0f585e6812.js +1 -0
  413. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
  414. package/.next/static/chunks/{webpack-49ade0526854dd4e.js → webpack-021f0741f22dd16a.js} +1 -1
  415. package/.next/static/css/38070d879efa1371.css +1 -0
  416. package/.next/trace +13 -13
  417. package/README.md +90 -605
  418. package/dist/cli/commands/capture.d.ts.map +1 -1
  419. package/dist/cli/commands/capture.js +11 -1
  420. package/dist/cli/commands/docs.d.ts.map +1 -1
  421. package/dist/cli/commands/docs.js +5 -0
  422. package/dist/cli/commands/remote.d.ts +34 -1
  423. package/dist/cli/commands/remote.d.ts.map +1 -1
  424. package/dist/cli/commands/remote.js +171 -6
  425. package/dist/cli/commands/respond.d.ts.map +1 -1
  426. package/dist/cli/commands/respond.js +255 -112
  427. package/dist/cli/commands/stop.d.ts.map +1 -1
  428. package/dist/cli/commands/stop.js +53 -1
  429. package/dist/cli/commands/sync.js +3 -3
  430. package/dist/cli/commands/wait.d.ts.map +1 -1
  431. package/dist/cli/commands/wait.js +11 -0
  432. package/dist/cli/docs/setup-guide.d.ts +14 -0
  433. package/dist/cli/docs/setup-guide.d.ts.map +1 -0
  434. package/dist/cli/docs/setup-guide.js +368 -0
  435. package/dist/cli/types/api-responses.d.ts +21 -0
  436. package/dist/cli/types/api-responses.d.ts.map +1 -1
  437. package/dist/cli/types/index.d.ts +2 -0
  438. package/dist/cli/types/index.d.ts.map +1 -1
  439. package/dist/cli/utils/daemon.d.ts +42 -2
  440. package/dist/cli/utils/daemon.d.ts.map +1 -1
  441. package/dist/cli/utils/daemon.js +222 -40
  442. package/dist/cli/utils/docs-reader.d.ts +6 -0
  443. package/dist/cli/utils/docs-reader.d.ts.map +1 -1
  444. package/dist/cli/utils/docs-reader.js +14 -13
  445. package/dist/cli/utils/npm-runner.d.ts +12 -0
  446. package/dist/cli/utils/npm-runner.d.ts.map +1 -1
  447. package/dist/cli/utils/npm-runner.js +36 -0
  448. package/dist/cli/utils/process-inspect.d.ts +55 -0
  449. package/dist/cli/utils/process-inspect.d.ts.map +1 -0
  450. package/dist/cli/utils/process-inspect.js +214 -0
  451. package/dist/cli/utils/remote-pairing.d.ts +68 -0
  452. package/dist/cli/utils/remote-pairing.d.ts.map +1 -0
  453. package/dist/cli/utils/remote-pairing.js +117 -0
  454. package/dist/cli/utils/server-identity.d.ts +50 -0
  455. package/dist/cli/utils/server-identity.d.ts.map +1 -0
  456. package/dist/cli/utils/server-identity.js +118 -0
  457. package/dist/cli/utils/server-ready.d.ts +13 -0
  458. package/dist/cli/utils/server-ready.d.ts.map +1 -1
  459. package/dist/cli/utils/server-ready.js +16 -0
  460. package/dist/lib/detection/status-reason.d.ts +17 -0
  461. package/dist/lib/detection/status-reason.d.ts.map +1 -1
  462. package/dist/lib/detection/status-reason.js +17 -0
  463. package/dist/lib/security/pairing-code.d.ts +2 -1
  464. package/dist/lib/security/pairing-code.d.ts.map +1 -1
  465. package/dist/server/locales/en/worktree.json +41 -7
  466. package/dist/server/locales/ja/worktree.json +41 -7
  467. package/dist/server/src/config/image-extensions.js +1 -0
  468. package/dist/server/src/config/session-starting-config.js +75 -0
  469. package/dist/server/src/lib/auto-yes-poller.js +22 -0
  470. package/dist/server/src/lib/cli-tools/antigravity.js +2 -1
  471. package/dist/server/src/lib/cli-tools/base.js +15 -1
  472. package/dist/server/src/lib/cli-tools/codex.js +3 -2
  473. package/dist/server/src/lib/cli-tools/command-code-plan-review.js +175 -0
  474. package/dist/server/src/lib/cli-tools/command-code.js +30 -4
  475. package/dist/server/src/lib/cli-tools/copilot.js +2 -1
  476. package/dist/server/src/lib/cli-tools/gemini.js +2 -1
  477. package/dist/server/src/lib/cli-tools/liveness-spec.js +27 -9
  478. package/dist/server/src/lib/cli-tools/opencode-v2.js +2 -1
  479. package/dist/server/src/lib/cli-tools/opencode.js +2 -1
  480. package/dist/server/src/lib/cli-tools/vibe-local.js +2 -1
  481. package/dist/server/src/lib/detection/cli-patterns.js +94 -1
  482. package/dist/server/src/lib/detection/status-reason.js +17 -0
  483. package/dist/server/src/lib/detection/tool-liveness.js +3 -1
  484. package/dist/server/src/lib/detection/tools/codex/detect.js +26 -0
  485. package/dist/server/src/lib/detection/tools/command-code/plan-review-state.js +75 -0
  486. package/dist/server/src/lib/hooks/sources/claude/transcript.js +33 -1
  487. package/dist/server/src/lib/realtime/terminal-broadcast.js +5 -0
  488. package/dist/server/src/lib/session/agent-session-lifecycle.js +11 -0
  489. package/dist/server/src/lib/session/claude-executor.js +2 -2
  490. package/dist/server/src/lib/session/claude-session.js +138 -16
  491. package/dist/server/src/lib/session/current-output-builder.js +49 -21
  492. package/dist/server/src/lib/session/launch-screen.js +57 -0
  493. package/dist/server/src/lib/session/session-start-error.js +20 -0
  494. package/dist/server/src/lib/session/session-starting-state.js +236 -0
  495. package/dist/server/src/lib/skills/agent-state-paths.js +39 -0
  496. package/dist/server/src/lib/skills/receipt-owned-paths.js +118 -0
  497. package/dist/server/src/lib/tmux/tmux.js +25 -0
  498. package/dist/server/src/lib/verification/env-clean-gate.js +195 -6
  499. package/dist/server/src/lib/verification/gate-runner.js +29 -2
  500. package/dist/server/src/lib/verification/scope-gate.js +58 -4
  501. package/docs/en/architecture.md +722 -0
  502. package/docs/en/user-guide/agents-guide.md +306 -0
  503. package/docs/en/user-guide/cli-setup-guide.md +676 -0
  504. package/docs/en/user-guide/cmate-schedules-guide.md +388 -0
  505. package/docs/en/user-guide/commands-guide.md +467 -0
  506. package/docs/en/user-guide/quick-start.md +231 -0
  507. package/docs/en/user-guide/webapp-guide.md +1020 -0
  508. package/docs/en/user-guide/workflow-examples.md +463 -0
  509. package/package.json +18 -7
  510. package/release-notes/0.44.0.json +82 -0
  511. package/release-notes/0.44.1.json +54 -0
  512. package/.next/server/chunks/1990.js +0 -103
  513. package/.next/server/chunks/3707.js +0 -15
  514. package/.next/server/chunks/6491.js +0 -103
  515. package/.next/server/chunks/7004.js +0 -1
  516. package/.next/server/chunks/8673.js +0 -14
  517. package/.next/static/chunks/2039-117a361f795ddc4b.js +0 -1
  518. package/.next/static/chunks/2053-611dd27d42721b79.js +0 -1
  519. package/.next/static/chunks/344-6f9fc1f38f01a839.js +0 -1
  520. package/.next/static/chunks/3778-56f41fc2cecb8c43.js +0 -1
  521. package/.next/static/chunks/3922.8e79fc89f593280b.js +0 -1
  522. package/.next/static/chunks/5449-6cb80bab2bd06b79.js +0 -1
  523. package/.next/static/chunks/6966-bb854d1145783a64.js +0 -1
  524. package/.next/static/chunks/7705-1f58d4c03d991fcf.js +0 -1
  525. package/.next/static/chunks/app/layout-057c850cd0df978e.js +0 -1
  526. package/.next/static/chunks/app/review/page-ff9efae3f86eb840.js +0 -1
  527. package/.next/static/chunks/app/sessions/page-1a8ba152bbcb9efb.js +0 -1
  528. package/.next/static/chunks/app/worktrees/[id]/page-eab0bf7564d3f9e2.js +0 -1
  529. package/.next/static/css/b3f433d52b8ed5c8.css +0 -1
  530. /package/.next/static/{BVkBYdceLRvMROqQIqeBx → 57lOiz8zSEHdw97XIm0af}/_buildManifest.js +0 -0
  531. /package/.next/static/{BVkBYdceLRvMROqQIqeBx → 57lOiz8zSEHdw97XIm0af}/_ssgManifest.js +0 -0
@@ -115,6 +115,23 @@ exports.STATUS_REASON = {
115
115
  OPENCODE_RESPONSE_COMPLETE: 'opencode_response_complete',
116
116
  INPUT_PROMPT: 'input_prompt',
117
117
  NO_RECENT_OUTPUT: 'no_recent_output',
118
+ /**
119
+ * Issue #3179: the agent's launch is still in progress.
120
+ *
121
+ * Published by `current-output-builder` and `worktree-status-helper` while
122
+ * `lib/session/session-starting-state` holds a record for the instance — from
123
+ * `beginAgentSession` until `startSession` returns or throws, bounded by the
124
+ * tool's readiness wait and released early by a dialog the launch does not
125
+ * answer. The frame underneath (a shell prompt and the launch line, or a trust
126
+ * dialog the launch is about to answer) is not read while it is up: the status
127
+ * is `running`, and `isUnclassifiedActive` / `isSelectionListActive` /
128
+ * `isPromptWaiting` are all false, so no pad, no answer sheet and no `wait`
129
+ * exit 10 is raised for a screen nobody has to drive.
130
+ *
131
+ * ADDITIVE in the sense {@link STATUS_REASON.EXITED} is: a reader that does not
132
+ * know the token sees a `running` session.
133
+ */
134
+ STARTING: 'starting',
118
135
  /**
119
136
  * Issue #2070: the tmux session is there, and the TOOL is not.
120
137
  *
@@ -66,7 +66,8 @@ export interface PairingHandoff {
66
66
  export interface CreatedPairing {
67
67
  /**
68
68
  * Plaintext pairing code. NEVER persisted — the caller renders it as a QR
69
- * code and drops it. Re-displaying it means running `remote` again.
69
+ * code and drops it. It cannot be displayed again; `remote pair` mints a
70
+ * replacement instead (Issue #3127, `src/cli/utils/remote-pairing.ts`).
70
71
  */
71
72
  code: string;
72
73
  /** Plaintext long-lived token (also written to the handoff file). */
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-code.d.ts","sourceRoot":"","sources":["../../../src/lib/security/pairing-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAUH,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,MAAQ,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,iDAAiD;AACjD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qFAAqF;AACrF,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmB3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAGzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CASnF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,cAAc,CAU9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA0B1E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAM5D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAE3F;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAgB5E"}
1
+ {"version":3,"file":"pairing-code.d.ts","sourceRoot":"","sources":["../../../src/lib/security/pairing-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAUH,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,MAAQ,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,iDAAiD;AACjD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qFAAqF;AACrF,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmB3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAGzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CASnF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,cAAc,CAU9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA0B1E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAM5D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAE3F;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAgB5E"}
@@ -65,6 +65,10 @@
65
65
  "systemMessage": "System Message",
66
66
  "systemMessageLabel": "System message",
67
67
  "openFile": "Open file: {path}",
68
+ "imageLoading": "Loading image…",
69
+ "imageUnavailable": "Image unavailable",
70
+ "openImage": "Open image: {path}",
71
+ "videoLabel": "Video: {path}",
68
72
  "conversationLabel": "Conversation: {preview}",
69
73
  "filePathMissing": "That path is not in this worktree"
70
74
  },
@@ -406,7 +410,12 @@
406
410
  "stats": "Show usage statistics",
407
411
  "thinking": "Switch the model variant",
408
412
  "web": "Pair another device with this OpenCode",
409
- "worktrees": "Manage workspaces"
413
+ "worktrees": "Manage workspaces",
414
+ "artifact-capabilities": "Load the reference for what a published artifact can use, such as connectors and file downloads",
415
+ "artifact-diagramming": "Load guidance for drawing diagrams in artifacts that stay legible in light and dark themes",
416
+ "claude-in-chrome": "Have Claude carry out a task in your browser through Claude in Chrome",
417
+ "plugin-authoring": "Load the reference Claude uses to write a mod",
418
+ "slides": "Make a new Claude Slides presentation from your brief"
410
419
  }
411
420
  },
412
421
  "session": {
@@ -491,7 +500,10 @@
491
500
  "buttonAriaLabel": "Update CommandMate to v{version}",
492
501
  "buttonReleaseAriaLabel": "Open the v{version} release page",
493
502
  "buttonUpdating": "Updating…",
494
- "statusDialogTitle": "Update status"
503
+ "statusDialogTitle": "Update status",
504
+ "pendingLabel": "v{version} coming soon",
505
+ "pendingDescription": "v{version} is not on npm yet. You can update once it is published there.",
506
+ "notYetPublished": "The new version is not on npm yet. Please try again in a few minutes."
495
507
  },
496
508
  "terminal": {
497
509
  "historyLabel": "History",
@@ -549,6 +561,13 @@
549
561
  "dialogCardLabel": "Terminal screen",
550
562
  "unreadableHint": "Answer with the number shown on screen (1-9) or y/n. Enter confirms whatever the CLI has highlighted."
551
563
  },
564
+ "sessionStarting": {
565
+ "title": "Starting {agent}…",
566
+ "titleWithElapsed": "Starting {agent}… {elapsed}",
567
+ "hint": "The terminal will appear once the agent is ready.",
568
+ "showTerminal": "Show terminal",
569
+ "label": "Agent starting"
570
+ },
552
571
  "chatTranscript": {
553
572
  "regionLabel": "Chat transcript",
554
573
  "loading": "Loading messages",
@@ -1097,11 +1116,26 @@
1097
1116
  "close": "Close (Esc)",
1098
1117
  "closeAria": "Close this screen (Esc)"
1099
1118
  },
1100
- "planApproveKeys": {
1101
- "toolbarLabel": "Approve this plan",
1102
- "approve": "Approve plan (Ctrl+A)",
1103
- "approveAria": "Approve this plan and run it (Ctrl+A)",
1104
- "note": "Approving runs the plan. Use Esc above to cancel instead."
1119
+ "planReview": {
1120
+ "groupLabel": "Plan review",
1121
+ "commentLabel": "Comment on the plan",
1122
+ "commentPlaceholder": "What should change? (Add comment → Submit review)",
1123
+ "comment": "Add comment",
1124
+ "submit": "Submit review (Ctrl+R)",
1125
+ "approve": "Approve (Ctrl+A)",
1126
+ "cancel": "Cancel (Esc)",
1127
+ "approveConfirmLabel": "Confirm plan approval",
1128
+ "approveConfirmText": "Approving runs the plan. Approve it?",
1129
+ "approveConfirmYes": "Approve and run",
1130
+ "approveConfirmNo": "Not now",
1131
+ "refusal": {
1132
+ "ambiguousAnswer": "Nothing was sent: a bare number or yes / no is not an answer here — the plan review has no numbered options. Approve or cancel, or rephrase it as a comment.",
1133
+ "busy": "Nothing was sent: the plan review's focus is not on the plan. Move it back into the plan in the terminal, then retry.",
1134
+ "nothingToSubmit": "There is no comment to submit. Add a comment first.",
1135
+ "invalidRequest": "That action does not fit this screen. Nothing was sent.",
1136
+ "notActive": "Nothing was sent: no plan review is on screen.",
1137
+ "generic": "Could not send."
1138
+ }
1105
1139
  },
1106
1140
  "selectionKeys": {
1107
1141
  "numbersToolbarLabel": "Option number keys",
@@ -65,6 +65,10 @@
65
65
  "systemMessage": "システムメッセージ",
66
66
  "systemMessageLabel": "システムメッセージ",
67
67
  "openFile": "ファイルを開く: {path}",
68
+ "imageLoading": "画像を読み込み中…",
69
+ "imageUnavailable": "画像を表示できません",
70
+ "openImage": "画像を開く: {path}",
71
+ "videoLabel": "動画: {path}",
68
72
  "conversationLabel": "会話: {preview}",
69
73
  "filePathMissing": "このパスは worktree にありません"
70
74
  },
@@ -406,7 +410,12 @@
406
410
  "stats": "使用量の統計を表示",
407
411
  "thinking": "モデルのバリアントを切り替え",
408
412
  "web": "この OpenCode に別のデバイスをペアリング",
409
- "worktrees": "ワークスペースを管理"
413
+ "worktrees": "ワークスペースを管理",
414
+ "artifact-capabilities": "公開アーティファクトで使える機能(コネクタ・ファイルのダウンロードなど)のリファレンスを読み込み",
415
+ "artifact-diagramming": "アーティファクトにライト・ダーク両方で読める図を描くためのガイダンスを読み込み",
416
+ "claude-in-chrome": "Claude in Chrome 経由でブラウザ上の作業を Claude に依頼",
417
+ "plugin-authoring": "mod を書くときに Claude が使うリファレンスを読み込み",
418
+ "slides": "指示から Claude Slides のプレゼンテーションを作成"
410
419
  }
411
420
  },
412
421
  "session": {
@@ -491,7 +500,10 @@
491
500
  "buttonAriaLabel": "CommandMate を v{version} にアップデート",
492
501
  "buttonReleaseAriaLabel": "v{version} のリリースページを開く",
493
502
  "buttonUpdating": "更新中…",
494
- "statusDialogTitle": "アップデートの状態"
503
+ "statusDialogTitle": "アップデートの状態",
504
+ "pendingLabel": "v{version} 公開準備中",
505
+ "pendingDescription": "v{version} は npm への反映待ちです。反映されると更新できるようになります。",
506
+ "notYetPublished": "npm への反映待ちです。しばらくしてから再度お試しください。"
495
507
  },
496
508
  "terminal": {
497
509
  "historyLabel": "履歴",
@@ -549,6 +561,13 @@
549
561
  "dialogCardLabel": "ターミナルの画面",
550
562
  "unreadableHint": "画面に出ている番号(1〜9)か y/n で答えてください。Enter は選択中の項目をそのまま確定します。"
551
563
  },
564
+ "sessionStarting": {
565
+ "title": "{agent} を起動中…",
566
+ "titleWithElapsed": "{agent} を起動中… {elapsed}",
567
+ "hint": "起動が終わるとターミナルを表示します。",
568
+ "showTerminal": "ターミナルを見る",
569
+ "label": "エージェントの起動中"
570
+ },
552
571
  "chatTranscript": {
553
572
  "regionLabel": "チャット履歴",
554
573
  "loading": "メッセージを読み込み中",
@@ -1097,11 +1116,26 @@
1097
1116
  "close": "閉じる (Esc)",
1098
1117
  "closeAria": "この画面を閉じる (Esc)"
1099
1118
  },
1100
- "planApproveKeys": {
1101
- "toolbarLabel": "このプランを承認",
1102
- "approve": "プランを承認 (Ctrl+A)",
1103
- "approveAria": "このプランを承認して実行する (Ctrl+A)",
1104
- "note": "承認するとプランが実行されます。やめる場合は上の Esc を押してください。"
1119
+ "planReview": {
1120
+ "groupLabel": "プランのレビュー",
1121
+ "commentLabel": "プランへのコメント",
1122
+ "commentPlaceholder": "直してほしい点を書く(コメントを追加 → レビューを送信)",
1123
+ "comment": "コメントを追加",
1124
+ "submit": "レビューを送信 (Ctrl+R)",
1125
+ "approve": "承認 (Ctrl+A)",
1126
+ "cancel": "取り消し (Esc)",
1127
+ "approveConfirmLabel": "プランの承認の確認",
1128
+ "approveConfirmText": "承認するとプランが実行されます。承認しますか?",
1129
+ "approveConfirmYes": "承認して実行",
1130
+ "approveConfirmNo": "やめる",
1131
+ "refusal": {
1132
+ "ambiguousAnswer": "番号や yes / no だけの入力は送っていません。計画には番号付きの選択肢がありません。承認か取り消しを使うか、コメントとして書き直してください。",
1133
+ "busy": "レビュー画面のフォーカスが本文以外にあるため、何も送っていません。ターミナルで本文にフォーカスを戻してから、もう一度送ってください。",
1134
+ "nothingToSubmit": "送るコメントがありません。先にコメントを追加してください。",
1135
+ "invalidRequest": "この画面では送れない操作です。何も送っていません。",
1136
+ "notActive": "計画のレビュー画面が表示されていないため、何も送っていません。",
1137
+ "generic": "送信できませんでした。"
1138
+ }
1105
1139
  },
1106
1140
  "selectionKeys": {
1107
1141
  "numbersToolbarLabel": "選択肢の番号キー",
@@ -228,6 +228,7 @@ function validateImageContent(extension, buffer) {
228
228
  return {
229
229
  valid: false,
230
230
  error: `File size exceeds ${exports.IMAGE_MAX_SIZE_BYTES / 1024 / 1024}MB limit`,
231
+ reason: 'too-large',
231
232
  };
232
233
  }
233
234
  const normalizedExt = normalizeExtension(extension);
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * How long a session may be shown as "starting" (Issue #3179).
4
+ *
5
+ * `lib/session/session-starting-state` records when an agent's launch began and
6
+ * clears the record when `BaseCLITool.startSession` returns or throws. These
7
+ * bounds are the escape hatches for the launches that do neither in time:
8
+ * several tools (antigravity, codex, gemini, copilot, Command Code) only LOG
9
+ * when their readiness wait runs out and carry on, so a launch that never
10
+ * became ready would otherwise be shown as starting for as long as the request
11
+ * lingered. Past the bound the screen falls back to what it showed before
12
+ * #3179 — the raw pane — so a human notices the stuck start.
13
+ *
14
+ * @module config/session-starting-config
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.SESSION_STARTING_ELAPSED_THRESHOLD_MS = exports.SESSION_STARTING_PROMPT_GRACE_MS = exports.SESSION_STARTING_DEFAULT_WAIT_MS = exports.SESSION_STARTING_GRACE_MS = void 0;
18
+ exports.getSessionStartingMaxMs = getSessionStartingMaxMs;
19
+ exports.getSessionStartingMaxMsAcrossTools = getSessionStartingMaxMsAcrossTools;
20
+ const types_1 = require("../lib/cli-tools/types");
21
+ /**
22
+ * Slack added on top of a tool's own readiness wait, so the starting display
23
+ * outlives the wait it describes by a little rather than ending a beat before
24
+ * the launch reports.
25
+ */
26
+ exports.SESSION_STARTING_GRACE_MS = 5_000;
27
+ /**
28
+ * The default readiness wait a launch performs (antigravity / codex / gemini /
29
+ * copilot / opencode / Command Code are all measured at about 30 s, counting
30
+ * their initial settle delay and their prompt wait).
31
+ */
32
+ exports.SESSION_STARTING_DEFAULT_WAIT_MS = 30_000;
33
+ /**
34
+ * Per-tool readiness waits that differ from the default. Claude waits for its
35
+ * composer for up to `CLAUDE_INIT_TIMEOUT` (60 s); the literal is restated here
36
+ * rather than imported so this config module stays free of the session graph.
37
+ */
38
+ const SESSION_STARTING_WAIT_MS = {
39
+ claude: 60_000,
40
+ };
41
+ /**
42
+ * The longest a launch of `cliToolId` is shown as starting, in ms.
43
+ *
44
+ * @param cliToolId - The tool being launched
45
+ * @returns Its readiness wait plus {@link SESSION_STARTING_GRACE_MS}
46
+ */
47
+ function getSessionStartingMaxMs(cliToolId) {
48
+ return (SESSION_STARTING_WAIT_MS[cliToolId] ?? exports.SESSION_STARTING_DEFAULT_WAIT_MS)
49
+ + exports.SESSION_STARTING_GRACE_MS;
50
+ }
51
+ /**
52
+ * The longest {@link getSessionStartingMaxMs} over every tool, in ms.
53
+ *
54
+ * A send to a worktree with no session launches the agent inside the request,
55
+ * so the client must wait at least this long (Issue #3194).
56
+ */
57
+ function getSessionStartingMaxMsAcrossTools() {
58
+ return Math.max(...types_1.CLI_TOOL_IDS.map(getSessionStartingMaxMs));
59
+ }
60
+ /**
61
+ * How long a dialog may stay on screen during a launch before it is treated as
62
+ * one the server will NOT answer (a login, an unknown dialog) and the starting
63
+ * display gives way to the raw pane.
64
+ *
65
+ * The dialogs the launch answers itself — the folder-trust screens of
66
+ * antigravity / codex / copilot / claude — are answered within one poll of the
67
+ * launch's readiness loop (≤ 1 s) plus the settle wait after the key, so they
68
+ * never reach this bound.
69
+ */
70
+ exports.SESSION_STARTING_PROMPT_GRACE_MS = 5_000;
71
+ /**
72
+ * After how long the client starts printing the elapsed time next to
73
+ * "<agent> を起動中…".
74
+ */
75
+ exports.SESSION_STARTING_ELAPSED_THRESHOLD_MS = 5_000;
@@ -64,6 +64,7 @@ const response_checker_1 = require("./polling/response-checker");
64
64
  const antigravity_permission_receipts_1 = require("./polling/antigravity-permission-receipts");
65
65
  const auto_yes_resolver_1 = require("./polling/auto-yes-resolver");
66
66
  const auto_yes_policy_1 = require("./polling/auto-yes-policy");
67
+ const detect_1 = require("./detection/tools/codex/detect");
67
68
  const auto_yes_suppression_state_1 = require("./polling/auto-yes-suppression-state");
68
69
  const auto_yes_dialog_gate_1 = require("./polling/auto-yes-dialog-gate");
69
70
  const task_transition_service_1 = require("./tasks/task-transition-service");
@@ -490,6 +491,27 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
490
491
  });
491
492
  return 'no_answer';
492
493
  }
494
+ // 3.2. Issue #3062: codex's `/model` picker (both stages) is not ours to
495
+ // answer. A digit there is an immediate decision, so the base rules'
496
+ // default would choose the model and effort for the operator. Judged by the
497
+ // picker's own footer, not by `kind: picker`, which the hooks screens share.
498
+ // The tool's `detectPrompt` still reports the prompt, so `/prompt-response`
499
+ // (the human's answer) is unaffected. Reuses `unclassified-frame`: the tool
500
+ // recognised the frame and deliberately declined it.
501
+ if (cliToolId === 'codex' && (0, detect_1.isCodexModelPickerFrame)(cleanOutput)) {
502
+ (0, auto_yes_suppression_state_1.recordPolicySuppression)(worktreeId, cliToolId, instanceId, {
503
+ reason: 'unclassified-frame',
504
+ mode: null,
505
+ promptType: promptDetection.promptData.type,
506
+ });
507
+ warnOncePerFrame(pollerState, `${frameKey}\u0000codex-model-picker`, 'poller:auto-yes-skipped-model-picker', {
508
+ worktreeId,
509
+ cliToolId,
510
+ instanceId,
511
+ promptType: promptDetection.promptData.type,
512
+ });
513
+ return 'no_answer';
514
+ }
493
515
  // 3.5. Issue #1928 (§4 D1 decision 4): the generic numbered-list inference is
494
516
  // not enough to send an answer. The detection above judges the ROWS, and the
495
517
  // rows of an agent's own reply can be indistinguishable from a dialog's --
@@ -26,6 +26,7 @@ const agent_session_lifecycle_1 = require("../../lib/session/agent-session-lifec
26
26
  const logger_1 = require("../../lib/logger");
27
27
  const cli_tool_timing_config_1 = require("../../config/cli-tool-timing-config");
28
28
  const install_hints_1 = require("./install-hints");
29
+ const launch_screen_1 = require("../../lib/session/launch-screen");
29
30
  const logger = (0, logger_1.createLogger)('cli-tools/antigravity');
30
31
  /**
31
32
  * Extract error message from unknown error type (DRY).
@@ -254,7 +255,7 @@ class AntigravityTool extends base_1.BaseCLITool {
254
255
  worktreePath,
255
256
  });
256
257
  const launchCommand = model ? `${base} --model ${shellSingleQuote(model)}` : base;
257
- await (0, tmux_1.sendKeys)(sessionName, launchCommand, true);
258
+ await (0, tmux_1.sendKeys)(sessionName, (0, launch_screen_1.withLaunchScreenCleared)(launchCommand), true);
258
259
  // Wait for agy to initialize
259
260
  await new Promise((resolve) => setTimeout(resolve, ANTIGRAVITY_INIT_WAIT_MS));
260
261
  // Poll until the interactive prompt is ready (handles the trust dialog)
@@ -28,6 +28,7 @@ const logger_1 = require("../logger");
28
28
  const terminal_keys_1 = require("../../types/terminal-keys");
29
29
  const cli_tool_timing_config_1 = require("../../config/cli-tool-timing-config");
30
30
  const tmux_pane_config_1 = require("../../config/tmux-pane-config");
31
+ const session_starting_state_1 = require("../session/session-starting-state");
31
32
  const execAsync = (0, util_1.promisify)(child_process_1.exec);
32
33
  const logger = (0, logger_1.createLogger)('cli-tools/base');
33
34
  /**
@@ -213,8 +214,12 @@ class BaseCLITool {
213
214
  * @throws Whatever {@link launchSession} threw — unchanged, after reporting
214
215
  */
215
216
  async startSession(worktreeId, worktreePath, instanceId, model) {
217
+ // Issue #3195: this launch's "starting" record is written under this token
218
+ // (see `session-starting-state`), so the `finally` below clears this
219
+ // launch's record and never a later launch's of the same instance.
220
+ const startingToken = (0, session_starting_state_1.issueSessionStartingToken)();
216
221
  try {
217
- await this.launchSession(worktreeId, worktreePath, instanceId, model);
222
+ await (0, session_starting_state_1.runWithSessionStartingToken)(startingToken, () => this.launchSession(worktreeId, worktreePath, instanceId, model));
218
223
  }
219
224
  catch (error) {
220
225
  // Issue #2429: a launch that threw is reported as a failed start and as
@@ -229,6 +234,15 @@ class BaseCLITool {
229
234
  }, error);
230
235
  throw error;
231
236
  }
237
+ finally {
238
+ // Issue #3179: the launch is over, returned or thrown, so the screen
239
+ // stops showing it as starting. `beginAgentSession` wrote the record on
240
+ // the creation path; a reused pane never had one, and this is a no-op for
241
+ // it. `relaunchIfToolExited` comes through here too. Issue #3195: only
242
+ // under this launch's token — a launch killed and started again has a
243
+ // newer record under this key, and it is not this launch's to end.
244
+ (0, session_starting_state_1.clearSessionStarting)(worktreeId, this.id, instanceId, startingToken);
245
+ }
232
246
  const adopted = this.takeAdoptionMark(worktreeId, instanceId);
233
247
  if (adopted !== null)
234
248
  await this.warnIfHookUrlIsStale(worktreeId, adopted, instanceId);
@@ -20,6 +20,7 @@ const hooks_config_1 = require("../../lib/hooks/sources/codex/hooks-config");
20
20
  const agent_session_lifecycle_1 = require("../../lib/session/agent-session-lifecycle");
21
21
  const cli_tool_timing_config_1 = require("../../config/cli-tool-timing-config");
22
22
  const install_hints_1 = require("./install-hints");
23
+ const launch_screen_1 = require("../../lib/session/launch-screen");
23
24
  const logger = (0, logger_1.createLogger)('cli-tools/codex');
24
25
  /**
25
26
  * Extract error message from unknown error type (DRY)
@@ -268,11 +269,11 @@ class CodexTool extends base_1.BaseCLITool {
268
269
  // as the new one's.
269
270
  const relaunchIntoSamePane = async () => {
270
271
  (0, agent_session_lifecycle_1.beginAgentSession)({ worktreeId, cliToolId: sources_1.CODEX_CLI_TOOL_ID, instanceId });
271
- await (0, tmux_1.sendKeys)(sessionName, launchCommand, true);
272
+ await (0, tmux_1.sendKeys)(sessionName, (0, launch_screen_1.withLaunchScreenCleared)(launchCommand), true);
272
273
  await new Promise((resolve) => setTimeout(resolve, CODEX_INIT_WAIT_MS));
273
274
  };
274
275
  // Start Codex CLI in interactive mode
275
- await (0, tmux_1.sendKeys)(sessionName, launchCommand, true);
276
+ await (0, tmux_1.sendKeys)(sessionName, (0, launch_screen_1.withLaunchScreenCleared)(launchCommand), true);
276
277
  // Wait for Codex to initialize
277
278
  await new Promise((resolve) => setTimeout(resolve, CODEX_INIT_WAIT_MS));
278
279
  // Poll until Codex interactive prompt is ready
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ /**
3
+ * Answering Command Code's plan review overlay from the CLI / API (Issue #3125).
4
+ *
5
+ * The overlay (`REVIEW` — `Approve ctrl+a` / `Cancel esc` / `type + enter to
6
+ * comment`) is not a dialog with options and not the composer, so neither
7
+ * `respond` (options) nor `send` (composer) could reach it. This module is the
8
+ * one place its keys are decided:
9
+ *
10
+ * | action | keys | allowed on phase |
11
+ * |-----------|----------------------------------------|-------------------------------|
12
+ * | `comment` | `Enter`, the text (`-l`), `Enter` | `body` |
13
+ * | `submit` | [the comment keys], `C-r` | `body` (needs ≥1 comment) |
14
+ * | `approve` | `C-a` — or `Enter` on the radio | `body`, `approve-choice` |
15
+ * | `cancel` | `Escape` | `body`, `approve-choice` |
16
+ *
17
+ * Why the comment opens the box with `Enter` first instead of just typing: `?`
18
+ * `x` `!` are one-key quick comments on this screen (measured on 1.58.0), so a
19
+ * comment that begins with one of them would pin a canned sentence instead.
20
+ * An empty `Enter` with the cursor in the plan body only opens the box
21
+ * (measured, #2763 §1 問い 4), and inside the box every key is text.
22
+ *
23
+ * Everything else is refused with nothing sent:
24
+ * - `action-focus`: `Enter` RUNS the focused action there (#2763 approved a
25
+ * plan that way), and what the shortcuts and letters do with the focus on
26
+ * the list was not measured;
27
+ * - `comment-box`: someone is typing a comment in the pane, and `Escape` there
28
+ * discards it rather than cancelling the review;
29
+ * - `unknown`: a hint bar this module has not seen.
30
+ *
31
+ * Approval is only ever the explicit `approve` action. Nothing here is reached
32
+ * by Auto-Yes: the detector publishes this screen with `hasActivePrompt: false`.
33
+ *
34
+ * @module lib/cli-tools/command-code-plan-review
35
+ */
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.PLAN_REVIEW_STEP_DELAY_MS = exports.PLAN_REVIEW_REFUSAL = exports.PLAN_REVIEW_ACTIONS = void 0;
38
+ exports.isPlanReviewAction = isPlanReviewAction;
39
+ exports.planCommandCodePlanReviewKeys = planCommandCodePlanReviewKeys;
40
+ exports.sendCommandCodePlanReviewKeys = sendCommandCodePlanReviewKeys;
41
+ const tmux_1 = require("../tmux/tmux");
42
+ const tmux_capture_cache_1 = require("../tmux/tmux-capture-cache");
43
+ exports.PLAN_REVIEW_ACTIONS = ['comment', 'submit', 'approve', 'cancel'];
44
+ function isPlanReviewAction(value) {
45
+ return typeof value === 'string' && exports.PLAN_REVIEW_ACTIONS.includes(value);
46
+ }
47
+ /** Refusal reason codes. All of them mean "nothing was sent". */
48
+ exports.PLAN_REVIEW_REFUSAL = {
49
+ /** The overlay is up, but its focus is somewhere these keys are unsafe. */
50
+ BUSY: 'plan_review_busy',
51
+ /** `submit` with no comment given and none pending. */
52
+ NOTHING_TO_SUBMIT: 'plan_review_nothing_to_submit',
53
+ /** A bare number / yes / no, which would otherwise become a comment. */
54
+ AMBIGUOUS_ANSWER: 'plan_review_ambiguous_answer',
55
+ /** The request does not fit this screen (no text for a comment, `--default`). */
56
+ INVALID_REQUEST: 'plan_review_invalid_request',
57
+ };
58
+ /**
59
+ * A comment the caller did not label as one, that is really an answer meant
60
+ * for an options dialog. Typed as a comment it would land on the plan.
61
+ */
62
+ const DIALOG_ANSWER_LIKE = /^(?:\d+(?:\s*,\s*\d+)*|y|yes|n|no)$/i;
63
+ /** One line: a newline inside the box would pin the comment half-typed. */
64
+ function normalizeComment(text) {
65
+ return text.replace(/\s*[\r\n]+\s*/g, ' ').trim();
66
+ }
67
+ const PHASE_REFUSALS = {
68
+ 'action-focus': 'The plan review has its focus on the action list (`↑/↓ choose · enter to run`), where Enter runs the ' +
69
+ 'focused action, so no key was sent. Move the focus back into the plan (↑) in the terminal, then retry.',
70
+ 'comment-box': 'A comment is being typed in the plan review (`enter to pin · esc discard`), so no key was sent. ' +
71
+ 'Pin or discard it in the terminal, then retry.',
72
+ unknown: 'The plan review is up, but its hint bar is not one this version knows, so no key was sent. ' +
73
+ 'Answer it in the terminal.',
74
+ };
75
+ /**
76
+ * Decide the keys for a request against the screen as it is now. Pure.
77
+ *
78
+ * @param state - `readCommandCodePlanReviewState` of the frame about to be answered
79
+ * @param request - what the caller asked for
80
+ */
81
+ function planCommandCodePlanReviewKeys(state, request) {
82
+ const comment = request.text === undefined ? '' : normalizeComment(request.text);
83
+ const action = request.action ?? 'comment';
84
+ if (request.useDefault) {
85
+ return {
86
+ ok: false,
87
+ reason: exports.PLAN_REVIEW_REFUSAL.INVALID_REQUEST,
88
+ message: 'The plan review has no default option. Comment with text, or choose ' +
89
+ '--plan-review submit | approve | cancel.',
90
+ };
91
+ }
92
+ if ((action === 'approve' || action === 'cancel') && comment) {
93
+ return {
94
+ ok: false,
95
+ reason: exports.PLAN_REVIEW_REFUSAL.INVALID_REQUEST,
96
+ message: `--plan-review ${action} takes no text. Comment first, then ${action}.`,
97
+ };
98
+ }
99
+ if (action === 'comment' && !comment) {
100
+ return {
101
+ ok: false,
102
+ reason: exports.PLAN_REVIEW_REFUSAL.INVALID_REQUEST,
103
+ message: 'A plan review comment needs text.',
104
+ };
105
+ }
106
+ if (request.action === undefined && DIALOG_ANSWER_LIKE.test(comment)) {
107
+ return {
108
+ ok: false,
109
+ reason: exports.PLAN_REVIEW_REFUSAL.AMBIGUOUS_ANSWER,
110
+ message: `The plan review has no numbered options, and "${comment}" would be pinned to the plan as a ` +
111
+ 'comment, so no key was sent. Approve or cancel with --plan-review approve | cancel; to really ' +
112
+ 'comment this text, add --plan-review comment.',
113
+ };
114
+ }
115
+ if (state.phase === 'approve-choice') {
116
+ // The radio `ctrl+a` opens when comments are pending (1.58.0): `enter
117
+ // confirm · esc back`. Enter confirms whichever side is `(•)`.
118
+ if (action === 'approve')
119
+ return { ok: true, action, steps: [{ kind: 'key', key: 'Enter' }], comment: null };
120
+ if (action === 'cancel')
121
+ return { ok: true, action, steps: [{ kind: 'key', key: 'Escape' }], comment: null };
122
+ return {
123
+ ok: false,
124
+ reason: exports.PLAN_REVIEW_REFUSAL.BUSY,
125
+ message: 'The plan review is asking how to approve (`←/→ choose · enter confirm · esc back`), so no key was ' +
126
+ 'sent. Confirm with --plan-review approve, or go back with --plan-review cancel.',
127
+ };
128
+ }
129
+ if (state.phase !== 'body') {
130
+ return { ok: false, reason: exports.PLAN_REVIEW_REFUSAL.BUSY, message: PHASE_REFUSALS[state.phase] };
131
+ }
132
+ const commentSteps = comment
133
+ ? [{ kind: 'key', key: 'Enter' }, { kind: 'text', text: comment }, { kind: 'key', key: 'Enter' }]
134
+ : [];
135
+ switch (action) {
136
+ case 'comment':
137
+ return { ok: true, action, steps: commentSteps, comment };
138
+ case 'submit':
139
+ if (!comment && state.pendingComments === 0) {
140
+ return {
141
+ ok: false,
142
+ reason: exports.PLAN_REVIEW_REFUSAL.NOTHING_TO_SUBMIT,
143
+ message: 'The plan review has no pending comment to submit, so no key was sent. Give the comment text ' +
144
+ 'with --plan-review submit, or approve / cancel the plan.',
145
+ };
146
+ }
147
+ return { ok: true, action, steps: [...commentSteps, { kind: 'key', key: 'C-r' }], comment: comment || null };
148
+ case 'approve':
149
+ return { ok: true, action, steps: [{ kind: 'key', key: 'C-a' }], comment: null };
150
+ case 'cancel':
151
+ return { ok: true, action, steps: [{ kind: 'key', key: 'Escape' }], comment: null };
152
+ }
153
+ }
154
+ /** Pause between steps, so the TUI handles each one as its own input event. */
155
+ exports.PLAN_REVIEW_STEP_DELAY_MS = 300;
156
+ /**
157
+ * Send the planned steps, one tmux invocation each.
158
+ *
159
+ * Key steps (including `C-r`) go through `sendSpecialKeys`; the comment text
160
+ * goes through `-l` so it is never resolved as a key name.
161
+ */
162
+ async function sendCommandCodePlanReviewKeys(sessionName, steps, sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))) {
163
+ for (let i = 0; i < steps.length; i++) {
164
+ const step = steps[i];
165
+ if (step.kind === 'text') {
166
+ await (0, tmux_1.sendKeys)(sessionName, step.text, false, { literal: true });
167
+ }
168
+ else {
169
+ await (0, tmux_1.sendSpecialKeys)(sessionName, [step.key]);
170
+ }
171
+ if (i < steps.length - 1)
172
+ await sleep(exports.PLAN_REVIEW_STEP_DELAY_MS);
173
+ }
174
+ (0, tmux_capture_cache_1.invalidateCache)(sessionName);
175
+ }