@with-logic/elwood 0.1.2 → 0.2.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 (1227) hide show
  1. package/CHANGELOG.md +396 -2
  2. package/CONTRIBUTING.md +29 -18
  3. package/README.md +50 -19
  4. package/dist/bridge/parse.d.ts.map +1 -1
  5. package/dist/bridge/parse.js +2 -1
  6. package/dist/bridge/parse.js.map +1 -1
  7. package/dist/bridge/server.d.ts.map +1 -1
  8. package/dist/bridge/server.js +6 -2
  9. package/dist/bridge/server.js.map +1 -1
  10. package/dist/claude/attach-images.d.ts +3 -1
  11. package/dist/claude/attach-images.d.ts.map +1 -1
  12. package/dist/claude/attach-images.js +11 -10
  13. package/dist/claude/attach-images.js.map +1 -1
  14. package/dist/claude/composer/empty-input.d.ts +4 -0
  15. package/dist/claude/composer/empty-input.d.ts.map +1 -0
  16. package/dist/claude/composer/empty-input.js +28 -0
  17. package/dist/claude/composer/empty-input.js.map +1 -0
  18. package/dist/claude/composer/footer.d.ts +3 -0
  19. package/dist/claude/composer/footer.d.ts.map +1 -0
  20. package/dist/claude/composer/footer.js +3 -0
  21. package/dist/claude/composer/footer.js.map +1 -0
  22. package/dist/claude/composer/staged-input.d.ts +7 -0
  23. package/dist/claude/composer/staged-input.d.ts.map +1 -0
  24. package/dist/claude/composer/staged-input.js +18 -0
  25. package/dist/claude/composer/staged-input.js.map +1 -0
  26. package/dist/claude/hooks/common-result.d.ts +5 -0
  27. package/dist/claude/hooks/common-result.d.ts.map +1 -0
  28. package/dist/claude/hooks/common-result.js +3 -0
  29. package/dist/claude/hooks/common-result.js.map +1 -0
  30. package/dist/claude/hooks/dispatch.d.ts +2 -1
  31. package/dist/claude/hooks/dispatch.d.ts.map +1 -1
  32. package/dist/claude/hooks/dispatch.js +3 -1
  33. package/dist/claude/hooks/dispatch.js.map +1 -1
  34. package/dist/claude/hooks/events-extra.d.ts +5 -4
  35. package/dist/claude/hooks/events-extra.d.ts.map +1 -1
  36. package/dist/claude/hooks/index.d.ts +10 -10
  37. package/dist/claude/hooks/index.d.ts.map +1 -1
  38. package/dist/claude/hooks/index.js +1 -4
  39. package/dist/claude/hooks/index.js.map +1 -1
  40. package/dist/claude/hooks/inputs/control.d.ts +25 -0
  41. package/dist/claude/hooks/inputs/control.d.ts.map +1 -0
  42. package/dist/claude/hooks/inputs/control.js +3 -0
  43. package/dist/claude/hooks/inputs/control.js.map +1 -0
  44. package/dist/claude/hooks/stop-failure.d.ts +10 -0
  45. package/dist/claude/hooks/stop-failure.d.ts.map +1 -0
  46. package/dist/claude/hooks/stop-failure.js +18 -0
  47. package/dist/claude/hooks/stop-failure.js.map +1 -0
  48. package/dist/claude/hooks/tool-types.d.ts +12 -10
  49. package/dist/claude/hooks/tool-types.d.ts.map +1 -1
  50. package/dist/claude/login/notice.d.ts +3 -0
  51. package/dist/claude/login/notice.d.ts.map +1 -0
  52. package/dist/claude/login/notice.js +3 -0
  53. package/dist/claude/login/notice.js.map +1 -0
  54. package/dist/claude/login/renewal.d.ts +13 -0
  55. package/dist/claude/login/renewal.d.ts.map +1 -0
  56. package/dist/claude/login/renewal.js +97 -0
  57. package/dist/claude/login/renewal.js.map +1 -0
  58. package/dist/claude/model-composer.d.ts +2 -0
  59. package/dist/claude/model-composer.d.ts.map +1 -0
  60. package/dist/claude/model-composer.js +12 -0
  61. package/dist/claude/model-composer.js.map +1 -0
  62. package/dist/claude/model-picker.d.ts.map +1 -1
  63. package/dist/claude/model-picker.js +42 -8
  64. package/dist/claude/model-picker.js.map +1 -1
  65. package/dist/claude/model-switch-confirmation.d.ts +6 -0
  66. package/dist/claude/model-switch-confirmation.d.ts.map +1 -1
  67. package/dist/claude/model-switch-confirmation.js +77 -4
  68. package/dist/claude/model-switch-confirmation.js.map +1 -1
  69. package/dist/claude/preflight.d.ts.map +1 -1
  70. package/dist/claude/preflight.js +2 -4
  71. package/dist/claude/preflight.js.map +1 -1
  72. package/dist/claude/questions/answer.d.ts +9 -0
  73. package/dist/claude/questions/answer.d.ts.map +1 -0
  74. package/dist/claude/questions/answer.js +84 -0
  75. package/dist/claude/questions/answer.js.map +1 -0
  76. package/dist/claude/questions/bind-answers.d.ts +14 -0
  77. package/dist/claude/questions/bind-answers.d.ts.map +1 -0
  78. package/dist/claude/questions/bind-answers.js +36 -0
  79. package/dist/claude/questions/bind-answers.js.map +1 -0
  80. package/dist/claude/questions/candidate.d.ts +23 -0
  81. package/dist/claude/questions/candidate.d.ts.map +1 -0
  82. package/dist/claude/questions/candidate.js +47 -0
  83. package/dist/claude/questions/candidate.js.map +1 -0
  84. package/dist/claude/questions/correlation.d.ts +15 -0
  85. package/dist/claude/questions/correlation.d.ts.map +1 -0
  86. package/dist/claude/questions/correlation.js +23 -0
  87. package/dist/claude/questions/correlation.js.map +1 -0
  88. package/dist/claude/questions/hook-decisions.d.ts +19 -0
  89. package/dist/claude/questions/hook-decisions.d.ts.map +1 -0
  90. package/dist/claude/questions/hook-decisions.js +52 -0
  91. package/dist/claude/questions/hook-decisions.js.map +1 -0
  92. package/dist/claude/questions/index.d.ts +27 -0
  93. package/dist/claude/questions/index.d.ts.map +1 -0
  94. package/dist/claude/questions/index.js +161 -0
  95. package/dist/claude/questions/index.js.map +1 -0
  96. package/dist/claude/questions/navigation.d.ts +24 -0
  97. package/dist/claude/questions/navigation.d.ts.map +1 -0
  98. package/dist/claude/questions/navigation.js +37 -0
  99. package/dist/claude/questions/navigation.js.map +1 -0
  100. package/dist/claude/questions/rows.d.ts +19 -0
  101. package/dist/claude/questions/rows.d.ts.map +1 -0
  102. package/dist/claude/questions/rows.js +64 -0
  103. package/dist/claude/questions/rows.js.map +1 -0
  104. package/dist/claude/questions/screen.d.ts +29 -0
  105. package/dist/claude/questions/screen.d.ts.map +1 -0
  106. package/dist/claude/questions/screen.js +103 -0
  107. package/dist/claude/questions/screen.js.map +1 -0
  108. package/dist/claude/screen-table.d.ts +19 -2
  109. package/dist/claude/screen-table.d.ts.map +1 -1
  110. package/dist/claude/screen-table.js +48 -4
  111. package/dist/claude/screen-table.js.map +1 -1
  112. package/dist/claude/serialize.d.ts.map +1 -1
  113. package/dist/claude/serialize.js +22 -6
  114. package/dist/claude/serialize.js.map +1 -1
  115. package/dist/claude/session/build.d.ts +1 -12
  116. package/dist/claude/session/build.d.ts.map +1 -1
  117. package/dist/claude/session/build.js +42 -55
  118. package/dist/claude/session/build.js.map +1 -1
  119. package/dist/claude/session/hook-handler.d.ts +3 -2
  120. package/dist/claude/session/hook-handler.d.ts.map +1 -1
  121. package/dist/claude/session/hook-handler.js +44 -18
  122. package/dist/claude/session/hook-handler.js.map +1 -1
  123. package/dist/claude/session/index.d.ts +2 -1
  124. package/dist/claude/session/index.d.ts.map +1 -1
  125. package/dist/claude/session/index.js +23 -8
  126. package/dist/claude/session/index.js.map +1 -1
  127. package/dist/claude/session/instance.d.ts +17 -5
  128. package/dist/claude/session/instance.d.ts.map +1 -1
  129. package/dist/claude/session/instance.js +25 -12
  130. package/dist/claude/session/instance.js.map +1 -1
  131. package/dist/claude/session/interface.d.ts +2 -1
  132. package/dist/claude/session/interface.d.ts.map +1 -1
  133. package/dist/claude/session/questions.d.ts +9 -0
  134. package/dist/claude/session/questions.d.ts.map +1 -0
  135. package/dist/claude/session/questions.js +19 -0
  136. package/dist/claude/session/questions.js.map +1 -0
  137. package/dist/claude/session/resume.d.ts.map +1 -1
  138. package/dist/claude/session/resume.js +35 -26
  139. package/dist/claude/session/resume.js.map +1 -1
  140. package/dist/claude/session/runtime.d.ts +10 -0
  141. package/dist/claude/session/runtime.d.ts.map +1 -1
  142. package/dist/claude/session/runtime.js +8 -5
  143. package/dist/claude/session/runtime.js.map +1 -1
  144. package/dist/claude/session/startup-warnings.d.ts +5 -0
  145. package/dist/claude/session/startup-warnings.d.ts.map +1 -0
  146. package/dist/claude/session/startup-warnings.js +7 -0
  147. package/dist/claude/session/startup-warnings.js.map +1 -0
  148. package/dist/claude/session/transcript.d.ts +2 -0
  149. package/dist/claude/session/transcript.d.ts.map +1 -1
  150. package/dist/claude/session/transcript.js +21 -3
  151. package/dist/claude/session/transcript.js.map +1 -1
  152. package/dist/claude/startup-prompts.d.ts +35 -3
  153. package/dist/claude/startup-prompts.d.ts.map +1 -1
  154. package/dist/claude/startup-prompts.js +81 -15
  155. package/dist/claude/startup-prompts.js.map +1 -1
  156. package/dist/claude/transcript/index.d.ts.map +1 -1
  157. package/dist/claude/transcript/index.js +3 -2
  158. package/dist/claude/transcript/index.js.map +1 -1
  159. package/dist/claude/validate/event-fields.d.ts +6 -0
  160. package/dist/claude/validate/event-fields.d.ts.map +1 -0
  161. package/dist/claude/validate/event-fields.js +103 -0
  162. package/dist/claude/validate/event-fields.js.map +1 -0
  163. package/dist/claude/validate/input.d.ts.map +1 -1
  164. package/dist/claude/validate/input.js +12 -41
  165. package/dist/claude/validate/input.js.map +1 -1
  166. package/dist/claude/validate/shapes.d.ts +1 -1
  167. package/dist/claude/validate/shapes.d.ts.map +1 -1
  168. package/dist/claude/validate/shapes.js +1 -1
  169. package/dist/claude/validate/shapes.js.map +1 -1
  170. package/dist/claude/validate/tool-shapes.d.ts +102 -0
  171. package/dist/claude/validate/tool-shapes.d.ts.map +1 -0
  172. package/dist/claude/validate/tool-shapes.js +83 -0
  173. package/dist/claude/validate/tool-shapes.js.map +1 -0
  174. package/dist/claude/validate/tool-update.d.ts +2 -11
  175. package/dist/claude/validate/tool-update.d.ts.map +1 -1
  176. package/dist/claude/validate/tool-update.js +11 -112
  177. package/dist/claude/validate/tool-update.js.map +1 -1
  178. package/dist/claude/validate/tool-values.d.ts +7 -0
  179. package/dist/claude/validate/tool-values.d.ts.map +1 -0
  180. package/dist/claude/validate/tool-values.js +30 -0
  181. package/dist/claude/validate/tool-values.js.map +1 -0
  182. package/dist/cli/args/options.d.ts.map +1 -1
  183. package/dist/cli/args/options.js +1 -0
  184. package/dist/cli/args/options.js.map +1 -1
  185. package/dist/cli/args-commands.d.ts.map +1 -1
  186. package/dist/cli/args-commands.js +3 -0
  187. package/dist/cli/args-commands.js.map +1 -1
  188. package/dist/cli/config/store.d.ts.map +1 -1
  189. package/dist/cli/config/store.js +2 -1
  190. package/dist/cli/config/store.js.map +1 -1
  191. package/dist/cli/help.d.ts +1 -1
  192. package/dist/cli/help.d.ts.map +1 -1
  193. package/dist/cli/help.js +15 -11
  194. package/dist/cli/help.js.map +1 -1
  195. package/dist/cli/interactive/effort.d.ts +5 -0
  196. package/dist/cli/interactive/effort.d.ts.map +1 -0
  197. package/dist/cli/interactive/effort.js +13 -0
  198. package/dist/cli/interactive/effort.js.map +1 -0
  199. package/dist/cli/interactive/launch.d.ts.map +1 -1
  200. package/dist/cli/interactive/launch.js +1 -1
  201. package/dist/cli/interactive/launch.js.map +1 -1
  202. package/dist/cli/lifecycle/index.d.ts +3 -6
  203. package/dist/cli/lifecycle/index.d.ts.map +1 -1
  204. package/dist/cli/lifecycle/index.js +6 -13
  205. package/dist/cli/lifecycle/index.js.map +1 -1
  206. package/dist/cli/main.d.ts.map +1 -1
  207. package/dist/cli/main.js +9 -0
  208. package/dist/cli/main.js.map +1 -1
  209. package/dist/cli/models/combined.d.ts +6 -0
  210. package/dist/cli/models/combined.d.ts.map +1 -0
  211. package/dist/cli/models/combined.js +92 -0
  212. package/dist/cli/models/combined.js.map +1 -0
  213. package/dist/cli/models/index.d.ts +2 -0
  214. package/dist/cli/models/index.d.ts.map +1 -1
  215. package/dist/cli/models/index.js +15 -4
  216. package/dist/cli/models/index.js.map +1 -1
  217. package/dist/cli/models/render.d.ts +4 -0
  218. package/dist/cli/models/render.d.ts.map +1 -1
  219. package/dist/cli/models/render.js +28 -1
  220. package/dist/cli/models/render.js.map +1 -1
  221. package/dist/cli/models/result.d.ts +13 -0
  222. package/dist/cli/models/result.d.ts.map +1 -0
  223. package/dist/cli/models/result.js +2 -0
  224. package/dist/cli/models/result.js.map +1 -0
  225. package/dist/cli/models/settings.d.ts +63 -0
  226. package/dist/cli/models/settings.d.ts.map +1 -0
  227. package/dist/cli/models/settings.js +24 -0
  228. package/dist/cli/models/settings.js.map +1 -0
  229. package/dist/cli/models/signals.d.ts +11 -0
  230. package/dist/cli/models/signals.d.ts.map +1 -0
  231. package/dist/cli/models/signals.js +21 -0
  232. package/dist/cli/models/signals.js.map +1 -0
  233. package/dist/cli/request/index.d.ts.map +1 -1
  234. package/dist/cli/request/index.js +2 -1
  235. package/dist/cli/request/index.js.map +1 -1
  236. package/dist/cli/request/validation.d.ts.map +1 -1
  237. package/dist/cli/request/validation.js +0 -4
  238. package/dist/cli/request/validation.js.map +1 -1
  239. package/dist/cli/run/index.d.ts.map +1 -1
  240. package/dist/cli/run/index.js +3 -1
  241. package/dist/cli/run/index.js.map +1 -1
  242. package/dist/cli/run/output.d.ts.map +1 -1
  243. package/dist/cli/run/output.js +4 -6
  244. package/dist/cli/run/output.js.map +1 -1
  245. package/dist/cli/run/subscribe.js +1 -1
  246. package/dist/cli/run/subscribe.js.map +1 -1
  247. package/dist/cli/session/index.d.ts +2 -0
  248. package/dist/cli/session/index.d.ts.map +1 -1
  249. package/dist/cli/session/index.js +3 -0
  250. package/dist/cli/session/index.js.map +1 -1
  251. package/dist/cli/session/launch.d.ts +0 -3
  252. package/dist/cli/session/launch.d.ts.map +1 -1
  253. package/dist/cli/session/launch.js +0 -11
  254. package/dist/cli/session/launch.js.map +1 -1
  255. package/dist/cli/sessions/list.d.ts.map +1 -1
  256. package/dist/cli/sessions/list.js +5 -4
  257. package/dist/cli/sessions/list.js.map +1 -1
  258. package/dist/cli/types.d.ts +2 -0
  259. package/dist/cli/types.d.ts.map +1 -1
  260. package/dist/cli/update-attention.d.ts +2 -1
  261. package/dist/cli/update-attention.d.ts.map +1 -1
  262. package/dist/cli/update-attention.js +11 -2
  263. package/dist/cli/update-attention.js.map +1 -1
  264. package/dist/codex/accepted-turn.d.ts +4 -0
  265. package/dist/codex/accepted-turn.d.ts.map +1 -0
  266. package/dist/codex/accepted-turn.js +17 -0
  267. package/dist/codex/accepted-turn.js.map +1 -0
  268. package/dist/codex/config/transaction.d.ts +22 -0
  269. package/dist/codex/config/transaction.d.ts.map +1 -1
  270. package/dist/codex/config/transaction.js +61 -31
  271. package/dist/codex/config/transaction.js.map +1 -1
  272. package/dist/codex/hooks/index.d.ts +6 -1
  273. package/dist/codex/hooks/index.d.ts.map +1 -1
  274. package/dist/codex/hooks/validate-result.d.ts.map +1 -1
  275. package/dist/codex/hooks/validate-result.js +2 -1
  276. package/dist/codex/hooks/validate-result.js.map +1 -1
  277. package/dist/codex/hooks/validate.d.ts.map +1 -1
  278. package/dist/codex/hooks/validate.js +1 -3
  279. package/dist/codex/hooks/validate.js.map +1 -1
  280. package/dist/codex/hooks/values.d.ts +3 -0
  281. package/dist/codex/hooks/values.d.ts.map +1 -0
  282. package/dist/codex/hooks/values.js +5 -0
  283. package/dist/codex/hooks/values.js.map +1 -0
  284. package/dist/codex/images/attach.d.ts +3 -1
  285. package/dist/codex/images/attach.d.ts.map +1 -1
  286. package/dist/codex/images/attach.js +10 -11
  287. package/dist/codex/images/attach.js.map +1 -1
  288. package/dist/codex/images/clipboard.d.ts.map +1 -1
  289. package/dist/codex/images/clipboard.js +11 -3
  290. package/dist/codex/images/clipboard.js.map +1 -1
  291. package/dist/codex/model-picker.d.ts.map +1 -1
  292. package/dist/codex/model-picker.js +23 -5
  293. package/dist/codex/model-picker.js.map +1 -1
  294. package/dist/codex/preflight.d.ts.map +1 -1
  295. package/dist/codex/preflight.js +2 -2
  296. package/dist/codex/preflight.js.map +1 -1
  297. package/dist/codex/questions/acceptance.d.ts +18 -0
  298. package/dist/codex/questions/acceptance.d.ts.map +1 -0
  299. package/dist/codex/questions/acceptance.js +70 -0
  300. package/dist/codex/questions/acceptance.js.map +1 -0
  301. package/dist/codex/questions/adapter.d.ts +26 -0
  302. package/dist/codex/questions/adapter.d.ts.map +1 -0
  303. package/dist/codex/questions/adapter.js +163 -0
  304. package/dist/codex/questions/adapter.js.map +1 -0
  305. package/dist/codex/questions/candidate-acceptance.d.ts +5 -0
  306. package/dist/codex/questions/candidate-acceptance.d.ts.map +1 -0
  307. package/dist/codex/questions/candidate-acceptance.js +8 -0
  308. package/dist/codex/questions/candidate-acceptance.js.map +1 -0
  309. package/dist/codex/questions/candidate-authority.d.ts +10 -0
  310. package/dist/codex/questions/candidate-authority.d.ts.map +1 -0
  311. package/dist/codex/questions/candidate-authority.js +25 -0
  312. package/dist/codex/questions/candidate-authority.js.map +1 -0
  313. package/dist/codex/questions/candidate-disable.d.ts +5 -0
  314. package/dist/codex/questions/candidate-disable.d.ts.map +1 -0
  315. package/dist/codex/questions/candidate-disable.js +14 -0
  316. package/dist/codex/questions/candidate-disable.js.map +1 -0
  317. package/dist/codex/questions/candidate-publication.d.ts +7 -0
  318. package/dist/codex/questions/candidate-publication.d.ts.map +1 -0
  319. package/dist/codex/questions/candidate-publication.js +8 -0
  320. package/dist/codex/questions/candidate-publication.js.map +1 -0
  321. package/dist/codex/questions/candidate-reservation.d.ts +6 -0
  322. package/dist/codex/questions/candidate-reservation.d.ts.map +1 -0
  323. package/dist/codex/questions/candidate-reservation.js +7 -0
  324. package/dist/codex/questions/candidate-reservation.js.map +1 -0
  325. package/dist/codex/questions/candidate-store.d.ts +53 -0
  326. package/dist/codex/questions/candidate-store.d.ts.map +1 -0
  327. package/dist/codex/questions/candidate-store.js +188 -0
  328. package/dist/codex/questions/candidate-store.js.map +1 -0
  329. package/dist/codex/questions/candidate.d.ts +40 -0
  330. package/dist/codex/questions/candidate.d.ts.map +1 -0
  331. package/dist/codex/questions/candidate.js +39 -0
  332. package/dist/codex/questions/candidate.js.map +1 -0
  333. package/dist/codex/questions/candidates.d.ts +16 -0
  334. package/dist/codex/questions/candidates.d.ts.map +1 -0
  335. package/dist/codex/questions/candidates.js +113 -0
  336. package/dist/codex/questions/candidates.js.map +1 -0
  337. package/dist/codex/questions/chrome.d.ts +10 -0
  338. package/dist/codex/questions/chrome.d.ts.map +1 -0
  339. package/dist/codex/questions/chrome.js +21 -0
  340. package/dist/codex/questions/chrome.js.map +1 -0
  341. package/dist/codex/questions/definitions.d.ts +19 -0
  342. package/dist/codex/questions/definitions.d.ts.map +1 -0
  343. package/dist/codex/questions/definitions.js +86 -0
  344. package/dist/codex/questions/definitions.js.map +1 -0
  345. package/dist/codex/questions/draft.d.ts +25 -0
  346. package/dist/codex/questions/draft.d.ts.map +1 -0
  347. package/dist/codex/questions/draft.js +76 -0
  348. package/dist/codex/questions/draft.js.map +1 -0
  349. package/dist/codex/questions/driver-support.d.ts +6 -0
  350. package/dist/codex/questions/driver-support.d.ts.map +1 -0
  351. package/dist/codex/questions/driver-support.js +7 -0
  352. package/dist/codex/questions/driver-support.js.map +1 -0
  353. package/dist/codex/questions/driver.d.ts +10 -0
  354. package/dist/codex/questions/driver.d.ts.map +1 -0
  355. package/dist/codex/questions/driver.js +139 -0
  356. package/dist/codex/questions/driver.js.map +1 -0
  357. package/dist/codex/questions/frame.d.ts +36 -0
  358. package/dist/codex/questions/frame.d.ts.map +1 -0
  359. package/dist/codex/questions/frame.js +138 -0
  360. package/dist/codex/questions/frame.js.map +1 -0
  361. package/dist/codex/questions/labels.d.ts +6 -0
  362. package/dist/codex/questions/labels.d.ts.map +1 -0
  363. package/dist/codex/questions/labels.js +6 -0
  364. package/dist/codex/questions/labels.js.map +1 -0
  365. package/dist/codex/questions/limits.d.ts +18 -0
  366. package/dist/codex/questions/limits.d.ts.map +1 -0
  367. package/dist/codex/questions/limits.js +61 -0
  368. package/dist/codex/questions/limits.js.map +1 -0
  369. package/dist/codex/questions/native-pending.d.ts +7 -0
  370. package/dist/codex/questions/native-pending.d.ts.map +1 -0
  371. package/dist/codex/questions/native-pending.js +37 -0
  372. package/dist/codex/questions/native-pending.js.map +1 -0
  373. package/dist/codex/questions/owned-editor.d.ts +12 -0
  374. package/dist/codex/questions/owned-editor.d.ts.map +1 -0
  375. package/dist/codex/questions/owned-editor.js +37 -0
  376. package/dist/codex/questions/owned-editor.js.map +1 -0
  377. package/dist/codex/questions/pending-submissions.d.ts +12 -0
  378. package/dist/codex/questions/pending-submissions.d.ts.map +1 -0
  379. package/dist/codex/questions/pending-submissions.js +42 -0
  380. package/dist/codex/questions/pending-submissions.js.map +1 -0
  381. package/dist/codex/questions/records.d.ts +29 -0
  382. package/dist/codex/questions/records.d.ts.map +1 -0
  383. package/dist/codex/questions/records.js +113 -0
  384. package/dist/codex/questions/records.js.map +1 -0
  385. package/dist/codex/questions/selection.d.ts +3 -0
  386. package/dist/codex/questions/selection.d.ts.map +1 -0
  387. package/dist/codex/questions/selection.js +18 -0
  388. package/dist/codex/questions/selection.js.map +1 -0
  389. package/dist/codex/questions/session.d.ts +6 -0
  390. package/dist/codex/questions/session.d.ts.map +1 -0
  391. package/dist/codex/questions/session.js +21 -0
  392. package/dist/codex/questions/session.js.map +1 -0
  393. package/dist/codex/screen/clearance.d.ts +17 -0
  394. package/dist/codex/screen/clearance.d.ts.map +1 -0
  395. package/dist/codex/screen/clearance.js +170 -0
  396. package/dist/codex/screen/clearance.js.map +1 -0
  397. package/dist/codex/screen/empty-input.d.ts +4 -0
  398. package/dist/codex/screen/empty-input.d.ts.map +1 -0
  399. package/dist/codex/screen/empty-input.js +10 -0
  400. package/dist/codex/screen/empty-input.js.map +1 -0
  401. package/dist/codex/screen/live-clearance.d.ts +6 -0
  402. package/dist/codex/screen/live-clearance.d.ts.map +1 -0
  403. package/dist/codex/screen/live-clearance.js +34 -0
  404. package/dist/codex/screen/live-clearance.js.map +1 -0
  405. package/dist/codex/screen/retained-clearance.d.ts +19 -0
  406. package/dist/codex/screen/retained-clearance.d.ts.map +1 -0
  407. package/dist/codex/screen/retained-clearance.js +67 -0
  408. package/dist/codex/screen/retained-clearance.js.map +1 -0
  409. package/dist/codex/screen/staged-input.d.ts +7 -0
  410. package/dist/codex/screen/staged-input.d.ts.map +1 -0
  411. package/dist/codex/screen/staged-input.js +40 -0
  412. package/dist/codex/screen/staged-input.js.map +1 -0
  413. package/dist/codex/screen/working.d.ts +4 -0
  414. package/dist/codex/screen/working.d.ts.map +1 -0
  415. package/dist/codex/screen/working.js +5 -0
  416. package/dist/codex/screen/working.js.map +1 -0
  417. package/dist/codex/screen-table.d.ts +4 -1
  418. package/dist/codex/screen-table.d.ts.map +1 -1
  419. package/dist/codex/screen-table.js +44 -11
  420. package/dist/codex/screen-table.js.map +1 -1
  421. package/dist/codex/session/build.d.ts +1 -0
  422. package/dist/codex/session/build.d.ts.map +1 -1
  423. package/dist/codex/session/build.js +62 -68
  424. package/dist/codex/session/build.js.map +1 -1
  425. package/dist/codex/session/caller-input.d.ts +18 -0
  426. package/dist/codex/session/caller-input.d.ts.map +1 -0
  427. package/dist/codex/session/caller-input.js +50 -0
  428. package/dist/codex/session/caller-input.js.map +1 -0
  429. package/dist/codex/session/cleanup.d.ts +2 -1
  430. package/dist/codex/session/cleanup.d.ts.map +1 -1
  431. package/dist/codex/session/cleanup.js +3 -2
  432. package/dist/codex/session/cleanup.js.map +1 -1
  433. package/dist/codex/session/cli-exit.d.ts +24 -0
  434. package/dist/codex/session/cli-exit.d.ts.map +1 -0
  435. package/dist/codex/session/cli-exit.js +43 -0
  436. package/dist/codex/session/cli-exit.js.map +1 -0
  437. package/dist/codex/session/hooks.d.ts +3 -0
  438. package/dist/codex/session/hooks.d.ts.map +1 -1
  439. package/dist/codex/session/hooks.js +66 -13
  440. package/dist/codex/session/hooks.js.map +1 -1
  441. package/dist/codex/session/index.d.ts +2 -1
  442. package/dist/codex/session/index.d.ts.map +1 -1
  443. package/dist/codex/session/index.js +23 -8
  444. package/dist/codex/session/index.js.map +1 -1
  445. package/dist/codex/session/initial-ready.d.ts +6 -0
  446. package/dist/codex/session/initial-ready.d.ts.map +1 -0
  447. package/dist/codex/session/initial-ready.js +9 -0
  448. package/dist/codex/session/initial-ready.js.map +1 -0
  449. package/dist/codex/session/instance.d.ts +19 -4
  450. package/dist/codex/session/instance.d.ts.map +1 -1
  451. package/dist/codex/session/instance.js +60 -30
  452. package/dist/codex/session/instance.js.map +1 -1
  453. package/dist/codex/session/resume.d.ts.map +1 -1
  454. package/dist/codex/session/resume.js +35 -26
  455. package/dist/codex/session/resume.js.map +1 -1
  456. package/dist/codex/session/runtime.d.ts.map +1 -1
  457. package/dist/codex/session/runtime.js +1 -2
  458. package/dist/codex/session/runtime.js.map +1 -1
  459. package/dist/codex/session/startup-warnings.d.ts +11 -0
  460. package/dist/codex/session/startup-warnings.d.ts.map +1 -0
  461. package/dist/codex/session/startup-warnings.js +9 -0
  462. package/dist/codex/session/startup-warnings.js.map +1 -0
  463. package/dist/codex/session/transcript.d.ts +3 -1
  464. package/dist/codex/session/transcript.d.ts.map +1 -1
  465. package/dist/codex/session/transcript.js +51 -8
  466. package/dist/codex/session/transcript.js.map +1 -1
  467. package/dist/codex/session/types.d.ts +4 -3
  468. package/dist/codex/session/types.d.ts.map +1 -1
  469. package/dist/codex/session/update-attention.d.ts +4 -0
  470. package/dist/codex/session/update-attention.d.ts.map +1 -0
  471. package/dist/codex/session/update-attention.js +18 -0
  472. package/dist/codex/session/update-attention.js.map +1 -0
  473. package/dist/codex/session/warnings.d.ts +2 -1
  474. package/dist/codex/session/warnings.d.ts.map +1 -1
  475. package/dist/codex/session/warnings.js +2 -1
  476. package/dist/codex/session/warnings.js.map +1 -1
  477. package/dist/codex/simple.d.ts +1 -0
  478. package/dist/codex/simple.d.ts.map +1 -1
  479. package/dist/codex/simple.js +2 -0
  480. package/dist/codex/simple.js.map +1 -1
  481. package/dist/codex/startup-prompts.d.ts +29 -14
  482. package/dist/codex/startup-prompts.d.ts.map +1 -1
  483. package/dist/codex/startup-prompts.js +113 -93
  484. package/dist/codex/startup-prompts.js.map +1 -1
  485. package/dist/codex/startup-warnings.d.ts +10 -0
  486. package/dist/codex/startup-warnings.d.ts.map +1 -0
  487. package/dist/codex/startup-warnings.js +65 -0
  488. package/dist/codex/startup-warnings.js.map +1 -0
  489. package/dist/codex/transcript/summary.d.ts +1 -1
  490. package/dist/codex/transcript/summary.d.ts.map +1 -1
  491. package/dist/codex/transcript/summary.js +18 -7
  492. package/dist/codex/transcript/summary.js.map +1 -1
  493. package/dist/codex/transcript/types.d.ts +23 -12
  494. package/dist/codex/transcript/types.d.ts.map +1 -1
  495. package/dist/codex/transcript/watcher.d.ts.map +1 -1
  496. package/dist/codex/transcript/watcher.js +2 -1
  497. package/dist/codex/transcript/watcher.js.map +1 -1
  498. package/dist/codex/update/classification.d.ts +27 -0
  499. package/dist/codex/update/classification.d.ts.map +1 -0
  500. package/dist/codex/update/classification.js +28 -0
  501. package/dist/codex/update/classification.js.map +1 -0
  502. package/dist/codex/update/evidence.d.ts +22 -0
  503. package/dist/codex/update/evidence.d.ts.map +1 -0
  504. package/dist/codex/update/evidence.js +69 -0
  505. package/dist/codex/update/evidence.js.map +1 -0
  506. package/dist/codex/update/layout.d.ts +7 -0
  507. package/dist/codex/update/layout.d.ts.map +1 -0
  508. package/dist/codex/update/layout.js +65 -0
  509. package/dist/codex/update/layout.js.map +1 -0
  510. package/dist/codex/update/recognition.d.ts +3 -0
  511. package/dist/codex/update/recognition.d.ts.map +1 -0
  512. package/dist/codex/update/recognition.js +7 -0
  513. package/dist/codex/update/recognition.js.map +1 -0
  514. package/dist/codex/update/selection.d.ts +7 -0
  515. package/dist/codex/update/selection.d.ts.map +1 -0
  516. package/dist/codex/update/selection.js +10 -0
  517. package/dist/codex/update/selection.js.map +1 -0
  518. package/dist/codex/update/skip-attempt.d.ts +25 -0
  519. package/dist/codex/update/skip-attempt.d.ts.map +1 -0
  520. package/dist/codex/update/skip-attempt.js +64 -0
  521. package/dist/codex/update/skip-attempt.js.map +1 -0
  522. package/dist/codex/update/tracker.d.ts +37 -0
  523. package/dist/codex/update/tracker.d.ts.map +1 -0
  524. package/dist/codex/update/tracker.js +156 -0
  525. package/dist/codex/update/tracker.js.map +1 -0
  526. package/dist/codex/update-identity.d.ts +23 -0
  527. package/dist/codex/update-identity.d.ts.map +1 -0
  528. package/dist/codex/update-identity.js +46 -0
  529. package/dist/codex/update-identity.js.map +1 -0
  530. package/dist/codex/update-prompt.d.ts +26 -17
  531. package/dist/codex/update-prompt.d.ts.map +1 -1
  532. package/dist/codex/update-prompt.js +65 -62
  533. package/dist/codex/update-prompt.js.map +1 -1
  534. package/dist/core/activity/index.d.ts +24 -3
  535. package/dist/core/activity/index.d.ts.map +1 -1
  536. package/dist/core/activity/index.js.map +1 -1
  537. package/dist/core/activity/meta.d.ts +6 -1
  538. package/dist/core/activity/meta.d.ts.map +1 -1
  539. package/dist/core/activity/meta.js.map +1 -1
  540. package/dist/core/activity/transcript.d.ts +4 -1
  541. package/dist/core/activity/transcript.d.ts.map +1 -1
  542. package/dist/core/activity/transcript.js +28 -18
  543. package/dist/core/activity/transcript.js.map +1 -1
  544. package/dist/core/agent-session.d.ts +2 -1
  545. package/dist/core/agent-session.d.ts.map +1 -1
  546. package/dist/core/async-mutex.d.ts +14 -8
  547. package/dist/core/async-mutex.d.ts.map +1 -1
  548. package/dist/core/async-mutex.js +48 -12
  549. package/dist/core/async-mutex.js.map +1 -1
  550. package/dist/core/attention.d.ts +6 -2
  551. package/dist/core/attention.d.ts.map +1 -1
  552. package/dist/core/attention.js +23 -9
  553. package/dist/core/attention.js.map +1 -1
  554. package/dist/core/control-queue/admission-scan.d.ts +10 -0
  555. package/dist/core/control-queue/admission-scan.d.ts.map +1 -0
  556. package/dist/core/control-queue/admission-scan.js +28 -0
  557. package/dist/core/control-queue/admission-scan.js.map +1 -0
  558. package/dist/core/control-queue/admission.d.ts +15 -0
  559. package/dist/core/control-queue/admission.d.ts.map +1 -0
  560. package/dist/core/control-queue/admission.js +70 -0
  561. package/dist/core/control-queue/admission.js.map +1 -0
  562. package/dist/core/control-queue/budget.d.ts +15 -0
  563. package/dist/core/control-queue/budget.d.ts.map +1 -0
  564. package/dist/core/control-queue/budget.js +33 -0
  565. package/dist/core/control-queue/budget.js.map +1 -0
  566. package/dist/core/control-queue/index.d.ts +6 -3
  567. package/dist/core/control-queue/index.d.ts.map +1 -1
  568. package/dist/core/control-queue/index.js +52 -28
  569. package/dist/core/control-queue/index.js.map +1 -1
  570. package/dist/core/control-queue/scan.d.ts +10 -0
  571. package/dist/core/control-queue/scan.d.ts.map +1 -0
  572. package/dist/core/control-queue/scan.js +24 -0
  573. package/dist/core/control-queue/scan.js.map +1 -0
  574. package/dist/core/control-queue/state.d.ts +19 -3
  575. package/dist/core/control-queue/state.d.ts.map +1 -1
  576. package/dist/core/control-queue/state.js +87 -15
  577. package/dist/core/control-queue/state.js.map +1 -1
  578. package/dist/core/control-queue/submission.d.ts +8 -0
  579. package/dist/core/control-queue/submission.d.ts.map +1 -0
  580. package/dist/core/control-queue/submission.js +41 -0
  581. package/dist/core/control-queue/submission.js.map +1 -0
  582. package/dist/core/control-queue/traits.d.ts +6 -9
  583. package/dist/core/control-queue/traits.d.ts.map +1 -1
  584. package/dist/core/control-queue/traits.js +2 -15
  585. package/dist/core/control-queue/traits.js.map +1 -1
  586. package/dist/core/control-queue/types.d.ts +28 -2
  587. package/dist/core/control-queue/types.d.ts.map +1 -1
  588. package/dist/core/errors.d.ts +7 -2
  589. package/dist/core/errors.d.ts.map +1 -1
  590. package/dist/core/errors.js +7 -0
  591. package/dist/core/errors.js.map +1 -1
  592. package/dist/core/freeze-hook-event.d.ts +6 -0
  593. package/dist/core/freeze-hook-event.d.ts.map +1 -0
  594. package/dist/core/freeze-hook-event.js +16 -0
  595. package/dist/core/freeze-hook-event.js.map +1 -0
  596. package/dist/core/hook-dispatch.d.ts +3 -2
  597. package/dist/core/hook-dispatch.d.ts.map +1 -1
  598. package/dist/core/hook-dispatch.js +14 -6
  599. package/dist/core/hook-dispatch.js.map +1 -1
  600. package/dist/core/hook-observation.d.ts +24 -0
  601. package/dist/core/hook-observation.d.ts.map +1 -0
  602. package/dist/core/hook-observation.js +68 -0
  603. package/dist/core/hook-observation.js.map +1 -0
  604. package/dist/core/hook-result.d.ts +12 -2
  605. package/dist/core/hook-result.d.ts.map +1 -1
  606. package/dist/core/hook-result.js +10 -9
  607. package/dist/core/hook-result.js.map +1 -1
  608. package/dist/core/hook-timeout.d.ts.map +1 -1
  609. package/dist/core/hook-timeout.js +3 -2
  610. package/dist/core/hook-timeout.js.map +1 -1
  611. package/dist/core/images/capture.d.ts +14 -0
  612. package/dist/core/images/capture.d.ts.map +1 -0
  613. package/dist/core/images/capture.js +35 -0
  614. package/dist/core/images/capture.js.map +1 -0
  615. package/dist/core/images/chip-wait.d.ts +14 -16
  616. package/dist/core/images/chip-wait.d.ts.map +1 -1
  617. package/dist/core/images/chip-wait.js +31 -34
  618. package/dist/core/images/chip-wait.js.map +1 -1
  619. package/dist/core/images/queued-budget.d.ts +18 -0
  620. package/dist/core/images/queued-budget.d.ts.map +1 -0
  621. package/dist/core/images/queued-budget.js +41 -0
  622. package/dist/core/images/queued-budget.js.map +1 -0
  623. package/dist/core/inert-record.d.ts +3 -0
  624. package/dist/core/inert-record.d.ts.map +1 -0
  625. package/dist/core/inert-record.js +6 -0
  626. package/dist/core/inert-record.js.map +1 -0
  627. package/dist/core/input/abort.d.ts +33 -2
  628. package/dist/core/input/abort.d.ts.map +1 -1
  629. package/dist/core/input/abort.js +42 -2
  630. package/dist/core/input/abort.js.map +1 -1
  631. package/dist/core/input/clear-ack.d.ts +10 -0
  632. package/dist/core/input/clear-ack.d.ts.map +1 -0
  633. package/dist/core/input/clear-ack.js +26 -0
  634. package/dist/core/input/clear-ack.js.map +1 -0
  635. package/dist/core/input/composer-cleanup.d.ts +33 -0
  636. package/dist/core/input/composer-cleanup.d.ts.map +1 -0
  637. package/dist/core/input/composer-cleanup.js +127 -0
  638. package/dist/core/input/composer-cleanup.js.map +1 -0
  639. package/dist/core/input/constants.d.ts +12 -0
  640. package/dist/core/input/constants.d.ts.map +1 -0
  641. package/dist/core/input/constants.js +12 -0
  642. package/dist/core/input/constants.js.map +1 -0
  643. package/dist/core/input/empty-frame.d.ts +4 -0
  644. package/dist/core/input/empty-frame.d.ts.map +1 -0
  645. package/dist/core/input/empty-frame.js +15 -0
  646. package/dist/core/input/empty-frame.js.map +1 -0
  647. package/dist/core/input/index.d.ts +8 -25
  648. package/dist/core/input/index.d.ts.map +1 -1
  649. package/dist/core/input/index.js +67 -102
  650. package/dist/core/input/index.js.map +1 -1
  651. package/dist/core/input/paste-guard.d.ts +34 -0
  652. package/dist/core/input/paste-guard.d.ts.map +1 -0
  653. package/dist/core/input/paste-guard.js +2 -0
  654. package/dist/core/input/paste-guard.js.map +1 -0
  655. package/dist/core/input/paste-nudge.d.ts +10 -0
  656. package/dist/core/input/paste-nudge.d.ts.map +1 -0
  657. package/dist/core/input/paste-nudge.js +91 -0
  658. package/dist/core/input/paste-nudge.js.map +1 -0
  659. package/dist/core/input/render-observation.d.ts +3 -0
  660. package/dist/core/input/render-observation.d.ts.map +1 -0
  661. package/dist/core/input/render-observation.js +38 -0
  662. package/dist/core/input/render-observation.js.map +1 -0
  663. package/dist/core/input/render-wakeup.d.ts +10 -0
  664. package/dist/core/input/render-wakeup.d.ts.map +1 -0
  665. package/dist/core/input/render-wakeup.js +45 -0
  666. package/dist/core/input/render-wakeup.js.map +1 -0
  667. package/dist/core/input/sanitize.d.ts +11 -0
  668. package/dist/core/input/sanitize.d.ts.map +1 -0
  669. package/dist/core/input/sanitize.js +19 -0
  670. package/dist/core/input/sanitize.js.map +1 -0
  671. package/dist/core/input/staged-composer.d.ts +12 -0
  672. package/dist/core/input/staged-composer.d.ts.map +1 -0
  673. package/dist/core/input/staged-composer.js +56 -0
  674. package/dist/core/input/staged-composer.js.map +1 -0
  675. package/dist/core/input/submission-cancel.d.ts +6 -0
  676. package/dist/core/input/submission-cancel.d.ts.map +1 -0
  677. package/dist/core/input/submission-cancel.js +18 -0
  678. package/dist/core/input/submission-cancel.js.map +1 -0
  679. package/dist/core/json-shape.d.ts +2 -0
  680. package/dist/core/json-shape.d.ts.map +1 -0
  681. package/dist/core/json-shape.js +6 -0
  682. package/dist/core/json-shape.js.map +1 -0
  683. package/dist/core/json-snapshot.d.ts +10 -0
  684. package/dist/core/json-snapshot.d.ts.map +1 -0
  685. package/dist/core/json-snapshot.js +84 -0
  686. package/dist/core/json-snapshot.js.map +1 -0
  687. package/dist/core/loops/scheduler.d.ts +1 -1
  688. package/dist/core/loops/scheduler.d.ts.map +1 -1
  689. package/dist/core/loops/scheduler.js +1 -2
  690. package/dist/core/loops/scheduler.js.map +1 -1
  691. package/dist/core/models/dialog-region.d.ts +16 -0
  692. package/dist/core/models/dialog-region.d.ts.map +1 -0
  693. package/dist/core/models/dialog-region.js +133 -0
  694. package/dist/core/models/dialog-region.js.map +1 -0
  695. package/dist/core/models/input.d.ts +1 -1
  696. package/dist/core/models/input.d.ts.map +1 -1
  697. package/dist/core/models/input.js.map +1 -1
  698. package/dist/core/models/intervention.d.ts +3 -0
  699. package/dist/core/models/intervention.d.ts.map +1 -0
  700. package/dist/core/models/intervention.js +12 -0
  701. package/dist/core/models/intervention.js.map +1 -0
  702. package/dist/core/models/picker.d.ts +14 -1
  703. package/dist/core/models/picker.d.ts.map +1 -1
  704. package/dist/core/models/picker.js +27 -6
  705. package/dist/core/models/picker.js.map +1 -1
  706. package/dist/core/models/rows.d.ts +42 -2
  707. package/dist/core/models/rows.d.ts.map +1 -1
  708. package/dist/core/models/rows.js +30 -3
  709. package/dist/core/models/rows.js.map +1 -1
  710. package/dist/core/models/tui-screen.d.ts +11 -1
  711. package/dist/core/models/tui-screen.d.ts.map +1 -1
  712. package/dist/core/models/tui-screen.js +22 -4
  713. package/dist/core/models/tui-screen.js.map +1 -1
  714. package/dist/core/module-require.d.ts +1 -1
  715. package/dist/core/module-require.js +1 -1
  716. package/dist/core/persona.d.ts +5 -4
  717. package/dist/core/persona.d.ts.map +1 -1
  718. package/dist/core/persona.js +18 -3
  719. package/dist/core/persona.js.map +1 -1
  720. package/dist/core/predicates.d.ts +9 -1
  721. package/dist/core/predicates.d.ts.map +1 -1
  722. package/dist/core/predicates.js +12 -2
  723. package/dist/core/predicates.js.map +1 -1
  724. package/dist/core/questions/abort.d.ts +2 -0
  725. package/dist/core/questions/abort.d.ts.map +1 -0
  726. package/dist/core/questions/abort.js +21 -0
  727. package/dist/core/questions/abort.js.map +1 -0
  728. package/dist/core/questions/activity-fields.d.ts +5 -0
  729. package/dist/core/questions/activity-fields.d.ts.map +1 -0
  730. package/dist/core/questions/activity-fields.js +15 -0
  731. package/dist/core/questions/activity-fields.js.map +1 -0
  732. package/dist/core/questions/activity.d.ts +6 -0
  733. package/dist/core/questions/activity.d.ts.map +1 -0
  734. package/dist/core/questions/activity.js +2 -0
  735. package/dist/core/questions/activity.js.map +1 -0
  736. package/dist/core/questions/adapter.d.ts +15 -0
  737. package/dist/core/questions/adapter.d.ts.map +1 -0
  738. package/dist/core/questions/adapter.js +2 -0
  739. package/dist/core/questions/adapter.js.map +1 -0
  740. package/dist/core/questions/attempt.d.ts +26 -0
  741. package/dist/core/questions/attempt.d.ts.map +1 -0
  742. package/dist/core/questions/attempt.js +85 -0
  743. package/dist/core/questions/attempt.js.map +1 -0
  744. package/dist/core/questions/controller.d.ts +24 -0
  745. package/dist/core/questions/controller.d.ts.map +1 -0
  746. package/dist/core/questions/controller.js +83 -0
  747. package/dist/core/questions/controller.js.map +1 -0
  748. package/dist/core/questions/correlation.d.ts +8 -0
  749. package/dist/core/questions/correlation.d.ts.map +1 -0
  750. package/dist/core/questions/correlation.js +11 -0
  751. package/dist/core/questions/correlation.js.map +1 -0
  752. package/dist/core/questions/cursor-provenance.d.ts +12 -0
  753. package/dist/core/questions/cursor-provenance.d.ts.map +1 -0
  754. package/dist/core/questions/cursor-provenance.js +19 -0
  755. package/dist/core/questions/cursor-provenance.js.map +1 -0
  756. package/dist/core/questions/deadline.d.ts +2 -0
  757. package/dist/core/questions/deadline.d.ts.map +1 -0
  758. package/dist/core/questions/deadline.js +11 -0
  759. package/dist/core/questions/deadline.js.map +1 -0
  760. package/dist/core/questions/dispatch.d.ts +17 -0
  761. package/dist/core/questions/dispatch.d.ts.map +1 -0
  762. package/dist/core/questions/dispatch.js +46 -0
  763. package/dist/core/questions/dispatch.js.map +1 -0
  764. package/dist/core/questions/errors.d.ts +8 -0
  765. package/dist/core/questions/errors.d.ts.map +1 -0
  766. package/dist/core/questions/errors.js +10 -0
  767. package/dist/core/questions/errors.js.map +1 -0
  768. package/dist/core/questions/input.d.ts +13 -0
  769. package/dist/core/questions/input.d.ts.map +1 -0
  770. package/dist/core/questions/input.js +93 -0
  771. package/dist/core/questions/input.js.map +1 -0
  772. package/dist/core/questions/io.d.ts +23 -0
  773. package/dist/core/questions/io.d.ts.map +1 -0
  774. package/dist/core/questions/io.js +2 -0
  775. package/dist/core/questions/io.js.map +1 -0
  776. package/dist/core/questions/notification-errors.d.ts +14 -0
  777. package/dist/core/questions/notification-errors.d.ts.map +1 -0
  778. package/dist/core/questions/notification-errors.js +45 -0
  779. package/dist/core/questions/notification-errors.js.map +1 -0
  780. package/dist/core/questions/observers.d.ts +17 -0
  781. package/dist/core/questions/observers.d.ts.map +1 -0
  782. package/dist/core/questions/observers.js +57 -0
  783. package/dist/core/questions/observers.js.map +1 -0
  784. package/dist/core/questions/registry.d.ts +35 -0
  785. package/dist/core/questions/registry.d.ts.map +1 -0
  786. package/dist/core/questions/registry.js +158 -0
  787. package/dist/core/questions/registry.js.map +1 -0
  788. package/dist/core/questions/transaction.d.ts +23 -0
  789. package/dist/core/questions/transaction.d.ts.map +1 -0
  790. package/dist/core/questions/transaction.js +97 -0
  791. package/dist/core/questions/transaction.js.map +1 -0
  792. package/dist/core/questions/types.d.ts +62 -0
  793. package/dist/core/questions/types.d.ts.map +1 -0
  794. package/dist/core/questions/types.js +2 -0
  795. package/dist/core/questions/types.js.map +1 -0
  796. package/dist/core/questions/validate.d.ts +16 -0
  797. package/dist/core/questions/validate.d.ts.map +1 -0
  798. package/dist/core/questions/validate.js +95 -0
  799. package/dist/core/questions/validate.js.map +1 -0
  800. package/dist/core/rendered-observers.d.ts +7 -2
  801. package/dist/core/rendered-observers.d.ts.map +1 -1
  802. package/dist/core/rendered-observers.js +44 -10
  803. package/dist/core/rendered-observers.js.map +1 -1
  804. package/dist/core/screen-facts.d.ts +8 -3
  805. package/dist/core/screen-facts.d.ts.map +1 -1
  806. package/dist/core/screen-facts.js +6 -3
  807. package/dist/core/screen-facts.js.map +1 -1
  808. package/dist/core/simple/boundary-observer.d.ts +30 -0
  809. package/dist/core/simple/boundary-observer.d.ts.map +1 -0
  810. package/dist/core/simple/boundary-observer.js +111 -0
  811. package/dist/core/simple/boundary-observer.js.map +1 -0
  812. package/dist/core/simple/boundary-signal.d.ts +31 -0
  813. package/dist/core/simple/boundary-signal.d.ts.map +1 -0
  814. package/dist/core/simple/boundary-signal.js +19 -0
  815. package/dist/core/simple/boundary-signal.js.map +1 -0
  816. package/dist/core/simple/captured-input.d.ts +19 -0
  817. package/dist/core/simple/captured-input.d.ts.map +1 -0
  818. package/dist/core/simple/captured-input.js +78 -0
  819. package/dist/core/simple/captured-input.js.map +1 -0
  820. package/dist/core/simple/close.d.ts +6 -0
  821. package/dist/core/simple/close.d.ts.map +1 -0
  822. package/dist/core/simple/close.js +20 -0
  823. package/dist/core/simple/close.js.map +1 -0
  824. package/dist/core/simple/events.d.ts +2 -2
  825. package/dist/core/simple/events.js +2 -2
  826. package/dist/core/simple/loop-boundary.d.ts +12 -0
  827. package/dist/core/simple/loop-boundary.d.ts.map +1 -0
  828. package/dist/core/simple/loop-boundary.js +68 -0
  829. package/dist/core/simple/loop-boundary.js.map +1 -0
  830. package/dist/core/simple/loop-hold.d.ts +7 -0
  831. package/dist/core/simple/loop-hold.d.ts.map +1 -0
  832. package/dist/core/simple/loop-hold.js +9 -0
  833. package/dist/core/simple/loop-hold.js.map +1 -0
  834. package/dist/core/simple/native-boundary.d.ts +15 -0
  835. package/dist/core/simple/native-boundary.d.ts.map +1 -0
  836. package/dist/core/simple/native-boundary.js +18 -0
  837. package/dist/core/simple/native-boundary.js.map +1 -0
  838. package/dist/core/simple/native-idle.d.ts +17 -0
  839. package/dist/core/simple/native-idle.d.ts.map +1 -0
  840. package/dist/core/simple/native-idle.js +25 -0
  841. package/dist/core/simple/native-idle.js.map +1 -0
  842. package/dist/core/simple/observe-boundary.d.ts +28 -0
  843. package/dist/core/simple/observe-boundary.d.ts.map +1 -0
  844. package/dist/core/simple/observe-boundary.js +13 -0
  845. package/dist/core/simple/observe-boundary.js.map +1 -0
  846. package/dist/core/simple/owned-loop.d.ts +8 -0
  847. package/dist/core/simple/owned-loop.d.ts.map +1 -0
  848. package/dist/core/simple/owned-loop.js +42 -0
  849. package/dist/core/simple/owned-loop.js.map +1 -0
  850. package/dist/core/simple/session.d.ts +7 -7
  851. package/dist/core/simple/session.d.ts.map +1 -1
  852. package/dist/core/simple/session.js +20 -33
  853. package/dist/core/simple/session.js.map +1 -1
  854. package/dist/core/simple/submission-context.d.ts +13 -0
  855. package/dist/core/simple/submission-context.d.ts.map +1 -0
  856. package/dist/core/simple/submission-context.js +35 -0
  857. package/dist/core/simple/submission-context.js.map +1 -0
  858. package/dist/core/simple/turn/bounds.d.ts +22 -0
  859. package/dist/core/simple/turn/bounds.d.ts.map +1 -0
  860. package/dist/core/simple/turn/bounds.js +22 -0
  861. package/dist/core/simple/turn/bounds.js.map +1 -0
  862. package/dist/core/simple/turn/defaults.d.ts +24 -0
  863. package/dist/core/simple/turn/defaults.d.ts.map +1 -0
  864. package/dist/core/simple/turn/defaults.js +34 -0
  865. package/dist/core/simple/turn/defaults.js.map +1 -0
  866. package/dist/core/simple/turn-acceptance.d.ts +20 -3
  867. package/dist/core/simple/turn-acceptance.d.ts.map +1 -1
  868. package/dist/core/simple/turn-acceptance.js +55 -5
  869. package/dist/core/simple/turn-acceptance.js.map +1 -1
  870. package/dist/core/simple/turn-boundary.d.ts +7 -2
  871. package/dist/core/simple/turn-boundary.d.ts.map +1 -1
  872. package/dist/core/simple/turn-boundary.js +17 -5
  873. package/dist/core/simple/turn-boundary.js.map +1 -1
  874. package/dist/core/simple/turn-gate.d.ts.map +1 -1
  875. package/dist/core/simple/turn-gate.js +1 -11
  876. package/dist/core/simple/turn-gate.js.map +1 -1
  877. package/dist/core/simple/turn-identity.d.ts +28 -0
  878. package/dist/core/simple/turn-identity.d.ts.map +1 -0
  879. package/dist/core/simple/turn-identity.js +74 -0
  880. package/dist/core/simple/turn-identity.js.map +1 -0
  881. package/dist/core/simple/turn-types.d.ts +11 -4
  882. package/dist/core/simple/turn-types.d.ts.map +1 -1
  883. package/dist/core/simple/turn-types.js +1 -6
  884. package/dist/core/simple/turn-types.js.map +1 -1
  885. package/dist/core/simple/turn.d.ts +7 -30
  886. package/dist/core/simple/turn.d.ts.map +1 -1
  887. package/dist/core/simple/turn.js +75 -75
  888. package/dist/core/simple/turn.js.map +1 -1
  889. package/dist/core/startup/barrier.d.ts +37 -0
  890. package/dist/core/startup/barrier.d.ts.map +1 -0
  891. package/dist/core/startup/barrier.js +59 -0
  892. package/dist/core/startup/barrier.js.map +1 -0
  893. package/dist/core/startup/frame.d.ts +2 -0
  894. package/dist/core/startup/frame.d.ts.map +1 -1
  895. package/dist/core/startup/frame.js +12 -0
  896. package/dist/core/startup/frame.js.map +1 -1
  897. package/dist/core/startup/warnings.d.ts +5 -0
  898. package/dist/core/startup/warnings.d.ts.map +1 -0
  899. package/dist/core/startup/warnings.js +14 -0
  900. package/dist/core/startup/warnings.js.map +1 -0
  901. package/dist/core/startup/write.d.ts +13 -11
  902. package/dist/core/startup/write.d.ts.map +1 -1
  903. package/dist/core/startup/write.js +12 -5
  904. package/dist/core/startup/write.js.map +1 -1
  905. package/dist/core/stop-input.d.ts +19 -0
  906. package/dist/core/stop-input.d.ts.map +1 -0
  907. package/dist/core/stop-input.js +47 -0
  908. package/dist/core/stop-input.js.map +1 -0
  909. package/dist/core/terminal-options.d.ts +13 -3
  910. package/dist/core/terminal-options.d.ts.map +1 -1
  911. package/dist/core/terminal-options.js +17 -7
  912. package/dist/core/terminal-options.js.map +1 -1
  913. package/dist/core/terminal-replay.d.ts +1 -0
  914. package/dist/core/terminal-replay.d.ts.map +1 -1
  915. package/dist/core/terminal-replay.js +6 -0
  916. package/dist/core/terminal-replay.js.map +1 -1
  917. package/dist/core/timers.d.ts +15 -0
  918. package/dist/core/timers.d.ts.map +1 -0
  919. package/dist/core/timers.js +17 -0
  920. package/dist/core/timers.js.map +1 -0
  921. package/dist/core/trust/allowlist.d.ts +24 -1
  922. package/dist/core/trust/allowlist.d.ts.map +1 -1
  923. package/dist/core/trust/allowlist.js +39 -12
  924. package/dist/core/trust/allowlist.js.map +1 -1
  925. package/dist/core/trust/blocking.d.ts +21 -10
  926. package/dist/core/trust/blocking.d.ts.map +1 -1
  927. package/dist/core/trust/blocking.js +64 -18
  928. package/dist/core/trust/blocking.js.map +1 -1
  929. package/dist/core/trust/clearance.d.ts +20 -0
  930. package/dist/core/trust/clearance.d.ts.map +1 -0
  931. package/dist/core/trust/clearance.js +25 -0
  932. package/dist/core/trust/clearance.js.map +1 -0
  933. package/dist/core/trust/copy.d.ts +19 -0
  934. package/dist/core/trust/copy.d.ts.map +1 -0
  935. package/dist/core/trust/copy.js +23 -0
  936. package/dist/core/trust/copy.js.map +1 -0
  937. package/dist/core/trust/dialog.d.ts +28 -0
  938. package/dist/core/trust/dialog.d.ts.map +1 -0
  939. package/dist/core/trust/dialog.js +96 -0
  940. package/dist/core/trust/dialog.js.map +1 -0
  941. package/dist/core/trust/options.d.ts +9 -0
  942. package/dist/core/trust/options.d.ts.map +1 -0
  943. package/dist/core/trust/options.js +9 -0
  944. package/dist/core/trust/options.js.map +1 -0
  945. package/dist/core/trust/prompts.d.ts +16 -37
  946. package/dist/core/trust/prompts.d.ts.map +1 -1
  947. package/dist/core/trust/prompts.js +10 -18
  948. package/dist/core/trust/prompts.js.map +1 -1
  949. package/dist/core/trust/responder.d.ts +27 -45
  950. package/dist/core/trust/responder.d.ts.map +1 -1
  951. package/dist/core/trust/responder.js +178 -108
  952. package/dist/core/trust/responder.js.map +1 -1
  953. package/dist/core/trust/types.d.ts +36 -0
  954. package/dist/core/trust/types.d.ts.map +1 -0
  955. package/dist/core/trust/types.js +17 -0
  956. package/dist/core/trust/types.js.map +1 -0
  957. package/dist/core/trust/view.d.ts +31 -0
  958. package/dist/core/trust/view.d.ts.map +1 -0
  959. package/dist/core/trust/view.js +52 -0
  960. package/dist/core/trust/view.js.map +1 -0
  961. package/dist/core/trust/write.d.ts +31 -0
  962. package/dist/core/trust/write.d.ts.map +1 -0
  963. package/dist/core/trust/write.js +148 -0
  964. package/dist/core/trust/write.js.map +1 -0
  965. package/dist/core/turn-state.d.ts +6 -0
  966. package/dist/core/turn-state.d.ts.map +1 -1
  967. package/dist/core/turn-state.js +31 -1
  968. package/dist/core/turn-state.js.map +1 -1
  969. package/dist/core/types.d.ts +4 -2
  970. package/dist/core/types.d.ts.map +1 -1
  971. package/dist/core/warnings/auth.d.ts +25 -0
  972. package/dist/core/warnings/auth.d.ts.map +1 -0
  973. package/dist/core/warnings/auth.js +2 -0
  974. package/dist/core/warnings/auth.js.map +1 -0
  975. package/dist/core/warnings/index.d.ts +9 -16
  976. package/dist/core/warnings/index.d.ts.map +1 -1
  977. package/dist/core/warnings/index.js +2 -3
  978. package/dist/core/warnings/index.js.map +1 -1
  979. package/dist/core/warnings/lifecycle.d.ts +25 -1
  980. package/dist/core/warnings/lifecycle.d.ts.map +1 -1
  981. package/dist/core/warnings/lifecycle.js +1 -1
  982. package/dist/core/warnings/questions.d.ts +23 -0
  983. package/dist/core/warnings/questions.d.ts.map +1 -0
  984. package/dist/core/warnings/questions.js +2 -0
  985. package/dist/core/warnings/questions.js.map +1 -0
  986. package/dist/core/warnings/session.d.ts +3 -2
  987. package/dist/core/warnings/session.d.ts.map +1 -1
  988. package/dist/core/warnings/session.js +3 -2
  989. package/dist/core/warnings/session.js.map +1 -1
  990. package/dist/core/warnings/transcript.d.ts +12 -0
  991. package/dist/core/warnings/transcript.d.ts.map +1 -0
  992. package/dist/core/warnings/transcript.js +2 -0
  993. package/dist/core/warnings/transcript.js.map +1 -0
  994. package/dist/core/warnings/update.d.ts +11 -2
  995. package/dist/core/warnings/update.d.ts.map +1 -1
  996. package/dist/core/warnings/update.js +27 -4
  997. package/dist/core/warnings/update.js.map +1 -1
  998. package/dist/events/emitter.d.ts +18 -2
  999. package/dist/events/emitter.d.ts.map +1 -1
  1000. package/dist/events/emitter.js +61 -14
  1001. package/dist/events/emitter.js.map +1 -1
  1002. package/dist/events/observer-errors.d.ts +9 -0
  1003. package/dist/events/observer-errors.d.ts.map +1 -0
  1004. package/dist/events/observer-errors.js +68 -0
  1005. package/dist/events/observer-errors.js.map +1 -0
  1006. package/dist/index.d.ts +1 -0
  1007. package/dist/index.d.ts.map +1 -1
  1008. package/dist/pty/node.d.ts.map +1 -1
  1009. package/dist/pty/node.js +4 -0
  1010. package/dist/pty/node.js.map +1 -1
  1011. package/dist/pty/types.d.ts +5 -0
  1012. package/dist/pty/types.d.ts.map +1 -1
  1013. package/dist/runtime/probe-cleanup.d.ts +34 -0
  1014. package/dist/runtime/probe-cleanup.d.ts.map +1 -0
  1015. package/dist/runtime/probe-cleanup.js +139 -0
  1016. package/dist/runtime/probe-cleanup.js.map +1 -0
  1017. package/dist/runtime/probe.d.ts.map +1 -1
  1018. package/dist/runtime/probe.js +18 -25
  1019. package/dist/runtime/probe.js.map +1 -1
  1020. package/dist/runtime/readiness/initial-ready.d.ts +13 -11
  1021. package/dist/runtime/readiness/initial-ready.d.ts.map +1 -1
  1022. package/dist/runtime/readiness/initial-ready.js +23 -18
  1023. package/dist/runtime/readiness/initial-ready.js.map +1 -1
  1024. package/dist/runtime/seams.d.ts +2 -1
  1025. package/dist/runtime/seams.d.ts.map +1 -1
  1026. package/dist/runtime/seams.js.map +1 -1
  1027. package/dist/runtime/session/attention-clearance.d.ts +5 -0
  1028. package/dist/runtime/session/attention-clearance.d.ts.map +1 -0
  1029. package/dist/runtime/session/attention-clearance.js +20 -0
  1030. package/dist/runtime/session/attention-clearance.js.map +1 -0
  1031. package/dist/runtime/session/base.d.ts +17 -4
  1032. package/dist/runtime/session/base.d.ts.map +1 -1
  1033. package/dist/runtime/session/base.js +68 -14
  1034. package/dist/runtime/session/base.js.map +1 -1
  1035. package/dist/runtime/session/commands.d.ts +17 -3
  1036. package/dist/runtime/session/commands.d.ts.map +1 -1
  1037. package/dist/runtime/session/commands.js +60 -13
  1038. package/dist/runtime/session/commands.js.map +1 -1
  1039. package/dist/runtime/session/foreign-picker.d.ts +8 -0
  1040. package/dist/runtime/session/foreign-picker.d.ts.map +1 -0
  1041. package/dist/runtime/session/foreign-picker.js +18 -0
  1042. package/dist/runtime/session/foreign-picker.js.map +1 -0
  1043. package/dist/runtime/session/frames.d.ts +27 -0
  1044. package/dist/runtime/session/frames.d.ts.map +1 -0
  1045. package/dist/runtime/session/frames.js +80 -0
  1046. package/dist/runtime/session/frames.js.map +1 -0
  1047. package/dist/runtime/session/image-attach.d.ts +3 -15
  1048. package/dist/runtime/session/image-attach.d.ts.map +1 -1
  1049. package/dist/runtime/session/image-attach.js +9 -27
  1050. package/dist/runtime/session/image-attach.js.map +1 -1
  1051. package/dist/runtime/session/lifecycle.d.ts +20 -14
  1052. package/dist/runtime/session/lifecycle.d.ts.map +1 -1
  1053. package/dist/runtime/session/lifecycle.js +49 -47
  1054. package/dist/runtime/session/lifecycle.js.map +1 -1
  1055. package/dist/runtime/session/loops.d.ts +10 -1
  1056. package/dist/runtime/session/loops.d.ts.map +1 -1
  1057. package/dist/runtime/session/loops.js +61 -19
  1058. package/dist/runtime/session/loops.js.map +1 -1
  1059. package/dist/runtime/session/native-submission.d.ts +10 -0
  1060. package/dist/runtime/session/native-submission.d.ts.map +1 -0
  1061. package/dist/runtime/session/native-submission.js +62 -0
  1062. package/dist/runtime/session/native-submission.js.map +1 -0
  1063. package/dist/runtime/session/not-running.d.ts +13 -0
  1064. package/dist/runtime/session/not-running.d.ts.map +1 -0
  1065. package/dist/runtime/session/not-running.js +28 -0
  1066. package/dist/runtime/session/not-running.js.map +1 -0
  1067. package/dist/runtime/session/paste-recovery.d.ts +15 -0
  1068. package/dist/runtime/session/paste-recovery.d.ts.map +1 -0
  1069. package/dist/runtime/session/paste-recovery.js +30 -0
  1070. package/dist/runtime/session/paste-recovery.js.map +1 -0
  1071. package/dist/runtime/session/picker-cleanup.d.ts +56 -0
  1072. package/dist/runtime/session/picker-cleanup.d.ts.map +1 -0
  1073. package/dist/runtime/session/picker-cleanup.js +126 -0
  1074. package/dist/runtime/session/picker-cleanup.js.map +1 -0
  1075. package/dist/runtime/session/picker-input.d.ts +17 -0
  1076. package/dist/runtime/session/picker-input.d.ts.map +1 -0
  1077. package/dist/runtime/session/picker-input.js +74 -0
  1078. package/dist/runtime/session/picker-input.js.map +1 -0
  1079. package/dist/runtime/session/picker.d.ts +56 -0
  1080. package/dist/runtime/session/picker.d.ts.map +1 -0
  1081. package/dist/runtime/session/picker.js +143 -0
  1082. package/dist/runtime/session/picker.js.map +1 -0
  1083. package/dist/runtime/session/questions.d.ts +23 -0
  1084. package/dist/runtime/session/questions.d.ts.map +1 -0
  1085. package/dist/runtime/session/questions.js +25 -0
  1086. package/dist/runtime/session/questions.js.map +1 -0
  1087. package/dist/runtime/session/readiness.d.ts +6 -3
  1088. package/dist/runtime/session/readiness.d.ts.map +1 -1
  1089. package/dist/runtime/session/readiness.js +19 -8
  1090. package/dist/runtime/session/readiness.js.map +1 -1
  1091. package/dist/runtime/session/shutdown-binding.d.ts +9 -0
  1092. package/dist/runtime/session/shutdown-binding.d.ts.map +1 -1
  1093. package/dist/runtime/session/shutdown-binding.js +57 -8
  1094. package/dist/runtime/session/shutdown-binding.js.map +1 -1
  1095. package/dist/runtime/session/shutdown.d.ts +2 -5
  1096. package/dist/runtime/session/shutdown.d.ts.map +1 -1
  1097. package/dist/runtime/session/shutdown.js +12 -13
  1098. package/dist/runtime/session/shutdown.js.map +1 -1
  1099. package/dist/runtime/session/status-wiring.d.ts +9 -4
  1100. package/dist/runtime/session/status-wiring.d.ts.map +1 -1
  1101. package/dist/runtime/session/status-wiring.js +8 -5
  1102. package/dist/runtime/session/status-wiring.js.map +1 -1
  1103. package/dist/runtime/session/stop-completion.d.ts +23 -0
  1104. package/dist/runtime/session/stop-completion.d.ts.map +1 -0
  1105. package/dist/runtime/session/stop-completion.js +32 -0
  1106. package/dist/runtime/session/stop-completion.js.map +1 -0
  1107. package/dist/runtime/session/turn-submission.d.ts +9 -0
  1108. package/dist/runtime/session/turn-submission.d.ts.map +1 -0
  1109. package/dist/runtime/session/turn-submission.js +19 -0
  1110. package/dist/runtime/session/turn-submission.js.map +1 -0
  1111. package/dist/runtime/shutdown/terminal.d.ts +10 -0
  1112. package/dist/runtime/shutdown/terminal.d.ts.map +1 -0
  1113. package/dist/runtime/shutdown/terminal.js +38 -0
  1114. package/dist/runtime/shutdown/terminal.js.map +1 -0
  1115. package/dist/runtime/startup/buffer.d.ts +1 -1
  1116. package/dist/runtime/startup/buffer.d.ts.map +1 -1
  1117. package/dist/runtime/startup/buffer.js +14 -8
  1118. package/dist/runtime/startup/buffer.js.map +1 -1
  1119. package/dist/runtime/status-evidence.d.ts +7 -3
  1120. package/dist/runtime/status-evidence.d.ts.map +1 -1
  1121. package/dist/runtime/status-evidence.js +12 -10
  1122. package/dist/runtime/status-evidence.js.map +1 -1
  1123. package/dist/runtime/update/lock.d.ts +7 -0
  1124. package/dist/runtime/update/lock.d.ts.map +1 -1
  1125. package/dist/runtime/update/lock.js +102 -121
  1126. package/dist/runtime/update/lock.js.map +1 -1
  1127. package/dist/runtime/update/owner.d.ts +54 -0
  1128. package/dist/runtime/update/owner.d.ts.map +1 -0
  1129. package/dist/runtime/update/owner.js +131 -0
  1130. package/dist/runtime/update/owner.js.map +1 -0
  1131. package/dist/runtime/update/retained-lease.d.ts +13 -0
  1132. package/dist/runtime/update/retained-lease.d.ts.map +1 -0
  1133. package/dist/runtime/update/retained-lease.js +40 -0
  1134. package/dist/runtime/update/retained-lease.js.map +1 -0
  1135. package/dist/runtime/update/waiting.d.ts +4 -0
  1136. package/dist/runtime/update/waiting.d.ts.map +1 -0
  1137. package/dist/runtime/update/waiting.js +95 -0
  1138. package/dist/runtime/update/waiting.js.map +1 -0
  1139. package/dist/state/canonical-path.d.ts +2 -0
  1140. package/dist/state/canonical-path.d.ts.map +1 -0
  1141. package/dist/state/canonical-path.js +22 -0
  1142. package/dist/state/canonical-path.js.map +1 -0
  1143. package/dist/state/launch-ownership.d.ts +21 -0
  1144. package/dist/state/launch-ownership.d.ts.map +1 -0
  1145. package/dist/state/launch-ownership.js +154 -0
  1146. package/dist/state/launch-ownership.js.map +1 -0
  1147. package/dist/state/launch-publication.d.ts +7 -0
  1148. package/dist/state/launch-publication.d.ts.map +1 -0
  1149. package/dist/state/launch-publication.js +53 -0
  1150. package/dist/state/launch-publication.js.map +1 -0
  1151. package/dist/state/private-read.js +2 -1
  1152. package/dist/state/private-read.js.map +1 -1
  1153. package/dist/state/private-session.d.ts +1 -1
  1154. package/dist/state/private-session.d.ts.map +1 -1
  1155. package/dist/state/private-session.js +4 -1
  1156. package/dist/state/private-session.js.map +1 -1
  1157. package/dist/state/runtime-paths.d.ts +10 -9
  1158. package/dist/state/runtime-paths.d.ts.map +1 -1
  1159. package/dist/state/runtime-paths.js +14 -12
  1160. package/dist/state/runtime-paths.js.map +1 -1
  1161. package/dist/state/socket-home.d.ts +8 -4
  1162. package/dist/state/socket-home.d.ts.map +1 -1
  1163. package/dist/state/socket-home.js +31 -7
  1164. package/dist/state/socket-home.js.map +1 -1
  1165. package/dist/state/startup-ownership.d.ts +4 -0
  1166. package/dist/state/startup-ownership.d.ts.map +1 -0
  1167. package/dist/state/startup-ownership.js +14 -0
  1168. package/dist/state/startup-ownership.js.map +1 -0
  1169. package/dist/state/store.d.ts +1 -1
  1170. package/dist/state/store.d.ts.map +1 -1
  1171. package/dist/state/store.js +2 -2
  1172. package/dist/state/store.js.map +1 -1
  1173. package/dist/terminal/coordinates.d.ts +7 -0
  1174. package/dist/terminal/coordinates.d.ts.map +1 -0
  1175. package/dist/terminal/coordinates.js +6 -0
  1176. package/dist/terminal/coordinates.js.map +1 -0
  1177. package/dist/terminal/cursor.d.ts +40 -0
  1178. package/dist/terminal/cursor.d.ts.map +1 -0
  1179. package/dist/terminal/cursor.js +116 -0
  1180. package/dist/terminal/cursor.js.map +1 -0
  1181. package/dist/terminal/headless.d.ts +7 -5
  1182. package/dist/terminal/headless.d.ts.map +1 -1
  1183. package/dist/terminal/headless.js +47 -35
  1184. package/dist/terminal/headless.js.map +1 -1
  1185. package/dist/terminal/pty-output.d.ts +37 -0
  1186. package/dist/terminal/pty-output.d.ts.map +1 -0
  1187. package/dist/terminal/pty-output.js +109 -0
  1188. package/dist/terminal/pty-output.js.map +1 -0
  1189. package/dist/terminal/render-queue.d.ts +30 -0
  1190. package/dist/terminal/render-queue.d.ts.map +1 -0
  1191. package/dist/terminal/render-queue.js +105 -0
  1192. package/dist/terminal/render-queue.js.map +1 -0
  1193. package/dist/terminal/snapshot.d.ts +5 -0
  1194. package/dist/terminal/snapshot.d.ts.map +1 -0
  1195. package/dist/terminal/snapshot.js +13 -0
  1196. package/dist/terminal/snapshot.js.map +1 -0
  1197. package/docs/api.md +8 -1
  1198. package/docs/cli-behavior.md +930 -43
  1199. package/docs/cli-output.md +44 -10
  1200. package/docs/cli.md +18 -11
  1201. package/docs/codex/cli.md +44 -0
  1202. package/docs/login-recovery.md +24 -0
  1203. package/docs/native-question-proofs.md +57 -0
  1204. package/docs/performance.md +73 -0
  1205. package/docs/questions.md +181 -0
  1206. package/package.json +1 -1
  1207. package/prd/04-architecture.md +15 -0
  1208. package/prd/05-api/5.1-starting-claude.md +11 -1
  1209. package/prd/05-api/5.10-questions.md +117 -0
  1210. package/prd/05-api/5.3-claude-session-api.md +293 -24
  1211. package/prd/05-api/5.4-events.md +159 -32
  1212. package/prd/05-api/5.5-starting-codex.md +85 -18
  1213. package/prd/05-api/5.7-codex-session-api.md +143 -5
  1214. package/prd/05-api/5.8-session-api.md +58 -6
  1215. package/prd/05-api/5.9-loops.md +11 -1
  1216. package/prd/05-api/README.md +2 -0
  1217. package/prd/06-claude-hook-bridge.md +115 -0
  1218. package/prd/07-claude-policy.md +2 -0
  1219. package/prd/07a-codex-hook-bridge.md +90 -0
  1220. package/prd/08-state.md +51 -10
  1221. package/prd/09-lifecycle.md +79 -3
  1222. package/prd/10-errors.md +9 -2
  1223. package/prd/12a-cli.md +50 -17
  1224. package/prd/13-latitude.md +89 -0
  1225. package/prd/14-conformance.md +86 -32
  1226. package/prd/16-maintainer-review.md +75 -0
  1227. package/prd/README.md +1 -0
