commandmate 0.46.1 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (711) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +223 -216
  3. package/.next/app-path-routes-manifest.json +19 -18
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +8 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update/route.js +4 -2
  13. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/capabilities/route.js +1 -1
  19. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/daily-summary/route.js +1 -1
  21. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  22. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  24. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  32. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  33. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  35. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  36. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  39. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/push/escalation/route.js +1 -7
  43. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  44. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/push/vapid/route.js +1 -7
  47. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  48. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  50. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  51. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/relays/route.js +1 -1
  53. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  54. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  58. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  59. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/clone/route.js +1 -1
  61. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  62. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/repositories/restore/route.js +1 -1
  65. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  66. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/route.js +1 -1
  68. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  69. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/repositories/scan/route.js +1 -1
  71. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  72. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/sync/route.js +1 -1
  74. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  75. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  78. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  79. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  96. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  99. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  102. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  107. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  110. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  113. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  118. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  149. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  152. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  162. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  165. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -0
  170. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -0
  171. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -0
  172. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  175. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  178. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  181. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
  193. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  205. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  208. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  225. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/worktrees/route.js +1 -1
  231. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  234. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  236. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  237. package/.next/server/app/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  241. package/.next/server/app/sessions/page.js +1 -1
  242. package/.next/server/app/sessions/page.js.nft.json +1 -1
  243. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  244. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  245. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  246. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  248. package/.next/server/app/worktrees/[id]/page.js +11 -11
  249. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  250. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  251. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  252. package/.next/server/app-paths-manifest.json +19 -18
  253. package/.next/server/chunks/1210.js +1 -1
  254. package/.next/server/chunks/1559.js +1 -1
  255. package/.next/server/chunks/1601.js +7 -0
  256. package/.next/server/chunks/1836.js +1 -0
  257. package/.next/server/chunks/1945.js +14 -0
  258. package/.next/server/chunks/2119.js +1 -1
  259. package/.next/server/chunks/2404.js +1 -1
  260. package/.next/server/chunks/2422.js +1 -0
  261. package/.next/server/chunks/2445.js +1 -1
  262. package/.next/server/chunks/2460.js +1 -1
  263. package/.next/server/chunks/2534.js +1 -1
  264. package/.next/server/chunks/3241.js +1 -1
  265. package/.next/server/chunks/{3077.js → 4194.js} +12 -12
  266. package/.next/server/chunks/4207.js +1 -1
  267. package/.next/server/chunks/4248.js +1 -1
  268. package/.next/server/chunks/5209.js +1 -1
  269. package/.next/server/chunks/5292.js +1 -1
  270. package/.next/server/chunks/5595.js +1 -1
  271. package/.next/server/chunks/5845.js +1 -1
  272. package/.next/server/chunks/6130.js +1 -1
  273. package/.next/server/chunks/6401.js +1 -1
  274. package/.next/server/chunks/{2283.js → 6486.js} +7 -7
  275. package/.next/server/chunks/6722.js +1 -1
  276. package/.next/server/chunks/6781.js +1 -1
  277. package/.next/server/chunks/6793.js +2 -2
  278. package/.next/server/chunks/7166.js +19 -0
  279. package/.next/server/chunks/7905.js +1 -1
  280. package/.next/server/chunks/8581.js +10 -10
  281. package/.next/server/chunks/8728.js +2 -2
  282. package/.next/server/chunks/8791.js +1 -1
  283. package/.next/server/chunks/8918.js +4 -4
  284. package/.next/server/chunks/9199.js +1 -0
  285. package/.next/server/chunks/936.js +1 -0
  286. package/.next/server/chunks/9390.js +1 -1
  287. package/.next/server/chunks/9540.js +1 -0
  288. package/.next/server/chunks/9627.js +1 -1
  289. package/.next/server/chunks/9731.js +3 -3
  290. package/.next/server/middleware-manifest.json +5 -5
  291. package/.next/server/pages/500.html +1 -1
  292. package/.next/server/server-reference-manifest.json +1 -1
  293. package/.next/static/chunks/{2407-9703c569370b8a9d.js → 2407-b2f524f99f7fc353.js} +1 -1
  294. package/.next/static/chunks/5371-a549a0d2c2044d41.js +1 -0
  295. package/.next/static/chunks/{5794-4eee51ff1e878aa6.js → 5794-80ac3f06f098ea29.js} +1 -1
  296. package/.next/static/chunks/602-1c1488959215e140.js +1 -0
  297. package/.next/static/chunks/9079-24f9fa549ed298f1.js +1 -0
  298. package/.next/static/chunks/app/api/agents/update/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  299. package/.next/static/chunks/app/api/agents/versions/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  300. package/.next/static/chunks/app/api/app/release-notes/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  301. package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +1 -0
  302. package/.next/static/chunks/app/api/app/update-check/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  303. package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +1 -0
  304. package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +1 -0
  305. package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +1 -0
  306. package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +1 -0
  307. package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +1 -0
  308. package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +1 -0
  309. package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +1 -0
  310. package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +1 -0
  311. package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +1 -0
  312. package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +1 -0
  313. package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +1 -0
  314. package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +1 -0
  315. package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +1 -0
  316. package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +1 -0
  317. package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +1 -0
  318. package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +1 -0
  319. package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +1 -0
  320. package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +1 -0
  321. package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +1 -0
  322. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +1 -0
  323. package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +1 -0
  324. package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +1 -0
  325. package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +1 -0
  326. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +1 -0
  327. package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +1 -0
  328. package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +1 -0
  329. package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +1 -0
  330. package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +1 -0
  331. package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +1 -0
  332. package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +1 -0
  333. package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +1 -0
  334. package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +1 -0
  335. package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +1 -0
  336. package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +1 -0
  337. package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +1 -0
  338. package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +1 -0
  339. package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +1 -0
  340. package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +1 -0
  341. package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +1 -0
  342. package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +1 -0
  343. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +1 -0
  344. package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +1 -0
  345. package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +1 -0
  346. package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +1 -0
  347. package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  348. package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +1 -0
  349. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +1 -0
  350. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +1 -0
  351. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +1 -0
  352. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +1 -0
  353. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +1 -0
  354. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +1 -0
  355. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +1 -0
  371. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +1 -0
  372. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +1 -0
  373. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +1 -0
  374. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +1 -0
  375. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +1 -0
  376. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +1 -0
  377. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +1 -0
  378. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +1 -0
  379. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +1 -0
  380. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +1 -0
  382. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +1 -0
  383. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +1 -0
  384. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +1 -0
  385. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +1 -0
  386. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +1 -0
  387. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +1 -0
  388. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +1 -0
  389. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +1 -0
  390. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +1 -0
  391. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +1 -0
  392. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +1 -0
  393. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +1 -0
  394. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +1 -0
  395. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +1 -0
  396. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +1 -0
  397. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +1 -0
  398. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +1 -0
  399. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +1 -0
  400. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +1 -0
  401. package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +1 -0
  402. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +1 -0
  403. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +1 -0
  404. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +1 -0
  405. package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +1 -0
  406. package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +1 -0
  407. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +1 -0
  408. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +1 -0
  409. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +1 -0
  410. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +1 -0
  434. package/.next/static/chunks/app/layout-419eaf7de340f4ab.js +1 -0
  435. package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +1 -0
  436. package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +1 -0
  437. package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +1 -0
  438. package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +1 -0
  439. package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +1 -0
  440. package/.next/trace +13 -13
  441. package/.next/types/app/api/worktrees/[id]/prompt-response/strict/route.ts +347 -0
  442. package/.next/types/routes.d.ts +2 -1
  443. package/.next/types/validator.ts +9 -0
  444. package/dist/cli/commands/auto-yes.d.ts +19 -0
  445. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  446. package/dist/cli/commands/auto-yes.js +45 -0
  447. package/dist/cli/commands/instances.d.ts.map +1 -1
  448. package/dist/cli/commands/instances.js +23 -18
  449. package/dist/cli/commands/ls.d.ts +15 -1
  450. package/dist/cli/commands/ls.d.ts.map +1 -1
  451. package/dist/cli/commands/ls.js +39 -3
  452. package/dist/cli/commands/prompt.d.ts +42 -0
  453. package/dist/cli/commands/prompt.d.ts.map +1 -0
  454. package/dist/cli/commands/prompt.js +211 -0
  455. package/dist/cli/commands/relays.d.ts.map +1 -1
  456. package/dist/cli/commands/relays.js +13 -1
  457. package/dist/cli/commands/respond-strict.d.ts +31 -0
  458. package/dist/cli/commands/respond-strict.d.ts.map +1 -0
  459. package/dist/cli/commands/respond-strict.js +214 -0
  460. package/dist/cli/commands/respond.d.ts.map +1 -1
  461. package/dist/cli/commands/respond.js +38 -0
  462. package/dist/cli/commands/send.d.ts.map +1 -1
  463. package/dist/cli/commands/send.js +41 -5
  464. package/dist/cli/commands/start.d.ts.map +1 -1
  465. package/dist/cli/commands/start.js +2 -1
  466. package/dist/cli/commands/status.d.ts.map +1 -1
  467. package/dist/cli/commands/status.js +18 -0
  468. package/dist/cli/commands/wait.d.ts +21 -1
  469. package/dist/cli/commands/wait.d.ts.map +1 -1
  470. package/dist/cli/commands/wait.js +108 -12
  471. package/dist/cli/docs/agent-operations.d.ts +1 -1
  472. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  473. package/dist/cli/docs/agent-operations.js +63 -1
  474. package/dist/cli/program.d.ts.map +1 -1
  475. package/dist/cli/program.js +6 -2
  476. package/dist/cli/types/api-responses.d.ts +54 -0
  477. package/dist/cli/types/api-responses.d.ts.map +1 -1
  478. package/dist/cli/types/index.d.ts +30 -0
  479. package/dist/cli/types/index.d.ts.map +1 -1
  480. package/dist/cli/types/index.js +12 -1
  481. package/dist/cli/utils/api-client.d.ts +13 -1
  482. package/dist/cli/utils/api-client.d.ts.map +1 -1
  483. package/dist/cli/utils/api-client.js +10 -2
  484. package/dist/cli/utils/daemon-factory.d.ts.map +1 -1
  485. package/dist/cli/utils/daemon-factory.js +3 -1
  486. package/dist/cli/utils/daemon.d.ts +38 -1
  487. package/dist/cli/utils/daemon.d.ts.map +1 -1
  488. package/dist/cli/utils/daemon.js +161 -8
  489. package/dist/cli/utils/paths.d.ts +12 -0
  490. package/dist/cli/utils/paths.d.ts.map +1 -1
  491. package/dist/cli/utils/paths.js +17 -0
  492. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +43 -1
  493. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
  494. package/dist/lib/polling/auto-yes-suppression-reason.js +18 -1
  495. package/dist/lib/prompt-observation/kinds.d.ts +101 -0
  496. package/dist/lib/prompt-observation/kinds.d.ts.map +1 -0
  497. package/dist/lib/prompt-observation/kinds.js +123 -0
  498. package/dist/lib/prompt-observation/types.d.ts +271 -0
  499. package/dist/lib/prompt-observation/types.d.ts.map +1 -0
  500. package/dist/lib/prompt-observation/types.js +14 -0
  501. package/dist/lib/session/send-attempt-types.d.ts +66 -0
  502. package/dist/lib/session/send-attempt-types.d.ts.map +1 -0
  503. package/dist/lib/session/send-attempt-types.js +17 -0
  504. package/dist/server/locales/en/worktree.json +4 -0
  505. package/dist/server/locales/ja/worktree.json +4 -0
  506. package/dist/server/server.js +20 -1
  507. package/dist/server/src/config/auto-yes-config.js +11 -0
  508. package/dist/server/src/lib/auto-yes-lifecycle.js +28 -2
  509. package/dist/server/src/lib/auto-yes-poller.js +345 -28
  510. package/dist/server/src/lib/auto-yes-shutdown-record.js +257 -0
  511. package/dist/server/src/lib/auto-yes-state.js +197 -4
  512. package/dist/server/src/lib/cli-tools/antigravity-startup-trust.js +135 -0
  513. package/dist/server/src/lib/cli-tools/antigravity.js +162 -29
  514. package/dist/server/src/lib/cli-tools/command-code.js +10 -2
  515. package/dist/server/src/lib/cli-tools/copilot.js +21 -10
  516. package/dist/server/src/lib/cli-tools/gemini.js +60 -13
  517. package/dist/server/src/lib/cli-tools/launch-dialog.js +203 -0
  518. package/dist/server/src/lib/cli-tools/launch-window.js +96 -0
  519. package/dist/server/src/lib/detection/selection-shape.js +35 -1
  520. package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -9
  521. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +88 -1
  522. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +41 -1
  523. package/dist/server/src/lib/detection/tools/claude/detect.js +60 -0
  524. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +63 -13
  525. package/dist/server/src/lib/detection/tools/copilot/patterns.js +7 -1
  526. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +11 -2
  527. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +5 -3
  528. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +15 -0
  529. package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +281 -0
  530. package/dist/server/src/lib/polling/auto-yes-confirm-page.js +56 -0
  531. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +8 -1
  532. package/dist/server/src/lib/polling/auto-yes-policy.js +61 -7
  533. package/dist/server/src/lib/polling/auto-yes-poller-stop-reason.js +50 -0
  534. package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +220 -5
  535. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +18 -1
  536. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +10 -0
  537. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +2 -2
  538. package/dist/server/src/lib/polling/response-checker.js +9 -0
  539. package/dist/server/src/lib/polling/response-poller-core.js +136 -104
  540. package/dist/server/src/lib/prompt-observation/kinds.js +123 -0
  541. package/dist/server/src/lib/prompt-observation/types.js +14 -0
  542. package/dist/server/src/lib/push/prompt-push-gate.js +195 -3
  543. package/dist/server/src/lib/push/waiting-push-notifier.js +74 -7
  544. package/dist/server/src/lib/relay/relay-delivery-claims.js +46 -0
  545. package/dist/server/src/lib/relay/relay-delivery.js +76 -30
  546. package/dist/server/src/lib/schedule-manager.js +28 -0
  547. package/dist/server/src/lib/session/cli-session.js +38 -3
  548. package/dist/server/src/lib/session/send-attempt-state.js +155 -0
  549. package/dist/server/src/lib/session/send-attempt-types.js +17 -0
  550. package/dist/server/src/lib/session/send-user-message.js +46 -0
  551. package/dist/server/src/lib/session/worktree-session-reconcile.js +2 -1
  552. package/dist/server/src/lib/tmux/session-created-signal.js +76 -0
  553. package/dist/server/src/lib/tmux/tmux-capture-cache.js +58 -6
  554. package/dist/server/src/lib/tmux/tmux.js +4 -0
  555. package/dist/server/src/lib/verification/scope-gate-format.js +100 -0
  556. package/dist/server/src/lib/verification/scope-gate-glob.js +185 -0
  557. package/dist/server/src/lib/verification/scope-gate.js +19 -271
  558. package/dist/server/src/lib/ws-server.js +48 -6
  559. package/docs/en/user-guide/cli-setup-guide.md +12 -1
  560. package/docs/en/user-guide/webapp-guide.md +2 -0
  561. package/package.json +1 -1
  562. package/release-notes/0.47.0.json +118 -0
  563. package/.next/server/chunks/1789.js +0 -1
  564. package/.next/server/chunks/2908.js +0 -1
  565. package/.next/server/chunks/2984.js +0 -25
  566. package/.next/server/chunks/3718.js +0 -1
  567. package/.next/server/chunks/4837.js +0 -14
  568. package/.next/server/chunks/611.js +0 -1
  569. package/.next/server/chunks/850.js +0 -1
  570. package/.next/static/chunks/3201-c01f1feed69020e6.js +0 -1
  571. package/.next/static/chunks/5371-0dc947683e46e78c.js +0 -1
  572. package/.next/static/chunks/602-25e45a2422d2a3ea.js +0 -1
  573. package/.next/static/chunks/app/api/app/update/route-0468c3c4baa46028.js +0 -1
  574. package/.next/static/chunks/app/api/auth/login/route-0468c3c4baa46028.js +0 -1
  575. package/.next/static/chunks/app/api/auth/logout/route-0468c3c4baa46028.js +0 -1
  576. package/.next/static/chunks/app/api/auth/status/route-0468c3c4baa46028.js +0 -1
  577. package/.next/static/chunks/app/api/capabilities/route-0468c3c4baa46028.js +0 -1
  578. package/.next/static/chunks/app/api/daily-summary/route-0468c3c4baa46028.js +0 -1
  579. package/.next/static/chunks/app/api/daily-summary/status/route-0468c3c4baa46028.js +0 -1
  580. package/.next/static/chunks/app/api/external-apps/[id]/health/route-0468c3c4baa46028.js +0 -1
  581. package/.next/static/chunks/app/api/external-apps/[id]/route-0468c3c4baa46028.js +0 -1
  582. package/.next/static/chunks/app/api/external-apps/route-0468c3c4baa46028.js +0 -1
  583. package/.next/static/chunks/app/api/fs/browse/route-0468c3c4baa46028.js +0 -1
  584. package/.next/static/chunks/app/api/fs/recent-paths/route-0468c3c4baa46028.js +0 -1
  585. package/.next/static/chunks/app/api/hooks/agent-event/route-0468c3c4baa46028.js +0 -1
  586. package/.next/static/chunks/app/api/hooks/claude-done/route-0468c3c4baa46028.js +0 -1
  587. package/.next/static/chunks/app/api/hooks/permission-request/route-0468c3c4baa46028.js +0 -1
  588. package/.next/static/chunks/app/api/metrics/vibe/route-0468c3c4baa46028.js +0 -1
  589. package/.next/static/chunks/app/api/ollama/models/route-0468c3c4baa46028.js +0 -1
  590. package/.next/static/chunks/app/api/push/escalation/route-0468c3c4baa46028.js +0 -1
  591. package/.next/static/chunks/app/api/push/subscriptions/route-0468c3c4baa46028.js +0 -1
  592. package/.next/static/chunks/app/api/push/vapid/route-0468c3c4baa46028.js +0 -1
  593. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-0468c3c4baa46028.js +0 -1
  594. package/.next/static/chunks/app/api/relays/route-0468c3c4baa46028.js +0 -1
  595. package/.next/static/chunks/app/api/remote/pair/route-0468c3c4baa46028.js +0 -1
  596. package/.next/static/chunks/app/api/repositories/[id]/route-0468c3c4baa46028.js +0 -1
  597. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-0468c3c4baa46028.js +0 -1
  598. package/.next/static/chunks/app/api/repositories/clone/route-0468c3c4baa46028.js +0 -1
  599. package/.next/static/chunks/app/api/repositories/excluded/route-0468c3c4baa46028.js +0 -1
  600. package/.next/static/chunks/app/api/repositories/restore/route-0468c3c4baa46028.js +0 -1
  601. package/.next/static/chunks/app/api/repositories/route-0468c3c4baa46028.js +0 -1
  602. package/.next/static/chunks/app/api/repositories/scan/route-0468c3c4baa46028.js +0 -1
  603. package/.next/static/chunks/app/api/repositories/sync/route-0468c3c4baa46028.js +0 -1
  604. package/.next/static/chunks/app/api/repositories/validate-path/route-0468c3c4baa46028.js +0 -1
  605. package/.next/static/chunks/app/api/settings/default-agents/route-0468c3c4baa46028.js +0 -1
  606. package/.next/static/chunks/app/api/settings/default-surface-mode/route-0468c3c4baa46028.js +0 -1
  607. package/.next/static/chunks/app/api/sidebar/group-order/route-0468c3c4baa46028.js +0 -1
  608. package/.next/static/chunks/app/api/skills/[id]/route-0468c3c4baa46028.js +0 -1
  609. package/.next/static/chunks/app/api/skills/installations/route-0468c3c4baa46028.js +0 -1
  610. package/.next/static/chunks/app/api/skills/operations/route-0468c3c4baa46028.js +0 -1
  611. package/.next/static/chunks/app/api/skills/reindex/route-0468c3c4baa46028.js +0 -1
  612. package/.next/static/chunks/app/api/skills/route-0468c3c4baa46028.js +0 -1
  613. package/.next/static/chunks/app/api/slash-commands/route-0468c3c4baa46028.js +0 -1
  614. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-0468c3c4baa46028.js +0 -1
  615. package/.next/static/chunks/app/api/tasks/[taskId]/route-0468c3c4baa46028.js +0 -1
  616. package/.next/static/chunks/app/api/templates/[id]/route-0468c3c4baa46028.js +0 -1
  617. package/.next/static/chunks/app/api/templates/route-0468c3c4baa46028.js +0 -1
  618. package/.next/static/chunks/app/api/verification/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  619. package/.next/static/chunks/app/api/verification/runs/route-0468c3c4baa46028.js +0 -1
  620. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-0468c3c4baa46028.js +0 -1
  621. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-0468c3c4baa46028.js +0 -1
  622. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-0468c3c4baa46028.js +0 -1
  623. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-0468c3c4baa46028.js +0 -1
  624. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-0468c3c4baa46028.js +0 -1
  625. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-0468c3c4baa46028.js +0 -1
  626. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-0468c3c4baa46028.js +0 -1
  627. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-0468c3c4baa46028.js +0 -1
  628. package/.next/static/chunks/app/api/worktrees/[id]/env/route-0468c3c4baa46028.js +0 -1
  629. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-0468c3c4baa46028.js +0 -1
  630. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-0468c3c4baa46028.js +0 -1
  631. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-0468c3c4baa46028.js +0 -1
  632. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-0468c3c4baa46028.js +0 -1
  633. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-0468c3c4baa46028.js +0 -1
  634. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-0468c3c4baa46028.js +0 -1
  635. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-0468c3c4baa46028.js +0 -1
  636. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-0468c3c4baa46028.js +0 -1
  637. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-0468c3c4baa46028.js +0 -1
  638. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-0468c3c4baa46028.js +0 -1
  639. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-0468c3c4baa46028.js +0 -1
  640. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-0468c3c4baa46028.js +0 -1
  641. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-0468c3c4baa46028.js +0 -1
  642. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-0468c3c4baa46028.js +0 -1
  643. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-0468c3c4baa46028.js +0 -1
  644. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-0468c3c4baa46028.js +0 -1
  645. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-0468c3c4baa46028.js +0 -1
  646. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-0468c3c4baa46028.js +0 -1
  647. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-0468c3c4baa46028.js +0 -1
  648. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-0468c3c4baa46028.js +0 -1
  649. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-0468c3c4baa46028.js +0 -1
  650. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-0468c3c4baa46028.js +0 -1
  651. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-0468c3c4baa46028.js +0 -1
  652. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-0468c3c4baa46028.js +0 -1
  653. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-0468c3c4baa46028.js +0 -1
  654. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-0468c3c4baa46028.js +0 -1
  655. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-0468c3c4baa46028.js +0 -1
  656. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-0468c3c4baa46028.js +0 -1
  657. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-0468c3c4baa46028.js +0 -1
  658. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-0468c3c4baa46028.js +0 -1
  659. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-0468c3c4baa46028.js +0 -1
  660. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-0468c3c4baa46028.js +0 -1
  661. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-0468c3c4baa46028.js +0 -1
  662. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-0468c3c4baa46028.js +0 -1
  663. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-0468c3c4baa46028.js +0 -1
  664. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-0468c3c4baa46028.js +0 -1
  665. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-0468c3c4baa46028.js +0 -1
  666. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-0468c3c4baa46028.js +0 -1
  667. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-0468c3c4baa46028.js +0 -1
  668. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-0468c3c4baa46028.js +0 -1
  669. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-0468c3c4baa46028.js +0 -1
  670. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-0468c3c4baa46028.js +0 -1
  671. package/.next/static/chunks/app/api/worktrees/[id]/route-0468c3c4baa46028.js +0 -1
  672. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-0468c3c4baa46028.js +0 -1
  673. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-0468c3c4baa46028.js +0 -1
  674. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-0468c3c4baa46028.js +0 -1
  675. package/.next/static/chunks/app/api/worktrees/[id]/search/route-0468c3c4baa46028.js +0 -1
  676. package/.next/static/chunks/app/api/worktrees/[id]/send/route-0468c3c4baa46028.js +0 -1
  677. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-0468c3c4baa46028.js +0 -1
  678. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-0468c3c4baa46028.js +0 -1
  679. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-0468c3c4baa46028.js +0 -1
  680. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-0468c3c4baa46028.js +0 -1
  681. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-0468c3c4baa46028.js +0 -1
  682. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-0468c3c4baa46028.js +0 -1
  683. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-0468c3c4baa46028.js +0 -1
  684. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-0468c3c4baa46028.js +0 -1
  685. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-0468c3c4baa46028.js +0 -1
  686. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-0468c3c4baa46028.js +0 -1
  687. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-0468c3c4baa46028.js +0 -1
  688. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-0468c3c4baa46028.js +0 -1
  689. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-0468c3c4baa46028.js +0 -1
  690. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-0468c3c4baa46028.js +0 -1
  691. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-0468c3c4baa46028.js +0 -1
  692. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-0468c3c4baa46028.js +0 -1
  693. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-0468c3c4baa46028.js +0 -1
  694. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-0468c3c4baa46028.js +0 -1
  695. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-0468c3c4baa46028.js +0 -1
  696. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-0468c3c4baa46028.js +0 -1
  697. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-0468c3c4baa46028.js +0 -1
  698. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-0468c3c4baa46028.js +0 -1
  699. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  700. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-0468c3c4baa46028.js +0 -1
  701. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-0468c3c4baa46028.js +0 -1
  702. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-0468c3c4baa46028.js +0 -1
  703. package/.next/static/chunks/app/api/worktrees/route-0468c3c4baa46028.js +0 -1
  704. package/.next/static/chunks/app/layout-3e357690446cd2da.js +0 -1
  705. package/.next/static/chunks/app/manifest.webmanifest/route-0468c3c4baa46028.js +0 -1
  706. package/.next/static/chunks/app/proxy/[...path]/route-0468c3c4baa46028.js +0 -1
  707. package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +0 -1
  708. package/.next/static/chunks/app/worktrees/[id]/layout-0468c3c4baa46028.js +0 -1
  709. package/.next/static/chunks/app/worktrees/[id]/page-effbf0796881dd5a.js +0 -1
  710. /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → b5BiQC9F6r_XFPdA9cuSj}/_buildManifest.js +0 -0
  711. /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → b5BiQC9F6r_XFPdA9cuSj}/_ssgManifest.js +0 -0
