commandmate 0.44.1 → 0.44.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +169 -169
  3. package/.next/app-path-routes-manifest.json +35 -35
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +0 -6
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/update/route.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route.js +1 -1
  12. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update/route.js +2 -2
  15. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/login/route.js +1 -1
  18. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/capabilities/route.js +1 -1
  22. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/route.js +1 -1
  24. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  27. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  28. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  31. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/external-apps/route.js +1 -1
  33. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  37. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  38. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  40. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  41. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  43. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  44. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/push/escalation/route.js +1 -1
  48. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/push/subscriptions/route.js +2 -2
  50. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/push/vapid/route.js +1 -1
  52. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  54. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  55. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/relays/route.js +1 -1
  57. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  58. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  61. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  63. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/clone/route.js +1 -1
  66. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/restore/route.js +1 -1
  70. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  71. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/repositories/route.js +1 -1
  73. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  74. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/scan/route.js +1 -1
  76. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  77. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/repositories/sync/route.js +1 -1
  79. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  80. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  83. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  84. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/sidebar/group-order/route.js +1 -1
  87. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/skills/[id]/route.js +1 -1
  89. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/skills/route.js +1 -1
  94. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/templates/[id]/route.js +2 -2
  99. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/templates/route.js +2 -2
  101. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  106. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  109. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  112. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -3
  117. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  118. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  121. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  124. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  128. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  129. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -2
  192. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -2
  195. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  199. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  208. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +2 -2
  211. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
  214. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  219. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +3 -3
  221. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  240. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  241. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/route.js +1 -1
  264. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  265. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  267. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  269. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  270. package/.next/server/app/page_client-reference-manifest.js +1 -1
  271. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  273. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  274. package/.next/server/app/sessions/page.js +1 -1
  275. package/.next/server/app/sessions/page.js.nft.json +1 -1
  276. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  277. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  278. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  279. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  280. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  281. package/.next/server/app/worktrees/[id]/page.js +11 -11
  282. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  283. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  284. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  285. package/.next/server/app-paths-manifest.json +35 -35
  286. package/.next/server/chunks/1191.js +2 -2
  287. package/.next/server/chunks/1210.js +1 -1
  288. package/.next/server/chunks/1559.js +2 -0
  289. package/.next/server/chunks/1789.js +1 -0
  290. package/.next/server/chunks/2119.js +1 -1
  291. package/.next/server/chunks/2404.js +1 -1
  292. package/.next/server/chunks/2445.js +1 -1
  293. package/.next/server/chunks/2460.js +1 -0
  294. package/.next/server/chunks/2710.js +1 -1
  295. package/.next/server/chunks/2908.js +1 -0
  296. package/.next/server/chunks/2980.js +1 -1
  297. package/.next/server/chunks/3241.js +1 -1
  298. package/.next/server/chunks/3480.js +1 -1
  299. package/.next/server/chunks/3718.js +1 -1
  300. package/.next/server/chunks/4207.js +2 -2
  301. package/.next/server/chunks/450.js +1 -1
  302. package/.next/server/chunks/4672.js +5 -0
  303. package/.next/server/chunks/{9353.js → 4718.js} +2 -2
  304. package/.next/server/chunks/4837.js +14 -0
  305. package/.next/server/chunks/5048.js +1 -1
  306. package/.next/server/chunks/5209.js +1 -0
  307. package/.next/server/chunks/5595.js +1 -0
  308. package/.next/server/chunks/5625.js +25 -0
  309. package/.next/server/chunks/5845.js +1 -0
  310. package/.next/server/chunks/611.js +1 -1
  311. package/.next/server/chunks/6130.js +1 -1
  312. package/.next/server/chunks/6401.js +1 -1
  313. package/.next/server/chunks/6781.js +1 -1
  314. package/.next/server/chunks/6793.js +3 -3
  315. package/.next/server/chunks/7491.js +2 -2
  316. package/.next/server/chunks/7905.js +1 -1
  317. package/.next/server/chunks/850.js +1 -0
  318. package/.next/server/chunks/8543.js +1 -1
  319. package/.next/server/chunks/8728.js +3 -3
  320. package/.next/server/chunks/8791.js +1 -1
  321. package/.next/server/chunks/8800.js +1 -1
  322. package/.next/server/chunks/8918.js +7 -7
  323. package/.next/server/chunks/9130.js +1 -5
  324. package/.next/server/chunks/9390.js +2 -3
  325. package/.next/server/chunks/9584.js +1 -1
  326. package/.next/server/chunks/9627.js +6 -6
  327. package/.next/server/chunks/9731.js +3 -3
  328. package/.next/server/middleware-manifest.json +5 -5
  329. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  330. package/.next/server/pages/500.html +1 -1
  331. package/.next/server/server-reference-manifest.json +1 -1
  332. package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
  333. package/.next/static/chunks/{2407-f1f258d4a1d92620.js → 2407-06d35bb1aa02de80.js} +1 -1
  334. package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
  335. package/.next/static/chunks/4727-5d695d71e3fdf97b.js +1 -0
  336. package/.next/static/chunks/{8165-3853772f6ae1299b.js → 8165-3525fb42f1b4976e.js} +1 -1
  337. package/.next/static/chunks/app/{layout-da66300cc20244ed.js → layout-0d1750b833f5cc3e.js} +1 -1
  338. package/.next/static/chunks/app/sessions/page-2af68c63211c751f.js +1 -0
  339. package/.next/static/chunks/app/worktrees/[id]/page-e36898c3a80e7302.js +1 -0
  340. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
  341. package/.next/static/css/057f64a65726c439.css +1 -0
  342. package/.next/trace +13 -13
  343. package/dist/cli/commands/ask.d.ts.map +1 -1
  344. package/dist/cli/commands/ask.js +120 -119
  345. package/dist/cli/commands/attach.d.ts +94 -0
  346. package/dist/cli/commands/attach.d.ts.map +1 -1
  347. package/dist/cli/commands/attach.js +145 -7
  348. package/dist/cli/commands/auto-yes.js +1 -1
  349. package/dist/cli/commands/capture.d.ts.map +1 -1
  350. package/dist/cli/commands/capture.js +10 -13
  351. package/dist/cli/commands/command-target.d.ts +23 -0
  352. package/dist/cli/commands/command-target.d.ts.map +1 -0
  353. package/dist/cli/commands/command-target.js +25 -0
  354. package/dist/cli/commands/instances.d.ts.map +1 -1
  355. package/dist/cli/commands/instances.js +41 -2
  356. package/dist/cli/commands/message-dispatch.d.ts +36 -0
  357. package/dist/cli/commands/message-dispatch.d.ts.map +1 -0
  358. package/dist/cli/commands/message-dispatch.js +63 -0
  359. package/dist/cli/commands/reply.d.ts.map +1 -1
  360. package/dist/cli/commands/reply.js +2 -5
  361. package/dist/cli/commands/respond.d.ts.map +1 -1
  362. package/dist/cli/commands/respond.js +3 -6
  363. package/dist/cli/commands/send.d.ts.map +1 -1
  364. package/dist/cli/commands/send.js +149 -146
  365. package/dist/cli/commands/wait.d.ts.map +1 -1
  366. package/dist/cli/commands/wait.js +608 -416
  367. package/dist/cli/types/api-responses.d.ts +174 -27
  368. package/dist/cli/types/api-responses.d.ts.map +1 -1
  369. package/dist/cli/types/api-responses.js +4 -2
  370. package/dist/cli/utils/api-client.d.ts +25 -5
  371. package/dist/cli/utils/api-client.d.ts.map +1 -1
  372. package/dist/cli/utils/api-client.js +87 -55
  373. package/dist/cli/utils/server-url.d.ts +1 -0
  374. package/dist/cli/utils/server-url.d.ts.map +1 -1
  375. package/dist/cli/utils/server-url.js +7 -0
  376. package/dist/config/uat-isolation.d.ts +140 -0
  377. package/dist/config/uat-isolation.d.ts.map +1 -0
  378. package/dist/config/uat-isolation.js +246 -0
  379. package/dist/lib/global-state.d.ts +12 -0
  380. package/dist/lib/global-state.d.ts.map +1 -0
  381. package/dist/lib/global-state.js +16 -0
  382. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +33 -0
  383. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -0
  384. package/dist/lib/polling/auto-yes-suppression-reason.js +2 -0
  385. package/dist/lib/session/prompt-view.d.ts +228 -0
  386. package/dist/lib/session/prompt-view.d.ts.map +1 -0
  387. package/dist/lib/session/prompt-view.js +290 -0
  388. package/dist/lib/session/status-evidence-type.d.ts +16 -0
  389. package/dist/lib/session/status-evidence-type.d.ts.map +1 -0
  390. package/dist/lib/session/status-evidence-type.js +2 -0
  391. package/dist/lib/tmux/legacy-session-alias.d.ts.map +1 -1
  392. package/dist/lib/tmux/legacy-session-alias.js +2 -1
  393. package/dist/server/locales/en/worktree.json +3 -1
  394. package/dist/server/locales/ja/worktree.json +3 -1
  395. package/dist/server/server.js +5 -3
  396. package/dist/server/src/cli/types/api-responses.js +4 -2
  397. package/dist/server/src/config/cli-tool-timing-config.js +1 -6
  398. package/dist/server/src/config/uat-isolation.js +246 -0
  399. package/dist/server/src/lib/assistant-response-saver.js +62 -3
  400. package/dist/server/src/lib/auto-yes-lifecycle.js +139 -0
  401. package/dist/server/src/lib/auto-yes-poller.js +465 -160
  402. package/dist/server/src/lib/auto-yes-state.js +2 -2
  403. package/dist/server/src/lib/cli-tools/antigravity.js +39 -80
  404. package/dist/server/src/lib/cli-tools/base.js +151 -0
  405. package/dist/server/src/lib/cli-tools/codex.js +44 -80
  406. package/dist/server/src/lib/cli-tools/command-code.js +24 -56
  407. package/dist/server/src/lib/cli-tools/copilot.js +25 -67
  408. package/dist/server/src/lib/cli-tools/direct-input.js +8 -0
  409. package/dist/server/src/lib/cli-tools/gemini.js +23 -73
  410. package/dist/server/src/lib/cli-tools/opencode-pane-width.js +53 -0
  411. package/dist/server/src/lib/cli-tools/opencode-v2.js +9 -7
  412. package/dist/server/src/lib/cli-tools/opencode.js +21 -85
  413. package/dist/server/src/lib/cli-tools/submit-verified-sender.js +127 -4
  414. package/dist/server/src/lib/cli-tools/vibe-local.js +21 -66
  415. package/dist/server/src/lib/detection/cli-patterns.js +374 -3047
  416. package/dist/server/src/lib/detection/idle-evidence-observation.js +2 -2
  417. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +7 -32
  418. package/dist/server/src/lib/detection/prompt-detector.js +2 -35
  419. package/dist/server/src/lib/detection/selection-shape-patterns.js +69 -0
  420. package/dist/server/src/lib/detection/selection-shape.js +32 -520
  421. package/dist/server/src/lib/detection/shared/pasted-text.js +41 -0
  422. package/dist/server/src/lib/detection/shared/shell-pane-command.js +16 -0
  423. package/dist/server/src/lib/detection/shared/strip-box-drawing.js +25 -0
  424. package/dist/server/src/lib/detection/status-detector.js +1 -1
  425. package/dist/server/src/lib/detection/tools/antigravity/detect.js +12 -60
  426. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +2 -15
  427. package/dist/server/src/lib/detection/tools/antigravity/live-region.js +39 -0
  428. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +286 -0
  429. package/dist/server/src/lib/detection/tools/claude/detect.js +11 -17
  430. package/dist/server/src/lib/detection/tools/claude/live-region.js +26 -0
  431. package/dist/server/src/lib/detection/tools/claude/patterns.js +264 -4
  432. package/dist/server/src/lib/detection/tools/claude/prompt.js +2 -10
  433. package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +1 -1
  434. package/dist/server/src/lib/detection/tools/codex/detect.js +71 -130
  435. package/dist/server/src/lib/detection/tools/codex/live-region.js +104 -0
  436. package/dist/server/src/lib/detection/tools/codex/patterns.js +855 -0
  437. package/dist/server/src/lib/detection/tools/codex/prompt.js +2 -10
  438. package/dist/server/src/lib/detection/tools/command-code/detect.js +19 -50
  439. package/dist/server/src/lib/detection/tools/command-code/dialog.js +2 -18
  440. package/dist/server/src/lib/detection/tools/command-code/live-region.js +36 -0
  441. package/dist/server/src/lib/detection/tools/command-code/patterns.js +234 -0
  442. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +461 -0
  443. package/dist/server/src/lib/detection/tools/context-above.js +20 -0
  444. package/dist/server/src/lib/detection/tools/copilot/detect.js +13 -35
  445. package/dist/server/src/lib/detection/tools/copilot/live-region.js +52 -0
  446. package/dist/server/src/lib/detection/tools/copilot/patterns.js +640 -0
  447. package/dist/server/src/lib/detection/tools/copilot/prompt.js +2 -10
  448. package/dist/server/src/lib/detection/tools/frame.js +36 -2
  449. package/dist/server/src/lib/detection/tools/gemini/patterns.js +29 -0
  450. package/dist/server/src/lib/detection/tools/live-region-specs.js +31 -0
  451. package/dist/server/src/lib/detection/tools/live-region.js +204 -0
  452. package/dist/server/src/lib/detection/tools/opencode/detect.js +11 -49
  453. package/dist/server/src/lib/detection/tools/opencode/live-region.js +24 -0
  454. package/dist/server/src/lib/detection/tools/opencode/patterns.js +508 -0
  455. package/dist/server/src/lib/detection/tools/opencode-gutter-live-region.js +72 -0
  456. package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +10 -42
  457. package/dist/server/src/lib/detection/tools/opencode-v2/live-region.js +24 -0
  458. package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +63 -0
  459. package/dist/server/src/lib/detection/tools/run-detection.js +31 -50
  460. package/dist/server/src/lib/detection/tools/verdicts.js +59 -0
  461. package/dist/server/src/lib/detection/tools/vibe-local/patterns.js +20 -0
  462. package/dist/server/src/lib/detection/truncate-raw-content.js +38 -0
  463. package/dist/server/src/lib/detection/turn-abandoned.js +66 -0
  464. package/dist/server/src/lib/detection/unclassified-frame-tracker.js +2 -2
  465. package/dist/server/src/lib/global-state.js +16 -0
  466. package/dist/server/src/lib/hooks/agent-session-telemetry.js +4 -6
  467. package/dist/server/src/lib/hooks/permission-decision-state.js +2 -2
  468. package/dist/server/src/lib/hooks/sources/antigravity/history.js +11 -76
  469. package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +63 -1
  470. package/dist/server/src/lib/hooks/sources/antigravity/source.js +16 -0
  471. package/dist/server/src/lib/hooks/sources/antigravity/transcript.js +3 -12
  472. package/dist/server/src/lib/hooks/sources/claude/history.js +17 -156
  473. package/dist/server/src/lib/hooks/sources/claude/queued-notice.js +53 -0
  474. package/dist/server/src/lib/hooks/sources/claude/source.js +33 -3
  475. package/dist/server/src/lib/hooks/sources/claude/transcript.js +3 -13
  476. package/dist/server/src/lib/hooks/sources/codex/history.js +11 -74
  477. package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +147 -11
  478. package/dist/server/src/lib/hooks/sources/codex/relay-install.js +64 -21
  479. package/dist/server/src/lib/hooks/sources/codex/transcript.js +5 -15
  480. package/dist/server/src/lib/hooks/sources/command-code/history.js +20 -121
  481. package/dist/server/src/lib/hooks/sources/command-code/transcript.js +3 -13
  482. package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +161 -31
  483. package/dist/server/src/lib/hooks/sources/define-source.js +40 -55
  484. package/dist/server/src/lib/hooks/sources/event-mapper.js +2 -1
  485. package/dist/server/src/lib/hooks/sources/opencode/diff.js +3 -4
  486. package/dist/server/src/lib/hooks/sources/opencode/history.js +2 -1
  487. package/dist/server/src/lib/hooks/sources/opencode/launch-settings.js +2 -1
  488. package/dist/server/src/lib/hooks/sources/opencode/payloads.js +2 -1
  489. package/dist/server/src/lib/hooks/sources/opencode/ports.js +2 -1
  490. package/dist/server/src/lib/hooks/sources/opencode/subscription.js +4 -3
  491. package/dist/server/src/lib/hooks/sources/opencode/transcript.js +3 -16
  492. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +2 -1
  493. package/dist/server/src/lib/hooks/sources/opencode-v2/mappers.js +5 -4
  494. package/dist/server/src/lib/hooks/sources/opencode-v2/ports.js +2 -1
  495. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +3 -7
  496. package/dist/server/src/lib/hooks/sources/opencode-v2/usage.js +2 -1
  497. package/dist/server/src/lib/hooks/sources/pending-decisions.js +2 -1
  498. package/dist/server/src/lib/hooks/sources/registry.js +3 -2
  499. package/dist/server/src/lib/hooks/sources/transcript-history.js +262 -0
  500. package/dist/server/src/lib/hooks/sources/turn-body.js +31 -0
  501. package/dist/server/src/lib/hooks/tool-input-normalization-state.js +2 -2
  502. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +2 -2
  503. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +16 -4
  504. package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +142 -0
  505. package/dist/server/src/lib/polling/auto-yes-enter-fallback.js +187 -0
  506. package/dist/server/src/lib/polling/auto-yes-resolver.js +9 -3
  507. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +2 -0
  508. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +2 -2
  509. package/dist/server/src/lib/polling/pending-scraped-response.js +190 -0
  510. package/dist/server/src/lib/polling/prompt-dedup-state.js +2 -2
  511. package/dist/server/src/lib/polling/prompt-dedup.js +2 -2
  512. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +95 -0
  513. package/dist/server/src/lib/polling/response-checker-extraction-result.js +50 -0
  514. package/dist/server/src/lib/polling/response-checker-extraction-steps.js +670 -0
  515. package/dist/server/src/lib/polling/response-checker.js +666 -1162
  516. package/dist/server/src/lib/polling/response-dedup.js +3 -4
  517. package/dist/server/src/lib/polling/response-poller-constants.js +17 -0
  518. package/dist/server/src/lib/polling/response-poller-core.js +54 -20
  519. package/dist/server/src/lib/polling/startup-screen.js +142 -0
  520. package/dist/server/src/lib/polling/structured-history-gate.js +3 -2
  521. package/dist/server/src/lib/prompt-answer-semantic.js +178 -0
  522. package/dist/server/src/lib/prompt-answer-sender.js +6 -5
  523. package/dist/server/src/lib/push/failure-episode-state.js +2 -2
  524. package/dist/server/src/lib/push/notification-dedup.js +3 -4
  525. package/dist/server/src/lib/push/prompt-card-state.js +2 -2
  526. package/dist/server/src/lib/push/waiting-push-notifier.js +3 -4
  527. package/dist/server/src/lib/realtime/publisher-registry.js +3 -2
  528. package/dist/server/src/lib/realtime/terminal-broadcast.js +38 -2
  529. package/dist/server/src/lib/realtime/terminal-session-ownership.js +45 -0
  530. package/dist/server/src/lib/relay/relay-delivery.js +6 -2
  531. package/dist/server/src/lib/relay/relay-readiness.js +38 -1
  532. package/dist/server/src/lib/relay/relay-triggers.js +9 -0
  533. package/dist/server/src/lib/resource-cleanup.js +6 -4
  534. package/dist/server/src/lib/response-cleaner.js +24 -1
  535. package/dist/server/src/lib/response-extractor.js +16 -0
  536. package/dist/server/src/lib/schedule-manager.js +8 -10
  537. package/dist/server/src/lib/session/agent-event-ask-user-question.js +168 -0
  538. package/dist/server/src/lib/session/agent-event-awaiting-instruction.js +104 -0
  539. package/dist/server/src/lib/session/agent-event-dedup.js +539 -0
  540. package/dist/server/src/lib/session/agent-event-model.js +562 -0
  541. package/dist/server/src/lib/session/agent-event-record.js +10 -0
  542. package/dist/server/src/lib/session/agent-event-state.js +106 -1854
  543. package/dist/server/src/lib/session/agent-event-structured-state.js +109 -0
  544. package/dist/server/src/lib/session/agent-event-turn.js +811 -0
  545. package/dist/server/src/lib/session/agent-session-lifecycle.js +11 -2
  546. package/dist/server/src/lib/session/chat-turn-progress.js +322 -0
  547. package/dist/server/src/lib/session/claude-executor.js +45 -5
  548. package/dist/server/src/lib/session/claude-session.js +21 -65
  549. package/dist/server/src/lib/session/cli-session.js +17 -0
  550. package/dist/server/src/lib/session/current-output-builder.js +454 -1103
  551. package/dist/server/src/lib/session/current-output-history-writers.js +255 -0
  552. package/dist/server/src/lib/session/current-output-types.js +9 -0
  553. package/dist/server/src/lib/session/detection-divergence.js +55 -0
  554. package/dist/server/src/lib/session/global-session-constants.js +2 -13
  555. package/dist/server/src/lib/session/hook-turn-hold.js +102 -0
  556. package/dist/server/src/lib/session/layer-disagreement.js +2 -2
  557. package/dist/server/src/lib/session/opencode-session-store.js +2 -1
  558. package/dist/server/src/lib/session/prompt-view.js +290 -0
  559. package/dist/server/src/lib/session/prompt-waiting-composition.js +35 -0
  560. package/dist/server/src/lib/session/provisional-turn.js +3 -1
  561. package/dist/server/src/lib/session/send-user-message.js +1 -1
  562. package/dist/server/src/lib/session/session-starting-state.js +4 -6
  563. package/dist/server/src/lib/session/status-evidence-type.js +2 -0
  564. package/dist/server/src/lib/session/status-evidence.js +2 -2
  565. package/dist/server/src/lib/session/structured-status-merge.js +335 -0
  566. package/dist/server/src/lib/session/waiting-episode-state.js +3 -4
  567. package/dist/server/src/lib/session/waiting-kind.js +3 -0
  568. package/dist/server/src/lib/session-cleanup.js +6 -8
  569. package/dist/server/src/lib/skills/install-plan.js +2 -1
  570. package/dist/server/src/lib/skills/snapshot-store.js +2 -2
  571. package/dist/server/src/lib/skills/uninstall-plan.js +2 -2
  572. package/dist/server/src/lib/timer-manager.js +6 -8
  573. package/dist/server/src/lib/tmux/geometry-delegation.js +3 -4
  574. package/dist/server/src/lib/tmux/legacy-session-alias.js +2 -1
  575. package/dist/server/src/lib/tmux/session-hooks.js +2 -1
  576. package/dist/server/src/lib/tmux/session-status-options.js +3 -3
  577. package/dist/server/src/lib/tmux/tmux-capture-cache.js +3 -2
  578. package/dist/server/src/lib/tmux/tmux.js +33 -59
  579. package/dist/server/src/lib/tui-accumulator.js +2 -2
  580. package/dist/server/src/lib/version-checker.js +6 -6
  581. package/dist/server/src/lib/ws-server.js +47 -11
  582. package/docs/en/user-guide/webapp-guide.md +27 -3
  583. package/package.json +1 -1
  584. package/release-notes/0.44.2.json +33 -0
  585. package/release-notes/0.44.3.json +82 -0
  586. package/scripts/hooks/cmate-agent-event.sh +18 -0
  587. package/.next/server/chunks/1068.js +0 -1
  588. package/.next/server/chunks/434.js +0 -1
  589. package/.next/server/chunks/5775.js +0 -1
  590. package/.next/server/chunks/6474.js +0 -14
  591. package/.next/server/chunks/650.js +0 -1
  592. package/.next/server/chunks/6661.js +0 -1
  593. package/.next/server/chunks/8583.js +0 -1
  594. package/.next/server/chunks/964.js +0 -1
  595. package/.next/server/chunks/967.js +0 -1
  596. package/.next/server/chunks/9882.js +0 -25
  597. package/.next/static/chunks/591-308072f285c34787.js +0 -1
  598. package/.next/static/chunks/app/sessions/page-049e06335187aa91.js +0 -1
  599. package/.next/static/chunks/app/worktrees/[id]/page-040c5f0f585e6812.js +0 -1
  600. package/.next/static/css/38070d879efa1371.css +0 -1
  601. package/dist/server/src/lib/cli-tools/index.js +0 -41
  602. package/dist/server/src/lib/polling/global-session-poller.js +0 -140
  603. /package/.next/static/{57lOiz8zSEHdw97XIm0af → tWwHQzmvc-rv9KKUtDWfQ}/_buildManifest.js +0 -0
  604. /package/.next/static/{57lOiz8zSEHdw97XIm0af → tWwHQzmvc-rv9KKUtDWfQ}/_ssgManifest.js +0 -0
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOrInitGlobal = getOrInitGlobal;
4
+ /**
5
+ * Process-wide state helper for the `globalThis.__*` cache pattern.
6
+ *
7
+ * Returns the value already stored on `globalThis[key]`, or runs `init` once and
8
+ * stores its result. `init` runs only when the slot is `null`/`undefined`, at the
9
+ * moment this function is called (so callers keep their own init timing).
10
+ *
11
+ * `key` and the initial value are typed from each file's `declare global`
12
+ * declaration. This module imports nothing so any layer (server, CLI) can use it.
13
+ */
14
+ function getOrInitGlobal(key, init) {
15
+ return (globalThis[key] ??= init());
16
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Why an auto-answer was withheld.
3
+ *
4
+ * `deny-pattern-unusable` is the fail-closed case: a deny pattern that cannot be
5
+ * evaluated (unsafe, unparseable, or over-long) suppresses instead of being
6
+ * skipped. Ignoring it would silently drop the protection the contract author
7
+ * asked for, which is the more dangerous of the two directions.
8
+ */
9
+ export type AutoYesSuppressionReason = 'mode-off' | 'deny-pattern' | 'deny-pattern-unusable' | 'type-not-allowed'
10
+ /**
11
+ * Issue #1829: not a policy verdict at all, but the same outcome recorded
12
+ * through the same channel. The prompt on screen is a CLI-lifecycle dialog
13
+ * whose answer belongs to the tool's own launch sequence, so the poller
14
+ * withheld one. Listed here so `capture --json` / `cmate wait` can name it
15
+ * instead of showing a session that has silently gone quiet.
16
+ */
17
+ | 'agent-launch-dialog'
18
+ /**
19
+ * Issue #1924 (§4 D1 decision 4): the generic estimator read a numbered list
20
+ * on the frame and the tool's own dialog detector did not vouch for it, so
21
+ * nothing was sent.
22
+ *
23
+ * Also not a policy verdict. It is the reason code for the one position that
24
+ * can stop #1896 — an agent quoting a numbered list in its *answer* and
25
+ * Auto-Yes replying `1` to the prose. `detectPrompt`'s generic estimate is
26
+ * true on that frame and the tool-specific `detectDialog` is false, and this
27
+ * names the gap instead of letting the session go quiet with no record.
28
+ *
29
+ * Declared in Phase 1 (Issue #1924) and recorded from Phase 3, when the
30
+ * tool-specific detectors that can disagree with the estimator exist.
31
+ */
32
+ | 'unclassified-frame';
33
+ //# sourceMappingURL=auto-yes-suppression-reason.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-yes-suppression-reason.d.ts","sourceRoot":"","sources":["../../../src/lib/polling/auto-yes-suppression-reason.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAChC,UAAU,GACV,cAAc,GACd,uBAAuB,GACvB,kBAAkB;AACpB;;;;;;GAMG;GACD,qBAAqB;AACvB;;;;;;;;;;;;;GAaG;GACD,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,228 @@
1
+ /**
2
+ * How a waiting prompt is shown and answered, decided once (Issue #3184).
3
+ *
4
+ * Before this module every reader of a prompt payload re-derived the same three
5
+ * facts for itself — "can it be answered?", "where are the choices?", "is the
6
+ * answer a keystroke or an API call?" — from `type`, `options`,
7
+ * `decisionOptions`, `decisionId` and `askUserQuestion`. The panel, the phone
8
+ * sheet, the chat surface, Auto-Yes and `wait` each combined them a little
9
+ * differently, and a fix to one surface kept missing the others (#2775 →
10
+ * #2810 → #2822, #3181). {@link derivePromptView} is the one combination; a
11
+ * reader takes its {@link PromptView} and does not look at the raw fields to
12
+ * decide what to show.
13
+ *
14
+ * ## No imports, on purpose
15
+ *
16
+ * The CLI (`tsconfig.cli.json`) compiles with `"paths": {}`, so it can reach a
17
+ * module under `src/lib` by a relative path only when nothing in that module's
18
+ * graph uses the `@/` alias. `types/models` and `session/structured-prompt` both
19
+ * do. The input is therefore a structural type ({@link PromptViewSource}) that
20
+ * every existing prompt shape — `LivePromptData`, `StoredPromptData`, the CLI's
21
+ * own `PromptData` mirror — satisfies without a cast, and this file stays
22
+ * importable from a client component, the server and the CLI alike.
23
+ *
24
+ * ## What it does not replace
25
+ *
26
+ * `isAnswerablePromptData()` (`types/models`) stays: it narrows to the closed
27
+ * `PromptData` union (#1725) for the code that builds an answer body. The two
28
+ * agree by construction — `derivePromptView(x)?.kind === 'screen-choices'`
29
+ * exactly when `isAnswerablePromptData(x)` — and
30
+ * `tests/unit/session/prompt-view-3184.test.ts` holds that over every fixture.
31
+ *
32
+ * @module lib/session/prompt-view
33
+ */
34
+ /**
35
+ * `promptData.type` for a frame nothing could classify. Same value as
36
+ * `UNCLASSIFIED_PROMPT_TYPE` in `types/models`, restated because this module may
37
+ * not import it (see the module note); the test asserts the two are equal.
38
+ */
39
+ export declare const UNCLASSIFIED_PROMPT_VIEW_TYPE = "unclassified";
40
+ /**
41
+ * The fields {@link derivePromptView} reads. Every prompt shape in the codebase
42
+ * is assignable to it as it stands.
43
+ */
44
+ export interface PromptViewSource {
45
+ type: string;
46
+ question?: string;
47
+ status?: string;
48
+ options?: readonly unknown[];
49
+ defaultOption?: unknown;
50
+ multiSelect?: boolean;
51
+ decisionId?: unknown;
52
+ decisionOptions?: unknown;
53
+ askUserQuestion?: unknown;
54
+ toolName?: unknown;
55
+ }
56
+ /**
57
+ * How the prompt is answered. "Free text" is not a fourth value: it is the
58
+ * orthogonal {@link PromptView.freeText}, because every prompt that takes typed
59
+ * text today also offers choices (design §2.4).
60
+ *
61
+ * - `screen-choices`: keys on the pane — the option number, or y/n
62
+ * (`/prompt-response`).
63
+ * - `api-choices`: the agent's own API, addressed by `decisionId` (`/respond`).
64
+ * - `unreadable`: nothing to offer; the human answers in the terminal.
65
+ */
66
+ export type PromptViewKind = 'screen-choices' | 'api-choices' | 'unreadable';
67
+ /** What the heading above the prompt says. */
68
+ export type PromptViewHeading =
69
+ /** The question read off the screen. */
70
+ {
71
+ kind: 'question';
72
+ text: string;
73
+ }
74
+ /** An approval answered over the API (#3181's heading). */
75
+ | {
76
+ kind: 'approval';
77
+ toolName: string | null;
78
+ }
79
+ /** A question answered over the API (#2039). */
80
+ | {
81
+ kind: 'agent-question';
82
+ text: string;
83
+ }
84
+ /** "A dialog is open but its options could not be read." */
85
+ | {
86
+ kind: 'unreadable';
87
+ };
88
+ /** One choice a surface may offer. */
89
+ export interface PromptViewChoice {
90
+ /**
91
+ * The value an answer sends: the option number (`'1'`) or `'yes'`/`'no'` on
92
+ * the screen; the number `respond` resolves for an API decision.
93
+ */
94
+ answer: string;
95
+ label: string;
96
+ isDefault: boolean;
97
+ /** Choosing it opens a text field (#2573's rule, {@link optionTakesTypedText}). */
98
+ takesText: boolean;
99
+ description?: string;
100
+ }
101
+ /** The one shape every surface reads (Issue #3184). */
102
+ export interface PromptView {
103
+ kind: PromptViewKind;
104
+ heading: PromptViewHeading;
105
+ /** Always empty for `unreadable`. */
106
+ choices: readonly PromptViewChoice[];
107
+ /** A checkbox question (#2755). Only ever true for `screen-choices`. */
108
+ multiSelect: boolean;
109
+ /** Whether typed text is accepted, and by which channel; null when it is not. */
110
+ freeText: {
111
+ via: 'screen' | 'api';
112
+ } | null;
113
+ /** Non-null exactly when `kind === 'api-choices'` (#2031's biconditional). */
114
+ decisionId: string | null;
115
+ /** For `api-choices`, which kind of decision the id names; null otherwise. */
116
+ apiTarget: 'approval' | 'question' | null;
117
+ }
118
+ /**
119
+ * What a surface prints as the heading, as a `prompt.*` message key (Issue
120
+ * #3181, #3184). `text` is set instead of `key` for a question read off the
121
+ * screen, which is printed verbatim. Both answer surfaces translate THIS rather
122
+ * than mapping the heading kinds themselves, so the two cannot disagree about
123
+ * when "could not read its options" is the truth.
124
+ */
125
+ export type PromptHeadingMessage = {
126
+ text: string;
127
+ } | {
128
+ key: 'structuredApprovalTitle';
129
+ values: {
130
+ toolName: string;
131
+ };
132
+ } | {
133
+ key: 'structuredApprovalTitleNoTool' | 'structuredQuestionTitle' | 'unclassifiedTitle';
134
+ };
135
+ export declare function promptHeadingMessage(heading: PromptViewHeading): PromptHeadingMessage;
136
+ /**
137
+ * Labels of the rows measured to BE a text field on screen (Issue #2573).
138
+ *
139
+ * `requiresTextInput` (from {@link TEXT_INPUT_PATTERNS}) reads the WORDS of a
140
+ * label — "tell … what to do differently", "custom", "enter …" — and says the
141
+ * option is about the user's own text. It does not say where typed characters
142
+ * land, and for two rows it flags alike the measured answer is opposite:
143
+ *
144
+ * | row | on screen | free text + Enter |
145
+ * |-----|-----------|-------------------|
146
+ * | Command Code `AskUserQuestion` `Type something...` (#2522) | a `TextInput` | lands in the field — the answer |
147
+ * | Command Code permission `No, tell Command Code what to do differently` | a menu row | ignored; the Enter confirms the highlighted `1. Yes` |
148
+ *
149
+ * The second is how a "No + reason" was delivered as an approval. The same
150
+ * words sit on codex's and copilot's approval rows (codex's also name letter
151
+ * hotkeys, `(y)` / `(p)`), and the generic patterns match inside the command an
152
+ * approval row quotes (`… commands that start with 'npm run custom'`).
153
+ *
154
+ * So this is an allowlist of what was measured, not a denylist of what went
155
+ * wrong: a flagged row is a field only when its label is one of these. Anchored
156
+ * at the start so Command Code's folded description (`Type something... Give me
157
+ * a branch name …`) still matches. Command Code's reader
158
+ * (`tools/command-code/dialog.ts`) marks the same rows with the same expression.
159
+ *
160
+ * The one definition since Issue #3218: `isTypedTextFieldOption` in
161
+ * `lib/detection/prompt-detect-multiple-choice`, whose graph reaches `fs`,
162
+ * reads it through `optionTakesTypedText` below.
163
+ */
164
+ export declare const TYPED_TEXT_FIELD_LABEL_PATTERNS: readonly RegExp[];
165
+ /**
166
+ * Whether an option is a text field on screen, so its answer is the typed TEXT
167
+ * rather than its number (Issue #2573). `requiresTextInput` alone is also true
168
+ * for a menu row such as `No, tell Command Code what to do differently`.
169
+ */
170
+ export declare function optionTakesTypedText(option: {
171
+ readonly label: string;
172
+ readonly requiresTextInput?: boolean;
173
+ }): boolean;
174
+ /**
175
+ * The decision id a payload names, or null (Issue #1932). A validating read:
176
+ * absent, empty or not a string is "no addressable decision".
177
+ */
178
+ export declare function readDecisionId(source: PromptViewSource | null | undefined): string | null;
179
+ /** The choices of a question answered over the API (Issue #2039 / #2951). */
180
+ export interface QuestionChoices {
181
+ question: string;
182
+ /** In payload order; the answer is the 1-based POSITION in this list. */
183
+ labels: string[];
184
+ questionCount: number;
185
+ /** A typed answer is accepted besides the choices (#2951). */
186
+ custom?: true;
187
+ }
188
+ /**
189
+ * The choices a question offers when it may be answered over the API, or null
190
+ * (Issue #2039). All three must hold: a decision id, exactly one question with
191
+ * a complete label list, and NO approval verdicts on the same payload.
192
+ */
193
+ export declare function readQuestionChoices(source: PromptViewSource | null | undefined): QuestionChoices | null;
194
+ /** What a heading should say when the payload carries addressable choices (#3181). */
195
+ export type DecisionHeading = {
196
+ kind: 'approval';
197
+ toolName: string | null;
198
+ } | {
199
+ kind: 'question';
200
+ };
201
+ /** The heading for addressable choices, or null when there is nothing to click (#3181). */
202
+ export declare function readDecisionHeading(source: PromptViewSource | null | undefined): DecisionHeading | null;
203
+ /**
204
+ * Decide how a prompt payload is shown and answered (Issue #3184).
205
+ *
206
+ * Evaluated in this order (design §2.3):
207
+ * 1. any `type` but the unclassified sentinel → `screen-choices`;
208
+ * 2. unclassified + decision id + approval verdicts → `api-choices` (approval);
209
+ * 3. unclassified + decision id + one complete question → `api-choices` (question);
210
+ * 4. every other unclassified payload — no id, #1932's options-without-id half
211
+ * state, and both stored history records — → `unreadable`.
212
+ *
213
+ * @param source - A live or stored prompt payload, or null
214
+ * @returns The view, or null when there is no prompt
215
+ */
216
+ export declare function derivePromptView(source: PromptViewSource | null | undefined): PromptView | null;
217
+ /**
218
+ * The view a `current-output` payload carries, falling back to deriving it.
219
+ *
220
+ * `??`, not `||`: a server from before #3184 sends no `promptView`, and its
221
+ * absence means "this daemon does not publish the field" — the same function
222
+ * then decides from `promptData`, so old and new servers reach the same answer.
223
+ */
224
+ export declare function readPromptView(payload: {
225
+ promptView?: PromptView | null;
226
+ promptData?: PromptViewSource | null;
227
+ } | null | undefined): PromptView | null;
228
+ //# sourceMappingURL=prompt-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-view.d.ts","sourceRoot":"","sources":["../../../src/lib/session/prompt-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,iBAAiB,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,CAAC;AAE7E,8CAA8C;AAC9C,MAAM,MAAM,iBAAiB;AAC3B,wCAAwC;AACtC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACpC,2DAA2D;GACzD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AAC/C,gDAAgD;GAC9C;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC1C,4DAA4D;GAC1D;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3B,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,qCAAqC;IACrC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IACrB,iFAAiF;IACjF,QAAQ,EAAE;QAAE,GAAG,EAAE,QAAQ,GAAG,KAAK,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,8EAA8E;IAC9E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,8EAA8E;IAC9E,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,GAAG,EAAE,yBAAyB,CAAC;IAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChE;IAAE,GAAG,EAAE,+BAA+B,GAAG,yBAAyB,GAAG,mBAAmB,CAAA;CAAE,CAAC;AAE/F,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,oBAAoB,CAarF;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,+BAA+B,EAAE,SAAS,MAAM,EAE5D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvE,OAAO,CAGT;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIzF;AAMD,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,IAAI,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC1C,eAAe,GAAG,IAAI,CA2BxB;AAED,sFAAsF;AACtF,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,2FAA2F;AAC3F,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC1C,eAAe,GAAG,IAAI,CASxB;AAuDD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI,CAsD/F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GACnG,UAAU,GAAG,IAAI,CAGnB"}
@@ -0,0 +1,290 @@
1
+ "use strict";
2
+ /**
3
+ * How a waiting prompt is shown and answered, decided once (Issue #3184).
4
+ *
5
+ * Before this module every reader of a prompt payload re-derived the same three
6
+ * facts for itself — "can it be answered?", "where are the choices?", "is the
7
+ * answer a keystroke or an API call?" — from `type`, `options`,
8
+ * `decisionOptions`, `decisionId` and `askUserQuestion`. The panel, the phone
9
+ * sheet, the chat surface, Auto-Yes and `wait` each combined them a little
10
+ * differently, and a fix to one surface kept missing the others (#2775 →
11
+ * #2810 → #2822, #3181). {@link derivePromptView} is the one combination; a
12
+ * reader takes its {@link PromptView} and does not look at the raw fields to
13
+ * decide what to show.
14
+ *
15
+ * ## No imports, on purpose
16
+ *
17
+ * The CLI (`tsconfig.cli.json`) compiles with `"paths": {}`, so it can reach a
18
+ * module under `src/lib` by a relative path only when nothing in that module's
19
+ * graph uses the `@/` alias. `types/models` and `session/structured-prompt` both
20
+ * do. The input is therefore a structural type ({@link PromptViewSource}) that
21
+ * every existing prompt shape — `LivePromptData`, `StoredPromptData`, the CLI's
22
+ * own `PromptData` mirror — satisfies without a cast, and this file stays
23
+ * importable from a client component, the server and the CLI alike.
24
+ *
25
+ * ## What it does not replace
26
+ *
27
+ * `isAnswerablePromptData()` (`types/models`) stays: it narrows to the closed
28
+ * `PromptData` union (#1725) for the code that builds an answer body. The two
29
+ * agree by construction — `derivePromptView(x)?.kind === 'screen-choices'`
30
+ * exactly when `isAnswerablePromptData(x)` — and
31
+ * `tests/unit/session/prompt-view-3184.test.ts` holds that over every fixture.
32
+ *
33
+ * @module lib/session/prompt-view
34
+ */
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TYPED_TEXT_FIELD_LABEL_PATTERNS = exports.UNCLASSIFIED_PROMPT_VIEW_TYPE = void 0;
37
+ exports.promptHeadingMessage = promptHeadingMessage;
38
+ exports.optionTakesTypedText = optionTakesTypedText;
39
+ exports.readDecisionId = readDecisionId;
40
+ exports.readQuestionChoices = readQuestionChoices;
41
+ exports.readDecisionHeading = readDecisionHeading;
42
+ exports.derivePromptView = derivePromptView;
43
+ exports.readPromptView = readPromptView;
44
+ /**
45
+ * `promptData.type` for a frame nothing could classify. Same value as
46
+ * `UNCLASSIFIED_PROMPT_TYPE` in `types/models`, restated because this module may
47
+ * not import it (see the module note); the test asserts the two are equal.
48
+ */
49
+ exports.UNCLASSIFIED_PROMPT_VIEW_TYPE = 'unclassified';
50
+ function promptHeadingMessage(heading) {
51
+ switch (heading.kind) {
52
+ case 'question':
53
+ return { text: heading.text };
54
+ case 'approval':
55
+ return heading.toolName
56
+ ? { key: 'structuredApprovalTitle', values: { toolName: heading.toolName } }
57
+ : { key: 'structuredApprovalTitleNoTool' };
58
+ case 'agent-question':
59
+ return { key: 'structuredQuestionTitle' };
60
+ case 'unreadable':
61
+ return { key: 'unclassifiedTitle' };
62
+ }
63
+ }
64
+ // =============================================================================
65
+ // Field readers (moved from components/worktree/prompt-decision-id, #1932/#2039/#3181)
66
+ // =============================================================================
67
+ /**
68
+ * Labels of the rows measured to BE a text field on screen (Issue #2573).
69
+ *
70
+ * `requiresTextInput` (from {@link TEXT_INPUT_PATTERNS}) reads the WORDS of a
71
+ * label — "tell … what to do differently", "custom", "enter …" — and says the
72
+ * option is about the user's own text. It does not say where typed characters
73
+ * land, and for two rows it flags alike the measured answer is opposite:
74
+ *
75
+ * | row | on screen | free text + Enter |
76
+ * |-----|-----------|-------------------|
77
+ * | Command Code `AskUserQuestion` `Type something...` (#2522) | a `TextInput` | lands in the field — the answer |
78
+ * | Command Code permission `No, tell Command Code what to do differently` | a menu row | ignored; the Enter confirms the highlighted `1. Yes` |
79
+ *
80
+ * The second is how a "No + reason" was delivered as an approval. The same
81
+ * words sit on codex's and copilot's approval rows (codex's also name letter
82
+ * hotkeys, `(y)` / `(p)`), and the generic patterns match inside the command an
83
+ * approval row quotes (`… commands that start with 'npm run custom'`).
84
+ *
85
+ * So this is an allowlist of what was measured, not a denylist of what went
86
+ * wrong: a flagged row is a field only when its label is one of these. Anchored
87
+ * at the start so Command Code's folded description (`Type something... Give me
88
+ * a branch name …`) still matches. Command Code's reader
89
+ * (`tools/command-code/dialog.ts`) marks the same rows with the same expression.
90
+ *
91
+ * The one definition since Issue #3218: `isTypedTextFieldOption` in
92
+ * `lib/detection/prompt-detect-multiple-choice`, whose graph reaches `fs`,
93
+ * reads it through `optionTakesTypedText` below.
94
+ */
95
+ exports.TYPED_TEXT_FIELD_LABEL_PATTERNS = [
96
+ /^[^\S\n]*type\s+something\b/i,
97
+ ];
98
+ /**
99
+ * Whether an option is a text field on screen, so its answer is the typed TEXT
100
+ * rather than its number (Issue #2573). `requiresTextInput` alone is also true
101
+ * for a menu row such as `No, tell Command Code what to do differently`.
102
+ */
103
+ function optionTakesTypedText(option) {
104
+ return option.requiresTextInput === true
105
+ && exports.TYPED_TEXT_FIELD_LABEL_PATTERNS.some((pattern) => pattern.test(option.label));
106
+ }
107
+ /**
108
+ * The decision id a payload names, or null (Issue #1932). A validating read:
109
+ * absent, empty or not a string is "no addressable decision".
110
+ */
111
+ function readDecisionId(source) {
112
+ if (!source)
113
+ return null;
114
+ const candidate = source.decisionId;
115
+ return typeof candidate === 'string' && candidate !== '' ? candidate : null;
116
+ }
117
+ function hasDecisionOptions(source) {
118
+ return Array.isArray(source.decisionOptions) && source.decisionOptions.length > 0;
119
+ }
120
+ /**
121
+ * The choices a question offers when it may be answered over the API, or null
122
+ * (Issue #2039). All three must hold: a decision id, exactly one question with
123
+ * a complete label list, and NO approval verdicts on the same payload.
124
+ */
125
+ function readQuestionChoices(source) {
126
+ if (!source || readDecisionId(source) === null)
127
+ return null;
128
+ if (hasDecisionOptions(source))
129
+ return null;
130
+ const asked = source.askUserQuestion;
131
+ if (!asked || typeof asked.question !== 'string' || asked.question === '')
132
+ return null;
133
+ if (!Array.isArray(asked.labels) || asked.labels.length === 0)
134
+ return null;
135
+ const labels = asked.labels.filter((label) => typeof label === 'string' && label !== '');
136
+ // Partial is worse than none: the numbers are positions in this list.
137
+ if (labels.length !== asked.labels.length)
138
+ return null;
139
+ const questionCount = typeof asked.questionCount === 'number' ? asked.questionCount : 1;
140
+ if (questionCount !== 1)
141
+ return null;
142
+ return {
143
+ question: asked.question,
144
+ labels,
145
+ questionCount,
146
+ ...(asked.custom === true ? { custom: true } : {}),
147
+ };
148
+ }
149
+ /** The heading for addressable choices, or null when there is nothing to click (#3181). */
150
+ function readDecisionHeading(source) {
151
+ if (!source || readDecisionId(source) === null)
152
+ return null;
153
+ if (hasDecisionOptions(source)) {
154
+ return {
155
+ kind: 'approval',
156
+ toolName: typeof source.toolName === 'string' && source.toolName ? source.toolName : null,
157
+ };
158
+ }
159
+ return readQuestionChoices(source) ? { kind: 'question' } : null;
160
+ }
161
+ // =============================================================================
162
+ // The view
163
+ // =============================================================================
164
+ function screenChoices(source) {
165
+ const options = Array.isArray(source.options) ? source.options : [];
166
+ const choices = [];
167
+ for (const option of options) {
168
+ if (typeof option === 'string') {
169
+ // yes_no: `['yes', 'no']`, answered by the word itself.
170
+ choices.push({
171
+ answer: option,
172
+ label: option,
173
+ isDefault: source.defaultOption === option,
174
+ takesText: false,
175
+ });
176
+ continue;
177
+ }
178
+ if (!option || typeof option !== 'object')
179
+ continue;
180
+ const o = option;
181
+ if (typeof o.number !== 'number' || typeof o.label !== 'string')
182
+ continue;
183
+ choices.push({
184
+ answer: String(o.number),
185
+ label: o.label,
186
+ isDefault: o.isDefault === true,
187
+ takesText: optionTakesTypedText({ label: o.label, requiresTextInput: o.requiresTextInput === true }),
188
+ ...(typeof o.description === 'string' ? { description: o.description } : {}),
189
+ });
190
+ }
191
+ return choices;
192
+ }
193
+ function decisionChoices(decisionOptions) {
194
+ if (!Array.isArray(decisionOptions))
195
+ return [];
196
+ const choices = [];
197
+ for (const option of decisionOptions) {
198
+ const o = option;
199
+ if (!o || typeof o.number !== 'number' || typeof o.label !== 'string')
200
+ continue;
201
+ choices.push({ answer: String(o.number), label: o.label, isDefault: false, takesText: false });
202
+ }
203
+ return choices;
204
+ }
205
+ const UNREADABLE_VIEW = {
206
+ kind: 'unreadable',
207
+ heading: { kind: 'unreadable' },
208
+ choices: [],
209
+ multiSelect: false,
210
+ freeText: null,
211
+ decisionId: null,
212
+ apiTarget: null,
213
+ };
214
+ /**
215
+ * Decide how a prompt payload is shown and answered (Issue #3184).
216
+ *
217
+ * Evaluated in this order (design §2.3):
218
+ * 1. any `type` but the unclassified sentinel → `screen-choices`;
219
+ * 2. unclassified + decision id + approval verdicts → `api-choices` (approval);
220
+ * 3. unclassified + decision id + one complete question → `api-choices` (question);
221
+ * 4. every other unclassified payload — no id, #1932's options-without-id half
222
+ * state, and both stored history records — → `unreadable`.
223
+ *
224
+ * @param source - A live or stored prompt payload, or null
225
+ * @returns The view, or null when there is no prompt
226
+ */
227
+ function derivePromptView(source) {
228
+ if (source == null)
229
+ return null;
230
+ if (source.type !== exports.UNCLASSIFIED_PROMPT_VIEW_TYPE) {
231
+ const choices = screenChoices(source);
232
+ return {
233
+ kind: 'screen-choices',
234
+ heading: { kind: 'question', text: typeof source.question === 'string' ? source.question : '' },
235
+ choices,
236
+ multiSelect: source.multiSelect === true,
237
+ freeText: choices.some((choice) => choice.takesText) ? { via: 'screen' } : null,
238
+ decisionId: null,
239
+ apiTarget: null,
240
+ };
241
+ }
242
+ const decisionId = readDecisionId(source);
243
+ if (decisionId !== null && hasDecisionOptions(source)) {
244
+ const choices = decisionChoices(source.decisionOptions);
245
+ if (choices.length > 0) {
246
+ return {
247
+ kind: 'api-choices',
248
+ heading: {
249
+ kind: 'approval',
250
+ toolName: typeof source.toolName === 'string' && source.toolName ? source.toolName : null,
251
+ },
252
+ choices,
253
+ multiSelect: false,
254
+ freeText: null,
255
+ decisionId,
256
+ apiTarget: 'approval',
257
+ };
258
+ }
259
+ }
260
+ const question = readQuestionChoices(source);
261
+ if (decisionId !== null && question !== null) {
262
+ return {
263
+ kind: 'api-choices',
264
+ heading: { kind: 'agent-question', text: question.question },
265
+ choices: question.labels.map((label, index) => ({
266
+ answer: String(index + 1),
267
+ label,
268
+ isDefault: false,
269
+ takesText: false,
270
+ })),
271
+ multiSelect: false,
272
+ freeText: question.custom === true ? { via: 'api' } : null,
273
+ decisionId,
274
+ apiTarget: 'question',
275
+ };
276
+ }
277
+ return UNREADABLE_VIEW;
278
+ }
279
+ /**
280
+ * The view a `current-output` payload carries, falling back to deriving it.
281
+ *
282
+ * `??`, not `||`: a server from before #3184 sends no `promptView`, and its
283
+ * absence means "this daemon does not publish the field" — the same function
284
+ * then decides from `promptData`, so old and new servers reach the same answer.
285
+ */
286
+ function readPromptView(payload) {
287
+ if (!payload)
288
+ return null;
289
+ return payload.promptView ?? derivePromptView(payload.promptData);
290
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Whether a status rests on something positive, or on the absence of a negative
3
+ * (Issue #1924, §4 D1 決定 2).
4
+ *
5
+ * `'positive'` — a marker, a tool-specific idle-composer rule, or a structured
6
+ * event said so. `'none'` — nothing on the frame could be read either way, and
7
+ * the status is a fallback.
8
+ *
9
+ * The design policy adds this rather than a fifth `SessionStatus`: the value
10
+ * domain stays four wide, because `src/cli/types/api-responses.ts` enumerates it
11
+ * and a new member is a breaking change for every consumer older than the server
12
+ * — including `commandmate-skills`' `orchestrate-monitor`, which reads
13
+ * `capture --json` as its primary signal.
14
+ */
15
+ export type StatusEvidence = 'positive' | 'none';
16
+ //# sourceMappingURL=status-evidence-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-evidence-type.d.ts","sourceRoot":"","sources":["../../../src/lib/session/status-evidence-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-session-alias.d.ts","sourceRoot":"","sources":["../../../src/lib/tmux/legacy-session-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC/D;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAUvE;AAED,wCAAwC;AACxC,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
1
+ {"version":3,"file":"legacy-session-alias.d.ts","sourceRoot":"","sources":["../../../src/lib/tmux/legacy-session-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC/D;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAUvE;AAED,wCAAwC;AACxC,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
@@ -27,8 +27,9 @@ exports.registerLegacyAlias = registerLegacyAlias;
27
27
  exports.lookupLegacyAlias = lookupLegacyAlias;
28
28
  exports.dropLegacyAliasByLegacyName = dropLegacyAliasByLegacyName;
29
29
  exports.clearLegacyAliasesForTests = clearLegacyAliasesForTests;
30
+ const global_state_1 = require("../global-state");
30
31
  function aliases() {
31
- return (globalThis.__cmLegacySessionAliases ??= new Map());
32
+ return (0, global_state_1.getOrInitGlobal)('__cmLegacySessionAliases', () => new Map());
32
33
  }
33
34
  /**
34
35
  * Serve the new-format session name `newName` with the existing legacy session
@@ -1107,9 +1107,11 @@
1107
1107
  },
1108
1108
  "promptResponse": {
1109
1109
  "refused": "Your answer was not sent because the dialog has changed. Please check the screen.",
1110
+ "failed": "Could not send the answer. Please try again.",
1110
1111
  "stuckHint": "If sending does not work, operate the terminal in direct input mode.",
1111
1112
  "stuckHintLink": "Switch to direct input",
1112
- "unanswerable": "CommandMate cannot operate this screen. Use direct input mode instead."
1113
+ "unanswerable": "CommandMate cannot operate this screen. Use direct input mode instead.",
1114
+ "autoYesEnterSent": "Auto-Yes sent Enter."
1113
1115
  },
1114
1116
  "dismissPanelKeys": {
1115
1117
  "toolbarLabel": "Close this screen",
@@ -1107,9 +1107,11 @@
1107
1107
  },
1108
1108
  "promptResponse": {
1109
1109
  "refused": "ダイアログの状態が変わったため送信できませんでした。画面を確認してください。",
1110
+ "failed": "送信に失敗しました。もう一度お試しください。",
1110
1111
  "stuckHint": "送信がうまくいかない場合は、直接入力モードで操作してください。",
1111
1112
  "stuckHintLink": "直接入力に切り替える",
1112
- "unanswerable": "この画面は CommandMate から操作できません。直接入力モードで操作してください。"
1113
+ "unanswerable": "この画面は CommandMate から操作できません。直接入力モードで操作してください。",
1114
+ "autoYesEnterSent": "Auto-Yes が Enter を送りました。"
1113
1115
  },
1114
1116
  "dismissPanelKeys": {
1115
1117
  "toolbarLabel": "この画面を閉じる",