@@ -0,0 +1,117 @@
1
+ ## 5.10 Native questions
2
+
3
+ `ElwoodAgentSession`, both raw adapter interfaces, and both lazy session classes
4
+ expose `listQuestions(): Promise<readonly ElwoodQuestionRequest[]>` and
5
+ `answerQuestions(requestId, answers, options?): Promise<void>`. These controls
6
+ bypass the ergonomic turn queue; answering never creates a user turn or finishes
7
+ an existing `send`/`stream`. Lazy controls start the session before delegation.
8
+
9
+ A request has readonly `id`, `agent`, `delivery` (`blocking` or `queued`), and
10
+ ordered `questions`. Each question has readonly `id`, `prompt`, optional `header`,
11
+ `options` (ordered readonly `id`, `label`, optional `description`), `selection`
12
+ (`single`, `multiple`, or `none`), `textMode` (`none`, `alternative`, or
13
+ `additional`), and `supportsSecretInput`. IDs are opaque and scoped to the live process.
14
+ `alternative` permits text instead of options; `additional` permits text alongside
15
+ options. Capabilities describe only supported native input, not model intent.
16
+
17
+ The snapshot lists currently available requests in discovery order and is deeply immutable.
18
+ Redraws and mirrored source records retain identities. A semantic replacement
19
+ closes the old request as unavailable and raises a new ID. No question or answer
20
+ is stored in Elwood session state or restored by Elwood on resume.
21
+
22
+ `question` events carry `elwoodSessionId`, `agent`, `request`, and `phase`
23
+ (`raised` or `closed`). Closed events also carry `reason`: `answered`,
24
+ `cancelled`, or `unavailable`. `answered` requires native acceptance evidence;
25
+ `cancelled` requires native dismissal evidence; withdrawal, turn end, replacement,
26
+ and shutdown use `unavailable` when no stronger evidence exists. Matching
27
+ normalized activities have `kind: "question"`, `source: "terminal"`, the same
28
+ structured event in `question`, and a phase label. They contain request prompts,
29
+ not answer values. Existing raw hook/transcript observations remain unredacted.
30
+ Question activity is telemetry and never ergonomic answer text. The request, event
31
+ and normalized activity agents agree, including in their public discriminated types.
32
+
33
+ Each answer contains `questionId`, optional ordered `optionIds`, and optional
34
+ `text`. Exactly one answer for every question in the selected request is required.
35
+ Unknown/duplicate IDs, unsupported text, multiple options on single-select,
36
+ empty answers, and control-bearing text reject as `invalid_question_answer`
37
+ before any write. The complete validated answer batch is limited to 8 MiB: the sum of UTF-8 bytes
38
+ in its question IDs, selected option IDs and text. JSON syntax and unknown fields
39
+ do not count toward this limit. Malformed UTF-16 is rejected. Multiline text is safely bracketed-pasted. An unknown, closed,
40
+ retired, or previous-process request rejects as `question_not_found` before input.
41
+
42
+ `options` accepts optional positive finite `timeoutMs` (default 20,000) and
43
+ `signal: AbortSignal`. Long deadlines use bounded timer chunks. A single answer transaction owns the physical question
44
+ input lane; overlapping calls reject as `question_answer_failed` before reading
45
+ caller answer or options fields, including stale IDs and invalid batches. When
46
+ no attempt owns the lane, unknown or retired IDs reject as `question_not_found`
47
+ before input. It operates
48
+ even while an ordinary queued writer or ergonomic turn is waiting. Every write
49
+ revalidates current completed native frames, live request ownership and caller
50
+ intervention. Raw keys and interruption revoke the transaction. Timeout,
51
+ cancellation, changed/unsupported layout, rejected input and uncertain acceptance
52
+ reject with content-free `question_answer_failed`; a submitting Enter is never
53
+ blindly retried. Closing the session prevents further writes. Failures may expose
54
+ only fixed `details.category` categories: `frame_wait`, `adapter`, `terminal_write`,
55
+ `native_acceptance`, or `aborted`; they never retain raw exceptions or answer text.
56
+
57
+ A failed attempt that has not started a physical write can remain answerable. If
58
+ input may have reached the CLI and native acceptance is unconfirmed, the API
59
+ request closes once as `unavailable` and disappears from snapshots. Retrying its
60
+ ID rejects as `question_not_found` before input. Elwood retains the native identity
61
+ and holds ordinary automation until correlated native closure, turn end or
62
+ shutdown releases it. Redraws, changed metadata for that same reserved identity
63
+ and late write completion cannot republish or reauthorize the request. Native
64
+ closure releases this reservation silently, without a second question closure.
65
+ Both the physical write and the correlated native reservation must settle before
66
+ ordinary input can resume, whichever settles first. The API closure alone does
67
+ not mean the CLI is ready for ordinary input.
68
+
69
+ Pending requests and native question editors hold ordinary prompt, command,
70
+ loop and login writes. Native lifecycle status remains independent of queued
71
+ question availability. Unknown question layouts are hold-only, observable through
72
+ the existing terminal/attention surfaces, and never receive guessed keys.
73
+
74
+ Claude `AskUserQuestion` hooks supply grouped request metadata. A request is
75
+ published only when its matching native questionnaire is visible; direct caller
76
+ hook answers and denials retain precedence and do not create a phantom pending
77
+ request, even if a matching stale screen is still visible. Initial hook activity
78
+ keeps its existing timing; discovery waits for that exact caller decision and
79
+ then a fresh completed native paint.
80
+ Overlapping Claude hooks retain independent native tool-use identities and exact
81
+ caller outcomes, including out-of-order resolution and completion. A pending
82
+ outcome withholds only its matching candidate; it cannot suppress discovery of an
83
+ unrelated resolved request. Matching `PermissionRequest` mirrors retain the
84
+ original candidate even when their hook IDs differ. A native panel that matches
85
+ multiple independent candidates grants no answer authority; ownership remains
86
+ held until native evidence disambiguates it. ID-less completion requires one
87
+ uniquely matching candidate and cannot retire an ambiguous group.
88
+ The adapter supports the captured single-choice, checkbox, tabbed sequential
89
+ question and review stages, with alternative free text. It requires a recognized
90
+ initial first-question stage; a human-navigated unsupported partial stage rejects
91
+ safely. Only a matching `AskUserQuestion` completion acknowledges the whole
92
+ request. A supplied native completion ID must match the active request; without an ID,
93
+ ordered question definitions must match its prompts, headers, selection modes and
94
+ ordered option labels/descriptions. Unrelated tools or mismatched question
95
+ metadata cannot acknowledge, cancel or retire that request. The standard hook
96
+ timeout is unchanged and never waits for a human answer.
97
+
98
+ Codex native text acceptance normalizes CRLF and CR to LF, then trims Rust
99
+ Unicode White_Space at both ends (U+FEFF is retained); interior whitespace is
100
+ preserved. Queued selected labels are trimmed; modal selected labels remain
101
+ exact and optional notes use the text normalization. Long, clipped, multiline and literal placeholder text is accepted only while
102
+ the submitted text remains in the same native question editor. The complete
103
+ committed native answer must match the submitted answer before success.
104
+ Unsupported or opaque Codex native identities reserve ordinary automation until
105
+ explicit native turn end; raw human terminal input remains available.
106
+ Codex metadata budget overflow emits one content-free `question_automation_disabled`
107
+ warning and normalized warning activity per session, then disables automation.
108
+
109
+ A successful Claude final submission awaits matching native completion through
110
+ a newly empty composer. An interrupted, unconfirmed answer retires the API
111
+ request while retaining its native identity and input hold until native closure;
112
+ a later acknowledgement releases that reservation without another closure event.
113
+
114
+ Question notification failures are contained without changing request state or
115
+ native input holds. The first failed question or companion question-activity
116
+ observer in a live session produces the content-free `question_observer_failed`
117
+ warning and normalized warning activity specified in [§5.4](5.4-events.md).
@@ -145,7 +145,24 @@ arrives (a missing or failed hook bridge) must not starve readiness forever, so
145
145
  initial readiness fires no later than a fixed deadline after the first rendered