@@ -0,0 +1,101 @@
1
+ /**
2
+ * The screen kinds a prompt observation publishes (Issue #3755, #3746 A-3).
3
+ *
4
+ * ## Why a vocabulary of its own
5
+ *
6
+ * `promptData.type` (`yes_no` / `multiple_choice` / `unclassified`) says how a
7
+ * parsed prompt is answered, and agy's status detector
8
+ * (`detection/tools/antigravity/detect.ts`) publishes the folder-trust screen,
9
+ * the `/model` picker and the slash popup under ONE reason
10
+ * (`antigravity_selection_list`). Neither can say "this is the trust screen and
11
+ * not the picker", which is exactly what a caller about to answer one of them
12
+ * has to be sure of (#3746 P4-1). So the values a caller may branch on — and
13
+ * that the strict `respond` (#3756) may make a send condition — live here, and
14
+ * are never mixed into `promptData.type` or read back from the detector's
15
+ * reason.
16
+ *
17
+ * A kind is added only for a screen whose reading is pinned to a measured
18
+ * frame. Everything else that waits on a human is `unknown`: an unmeasured
19
+ * screen must not borrow a measured screen's name.
20
+ *
21
+ * ## No imports, on purpose
22
+ *
23
+ * The CLI (`tsconfig.cli.json`) compiles with `"paths": {}` and reaches a
24
+ * module under `src/lib` only by a relative path whose graph uses no `@/`
25
+ * alias (the arrangement `lib/session/prompt-view` documents). `prompt` and
26
+ * `wait` import these values from here rather than restating them.
27
+ *
28
+ * @module lib/prompt-observation/kinds
29
+ */
30
+ /** `schemaVersion` of the observation payload. Bumped when a field changes meaning. */
31
+ export declare const PROMPT_OBSERVATION_SCHEMA_VERSION = 1;
32
+ /**
33
+ * Every kind an observation can publish.
34
+ *
35
+ * - `antigravity-trust` — agy's first-run folder trust screen (`Do you trust
36
+ * the contents of this project?` over `> Yes, I trust this folder` /
37
+ * `No, exit`). Unnumbered; Enter confirms the highlighted row.
38
+ * - `antigravity-model-picker` — agy's `/model` picker (`Switch Model`): the
39
+ * 1.1.27 layout (`antigravity-live-2364/picker-switch-model.txt`) and the
40
+ * 1.4 one with a search box (`prompt-observation-3797/`, Issue #3797).
41
+ * - `antigravity-permission` — agy's numbered permission dialog (command
42
+ * execution, file creation; `tests/fixtures/antigravity-live-2364/dialog-*`),
43
+ * ending on its `tab Amend` footer. agy's numbered login-method screen is
44
+ * not one (`unknown`).
45
+ * - `antigravity-slash-menu` — agy's slash-command popup.
46
+ * - `composer` — no confirmation: the agent sits at its input box.
47
+ * - `none` — no confirmation, and not at the input box either (working).
48
+ * - `unknown` — something waits on a human and no measured reading names it.
49
+ */
50
+ export declare const PROMPT_OBSERVATION_KINDS: readonly ["antigravity-trust", "antigravity-model-picker", "antigravity-permission", "antigravity-slash-menu", "composer", "none", "unknown"];
51
+ export type PromptObservationKind = (typeof PROMPT_OBSERVATION_KINDS)[number];
52
+ /** The two kinds that mean "nothing on screen is asking for a decision". */
53
+ export declare const NO_PROMPT_OBSERVATION_KINDS: readonly PromptObservationKind[];
54
+ /** Whether `value` is one of {@link PROMPT_OBSERVATION_KINDS}. */
55
+ export declare function isPromptObservationKind(value: unknown): value is PromptObservationKind;
56
+ /** Whether `kind` is a screen that asks for a decision (neither `composer` nor `none`). */
57
+ export declare function isDecisionKind(kind: PromptObservationKind): boolean;
58
+ /**
59
+ * The kinds the strict `respond` (Issue #3756) answers. Every other kind is
60
+ * refused before a key: the `/model` picker's effort slider is not read, the
61
+ * slash popup is a menu of the composer, and `unknown` is never answered.
62
+ */
63
+ export declare const STRICT_RESPOND_KINDS: readonly ["antigravity-trust", "antigravity-permission"];
64
+ export type StrictRespondKind = (typeof STRICT_RESPOND_KINDS)[number];
65
+ /** Whether `kind` is one of {@link STRICT_RESPOND_KINDS}. */
66
+ export declare function isStrictRespondKind(kind: unknown): kind is StrictRespondKind;
67
+ /**
68
+ * Strict kinds whose rows carry no number: answered only by a label, which is
69
+ * sent as ↑/↓ and Enter. An option number or `--default` is refused there.
70
+ */
71
+ export declare const UNNUMBERED_STRICT_RESPOND_KINDS: readonly StrictRespondKind[];
72
+ /**
73
+ * Per strict kind, the answer whose consequence is the agent exiting (Issue
74
+ * #3788): its 1-based position, valid only on a screen that shows exactly
75
+ * `optionCount` options AND whose row at that position reads `label`. agy's
76
+ * trust screen offers `Yes, I trust this folder` then `No, exit` (measured:
77
+ * `tests/fixtures/prompt-observation-3755/antigravity-trust.txt`,
78
+ * `antigravity-live-2364/trust-dialog.txt`), and agy exits on the second.
79
+ *
80
+ * The three conditions only narrow: a screen drawn in another order, with
81
+ * another number of rows, or with another wording has no exiting answer, and
82
+ * its outcome stays `indeterminate` (exit 41).
83
+ *
84
+ * Only after such an answer may a shell back in front of the pane be read as
85
+ * the session having ended: after any other answer it is the agent falling
86
+ * over (a crash, a failed start), which the answer did not ask for. A kind
87
+ * absent here has no exiting answer.
88
+ */
89
+ export declare const EXITING_STRICT_ANSWERS: Readonly<Partial<Record<StrictRespondKind, {
90
+ readonly position: number;
91
+ readonly optionCount: number;
92
+ readonly label: string;
93
+ }>>>;
94
+ /**
95
+ * Whether answering option `position` (1-based) of a `kind` screen showing
96
+ * `options` (labels in draw order) exits the agent: the declared position, the
97
+ * declared number of options, and the declared label at that position (runs of
98
+ * spaces folded, ends trimmed; case kept).
99
+ */
100
+ export declare function isExitingStrictAnswer(kind: StrictRespondKind, position: number, options: readonly string[]): boolean;
101
+ //# sourceMappingURL=kinds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kinds.d.ts","sourceRoot":"","sources":["../../../src/lib/prompt-observation/kinds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,uFAAuF;AACvF,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,wBAAwB,+IAQ3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,EAAE,SAAS,qBAAqB,EAAyB,CAAC;AAElG,kEAAkE;AAClE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAEtF;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0DAA2D,CAAC;AAE7F,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,6DAA6D;AAC7D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,iBAAiB,CAE5E;AAED;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,SAAS,iBAAiB,EAA0B,CAAC;AAEnG;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAIxH,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAIpH"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /**
3
+ * The screen kinds a prompt observation publishes (Issue #3755, #3746 A-3).
4
+ *
5
+ * ## Why a vocabulary of its own
6
+ *
7
+ * `promptData.type` (`yes_no` / `multiple_choice` / `unclassified`) says how a
8
+ * parsed prompt is answered, and agy's status detector
9
+ * (`detection/tools/antigravity/detect.ts`) publishes the folder-trust screen,
10
+ * the `/model` picker and the slash popup under ONE reason
11
+ * (`antigravity_selection_list`). Neither can say "this is the trust screen and
12
+ * not the picker", which is exactly what a caller about to answer one of them
13
+ * has to be sure of (#3746 P4-1). So the values a caller may branch on — and
14
+ * that the strict `respond` (#3756) may make a send condition — live here, and
15
+ * are never mixed into `promptData.type` or read back from the detector's
16
+ * reason.
17
+ *
18
+ * A kind is added only for a screen whose reading is pinned to a measured
19
+ * frame. Everything else that waits on a human is `unknown`: an unmeasured
20
+ * screen must not borrow a measured screen's name.
21
+ *
22
+ * ## No imports, on purpose
23
+ *
24
+ * The CLI (`tsconfig.cli.json`) compiles with `"paths": {}` and reaches a
25
+ * module under `src/lib` only by a relative path whose graph uses no `@/`
26
+ * alias (the arrangement `lib/session/prompt-view` documents). `prompt` and
27
+ * `wait` import these values from here rather than restating them.
28
+ *
29
+ * @module lib/prompt-observation/kinds
30
+ */
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.EXITING_STRICT_ANSWERS = exports.UNNUMBERED_STRICT_RESPOND_KINDS = exports.STRICT_RESPOND_KINDS = exports.NO_PROMPT_OBSERVATION_KINDS = exports.PROMPT_OBSERVATION_KINDS = exports.PROMPT_OBSERVATION_SCHEMA_VERSION = void 0;
33
+ exports.isPromptObservationKind = isPromptObservationKind;
34
+ exports.isDecisionKind = isDecisionKind;
35
+ exports.isStrictRespondKind = isStrictRespondKind;
36
+ exports.isExitingStrictAnswer = isExitingStrictAnswer;
37
+ /** `schemaVersion` of the observation payload. Bumped when a field changes meaning. */
38
+ exports.PROMPT_OBSERVATION_SCHEMA_VERSION = 1;
39
+ /**
40
+ * Every kind an observation can publish.
41
+ *
42
+ * - `antigravity-trust` — agy's first-run folder trust screen (`Do you trust
43
+ * the contents of this project?` over `> Yes, I trust this folder` /
44
+ * `No, exit`). Unnumbered; Enter confirms the highlighted row.
45
+ * - `antigravity-model-picker` — agy's `/model` picker (`Switch Model`): the
46
+ * 1.1.27 layout (`antigravity-live-2364/picker-switch-model.txt`) and the
47
+ * 1.4 one with a search box (`prompt-observation-3797/`, Issue #3797).
48
+ * - `antigravity-permission` — agy's numbered permission dialog (command
49
+ * execution, file creation; `tests/fixtures/antigravity-live-2364/dialog-*`),
50
+ * ending on its `tab Amend` footer. agy's numbered login-method screen is
51
+ * not one (`unknown`).
52
+ * - `antigravity-slash-menu` — agy's slash-command popup.
53
+ * - `composer` — no confirmation: the agent sits at its input box.
54
+ * - `none` — no confirmation, and not at the input box either (working).
55
+ * - `unknown` — something waits on a human and no measured reading names it.
56
+ */
57
+ exports.PROMPT_OBSERVATION_KINDS = [
58
+ 'antigravity-trust',
59
+ 'antigravity-model-picker',
60
+ 'antigravity-permission',
61
+ 'antigravity-slash-menu',
62
+ 'composer',
63
+ 'none',
64
+ 'unknown',
65
+ ];
66
+ /** The two kinds that mean "nothing on screen is asking for a decision". */
67
+ exports.NO_PROMPT_OBSERVATION_KINDS = ['composer', 'none'];
68
+ /** Whether `value` is one of {@link PROMPT_OBSERVATION_KINDS}. */
69
+ function isPromptObservationKind(value) {
70
+ return typeof value === 'string' && exports.PROMPT_OBSERVATION_KINDS.includes(value);
71
+ }
72
+ /** Whether `kind` is a screen that asks for a decision (neither `composer` nor `none`). */
73
+ function isDecisionKind(kind) {
74
+ return !exports.NO_PROMPT_OBSERVATION_KINDS.includes(kind);
75
+ }
76
+ /**
77
+ * The kinds the strict `respond` (Issue #3756) answers. Every other kind is
78
+ * refused before a key: the `/model` picker's effort slider is not read, the
79
+ * slash popup is a menu of the composer, and `unknown` is never answered.
80
+ */
81
+ exports.STRICT_RESPOND_KINDS = ['antigravity-trust', 'antigravity-permission'];
82
+ /** Whether `kind` is one of {@link STRICT_RESPOND_KINDS}. */
83
+ function isStrictRespondKind(kind) {
84
+ return typeof kind === 'string' && exports.STRICT_RESPOND_KINDS.includes(kind);
85
+ }
86
+ /**
87
+ * Strict kinds whose rows carry no number: answered only by a label, which is
88
+ * sent as ↑/↓ and Enter. An option number or `--default` is refused there.
89
+ */
90
+ exports.UNNUMBERED_STRICT_RESPOND_KINDS = ['antigravity-trust'];
91
+ /**
92
+ * Per strict kind, the answer whose consequence is the agent exiting (Issue
93
+ * #3788): its 1-based position, valid only on a screen that shows exactly
94
+ * `optionCount` options AND whose row at that position reads `label`. agy's
95
+ * trust screen offers `Yes, I trust this folder` then `No, exit` (measured:
96
+ * `tests/fixtures/prompt-observation-3755/antigravity-trust.txt`,
97
+ * `antigravity-live-2364/trust-dialog.txt`), and agy exits on the second.
98
+ *
99
+ * The three conditions only narrow: a screen drawn in another order, with
100
+ * another number of rows, or with another wording has no exiting answer, and
101
+ * its outcome stays `indeterminate` (exit 41).
102
+ *
103
+ * Only after such an answer may a shell back in front of the pane be read as
104
+ * the session having ended: after any other answer it is the agent falling
105
+ * over (a crash, a failed start), which the answer did not ask for. A kind
106
+ * absent here has no exiting answer.
107
+ */
108
+ exports.EXITING_STRICT_ANSWERS = {
109
+ // eslint-disable-next-line no-restricted-syntax -- agy's drawn option row, matched against the screen, not display text
110
+ 'antigravity-trust': { position: 2, optionCount: 2, label: 'No, exit' },
111
+ };
112
+ /**
113
+ * Whether answering option `position` (1-based) of a `kind` screen showing
114
+ * `options` (labels in draw order) exits the agent: the declared position, the
115
+ * declared number of options, and the declared label at that position (runs of
116
+ * spaces folded, ends trimmed; case kept).
117
+ */
118
+ function isExitingStrictAnswer(kind, position, options) {
119
+ const exiting = exports.EXITING_STRICT_ANSWERS[kind];
120
+ if (exiting === undefined || exiting.position !== position || exiting.optionCount !== options.length)
121
+ return false;
122
+ return options[position - 1].replace(/\s+/g, ' ').trim() === exiting.label;
123
+ }
@@ -0,0 +1,271 @@
1
+ /**
2
+ * The payload of one prompt observation (Issue #3755): what
3
+ * `GET /api/worktrees/:id/current-output?observe=1` adds as `promptObservation`,
4
+ * what `commandmate prompt --json` prints, and what `commandmate wait` adds to
5
+ * its exit-10 payload as `observation`.
6
+ *
7
+ * Types only, and importable from the CLI for the reason `./kinds` gives: the
8
+ * two imports outside this directory (`polling/auto-yes-suppression-reason`,
9
+ * `session/send-attempt-types`) have no imports of their own.
10
+ *
11
+ * @module lib/prompt-observation/types
12
+ */
13
+ import type { PromptObservationKind } from './kinds';
14
+ import type { AutoYesSuppressionReason } from '../polling/auto-yes-suppression-reason';
15
+ import type { LastSendAttempt } from '../session/send-attempt-types';
16
+ /** One option of the observed screen, in draw order. */
17
+ export interface PromptObservationOption {
18
+ /** 1-based position on screen (the row a human would count to). */
19
+ position: number;
20
+ /** The label as drawn, highlight marker and number prefix removed. */
21
+ label: string;
22
+ }
23
+ /** How the observed screen is answered today. */
24
+ export type PromptObservationAnswerVia =
25
+ /** Keys typed at the pane through `respond` (an option number or y/n). */
26
+ 'screen'
27
+ /** A decision delivered over the agent's own API (`respond <id> <number>`). */
28
+ | 'api'
29
+ /** agy's folder-trust screen: `respond --expect-screen` answers it (Issue #3771). */
30
+ | 'strict'
31
+ /** Nothing `respond` can send today: a human answers at the pane. */
32
+ | 'terminal'
33
+ /** There is nothing to answer (`composer` / `none`). */
34
+ | 'none';
35
+ /**
36
+ * Why a screen carries no token:
37
+ * - `no-decision`: nothing asks (`composer` / `none`)
38
+ * - `unknown-screen`: no measured reading names the screen; it is never
39
+ * answered by token
40
+ * - `no-session-generation`: the server did not create the running agent (it
41
+ * predates a restart), so the token could not be bound to a generation
42
+ */
43
+ export type PromptObservationTokenWithheld = 'no-decision' | 'unknown-screen' | 'no-session-generation';
44
+ /** What is on the screen, read once. */
45
+ export interface PromptObservationScreen {
46
+ kind: PromptObservationKind;
47
+ /**
48
+ * The observation token (`./token`), or null — see {@link tokenWithheld}.
49
+ * Short lived, single use, and bound to the instance, the session
50
+ * generation, the pane, this appearance of the screen, the kind, the
51
+ * question, the options, the approval target and the highlighted option —
52
+ * so a sender can prove the screen it answers is the screen it read.
53
+ *
54
+ * Single use per appearance: the strict `respond` (#3756) consumes it BEFORE
55
+ * sending, so a send that then fails has still burnt it (fail closed).
56
+ *
57
+ * Known gap: a screen that goes away and comes back with the same words
58
+ * between two observations, with nothing observed in between, is the same
59
+ * appearance (`./appearance`), so a token from the first still verifies.
60
+ */
61
+ token: string | null;
62
+ /** Epoch ms after which the token no longer verifies; null with no token. */
63
+ tokenExpiresAt: number | null;
64
+ /** Why {@link token} is null; null when there is a token. */
65
+ tokenWithheld: PromptObservationTokenWithheld | null;
66
+ /**
67
+ * Epoch ms this appearance of the screen was first observed (bound by the
68
+ * token), or null when no token was issued.
69
+ */
70
+ appearedAt: number | null;
71
+ /** The question as drawn, or null when the screen asks none. */
72
+ question: string | null;
73
+ /**
74
+ * What the screen asks approval for: the folder on the trust screen, the
75
+ * command block on a permission dialog. Null when the screen names none.
76
+ *
77
+ * A trust screen whose folder could not be read is still `antigravity-trust`,
78
+ * with `approvalTarget: null` (and the token binds that null). A sender that
79
+ * answers a trust screen (#3756) must require kind `antigravity-trust` AND an
80
+ * `approvalTarget` equal to the folder it expects — a null one never matches.
81
+ */
82
+ approvalTarget: string | null;
83
+ options: PromptObservationOption[];
84
+ /** 1-based position of the highlighted option, or null when none is. */
85
+ selectedPosition: number | null;
86
+ answerVia: PromptObservationAnswerVia;
87
+ /** The detector's verdict on the same frame, for diagnosis only (never a send condition). */
88
+ sessionStatus: string;
89
+ sessionStatusReason: string;
90
+ }
91
+ /**
92
+ * How the poller's record relates to the screen observed now.
93
+ *
94
+ * The record carries a reason, a prompt type and a time — nothing that names
95
+ * the screen it was made on — so it can never be CONFIRMED to be about this
96
+ * screen. What can be shown is that it is not: `type-mismatch` (it was made on
97
+ * a prompt of another type) and `no-prompt-on-screen` (nothing is asking now).
98
+ * Every other case is `unknown`.
99
+ */
100
+ export type PollerRecordScreenCorrelation = 'unknown' | 'type-mismatch' | 'no-prompt-on-screen';
101
+ /** The last answer the Auto-Yes poller (or the permission hook) recorded as withheld. */
102
+ export interface PromptObservationPollerRecord {
103
+ /** As recorded. A server newer than the reader may name a reason the reader does not know. */
104
+ reason: AutoYesSuppressionReason | string;
105
+ mode: string | null;
106
+ promptType: string;
107
+ pattern?: string;
108
+ /** Epoch ms of the record (refreshed while the poller keeps withholding). */
109
+ at: number;
110
+ ageSeconds: number;
111
+ screenCorrelation: PollerRecordScreenCorrelation;
112
+ }
113
+ /**
114
+ * The contract's Auto-Yes policy, evaluated NOW against the observed screen.
115
+ *
116
+ * Not what the poller did — that is {@link PromptObservationPollerRecord} —
117
+ * and not "Auto-Yes will answer": the poller has gates of its own (the
118
+ * tool-specific dialog reader, launch dialogs, partial answers) that this does
119
+ * not run. `policy-permits` says only that the contract would not stop it.
120
+ */
121
+ export type PromptObservationContractEvaluation = {
122
+ state: 'policy-withholds';
123
+ reason: AutoYesSuppressionReason;
124
+ pattern?: string;
125
+ contract: PromptObservationContract | null;
126
+ } | {
127
+ state: 'policy-permits';
128
+ contract: PromptObservationContract | null;
129
+ } | {
130
+ /** The base rules would not answer this prompt at all (no default, text input, checkboxes). */
131
+ state: 'no-base-answer';
132
+ contract: PromptObservationContract | null;
133
+ } | {
134
+ state: 'not-evaluated';
135
+ /** `no-parsed-prompt`: the screen carries no prompt the resolver reads (selection screens, `unknown`, nothing asking). */
136
+ because: 'no-parsed-prompt' | 'session-not-running';
137
+ contract: PromptObservationContract | null;
138
+ };
139
+ /** The contract governing the instance, as the policy cache read it. */
140
+ export interface PromptObservationContract {
141
+ taskId: string | null;
142
+ mode: string | null;
143
+ }
144
+ /** Auto-Yes as it bears on the observed screen. */
145
+ export interface PromptObservationAutoYes {
146
+ /** Null when the session is not running (the state outlives the session; `auto-yes` serves it). */
147
+ enabled: boolean | null;
148
+ expiresAt: number | null;
149
+ stopReason: string | null;
150
+ /** Whether the server's poller for this instance is running; null when not known. */
151
+ pollerActive: boolean | null;
152
+ /**
153
+ * The poller's last record, or null when it recorded nothing. **Null is not
154
+ * "Auto-Yes can answer"**: a poller that never reached the screen records
155
+ * nothing either (#3746 P2).
156
+ */
157
+ pollerRecord: PromptObservationPollerRecord | null;
158
+ contractEvaluation: PromptObservationContractEvaluation;
159
+ }
160
+ /** One observation of one instance's screen. */
161
+ export interface PromptObservation {
162
+ schemaVersion: number;
163
+ /** Epoch ms the observation was made. */
164
+ observedAt: number;
165
+ /** The target the server resolved the request to. */
166
+ target: {
167
+ worktreeId: string;
168
+ cliToolId: string;
169
+ instanceId: string;
170
+ /** The tmux session (pane) the frame was read from. */
171
+ sessionName: string;
172
+ resolvedBy: string | null;
173
+ };
174
+ session: {
175
+ running: boolean;
176
+ /** Whether the instance is still launching (`startingSince` non-null). */
177
+ starting: boolean;
178
+ /**
179
+ * Epoch ms the current agent process was created by this server, or null
180
+ * when this server did not create it (it was running before a restart).
181
+ */
182
+ generation: number | null;
183
+ };
184
+ /**
185
+ * `observed`: the screen was read, and {@link screen} says what is on it —
186
+ * including `composer` / `none` when nothing asks. `unavailable`: there is no
187
+ * screen to read, and {@link screen} is null.
188
+ */
189
+ status: 'observed' | 'unavailable';
190
+ unavailableReason: 'session-not-running' | null;
191
+ screen: PromptObservationScreen | null;
192
+ autoYes: PromptObservationAutoYes;
193
+ /**
194
+ * How the last send to this instance ended (Issue #3759): `not-sent` (no key
195
+ * of the body was typed — resend it yourself), `sent`, or `indeterminate`
196
+ * (part of it may have been typed — do not resend before checking the pane).
197
+ * Nothing is resent automatically. Null when this server holds no record
198
+ * (none since it started); absent from a server older than the field.
199
+ */
200
+ lastSend?: LastSendAttempt | null;
201
+ }
202
+ /**
203
+ * Why the strict `respond` (Issue #3756) sent nothing (exit 40) or could not
204
+ * say how its keys landed (exit 41).
205
+ */
206
+ export type StrictRespondReason = 'session_not_running' | 'capture_failed' | 'observation_failed' | 'kind_mismatch' | 'unsupported_screen' | 'no_token_on_screen' | 'approval_target_unreadable' | 'expect_target_required' | 'target_mismatch' | 'label_not_found' | 'label_ambiguous' | 'number_on_unnumbered_screen' | 'number_out_of_range' | 'selection_unreadable' | 'screen_not_open' | 'startup_window_open' | 'startup_trust_in_flight' | 'token_malformed' | 'token_expired' | 'token_not_yet_valid' | 'token_mismatch' | 'token_consumed' | 'token_consumed_store_full' | 'strict_endpoint_missing' | 'session_conflict' | 'server_unreachable' | 'auto_yes_active' | 'send_failed' | 'screen_moved_mid_send' | 'highlight_not_reached' | 'outcome_unchanged' | 'outcome_indeterminate' | 'operation_in_progress'
207
+ /** The operation id was used for another request (instance, screen, answer or token). */
208
+ | 'operation_id_conflict'
209
+ /** Too many operations are still running to remember one more. */
210
+ | 'operation_table_full' | 'response_unknown';
211
+ /**
212
+ * How far the strict `respond`'s keys got: `not-sent` (none), `partial` (↑/↓
213
+ * but not the Enter), `sent` (every key, Enter included), `indeterminate`
214
+ * (not known — a duplicate of an operation still running).
215
+ */
216
+ export type StrictRespondDelivery = 'not-sent' | 'partial' | 'sent' | 'indeterminate';
217
+ /**
218
+ * What the screen did after the Enter, read again within a few seconds:
219
+ * `unchanged` (the same screen), `advanced` (nothing asks any more: the input
220
+ * box, or working), `next-prompt` (another measured decision screen),
221
+ * `session-ended` (the session is gone, or — after the kind's exiting answer
222
+ * only, agy's `No, exit` — the agent exited back to the shell in a pane that is
223
+ * still up; Issue #3788), `indeterminate` (could not be read, or `unknown`).
224
+ */
225
+ export type StrictRespondOutcome = 'unchanged' | 'advanced' | 'next-prompt' | 'session-ended' | 'indeterminate';
226
+ /**
227
+ * The body of `POST /api/worktrees/:id/prompt-response/strict`, and what
228
+ * `commandmate respond --expect-screen … --json` prints.
229
+ */
230
+ export interface StrictRespondResult {
231
+ /** Always 1: the field an older server's 404 never carries. */
232
+ strictRespond: 1;
233
+ /** The CLI's exit code: 0 answered, 40 nothing sent, 41 sent but not confirmed (never resend). */
234
+ code: 0 | 40 | 41;
235
+ delivery: StrictRespondDelivery;
236
+ /** Null when `code` is 0. */
237
+ reason: StrictRespondReason | null;
238
+ message: string;
239
+ expectedKind: string;
240
+ /** The kind the fresh capture showed; null when nothing could be read. */
241
+ observedKind: PromptObservationKind | null;
242
+ expectedTarget: string | null;
243
+ /** The approval target the fresh capture showed (the folder on a trust screen). */
244
+ observedTarget: string | null;
245
+ operationId: string;
246
+ /** The option the answer resolved to; null when it was not resolved. */
247
+ answer: {
248
+ position: number;
249
+ label: string;
250
+ } | null;
251
+ /** How many keys reached tmux. */
252
+ keysSent: number;
253
+ /** Null until the Enter was sent. */
254
+ outcome: StrictRespondOutcome | null;
255
+ /** True when this is the stored result of an earlier request with the same operation id. */
256
+ replayed: boolean;
257
+ /**
258
+ * Where the answer's arrows left the highlight when it stopped before its
259
+ * Enter (`delivery: 'partial'`), as the last read of the same screen showed
260
+ * it — so a caller sees that, say, a `(Persist to settings.json)` option is
261
+ * now the one an Enter at the pane would choose (Issue #3812). Null when the
262
+ * answer did not stop between keys, or when the position is not known (the
263
+ * screen moved, or a key was sent and not read back). Absent from a result
264
+ * the CLI makes itself and from a server before #3812.
265
+ */
266
+ highlightLeftAt?: {
267
+ position: number;
268
+ label: string;
269
+ } | null;
270
+ }
271
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/prompt-observation/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * The payload of one prompt observation (Issue #3755): what
4
+ * `GET /api/worktrees/:id/current-output?observe=1` adds as `promptObservation`,
5
+ * what `commandmate prompt --json` prints, and what `commandmate wait` adds to
6
+ * its exit-10 payload as `observation`.
7
+ *
8
+ * Types only, and importable from the CLI for the reason `./kinds` gives: the
9
+ * two imports outside this directory (`polling/auto-yes-suppression-reason`,
10
+ * `session/send-attempt-types`) have no imports of their own.
11
+ *
12
+ * @module lib/prompt-observation/types
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,66 @@
1
+ /**
2
+ * What the last send to an instance did to its pane (Issue #3759): types only.
3
+ *
4
+ * Kept free of imports so the CLI can read the payload's shape through
5
+ * `lib/prompt-observation/types` without pulling the server graph in (the same
6
+ * rule `polling/auto-yes-suppression-reason` follows).
7
+ *
8
+ * @module lib/session/send-attempt-types
9
+ */
10
+ /**
11
+ * - `not-sent`: it failed before any key of the message body was typed (the
12
+ * input prompt never came back, a dialog was open, the session was another
13
+ * server's). The message is not on the pane.
14
+ * - `sent`: the body was typed and its submit was confirmed.
15
+ * - `indeterminate`: it failed after part of the body may have been typed, or
16
+ * its outcome could not be read back. The message may be in the composer, or
17
+ * may even have been submitted.
18
+ *
19
+ * Nothing is resent automatically in any state. A `not-sent` message is the
20
+ * sender's to resend; an `indeterminate` one must not be resent before the pane
21
+ * has been looked at (`capture --pane`), or it can arrive twice.
22
+ */
23
+ export type SendAttemptState = 'not-sent' | 'sent' | 'indeterminate';
24
+ export type SendAttemptReason =
25
+ /** `sent`: the submit was confirmed. */
26
+ 'submitted'
27
+ /** `not-sent`: the input prompt did not appear within the wait (#3746). */
28
+ | 'prompt-not-ready'
29
+ /** `not-sent`: the session was launched and is still coming up. */
30
+ | 'session-starting'
31
+ /** `not-sent`: the session could not be started. */
32
+ | 'session-start-failed'
33
+ /** `not-sent`: a prompt dialog was open (#1708). */
34
+ | 'prompt-waiting'
35
+ /** `not-sent`: the tmux session belongs to another server (#2865). */
36
+ | 'foreign-session'
37
+ /** `not-sent`: copilot's `/model` switch failed before the body. */
38
+ | 'model-switch-failed'
39
+ /** `not-sent`: the composer held text that could not be cleared (#1880). */
40
+ | 'composer-not-empty'
41
+ /** `not-sent`: a Command Code plan review overlay refused the send before the body (#3125/#3772). */
42
+ | 'plan-review'
43
+ /** `indeterminate`: the body was typed, did not land intact, and was taken back out best-effort (#2464/#3366). */
44
+ | 'body-not-landed'
45
+ /** `indeterminate`: an autocompletion replaced the body; the line was cleared best-effort (#1501). */
46
+ | 'replaced-by-completion'
47
+ /** `indeterminate`: the body was typed and Enter sent, but the submit was never confirmed (#1471). */
48
+ | 'submit-unconfirmed'
49
+ /** `indeterminate`: a read of the composer after the failure still shows the body. */
50
+ | 'composer-residue'
51
+ /** `indeterminate`: any other failure; where it stopped is not known. */
52
+ | 'send-error';
53
+ /** The last send attempt as `prompt --json` publishes it (`lastSend`). */
54
+ export interface LastSendAttempt {
55
+ /** Epoch ms the attempt ended. */
56
+ at: number;
57
+ state: SendAttemptState;
58
+ /** As recorded. A server newer than the reader may name a reason the reader does not know. */
59
+ reason: SendAttemptReason | string;
60
+ }
61
+ /**
62
+ * `code` on the error a tool throws when a plan review overlay refuses the
63
+ * send before any body is typed (Issue #3772). Matched by code, never by wording.
64
+ */
65
+ export declare const PLAN_REVIEW_SEND_REFUSED_CODE = "PLAN_REVIEW_SEND_REFUSED";
66
+ //# sourceMappingURL=send-attempt-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-attempt-types.d.ts","sourceRoot":"","sources":["../../../src/lib/session/send-attempt-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,MAAM,GAAG,eAAe,CAAC;AAErE,MAAM,MAAM,iBAAiB;AAC3B,wCAAwC;AACtC,WAAW;AACb,2EAA2E;GACzE,kBAAkB;AACpB,mEAAmE;GACjE,kBAAkB;AACpB,oDAAoD;GAClD,sBAAsB;AACxB,oDAAoD;GAClD,gBAAgB;AAClB,sEAAsE;GACpE,iBAAiB;AACnB,oEAAoE;GAClE,qBAAqB;AACvB,4EAA4E;GAC1E,oBAAoB;AACtB,qGAAqG;GACnG,aAAa;AACf,kHAAkH;GAChH,iBAAiB;AACnB,sGAAsG;GACpG,wBAAwB;AAC1B,sGAAsG;GACpG,oBAAoB;AACtB,sFAAsF;GACpF,kBAAkB;AACpB,yEAAyE;GACvE,YAAY,CAAC;AAEjB,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,gBAAgB,CAAC;IACxB,8FAA8F;IAC9F,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAAC;CACpC;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,6BAA6B,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * What the last send to an instance did to its pane (Issue #3759): types only.
4
+ *
5
+ * Kept free of imports so the CLI can read the payload's shape through
6
+ * `lib/prompt-observation/types` without pulling the server graph in (the same
7
+ * rule `polling/auto-yes-suppression-reason` follows).
8
+ *
9
+ * @module lib/session/send-attempt-types
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PLAN_REVIEW_SEND_REFUSED_CODE = void 0;
13
+ /**
14
+ * `code` on the error a tool throws when a plan review overlay refuses the
15
+ * send before any body is typed (Issue #3772). Matched by code, never by wording.
16
+ */
17
+ exports.PLAN_REVIEW_SEND_REFUSED_CODE = 'PLAN_REVIEW_SEND_REFUSED';
@@ -562,6 +562,7 @@
562
562
  "reasonDismissablePanel": "This screen only closes. Press Esc here, with it in view below.",
563
563
  "reasonUnclassified": "Chat can't tell what this screen is. It is shown as-is below, so you can drive it with the keys here.",
564
564
  "reasonPromptUnreadable": "Waiting for an answer, and the options couldn't be read. Read the screen below and answer with a number or y/n.",
565
+ "reasonTrustConfirmation": "Terminal action needed (trust confirmation). The agent will not continue until you answer whether to trust this folder, and Auto-Yes does not answer this screen. Send the arrows and Enter from here, with the screen below in view, or answer it in the terminal.",
565
566
  "openTerminal": "Open terminal",
566
567
  "jumpToLatest": "Jump to latest",
567
568
  "jumpToLatestGenerating": "Jump to latest (still responding)",
@@ -1169,6 +1170,9 @@
1169
1170
  "opencodeToolbarLabel": "opencode model keys",
1170
1171
  "opencodeCaption": "Model"
1171
1172
  },
1173
+ "trustConfirmation": {
1174
+ "notice": "Terminal action needed (trust confirmation). The agent will not continue until you answer whether to trust this folder, and Auto-Yes does not answer this screen. Pick with the arrows and press Enter, or answer it in the terminal."
1175
+ },
1172
1176
  "newFileDialog": {
1173
1177
  "title": "New File",
1174
1178
  "fileNameLabel": "File name",
@@ -562,6 +562,7 @@
562
562
  "reasonDismissablePanel": "閉じるだけの画面です。下の画面を見ながら、ここで Esc を押せます。",
563
563
  "reasonUnclassified": "チャットでは種類を判別できない画面です。下にそのまま表示しているので、ここでキーを送って操作できます。",
564
564
  "reasonPromptUnreadable": "応答待ちですが選択肢を読み取れませんでした。下の画面を見て、番号か y/n で答えられます。",
565
+ "reasonTrustConfirmation": "端末で操作が必要です(信頼の確認)。このフォルダを信頼するかを答えるまで、エージェントは先へ進みません。Auto-Yes もこの確認には答えません。下の画面を見ながら、ここで矢印と決定キーを送るか、端末で答えてください。",
565
566
  "openTerminal": "ターミナルで確認",
566
567
  "jumpToLatest": "新着へ",
567
568
  "jumpToLatestGenerating": "新着へ(応答中)",
@@ -1169,6 +1170,9 @@
1169
1170
  "opencodeToolbarLabel": "opencode のモデルキー",
1170
1171
  "opencodeCaption": "モデル"
1171
1172
  },
1173
+ "trustConfirmation": {
1174
+ "notice": "端末で操作が必要です(信頼の確認)。このフォルダを信頼するかを答えるまで、エージェントは先へ進みません。Auto-Yes もこの確認には答えません。矢印で選んで決定キーを押すか、端末で答えてください。"
1175
+ },
1172
1176
  "newFileDialog": {
1173
1177
  "title": "新規ファイル",
1174
1178
  "fileNameLabel": "ファイル名",