146
146
  frame even when neither a hook nor (on cold start) any composer signal arrives.
147
147
  Subsequent turn readiness comes from
148
- completion signals such as an unblocked `Stop` hook. Queued messages are
148
+ completion signals such as an unblocked `Stop` hook. A Stop captures the current
149
+ queue-backed caller submission before notifying observers or invoking handlers. If a newer
150
+ `sendPrompt`, `sendMessage`, or `sendGuidance` prompt is physically submitted while
151
+ that Stop is being handled, the older Stop
152
+ MUST NOT mark the newer submission ready or release its queued successor.
153
+ Hook-observer failure diagnostics publish before this final generation check and
154
+ readiness transition, so their callbacks share the same submission boundary.
155
+ Retained rendered work, idle, or interrupt frames from before that physical
156
+ submission MUST NOT complete it. Rendered idle completion requires fresh work
157
+ after submission; a fresh interrupt banner absent at submission still completes
158
+ without a working footer. A terminal with no received output has no prior banner;
159
+ an incomplete or unverified prior frame does not establish absence. Guidance can
160
+ steer an existing turn, but receives the
161
+ same conservative rendered-frame boundary.
162
+ Immediate input remains available inside Stop callbacks, including a handler
163
+ that awaits `sendPrompt()`; waiting for Stop completion must not deadlock it.
164
+ Blocked outcomes still retain the active turn, and failed-open callbacks use the
165
+ same submission boundary as an ordinary unblocked outcome. Queued messages are
149
166
  submitted in FIFO order, one message per ready transition, so back-to-back calls
150
167
  do not accidentally paste multiple user turns into one active agent prompt. A
151
168
  queued `sendMessage` promise resolves when that message has been written to the
@@ -158,12 +175,31 @@ acceptance before an idle `ready` transition may complete a turn. A matching
158
175
  closes the cold-start deadline race: under load, Codex may repaint a boot spinner
159
176
  and composer after the deadline-released paste, swallow that paste, and otherwise
160
177
  look exactly like a completed empty turn. When `ready` returns without positive
161
- acceptance, Elwood waits the normal no-oracle quiet window and replays the same
178
+ acceptance, and no awaited input writer still owns native recovery, Elwood waits
179
+ the normal no-oracle quiet window and replays the same
162
180
  submission at the now-idle composer, at most twice. A still-unaccepted turn fails
163
181
  with `wait_timeout`; it never reports a false empty success. A positive acceptance
164
182
  arriving during the quiet window cancels recovery and lets the observed `ready`
165
183
  settle normally.
166
184
 
185
+ The per-session control queue accepts at most **1,024 outstanding operations**
186
+ and **8 MiB (8 × 1,024 × 1,024 bytes) of aggregate UTF-8 input text**, including
187
+ its active physical operation. This shared limit covers queued messages, prompts,
188
+ guidance, commands, exclusive controls, and loop-origin submissions. An admission
189
+ that would exceed either limit rejects with `input_queue_full` before attachment,
190
+ admission preparation, or terminal input; existing operations keep their order.
191
+ Text is measured before paste sanitization. Image clones retain their separate
192
+ §5.3 budget. Cancelling a waiting operation or physically settling an active one
193
+ releases its reservation; cancelling an active write does not release capacity
194
+ before that write settles. Physical loop completion releases capacity before
195
+ `fired` observers run, while retaining queue ordering through the following
196
+ running notification. Session close rejects waiting operations and releases
197
+ their reservations; new calls on a closed session still reject with
198
+ `session_not_running`, even if the queue was full. Direct `sendKeys`, terminal
199
+ input, and interrupt remain available outside this queue. Capacity is a rejection
200
+ boundary, not another unbounded waiting list. A loop whose admission is rejected
201
+ follows the existing failed-submission retry/warning policy (§5.9), never `fired`.
202
+
167
203
  `sendGuidance` is the adapter-neutral intervention API. Before the session has
168
204
  ever reached semantic readiness, and while a blocking dialog is visible, it has
169
205
  the same readiness-safe behavior as `sendMessage`. During a real running turn
@@ -179,12 +215,118 @@ write can be consumed by the paste boundary — leaving the prompt staged in
179
215
  the composer, never submitted (long multi-line prompts such as personas hit
180
216
  this reliably). Elwood therefore writes the bracketed paste and the
181
217
  submitting Enter as separate PTY writes, with the Enter following after a
182
- short settle delay, and then confirms submission against the rendered
218
+ short settle delay, and then observes the rendered
183
219
  screen: while the composer still shows staged content (Claude's
184
220
  "[Pasted text" chip; for Codex the paste's final line still in the
185
- composer), Elwood re-sends Enter a bounded number of times. A surplus Enter
186
- on an empty composer is a no-op on both CLIs, so the recovery cannot
187
- double-submit.
221
+ composer), ordinary submissions may re-send Enter at most twice, over at most four observation
222
+ attempts spaced one second apart after the first Enter. Only the completed,
223
+ visible, idle composer at the native cursor can establish staged text; matching
224
+ transcript text is insufficient. Working, hidden, incomplete, and unknown frames
225
+ withhold Enter and consume an observation attempt, not a physical retry. A fresh
226
+ positive empty-input observation retires that submission's recovery permanently;
227
+ an empty frame retained from before its paste does not. Dialogs withhold recovery
228
+ under the same observation bound. This bound does not shorten the initial
229
+ submission's dialog wait.
230
+
231
+ Working indicators alone cannot distinguish accepted work from startup or resume
232
+ replay. A later verified idle staged draft may therefore recover, whether or not
233
+ initial readiness has fired. Recovery does not infer acceptance from optimistic
234
+ status or permanently remember a working indicator. A cached staged frame is not
235
+ proof that the native CLI has not accepted the submission. Recovery therefore
236
+ requires a completed native render received after the most recent attempted
237
+ Enter, including a failed recovery write; moving the viewport or resizing alone
238
+ is not a fresh render. This applies to text and image-only or whitespace drafts.
239
+ Image chips qualify only inside the visible, idle, cursor-owned composer.
240
+
241
+ Native `user_message` activity permanently revokes background recovery captured
242
+ before a submission's paste and first Enter, including activity received while
243
+ that physical Enter is pending. Optimistic caller-submitted status does not
244
+ revoke recovery. This conservatively withholds further Enter; it does not prove
245
+ correlation to a particular prompt, change the first-write promise, or release
246
+ composer cleanup ownership.
247
+
248
+ Initial and replay ergonomic submissions retain their queue slot and staged-draft
249
+ cleanup ownership beyond the first physical Enter. They release only after a
250
+ positive empty native input frame whose completed PTY output arrived after that
251
+ Enter; changed geometry or a new empty-frame token without new output is not
252
+ acceptance. Missing staged text, blank/partial output, and native submission
253
+ activity alone cannot release a retained image or whitespace-only draft. Native
254
+ activity revokes recovery Enter authority while the empty-input wait continues.
255
+ Whitespace-only retry recognition is supported for Codex’s captured live advanced-cursor
256
+ layout. Claude has no whitespace-only retry guarantee: an unverifiable whitespace
257
+ draft remains cancellably held until positive empty-input acceptance or termination.
258
+ Image-bearing whitespace submissions on both adapters retain image ownership.
259
+ These submissions reuse the same staged-input, dialog, render-progress and
260
+ physical-retry guards as ordinary recovery. Acceptance is checked immediately after
261
+ Enter and on completed native render notifications, without ordinary recovery’s
262
+ four-observation or one-second observation ceiling. Unchanged ambiguous or blocked
263
+ frames do not cause recurring scans or timers; they retain cancellable ownership.
264
+ Only fresh staged-input evidence schedules a paced retry or final observation.
265
+ Pending render observations are shared, and timed-out or cancelled observers are
266
+ removed without adding another reaction to the same pending render promise.
267
+ After at most two recovery Enters,
268
+ a fresh still-staged observation rejects with `wait_timeout`; the final Enter
269
+ must be independently observed before acceptance or exhaustion. Ambiguous or
270
+ blocked observations remain cancellable without a whole-turn deadline. Raw input
271
+ revokes both automated retry and cleanup authority. While an initial or replay
272
+ ergonomic submission awaits empty-input confirmation, raw takeover rejects it
273
+ with `wait_timeout` and a submission-specific message; model picker operations
274
+ retain their `model_automation_failed` diagnostic. Cancellation and session
275
+ closure retain a pending physical write until it settles, then use the existing
276
+ cleanup/error rules. Raw control submission promises retain their first-Enter
277
+ contract; ergonomic consumer and physical-input lifetimes are specified in §5.8.
278
+
279
+ Queued input MUST NOT be written into a screen Elwood has not observed (C-API-56).
280
+ Terminal rendering is asynchronous (§4.1), so a blocking dialog can be received
281
+ from the PTY before any rendered frame shows it. Before writing a queued paste,
282
+ command text, submitting Enter, or recovery Enter, Elwood renders and observes
283
+ every PTY byte it has already received, and only then evaluates the
284
+ blocking-dialog hold; the write follows that decision before any further PTY
285
+ output is delivered. Output received while that observation is in progress is
286
+ part of it. When the received output cannot be observed — the PTY does not go
287
+ quiet within one second, or any render has failed (no later output can prove the
288
+ terminal model complete again) — the write is withheld
289
+ exactly as if a dialog were visible and re-attempted; input is never written
290
+ through an unobserved screen.
291
+
292
+ The same rule binds Elwood's own NON-TRUST automated startup writes — the Codex
293
+ update skip and its retries, and the Claude browser-tools decline. Each observes
294
+ everything received and re-checks the settled frame before writing, so neither
295
+ can reach a trust dialog that arrived while the previous screen was still
296
+ rendering. A withheld automated write is silent: it is not a write failure,
297
+ emits no `startup_prompt` activity and no warning, and the prompt stays
298
+ answerable on a later frame while the session remains live. Claude browser-tools
299
+ automation is permanently cancelled at disposal: no later retry, success activity,
300
+ or write-failure warning is emitted (C-CLAUDE-22). The trust responder is exempt from this veto,
301
+ because answering a trust dialog is precisely its role. Cancellation
302
+ interrupts the wait. The compact recovery Enter and the cancellation cleanup keys
303
+ follow the same rule, and the compact recovery Enter is cancelled as soon as a
304
+ later queued operation dispatches, because the composer then belongs to it.
305
+ Raw input through `sendKeys`, `terminal.sendInput`, or `xterm.input` also cancels
306
+ remaining recovery Enters for the staged paste: the caller now owns that draft.
307
+ `sendKeys` remains the explicit raw-input escape hatch and
308
+ does not wait.
309
+
310
+ A failed or cancelled queued submission retains ownership of its staged draft
311
+ until cleanup or raw input. Cleanup never writes through an unsafe frame;
312
+ if held, it is deferred until the next queued operation, before that operation
313
+ attaches images or writes input. This includes cancellation after attachment
314
+ succeeds but before text submission. A rejected cleanup write retains the hold
315
+ and rejects the successor with `wait_timeout`; it cannot append to the stale draft.
316
+ A physical clear write is not confirmation: cleanup requires a fresh completed
317
+ native empty-composer observation within one second. An unchanged pre-clear
318
+ frame, unsafe observation, or expiry retains the draft for a later safe attempt.
319
+ Raw input through `sendKeys`, `terminal.sendInput`, or `xterm.input` revokes this
320
+ cleanup authority: the caller now owns the draft, and subsequent queued input
321
+ has its ordinary semantics. Later failed staging cannot reacquire cleanup authority
322
+ over caller-owned text; a successful submitting Enter establishes a new cleanup
323
+ baseline only if no raw input intervened during that submission. Cleanup precedes
324
+ caller-turn publication and readiness consumption, so a failed clear leaves those
325
+ unchanged. Exclusive model/login deadlines include the deferred cleanup wait,
326
+ without revoking an already-started operation’s authority to cancel its own dialog.
327
+ Closing drops deferred cleanup without waiting for a
328
+ dialog or writing later cleanup keys. Clipboard restoration does not wait for
329
+ this deferred composer cleanup.
188
330
 
189
331
  Message text is DATA, never terminal control. `sendPrompt`, `sendMessage`, and
190
332
  `sendGuidance` submit caller- or model-controlled text as the content of a
@@ -226,13 +368,17 @@ rather than a raw type error.
226
368
  Image attachment is CONFIRMED, never assumed. For each image Elwood waits for the
227
369
  CLI's `[Image #N]` chip to appear in the composer region; if the chip is not
228
370
  observed within the per-image confirmation timeout (10 s), or the OS clipboard
229
- cannot be read or written, the call rejects with `image_attach_failed` and Elwood
371
+ cannot be read or written, or terminal rendering permanently fails, the call
372
+ rejects with `image_attach_failed` and Elwood
230
373
  submits NO text and attaches no further images. A confirmation timeout therefore
231
374
  surfaces (e.g. on TUI-wording drift) rather than silently degrading to a text-only
232
375
  turn. A session that TERMINATES mid-attach rejects the call with
233
376
  `session_not_running`, like any other queued operation. Chip confirmation is
234
377
  scoped to the composer region so unrelated on-screen text containing a literal
235
- `[Image #N]` cannot spoof it.
378
+ `[Image #N]` cannot spoof it. The baseline chip count is read only after received
379
+ output has settled, immediately before the image key is sent. A permanent render
380
+ failure rejects the attachment without waiting for session closure; Codex restores
381
+ its clipboard text and releases the clipboard lock before that rejection settles.
236
382
 
237
383
  The attach path is adapter-specific because the two CLIs ingest images
238
384
  differently, and this is a version-coupled TUI behavior verified against real
@@ -274,10 +420,9 @@ Third, session close during an in-flight attach rejects the operation and blocks
274
420
  the text write, but does not join the attach's temp-cleanup and clipboard-restore
275
421
  finalizers; on an abrupt teardown those may not complete before process exit
276
422
  (clipboard restore is already best-effort, and temp files fall to OS reaping).
277
- Fourth, composer isolation on a failed attach is best-effort: when an attach
278
- fails after staging began, Elwood clears the composer draft (kill-to-line-start
279
- plus kill-to-line-end) so the rejected images do not leak into a later caller's
280
- turn, but it does not run an adapter-specific transactional confirm-and-restore
423
+ Fourth, failed-attach cleanup follows the owned, deferred cleanup rule above.
424
+ The clear uses kill-to-line-start plus kill-to-line-end, but does not run an
425
+ adapter-specific transactional confirm-and-restore
281
426
  of the exact prior composer baseline; a partially-staged draft that those keys do
282
427
  not fully clear could still carry over (mitigated because a caller does not
283
428
  interleave submissions on one session). Fifth, chip confirmation identifies the
@@ -305,8 +450,9 @@ adapter also has a documented interrupt end banner (Claude renders
305
450
  "⎿ Interrupted", Codex renders "Conversation interrupted") whose appearance
306
451
  fires the turn-end transition even when the working token was never visible.
307
452
  Together the sources cover every width. Turn start is a rendered-state signal:
308
- the on-screen working token where it fits, plus the OSC window-title braille
309
- spinner (C-TURN-05) which is width-independent and reveals a running turn even
453
+ the on-screen working token where it fits, plus the OSC window-title working
454
+ spinner (C-TURN-05): the braille range on both adapters and Claude's observed
455
+ `◐ ` prefix. This signal is width-independent and reveals a running turn even
310
456
  when the footer token is elided; a caller `sendMessage`/`sendPrompt` also moves
311
457
  the session to `running`. Normal completion comes from the `Stop` hook, and
312
458
  interrupts from the working-token edge on wide screens or the end banner
@@ -404,6 +550,84 @@ or the Codex model slug, such as `gpt-5.4`). `isCurrent` reflects the model the
404
550
  session is using now; `isDefault` reflects the CLI's configured default. When
405
551
  Codex renders only a `(current)` marker, that row is also the default.
406
552
 
553
+ Model operations hold an exclusive session-input queue slot for the entire
554
+ open/navigate/apply-or-cancel flow, including waiting for the dialog to clear.
555
+ Concurrent model operations and normal submissions cannot interleave writes:
556
+ they are dispatched only after the operation settles. The queue wait and picker
557
+ operation share the supplied `timeoutMs` budget, so an operation still queued at
558
+ its deadline rejects with `model_automation_failed` without opening a picker.
559
+ The deadline and termination abort pending navigation before any further write.
560
+
561
+ When an operation fails with its model dialog still open, Elwood cancels it before
562
+ releasing the slot, within one additional second. Cancelling a follow-up stage
563
+ (Codex's reasoning level, Claude's cache warning) returns the CLI to the picker, so
564
+ each stage receives one Escape; an Escape already written for a stage is never
565
+ repeated, and termination stops cleanup before any further write. A dialog still
566
+ visible after that second keeps every queued writer held (messages, commands,
567
+ `/login`) while it remains; raw `sendKeys` stays available for manual recovery.
568
+ A dialog can also paint after the failure: a submitted `/model` whose picker had
569
+ not rendered can still open it, and an accepted stage can still paint its follow-up.
570
+ In those cases Elwood keeps the slot for the same bounded second and cancels a
571
+ dialog that appears in it; when none appears the slot is released at the bound. A
572
+ dialog that repaints after clearing is a new dialog and receives its own Escape.
573
+ Model picker text already visible when the operation acquires the slot (a human's
574
+ dialog, or a transcript quoting one) is not Elwood's: the operation rejects with
575
+ `model_automation_failed` without writing, cancelling, or holding input.
576
+ A partially painted Claude switch dialog (its title without its options yet) holds
577
+ input like a complete one but is never sent a key, because a cache warning and a
578
+ `PreModelSwitch` hook confirmation share that shell; `setModel` likewise does not
579
+ settle while one is on screen. Nor may it settle while a COMPLETE confirmation of
580
+ either kind is on screen: a hook's confirmation is the human's to answer, and the
581
+ model has not changed until they do, so reporting success there would report a
582
+ change that may never happen.
583
+ Every picker wait and write MUST be gated on the operation's own dialog, not on a
584
+ bare header match: a header alone is untrusted candidate evidence that transcript
585
+ or agent output can satisfy, so navigating or cancelling on it could send keys into
586
+ a running turn, the real composer, or another prompt. Cleanup's Escape is decided
587
+ on everything RECEIVED, not the last rendered frame, and is withheld when the
588
+ screen cannot be vouched for. A single clear frame does not end cleanup once a
589
+ dialog has been seen, because a repainting picker is briefly unrecognizable.
590
+ When session termination races a Codex `setModel`, the call rejects at once rather
591
+ than waiting out the exit bound, and the exit barrier is consulted on every outcome,
592
+ because the question is whether the dying CLI can still write `config.toml` — not
593
+ whether Elwood's automation succeeded. Since that rejection settles the call before
594
+ the restore runs, a restore failure afterwards MUST still be reported as a warning
595
+ rather than swallowed, or the temporary model silently stays the user's default.
596
+ A model dialog nobody Elwood opened — a human who typed `/model` themselves — is never
597
+ Elwood's to drive, but a write that is not part of a picker transaction (`/login`
598
+ recovery) MUST still stand off it while it is visible, because Enter applies its
599
+ highlighted row and Escape discards the human's state. That guard applies to the WRITE
600
+ only; it MUST NOT suppress readiness, which would deadlock Elwood's own picker whose
601
+ dialog is on screen by design.
602
+ Before dispatching `/model`, Elwood revalidates that no foreign picker is visible.
603
+ Public raw input through `sendKeys`, terminal `sendInput`, or `xterm.input` revokes
604
+ the active picker operation: it rejects with `model_automation_failed` and sends
605
+ no further navigation or cleanup keys into the human-owned generation. A foreign
606
+ picker hold survives partial repaints and clears only after five consecutive
607
+ positive native-composer observations, never from an empty or unrecognized frame.
608
+ Only the bottom-most region of the viewport is a model dialog: dialog text with a
609
+ conversation or composer row below it is transcript content (a reply quoting a
610
+ picker), which Elwood neither cancels nor holds on. Unrelated dialogs, including a
611
+ `PreModelSwitch` hook confirmation, are left for the caller.
612
+ Codex retains its process-wide configuration transaction lock, but acquires it INSIDE
613
+ the session queue slot: claiming the lock first would let a following submission
614
+ dispatch while the switch waited on another session's transaction, sending under the
615
+ old model. When the
616
+ session terminates during a Codex `setModel`, the call rejects at once but the
617
+ `config.toml` restore, and with it the configuration lock, waits until the CLI
618
+ process has exited (at most five seconds), because a dying CLI can still persist
619
+ the selection it had confirmed. The barrier MUST be the observed process exit:
620
+ a terminal session status (`stopped`, `killed`, `torn_down`) is recorded by the
621
+ shutdown path itself and is reached even when termination did not take, so it is
622
+ not proof the CLI can no longer write. The five-second bound is best-effort — it
623
+ prevents a process that never exits from holding the lock, and after it elapses
624
+ the restore proceeds without a confirmed exit. The barrier applies whether the
625
+ switch succeeded or failed, since a successful switch racing termination leaves
626
+ the same dying process able to write. A `setModel` still WAITING for the
627
+ configuration lock when its session closes MUST reject promptly with
628
+ `session_not_running` rather than wait out the transaction ahead of it, and MUST
629
+ NOT then apply its switch when the lock frees.
630
+
407
631
  `listModels` opens the picker, parses the rendered rows, cancels the picker
408
632
  with Escape, and MUST leave the session's model unchanged. `setModel` selects
409
633
  the requested row through cursor navigation. Elwood itself MUST NOT persist a
@@ -432,7 +656,10 @@ live session, which keeps the switched model because Codex reads its config
432
656
  at launch. When the compare fails — for example the user edited `config.toml`
433
657
  concurrently — Elwood MUST NOT clobber the file; it leaves the CLI's write in
434
658
  place and emits the `codex_default_model_persisted` warning so the deviation
435
- is surfaced rather than silent. Elwood confirms the CLI's own default
659
+ is surfaced rather than silent. Raw input taking over an active picker also
660
+ revokes restoration authority: Elwood leaves any resulting config change in place
661
+ and emits that same warning with a content-free takeover explanation. It must
662
+ not restore its snapshot over a model choice the human may have just made. Elwood confirms the CLI's own default
436
663
  reasoning level for the chosen Codex model. The whole snapshot/apply/restore
437
664
  transaction holds a process-wide lock so two concurrent `setModel` switches in
438
665
  the SAME Elwood process cannot interleave and leave the wrong default. This lock
@@ -525,6 +752,14 @@ the promise rejects with `session_not_running`. Hook and activity events for
525
752
  `PreCompact`/`PostCompact` flow to the parent app exactly as for any other
526
753
  hook.
527
754
 
755
+ A slash-command popup can swallow the Enter that submits `/compact`. When no
756
+ `PreCompact` hook has arrived after three seconds (or half of a shorter
757
+ `timeoutMs`), Elwood sends one recovery Enter. That Enter is a queued write like
758
+ any other: it waits behind a model operation that owns the input queue and is
759
+ written once the queue is released, it is dropped when compaction settles or the
760
+ session terminates first, and it is withheld while a blocking dialog or any model
761
+ dialog (one that survived cleanup, or a human's) is visible.
762
+
528
763
  `ElwoodSessionStatus` values are `starting`, `running`, `ready`, `blocked`,
529
764
  `stopped`, `exited`, `killed`, and `torn_down`.
530
765
 
@@ -537,19 +772,39 @@ in `running`. Adapter readiness signals move the session back to `ready`.
537
772
 
538
773
  `blocked` reports that the wrapped agent is waiting on a human decision it
539
774
  cannot answer itself: a tool permission or approval dialog, or a workspace
540
- trust prompt Elwood was not authorized to answer (`autotrust: false`).
775
+ trust prompt Elwood was not authorized to answer (`autotrust: false`), or an
776
+ authorized trust gate whose bounded safe automation could not finish (§5.4).
541
777
  Blocked detection derives from the rendered screen via the adapter's
542
- documented screen-fact rules. A session enters `blocked` from any live status
778
+ documented screen-fact rules. Native Claude questionnaires are blocking even
779
+ when their question copy contains composer-like carets, header-like rows, fences,
780
+ or navigation-footer text. A completed questionnaire quoted above a later native
781
+ composer does not provide questionnaire-blocking evidence (C-ATTN-05).
782
+ A session enters `blocked` from any live status
543
783
  (`running` or `ready`) when a blocking dialog appears — an adapter may finish
544
784
  its working indicator before the dialog settles, so the block can follow a
545
- `ready` beat — and settles to `ready` when the dialog resolves, since the
546
- composer is then waiting for input again. Prompts Elwood answers automatically
547
- (startup prompt automation, or workspace trust with `autotrust: true`) MUST
548
- NOT produce a `blocked` transition. Terminal statuses absorb blocking
785
+ `ready` beat. Verified clearance settles directly to `running` when the same
786
+ frame shows ongoing work, keeping queued messages suspended without an
787
+ intermediate `ready` event; it settles to `ready` only when a positive idle
788
+ composer is visible. A caret alone is not positive idle evidence: clearance
789
+ requires the adapter's verified native composer and current rendered frame. A
790
+ partial or blank repaint retains the pending block and input hold. Initial readiness requested behind a dialog remains deferred until
791
+ a positive idle composer frame. Working clearance synchronizes resumed turn
792
+ detection so the next idle composer ends that turn; an older interrupt banner
793
+ on that same working clearance frame does not end the newly resumed work. If a caller prompt was held behind the dialog, its
794
+ physical submission restores `running` before the queue can release a follow-up;
795
+ this does not repeat caller intent or recurring-loop bookkeeping. Prompts Elwood answers automatically
796
+ (startup prompt automation, or workspace trust with `autotrust: true`) do not
797
+ produce a `blocked` transition when automation succeeds within its bound. Trust
798
+ automation that cannot safely finish falls back to a recoverable block after
799
+ five seconds (§5.4); raw input can recover it and safe automation re-arms on a
800
+ new valid layout or dialog generation. The block lasts until verified clearance. Terminal statuses absorb blocking
549
801
  evidence. On the transition into `blocked`, Elwood also emits an `activity`
550
802
  event with `source: "terminal"`, `kind: "attention"`, a label naming the
551
803
  matched screen-fact rule ids, and text describing that the agent is waiting on
552
- a human decision.
804
+ a human decision. While the session remains blocked, a changed set of blocking
805
+ rule ids emits another attention activity with the current ids, without submitting
806
+ another blocking status decision. Repainting the
807
+ same rule set (including a different ordering) emits no duplicate.
553
808
 
554
809
  `statusDecisions()` returns a live-only log of at most the 50 most recent
555
810
  status decisions, oldest first. Each `ElwoodStatusDecision` records the evidence that
@@ -601,8 +856,12 @@ renderers. The handle also exposes terminal-control methods used internally
601
856
  (`sendInput`, `writeOutput`, `resize`, `settled`, and `dispose`); callers should
602
857
  prefer the session-level `sendPrompt`, `sendMessage`, `sendKeys`, `resize`,
603
858
  `stop`, `kill`, and `teardown` APIs unless they are building advanced terminal
604
- integrations. Consumers that need diagnostics may await `terminal.settled()` and
605
- read `terminal.snapshot()`, but visual terminal renderers SHOULD render the raw
859
+ integrations. Consumers that need diagnostics may await `terminal.settled()` —
860
+ which covers output received while waiting and never rejects — and read
861
+ `terminal.snapshot()`. The read-only boolean property `terminal.renderFailed`
862
+ becomes true when a render fails and stays true: the lost output cannot be
863
+ restored and no later output proves a complete redraw, so snapshots may be stale
864
+ and queued input stays withheld (raw `sendKeys` and a restart remain available). Visual terminal renderers SHOULD render the raw
606
865
  `terminal:data` byte stream instead of repainting from snapshots.
607
866
  `sendInput` resolves after input has been forwarded to the PTY and rejects when
608
867
  that forwarding fails.
@@ -626,6 +885,14 @@ clears its loop definitions. `teardown` removes
626
885
  Elwood-owned state for the session and must not remove Claude-owned transcripts,
627
886
  auth, or project/user settings that Elwood did not create.
628
887
 
888
+ Claude transcript activity and diagnostic delivery already in progress must finish
889
+ before terminal exit and terminal lifecycle status, including when a listener
890
+ synchronously stops the session. Deferred startup diagnostics obey the same order.
891
+ When the PTY exit has already been observed, `stop`, `kill`, and `teardown` invoked
892
+ from final-flush listeners join that finalization before shutdown cleanup, without
893
+ signaling the exited PTY or waiting for another exit notification. Terminal exit,
894
+ terminal status, and natural-exit reaping occur once even if PTY callbacks reenter.
895
+
629
896
  `stop`, `kill`, and `teardown` MUST reap the full PTY process tree, not only the
630
897
  PTY leader. The adapter CLI spawns helper subprocesses that are descendants of
631
898
  the PTY leader — notably the per-session hook bridge (`node hook-bridge.mjs`) the
@@ -656,3 +923,5 @@ before writing; only the existing first-party cache-confirmation policy may own
656
923
  its specific blocking screen. Compaction recovery Enter must also respect the dialog guard. Explicit caller
657
924
  `sendKeys` and narrowly scoped login/picker confirmation automation retain their
658
925
  existing contracts. C-API-23/24/37 and C-ATTN-01.
926
+
927
+ Native question snapshots and answering are shared controls; see [§5.10](5.10-questions.md).