@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
@@ -8,8 +8,8 @@ control surface (`sendMessage`, `sendPrompt`, `sendGuidance`, `sendKeys`, `resiz
8
8
  `cancelLoop`, `on`/`off`, `waitForStatus`, `waitForActivity`,
9
9
  `stop`/`kill`/`teardown`, and Claude's `login`). Every method is
10
10
  lazy-start-aware. The class is a thin wrapper over the same PTY-backed session the
11
- `start*` factories build — it adds no new lifecycle or persistence behavior and reads
12
- only public events. The `startClaude`/`startCodex` factories remain as the low-level
11
+ `start*` factories build — it adds no new persistence behavior. Private submission
12
+ and native-boundary evidence isolates collection without changing public hook payloads. The `startClaude`/`startCodex` factories remain as the low-level
13
13
  eager entry points but are DEPRECATED in favor of the class; they still return the
14
14
  same live session object (typed `ClaudeSessionApi`/`CodexSessionApi`) the class wraps.
15
15
 
@@ -34,6 +34,23 @@ with one another; control methods (`interrupt`, `sendKeys`, `createLoop`,
34
34
  `listLoops`, `cancelLoop`, `stop`, `kill`, …) go
35
35
  through immediately so an intervention reaches a running turn rather than queuing.
36
36
 
37
+ **Image ownership.** Every image-bearing facade call snapshots bytes and absolute
38
+ paths synchronously, before lazy startup or turn queueing, with the validation and
39
+ 200 MiB per-session clone ceiling from §5.3. That ceiling is ONE budget per
40
+ session: the facade and the raw session it exposes through `session` reserve
41
+ against the same 200 MiB, so mixing both surfaces cannot retain more than either
42
+ alone. Raw facade submissions release their
43
+ reservation when submission settles. Ergonomic `send`/`stream` turns retain their
44
+ reservation until the real turn boundary, because acceptance recovery may replay
45
+ the captured images. Consumer timeout or cancellation alone does not release it;
46
+ closing or killing the session reaches the boundary. Pending copies and the serialized
47
+ slot are released only after any cancelled acceptance-recovery submission finishes
48
+ its initial or replay physical write and immediate cleanup; dialog-blocked draft cleanup remains
49
+ owned by the input queue and must finish before a successor writes. Recovery stops when the consumer settles,
50
+ on either success or failure. An earlier `ready` followed by replay `running` is not
51
+ completion evidence for that replay; a failed consumer still waits for a new real
52
+ `ready` or terminal boundary and the required transcript drain.
53
+
37
54
  **Turn boundary.** A "turn" begins when a `send`/`stream` submits its prompt and
38
55
  ends when its content is complete. A turn's assistant text is transcript-sourced
39
56
  (C-CLAUDE-15) and the transcript is written ASYNCHRONOUSLY, so the text can arrive
@@ -57,13 +74,27 @@ failure, not a quiet success). A terminal status ends the turn immediately (it i
57
74
  final). A turn may legitimately run for HOURS (running a test
58
75
  suite, polling a PR), so there is NO whole-turn timeout by default — a still-live turn
59
76
  is never failed by a clock; a caller may pass an OPT-IN `timeoutMs` whole-turn
60
- ceiling. The tight cap is `catchUpMs` (default 10000 ms), armed only ONCE `ready`
77
+ ceiling, armed once at the first physical submitting Enter, without waiting for
78
+ fresh-empty input confirmation. Both initial and replay ergonomic submissions retain
79
+ input ownership until that confirmation or cancellation cleanup. The facade does not
80
+ queue a whole-prompt replay while an awaited writer still owns native Enter recovery.
81
+ A failure after Enter still waits for the real native boundary; a rejected submission
82
+ that never reached Enter releases immediately. The tight cap is `catchUpMs` (default 10000 ms), armed only ONCE `ready`
61
83
  fires: the agent is done, so the transcript flush should be near-instant — if it
62
84
  stalls past `catchUpMs`, the turn rejects with `wait_timeout` rather than leaving the
63
85
  caller hanging. Turns
64
86
  are serialized: overlapping `send`/`stream` calls queue and run one at a time in call
65
87
  order, so a turn's activity never interleaves with another's. This serialization covers
66
- the ergonomic `send`/`stream` turns only. The raw turn-producing control methods
88
+ the ergonomic `send`/`stream` turns and scheduled loop delivery: once its slot is
89
+ reserved and the underlying session is available, an ergonomic turn holds due loop
90
+ input until its real boundary,
91
+ including acceptance recovery and post-failure transcript drain. A loop selected before that hold reserves its native boundary before preparation
92
+ or physical submission; the caller waits for its completion and transcript drain
93
+ BEFORE installing its collector. A loop merely queued behind the hold cannot
94
+ prevent the caller's submission or recovery, or jump ahead of a successor caller
95
+ whose serialized slot is already reserved. Startup persona input drains before
96
+ caller collection by the same rule.
97
+ The raw turn-producing control methods
67
98
  (`sendMessage`, `sendPrompt`, `sendGuidance`) submit immediately and are NOT part of
68
99
  the ergonomic turn queue, so calling one CONCURRENTLY with an in-flight `send`/`stream`
69
100
  turn is unsupported — its produced turn can interleave with the ergonomic turn's
@@ -79,8 +110,27 @@ reliable "turn done" signal: a real `ready` (a busy agent is `running`, not read
79
110
  terminal status, then a short transcript-drain settle. A hung agent holds the slot until
80
111
  `close()`/`kill()` forces a terminal status. The facade subscribes to `activity` BEFORE
81
112
  submitting so no early event of the turn is missed. Where the adapter tags activity with a
82
- `turnId` (Codex), the facade additionally binds collection to the first turn's id as a
83
- refinement; Claude transcript activity carries no `turnId`, so for Claude the
113
+ `turnId` (Codex), the facade binds it only from an authenticated native
114
+ `UserPromptSubmit` for its physically attempted submission. The adapter normalizes
115
+ that acceptance and the submitted payload; prompt equality alone, replayed content,
116
+ `running`, and a late `Stop` cannot establish identity. Before acceptance, tagged
117
+ and untagged content cannot enter the collector. After acceptance, tagged content
118
+ and the Stop completeness signal must match that identity; a prior Stop cannot
119
+ replace its oracle. Untagged transcript records remain isolated by causal
120
+ serialization and predecessor drain.
121
+ A failed or interrupted consumer retains an unresolved attempted native boundary
122
+ until trustworthy completion or terminal shutdown, rather than assigning the next
123
+ unknown native generation to its successor. An earlier `ready` alone cannot
124
+ complete a newly accepted generation. Completion can combine its own matching,
125
+ unblocked Stop with a current positively empty, unblocked composer rendered from
126
+ native output received after the owned Enter; a cached pre-Enter frame or a
127
+ geometry-only change does not supply that evidence. Hookless completion may instead
128
+ come from the existing classified native rendered end edge for the currently
129
+ accepted generation, with post-Enter output progress and no input block. A raw
130
+ `interrupt()` return or a generic status change is not that evidence.
131
+ These rules also apply to headless CLI
132
+ collection. They refine causal serialization rather than authenticate caller-owned
133
+ configuration or unrelated host processes; Claude transcript activity carries no `turnId`, so for Claude the
84
134
  serialized-slot boundary is the sole isolation guarantee (which is why releasing the
85
135
  slot on the real agent boundary, not on consumer cancellation, is load-bearing).
86
136
  Because a turn has no default timeout, its buffered state is BOUNDED: the oracle
@@ -120,3 +170,5 @@ text-collection semantics are identical.
120
170
  **Teardown.** `close()` stops the underlying session (falling back to `kill` on a
121
171
  stop failure) and is a no-op if the session never started; it is the ergonomic
122
172
  counterpart to `stop`/`kill`/`teardown` and safe to call in a `finally`.
173
+
174
+ Native question snapshots and answering are shared controls; see [§5.10](5.10-questions.md).
@@ -127,6 +127,14 @@ with no separate wall-clock delivery deadline. A candidate that settles before
127
127
  committing a turn releases the next due candidate immediately while readiness
128
128
  remains available.
129
129
 
130
+ An ergonomic `send`/`stream` turn holds queued loop delivery once its serialized
131
+ slot is reserved and the session is available, through its real boundary (§5.8),
132
+ so a due loop cannot supply
133
+ acceptance or completion evidence for a swallowed caller prompt. Caller controls
134
+ and recovery submissions remain eligible ahead of held loops. Nested holds release
135
+ independently; the final release resumes eligible due delivery, while shutdown or
136
+ loop cancellation discards pending delivery under the existing rules.
137
+
130
138
  If the process stops or exits before a due prompt is submitted, its transient
131
139
  due state is discarded and its definition becomes `waiting` for resume. A live
132
140
  scheduling or submission failure emits a `failed` loop event and rearms the
@@ -141,7 +149,9 @@ If the loop already committed its prompt, cancellation does not interrupt that
141
149
  active agent turn. An unknown, expired, cancelled, or otherwise finished ID
142
150
  fails with `loop_not_found` and cannot affect another loop. `listLoops` and
143
151
  `cancelLoop` remain available on stopped or exited raw sessions; `createLoop`
144
- does not. The lazy wrappers apply the existing lazy-start behavior to all three
152
+ does not. Once a successful same-process resume supersedes a raw session, its
153
+ `createLoop` and `cancelLoop` reject with `session_not_running`; they cannot report
154
+ a durable change that the successor did not receive. The lazy wrappers apply the existing lazy-start behavior to all three
145
155
  methods when no underlying session exists yet.
146
156
 
147
157
  The `loop` event is live-only and follows the union above. `created` carries a
@@ -17,3 +17,5 @@ concepts in this section, including the stable `ElwoodErrorName` union.
17
17
  - [5.7 CodexSessionApi (the raw live session)](5.7-codex-session-api.md)
18
18
  - [5.8 The session API — `ClaudeSession` / `CodexSession`](5.8-session-api.md)
19
19
  - [5.9 Recurring session loops](5.9-loops.md)
20
+
21
+ - [5.10 Native questions](5.10-questions.md)
@@ -39,6 +39,17 @@ If a future Claude version adds events, the MVP may reject them as invalid hook
39
39
  input and fail open until first-class types are added. Elwood should add an
40
40
  unknown-but-safe event path before promising forward-compatible hook handling.
41
41
 
42
+ `StopFailure` identifies a rejected Claude turn even when diagnostic fields drift.
43
+ After validating the common hook envelope, ingress MUST admit missing or arbitrarily
44
+ shaped `error`, `error_details`, and `last_assistant_message` fields. Their public
45
+ TypeScript types are optional `unknown`; consumers must narrow them before use.
46
+ Other event schemas retain their existing validation.
47
+
48
+ Human-readable rejection diagnostics prefer a nonblank string `error_details`, then
49
+ `Claude rejected the turn: <error>` for a nonblank string `error`, and otherwise
50
+ `Claude rejected the turn.`. Each diagnostic field is bounded to 2,000 characters
51
+ plus an ellipsis before interpolation. Assistant text is not a rejection reason.
52
+
42
53
  ### 6.2 Routing
43
54
 
44
55
  Each launched Claude process receives an Elwood session identifier in its
@@ -71,6 +82,31 @@ If a handler times out, throws, rejects, disconnects, or returns an invalid
71
82
  runtime value, Elwood returns no decision to Claude and emits `hookError` to the
72
83
  parent app.
73
84
 
85
+ When a `Stop` result is finalized (normal completion, timeout, or other fail-open),
86
+ its registered handler and hook-scoped observers of `hook`, `activity`,
87
+ `hookError`/`hook_error`, and `hook_observer_failed` diagnostics lose authority
88
+ in continuations that preserve their asynchronous execution context to admit new
89
+ queue-backed input to that same live session. Promise continuations and async work
90
+ created within the callback carry this boundary. Registering a callback on a
91
+ pre-existing event source does not bind that source to the Stop context; input
92
+ from its later independently dispatched callbacks is treated as unrelated caller
93
+ input.
94
+ Later `sendPrompt`, `sendMessage`, or `sendGuidance` calls from that context reject with
95
+ `wait_timeout` before image capture, attachment, or queue admission, including the
96
+ lazy session facade. The boundary identifies the live runtime instance, so another
97
+ adapter or state directory may reuse the same Elwood ID without sharing authority.
98
+ Already admitted input remains valid; the bridge does not wait for unawaited observers
99
+ or timed-out user code. Unrelated caller contexts, other sessions, non-Stop hooks,
100
+ raw keys, and independent non-turn controls are unaffected. Internal queue
101
+ notifications, loop scheduling and settlement, and persistent transcript polling
102
+ do not inherit this authority. This includes queue admission, cancellation, wakeup,
103
+ dispatch, and settlement for non-turn controls such as compaction and model
104
+ selection. A caller registering a Promise continuation on one of these controls
105
+ inside Stop still carries the original Stop boundary; internal detachment does
106
+ not renew that caller’s authority. Recognized malformed Stop bridge diagnostics
107
+ use the same exact live-instance boundary and close when synchronous diagnostic
108
+ delivery returns; asynchronous diagnostic continuations cannot admit late input.
109
+
74
110
  Fail-open does not mean silent. `hookError` must include:
75
111
 
76
112
  - `elwoodSessionId`
@@ -108,6 +144,38 @@ a `hookError`, matching the token-mismatch fail-open.
108
144
 
109
145
  ### 6.4 Typed hook responses
110
146
 
147
+ Observational listener failures must not prevent Claude hook dispatch, replace a
148
+ validated wire response or blocking decision, or skip readiness and Stop bookkeeping.
149
+ Hook, activity, hook-error, transcript, and lifecycle notifications are isolated at
150
+ the hook boundary. Each invocation emits at most one content-free
151
+ `hook_observer_failed` warning (§5.7), identifying the first failed phase; warning
152
+ observer failures are contained without recursive diagnostics (C-HOOK-22).
153
+ Returned native observer Promises are observed through the captured intrinsic
154
+ `Promise.prototype.then`, without awaiting them or reading an instance's own `then`.
155
+ Their rejections are contained even after the hook reply completes when their
156
+ constructor and `Symbol.species` support normal ECMAScript reaction attachment.
157
+ Listeners run in the host process, not a sandbox: nonreturning synchronous listener
158
+ code or Promise metadata can block the host. A constructor/species that prevents
159
+ native attachment leaves its rejection handling with the caller. An attachment
160
+ throw is reported as a notification failure, without caching an unattached Promise;
161
+ a subsequent notification retries attachment. Elwood neither mutates caller Promise
162
+ metadata nor opens a debugger session to bypass it. The first observed failure
163
+ selects the diagnostic phase, and late failures do not emit additional warnings.
164
+ Diagnostic retention is limited to the newest 1,024 pending observer registrations
165
+ per session emitter. When this cap is exceeded, the oldest registration is detached
166
+ from its invocation boundary; its eventual rejection is still consumed but no
167
+ longer produces a diagnostic. Repeated returns of the same pending Promise share
168
+ one rejection handler. Settled registrations are released immediately. Diagnostic
169
+ warnings are frozen before delivery, and their activity projection is captured
170
+ before any warning listener runs.
171
+ Within a hook notification scope, synchronous listener failures are captured at
172
+ each emission, so later derived status activity and committed transcript records
173
+ are still delivered. Outside this scope, ordinary synchronous emission retains
174
+ its existing throw-after-fan-out behavior. A hook-scoped ready-status listener
175
+ failure reports `hook_observer_failed`; because the ready transition completes, it
176
+ does not also report `initial_ready_fallback`. C-API-42 still applies to a transition
177
+ that actually throws outside the notification boundary.
178
+
111
179
  Elwood MUST model Claude hook inputs and outputs as discriminated TypeScript
112
180
  unions.
113
181
 
@@ -118,6 +186,53 @@ unions.
118
186
  - Unknown future tools and MCP tools may use `Record<string, unknown>` or
119
187
  `unknown` with a safe raw tool name.
120
188
  - Hook bridge JSON must be runtime-validated before it reaches handlers.
189
+ The normalized, bridge-owned JSON event is deeply frozen before any observation
190
+ or handler dispatch. Hook observers and activity raw payloads cannot mutate
191
+ routing, tool inputs, response validation, or readiness/Stop bookkeeping.
192
+ Freezing introduces no additional input depth or size limit beyond the bridge
193
+ request contract.
194
+ - A numeric field MUST be a finite number. `NaN` and `±Infinity` are rejected at
195
+ ingress and in `updatedInput` rewrites, because JSON has no encoding for them
196
+ and `JSON.stringify` would put a `null` on the wire where the CLI's schema
197
+ requires a number. This applies to EVERY tool: schema-less inputs (MCP, generic,
198
+ and future tools) have no field table, so the rule is enforced structurally over
199
+ the whole value, including nested records and arrays. Traversal allows at most
200
+ 128 edges from the input root and 100,000 value visits, counting the root,
201
+ primitives, and every occurrence of a shared child. Ancestor cycles are invalid;
202
+ repeated children on separate paths are valid within these limits. Cyclic or
203
+ over-limit shapes fail validation without throwing. Invalid rewrites produce the
204
+ existing `invalid_response` hook error and a bridge response with no decision.
205
+ Structural values must consist of null, strings, booleans, finite numbers,
206
+ arrays, and plain records (including null-prototype records). Undefined values
207
+ retain JavaScript JSON omission/null semantics. Bigints, functions, symbols,
208
+ boxed primitives, proxies, custom prototypes, callable `toJSON` hooks, and
209
+ enumerable accessor properties are invalid. Other non-enumerable fields are
210
+ ignored; validation does not invoke getters or custom serializers. Each
211
+ child's budget is checked before reading its property descriptor. The complete
212
+ response envelope independently obeys the snapshot limits below.
213
+ - Before result validation, Claude handler responses are copied into detached data.
214
+ Validation and wire serialization use that same snapshot, so later handler mutation
215
+ cannot replace a validated rewrite. Wire output and blocking decisions are captured
216
+ before result activity observers run. Only genuine Promises are awaited; direct
217
+ response-shaped thenables are validated as data without invoking `then`. Snapshotting reads only own enumerable data
218
+ properties, never invokes accessors or serializers, and rejects proxies, boxed
219
+ primitives, non-finite numbers, bigints, functions, symbols, custom prototypes,
220
+ and cycles. Null-prototype records are valid. Non-callable `toJSON` data fields
221
+ are ordinary data; callable or accessor-backed serializers are invalid even when
222
+ non-enumerable. Other non-enumerable properties are ignored as they are by JSON.
223
+ Undefined values and array holes retain JSON omission/null semantics. Responses
224
+ are limited to 128 edges on each root-to-leaf path (the root is depth zero) and
225
+ 100,000 value visits, counting the root, undefined values, array holes, and
226
+ repeated occurrences of shared children. Invalid snapshots yield `invalid_response`
227
+ and no bridge decision (C-HOOK-21). Claude response wrappers across async dispatch
228
+ and the socket reply envelope do not inherit `then` or `toJSON` behavior.
229
+
230
+ Task and plan inputs follow Claude's documented native field names: `TaskGet`
231
+ uses `taskId`; `TaskOutput` uses `task_id`, `block`, and `timeout`; `TaskStop`
232
+ accepts optional `task_id` and the deprecated `shell_id`. `CronDelete` uses `id`.
233
+ `ExitPlanMode.allowedPrompts` contains `{ tool: "Bash", prompt: string }` objects,
234
+ not strings. These shapes apply to both ingress and partial input rewrites.
235
+ See the [Claude tool reference](https://code.claude.com/docs/en/agent-sdk/typescript#tool-input-types).
121
236
 
122
237
  Invalid states should be unrepresentable where TypeScript can enforce that. For
123
238
  example, a `Notification` handler should not be able to return a blocking
@@ -13,3 +13,5 @@ complementary:
13
13
  `AskUserQuestion` is explicitly in scope. Elwood must type it and allow a
14
14
  `PreToolUse` handler to answer it programmatically by returning an allowed
15
15
  decision with updated input containing answers.
16
+
17
+ Native unanswered `AskUserQuestion` dialogs also support the live question controls in §5.10. Caller hook decisions retain precedence; Elwood does not extend the hook deadline to await a host answer.
@@ -46,6 +46,31 @@ unions.
46
46
  - Observe-only or unsupported response states must be rejected by the type system
47
47
  and runtime validation. Parent handlers must return `undefined` for no
48
48
  decision; an empty object is invalid and must fail open with `hookError`.
49
+ - Tool-keyed lookup, for both the exact tool name and the `unknown` fallback, MUST
50
+ consider only OWN properties of the handler map. A tool name that merely matches an
51
+ inherited member resolves to no handler, so a CLI-supplied name cannot reach a
52
+ function the caller never registered for it.
53
+
54
+ The validated Codex hook event, including nested tool input, is frozen before
55
+ parent observation or handler routing. A handler response is detached before
56
+ validation, so later mutation of the handler-owned value cannot change it.
57
+ Elwood fixes the validated wire reply and Stop blocking decision before result
58
+ activity observers run. Observer mutation cannot change policy input, the native
59
+ reply, or Stop readiness. Invalid response data fails open with `hookError`
60
+ (C-HOOK-23).
61
+
62
+ Observational hook, activity, hook-error, transcript, and lifecycle listener
63
+ failures must not replace Codex hook decisions or skip turn bookkeeping. Each
64
+ hook invocation reports at most one bounded, content-free `hook_observer_failed`
65
+ warning for its first failed phase. Returned native observer Promise rejections
66
+ are consumed without delaying the hook reply; warning delivery failures do not
67
+ recurse (C-HOOK-22). The same boundary covers bridge error notifications.
68
+ The one-shot initial-ready transition retains its separate C-API-42 fallback
69
+ warning and queue-release guarantee for synchronous listener throws. Returned
70
+ status/activity observer Promise rejections share the enclosing hook boundary
71
+ when readiness fires within `SessionStart`; standalone resume-composer or deadline
72
+ readiness instead reports `initial_ready_observer_failed`. Neither delays
73
+ readiness or the hook reply.
49
74
 
50
75
  Decision note: Codex `PreToolUse` and `PermissionRequest` both produce
51
76
  event-specific JSON under `hookSpecificOutput`, but they do not use the same
@@ -74,3 +99,68 @@ Elwood must document this limitation and provide a live-only transcript
74
99
  observation event. The event may summarize transcript item kind, label, and text,
75
100
  and may include the raw item for immediate in-memory rendering. Elwood must not
76
101
  persist raw transcript items or derived prompt/tool content in Elwood state.
102
+
103
+ Committed assistant commentary is normalized as `assistant_progress` under
104
+ §5.4, separately from final `assistant_message` activity. The transcript summary
105
+ uses `kind: "commentary"`, `label: "assistant"`, and readable `text` for the
106
+ canonical response item, including array-form `output_text` content. Progress
107
+ does not establish readiness or complete a caller's turn.
108
+
109
+ The finalized-Stop input boundary in §6.3 also applies to Codex: late registered
110
+ Stop-handler and hook-scoped observer continuations that preserve their async
111
+ execution context cannot admit new queue-backed input to the same live runtime
112
+ instance after the result is finalized.
113
+ Independent callbacks dispatched by pre-existing event sources, internal queue
114
+ and loop work, and persistent transcript polling remain outside that short-lived
115
+ authority.
116
+
117
+ ### 7A.5 Native questions
118
+
119
+ The shared question controls in §5.10 support current Codex `request_user_input`
120
+ and `request_user_input_async` terminal editors. Committed function-call arguments
121
+ provide complete metadata; a matching native editor or queued-question badge is
122
+ required before publishing an actionable request. Rejected calls and historical
123
+ transcript content never create requests. Mirrors retain the original identities.
124
+
125
+ `request_user_input` publishes one grouped blocking request with ordered prompts,
126
+ headers, choices and descriptions. The captured native tool requires nonempty
127
+ choices, adds the real selectable `None of the above` option, and accepts optional
128
+ notes alongside a selected choice. Elwood exposes that native option with its own
129
+ opaque option ID; it may be chosen without notes. Text alone selects that native
130
+ alternative and adds the text as notes. Elwood supports these pages through the native
131
+ editor, preserving the group until the matching committed tool result confirms
132
+ acceptance. Unsupported secret or changed layouts receive no speculative input.
133
+ Every question must omit `isSecret` or set it to boolean `false`; `true` and
134
+ malformed supplied values reject the complete native request before publication.
135
+
136
+ Each asynchronous question is an independent queued request, with its own
137
+ acceptance unit. Suggested choices use the first 32 native choices, then omit labels exceeding
138
+ 512 UTF-8 bytes without filling those gaps from later choices. Free text is
139
+ available instead of a suggestion. Native question-bearing
140
+ async messages remain question metadata even when their phase is `final_answer`;
141
+ they never become final assistant activity. Answering opens the confirmed native
142
+ editor and uses its question-answer route, preserving other pending questions.
143
+ Ordinary composer submission must remain held because it clears queued questions.
144
+
145
+ Committed native reply envelopes close matching queued requests as answered.
146
+ Conclusive local removal closes them as unavailable when no answer is confirmed;
147
+ live turn completion/interruption/failure also retires remaining requests. Badge
148
+ redraws and countdowns do not invent an expiry deadline. Availability is live-only
149
+ and independent of whether Codex continues working. A blocking modal contributes
150
+ the existing blocked state; the queued editor does not manufacture a turn boundary.
151
+
152
+ Question automation retains at most 256 pending native acceptance units and
153
+ 1 MiB of aggregate UTF-8 candidate metadata, including native identities and
154
+ serialized question definitions. Each individual call is also limited to 256
155
+ question definitions and 1 MiB of UTF-8 input metadata before normalization.
156
+ Retired native identities are retained for replay suppression up to 4,096 keys
157
+ and 1 MiB of UTF-8 key data. Exceeding any limit closes exposed requests as
158
+ `unavailable`, clears retained candidate/identity state, and disables question
159
+ automation for the remainder of that session; it never evicts a tombstone and
160
+ then republishes an old request. Raw human input remains available. Ordinary
161
+ input remains held for unknown native identities until explicit native turn end;
162
+ raw human terminal input remains available. A matching supported editor can still
163
+ publish recognized requests. One content-free `question_automation_disabled`
164
+ warning and normalized warning activity diagnose budget disablement. Overflow does not
165
+ invent an answer, expiry deadline, or turn boundary. Unchanged native redraws
166
+ must not republish unchanged candidates or repeatedly copy the request registry.
package/prd/08-state.md CHANGED
@@ -43,15 +43,53 @@ reused; the socket path is a per-launch runtime value, embedded only in the gene
43
43
  private bridge script and never in the session record, so a
44
44
  recorded socket path can never be trusted. `teardown` removes the whole socket
45
45
  home (every launch's socket) along with the session directory, so no per-launch
46
- socket can leak undiscoverably across restart/resume cycles. Because `teardown`
47
- removes the whole home, running two live sessions that share a full identity
48
- (`stateDir`, adapter, and session id) concurrently is UNSUPPORTED — they would
49
- also share the session directory, record file, and resume id, and one's teardown
50
- would remove the other's live socket. A given session identity has at most one
51
- live session at a time; a failed START (not a teardown) removes only its own
52
- socket file, so an overlapping failed launch never disturbs a live one. `stateDir`
46
+ socket can leak undiscoverably across restart/resume cycles. Across separate Elwood
47
+ processes, running two live sessions with the same full identity (`stateDir`,
48
+ adapter, and session id) is unsupported: the processes share files and socket
49
+ homes without a cross-process ownership protocol. Within one process, overlapping
50
+ resume and cleanup follow the successor protocol below. A failed start removes
51
+ only its own socket file, preserving any overlapping launch. `stateDir`
53
52
  length MUST NOT constrain whether a session can start.
54
53
 
54
+ Within one Elwood process, a validated resume attempt revokes the prior launch's
55
+ shared-state ownership before asynchronous preflight. A superseded launch may
56
+ finish its own runtime cleanup, but cannot overwrite loop definitions or remove
57
+ the shared session directory or socket home. Each loop persistence write and
58
+ destructive path removal checks the current launch generation at the mutation itself,
59
+ including after awaited shutdown work and on repeated shutdown calls. Until resume
60
+ succeeds, the prior launch may continue ordinary loop and record persistence, but its shutdown
61
+ cannot clear shared loops or files. Its `kill` or `teardown` still stops its own runtime,
62
+ but waits for the pending reservation to settle before deciding shared cleanup: a
63
+ committed successor keeps its state, while a failed successor permits the predecessor
64
+ to finish the requested cleanup before its shutdown promise resolves. A pending
65
+ successor does not activate loop timers. Successful activation rereads the latest
66
+ durable loop definitions and revokes prior scheduling in the same synchronous commit,
67
+ so a successful predecessor cancellation or creation is preserved. An activation
68
+ read failure stops the built launch before ownership rolls back. If resume fails,
69
+ ownership returns to the prior
70
+ viable launch only when no newer reservation or launch has replaced that attempt.
71
+ A failed overlapping launch therefore preserves the original live launch's cleanup
72
+ and persistence behavior. This is an
73
+ in-process successor guarantee, not cross-process launch serialization. Allowed root-owned filesystem
74
+ aliases use one canonical, validated state identity for launch ownership, runtime
75
+ paths, and socket homes; no-follow validation precedes canonicalization. Startup
76
+ publication of session records is generation-owned. Bridge scripts and generated
77
+ settings instead use fresh per-launch filenames permanently bound to that launch's
78
+ PTY. Pending or committed successors never redirect a predecessor's hook policy. A failed
79
+ attempt restores each prior file only while it still owns the reservation and the
80
+ file still contains that attempt's exact published bytes. A newer predecessor
81
+ record update or newer generation is preserved. If a predecessor updates a file
82
+ between two pending-launch writes, that external version becomes the rollback
83
+ baseline for the later write. Pending-launch hook record writes participate in the
84
+ same transaction. Superseded or failed generations cannot publish metadata.
85
+ A rollback failure is reported as
86
+ `state_corrupt`, not as a successful restoration. Rollback attempts every independent
87
+ file restoration, settles the failed reservation and restores the prior viable owner
88
+ even when one restoration fails. Failed entries remain eligible for an exact-byte
89
+ retry only while no newer generation has replaced that restored owner. Rollback
90
+ unlinks are fsync-backed like other state changes. Identity-only CLI cleanup removes
91
+ state only when no same-process live launch or pending reservation owns it.
92
+
55
93
  ### 8.2 Session record
56
94
 
57
95
  The schema-version-1 core session record persists only the minimum needed to
@@ -74,9 +112,10 @@ bridge scripts contain the fresh IPC token and socket path in owner-only files.
74
112
  Nothing else is persisted in the core record. In particular it MUST NOT persist session status,
75
113
  timestamps, warnings, terminal size, the hook bridge
76
114
  authentication token, the socket path, or any Elwood-owned runtime file paths.
77
- Status and warnings are live-only (§5.7). Runtime file paths are pure functions of
78
- the state directory, session id, and adapter, so they are DERIVED on demand rather
79
- than stored. The socket HOME is a deterministic function of that same identity (a
115
+ Status and warnings are live-only (§5.7). Runtime artifacts use fresh launch
116
+ identifiers beneath the validated session directory and are never read from a stored record. Their filenames remain fixed for
117
+ the owning PTY's lifetime, including while a later launch is pending. The socket
118
+ HOME is a deterministic function of that same identity (a
80
119
  bounded fingerprint, §8.1), so every launch resolves the same one without storing
81
120
  it. The bridge authentication token and the socket FILE inside that home are minted
82
121
  FRESH on every start and resume and never trusted from disk — a recorded token or
@@ -125,3 +164,5 @@ ordinary session record; a later resume has no loops.
125
164
  metadata, generated settings/config, bridge route records, sockets, and
126
165
  temporary files. It must not remove agent-owned global transcripts/auth state or
127
166
  project/user settings that Elwood did not create.
167
+
168
+ Native question requests, opaque IDs and answers are live-only (§5.10); none is added to Elwood persistence.
@@ -27,6 +27,13 @@
27
27
  session env.
28
28
  9. Return a `CodexSessionApi` object once the process and bridge are ready.
29
29
 
30
+ Both adapters inspect received PTY output during the bounded startup health check,
31
+ independently of terminal rendering. The collector retains at most the first
32
+ 64 KiB of UTF-8 output, ending on a complete code point. If a chunk exceeds the
33
+ remaining budget, its remainder and all subsequent chunks are discarded; later
34
+ output cannot fill a gap in that prefix. The collector releases its retained
35
+ output after the check succeeds or fails.
36
+
30
37
  ### 9.2 Compatibility checks
31
38
 
32
39
  Elwood MUST check the installed Claude Code version during startup. The minimum
@@ -80,11 +87,48 @@ a second update. This mutual exclusion also applies across separate Elwood paren
80
87
  processes for the same macOS user and adapter: an atomic lease names the adapter in
81
88
  a stable per-account cache independent of `TMPDIR`; contenders wait without
82
89
  blocking the event loop, then invalidate their local caches and continue without
83
- running a duplicate update. The lease records the owner's process id and a unique
90
+ running a duplicate update. Contender waiting is bounded to 60 seconds; an owner
91
+ that has not finished by then causes the contender to skip its update and warn,
92
+ without deleting the owner's lease. This warning uses `errorCode: "update_active"`
93
+ and a canonical message explaining that the update was skipped because another
94
+ updater is still active; no local update command ran, so it carries no exit status
95
+ or stderr. The lease records the owner's process id and a unique
84
96
  generation. Cleanup removes only the generation it owns, a live owner is never
85
97
  evicted solely because the stale bound elapsed, and recovery of a dead owner's
86
98
  lease is itself serialized before removal, so neither cleanup nor concurrent stale
87
- recovery can evict a successor. Within one parent process, a FAILED shared update
99
+ recovery can evict a successor. The lease is published atomically: a claimant writes
100
+ its owner record inside a private staging directory and renames that directory into
101
+ place, so a lease either does not exist or holds a complete owner record: no
102
+ ownerless or partially written lease is ever published. A claimant interrupted
103
+ before the rename leaves only its staging directory; one interrupted after it leaves
104
+ a complete lease naming a dead owner, which ordinary stale recovery removes. Release is
105
+ atomic in the same way: the owner renames its lease away and then deletes it, so a
106
+ contender polling during release sees a whole lease or none, never an ownerless one
107
+ it would recover as stale and follow with a duplicate update. A release that cannot rename
108
+ at all still removes the lease where it stands rather than leaving it: its owner is alive,
109
+ so a lease left behind would make every later updater on that host wait forever on a process
110
+ that has already finished updating. Each lease holder removes
111
+ a bounded number of that adapter's leftovers, of both kinds — staging left by an
112
+ interrupted claimant and retired directories left by a release that renamed but did not
113
+ delete — under one shared budget, so later holders finish whatever one holder leaves. An update whose aborted probe reports a process group it could not confirm gone
114
+ (the typed update error's `cleanupProcessGroupId` detail) does not simply release its
115
+ lease. Elwood observes that group for up to one additional second without signaling
116
+ it; a group that exits within the window is not retained. A group still live is
117
+ recorded on the lease as its only holder, so the lease outlives the parent process:
118
+ contenders skip their update immediately with the `update_active` warning and a
119
+ message saying another updater's process group has not exited, rather than waiting
120
+ or starting a competing installer. Recovery removes this guard only after confirming
121
+ every recorded group has exited; elapsed time or the parent's death alone is
122
+ insufficient, and once the groups are gone the lease is recoverable whatever its age.
123
+ If the group record cannot be written, the owner process keeps the obligation itself:
124
+ it retries the record on an unreferenced timer and releases the lease as soon as the
125
+ groups have exited, so a failed write never holds exclusion for the owner's lifetime.
126
+ A lease directory that already exists, even one without an
127
+ owner record, is a wait condition: it is recovered as stale rather than claimed
128
+ over. An unreadable owner record still fails safe: it may belong
129
+ to a live updater writing a record format this version cannot read, so it is never
130
+ treated as dead. That is why a claim must not be able to publish one.
131
+ Within one parent process, a FAILED shared update
88
132
  is likewise shared once — every concurrent caller observes the same failure,
89
133
  re-reads the installed version, and proceeds through the compatibility gate; the
90
134
  failure is never cached in a way that rejects those callers or poisons a later
@@ -98,7 +142,25 @@ failure.
98
142
  Each probe is bounded so a broken or hostile CLI on PATH cannot hang or flood
99
143
  the host: a probe that does not exit within a default timeout (15 seconds) or
100
144
  whose captured output exceeds a per-stream byte cap (1,000,000 bytes) is
101
- killed, and its captured output is truncated to the cap. Truncation happens on
145
+ killed, and its captured output is truncated to the cap. Abort cleanup has an
146
+ additional one-second bound: an aborted probe retries process-group termination,
147
+ falls back to terminating the direct child once group signals have kept failing,
148
+ and awaits exit within that window. A process-group id is signaled only while the
149
+ probe's direct child (the group leader) is still unreaped, because only then is
150
+ the number guaranteed not to have been reissued to an unrelated group; afterwards
151
+ Elwood only observes the group until it exits and never signals the bare number.
152
+ Cleanup that is confirmed within the window reports no cleanup error; the group is
153
+ observed once more when the window ends, and the window is measured on a monotonic
154
+ clock. Unconfirmed cleanup adds two details to the probe's typed error: the
155
+ allowlisted `cleanupErrorCode`, and `cleanupProcessGroupId`, which is diagnostic
156
+ only — the id may already have been reissued to an unrelated group, so a consumer
157
+ must never signal it. Every
158
+ unresolved aborted probe, including version
159
+ and capability probes, remains owned by an asynchronous reaper while the parent
160
+ is alive. Retries use an unreferenced timer, do not prolong host shutdown, and
161
+ stop signaling after a successful group kill; ownership ends when the group is
162
+ confirmed gone. A retained reaper holds process-liveness state only; the probe's
163
+ captured output is released once its result is delivered. Truncation happens on
102
164
  a UTF-8 code-point boundary — an incomplete trailing sequence is dropped — so
103
165
  the decoded output re-encodes to at most the cap rather than growing via a
104
166
  replacement character. This applies to every
@@ -191,6 +253,20 @@ generated files, including loop definitions, unless kill or teardown is
191
253
  requested. Any unsubmitted due state is discarded. (Session status is live-only and is
192
254
  not written to the record, §8.2.)
193
255
 
256
+ A resume started by an exit listener supersedes the old launch's shared-state
257
+ ownership (§8.1). Deferred or repeated teardown of that old object still cleans its
258
+ own resources, but cannot clear the successor's loops or remove its files/socket.
259
+
260
+ Runtime cleanup first allows received terminal output to render, then disposes
261
+ the renderer (C-LIFE-12). The drain covers output that arrives while it is in
262
+ progress: it ends only when a whole settle pass completes with nothing new
263
+ received from the PTY, and the entire drain shares one one-second budget. It does
264
+ not delay the native process-exit notification, terminal status, or unconditional
265
+ process-group reap; the final `terminal:data` tail may therefore arrive after
266
+ `terminal:exit`. A stalled renderer, or a PTY that never goes quiet, is disposed
267
+ when the budget expires. Explicit direct `terminal.dispose()` does not wait for
268
+ pending output.
269
+
194
270
  Reaping the leader's process group is unconditional on every exit path
195
271
  (C-LIFE-10). On an unsolicited PTY exit the terminal status is submitted first,
196
272
  then the group is reaped in a `finally`, so transcript-drain, warning-emission, or
package/prd/10-errors.md CHANGED
@@ -28,6 +28,7 @@ Initial required error names:
28
28
  | `resume_unavailable` | A resume request cannot be completed from available session metadata. |
29
29
  | `pty_start_failed` | PTY or shell startup failed. |
30
30
  | `hook_bridge_failed` | The hook bridge or IPC endpoint could not be initialized. |
31
+ | `input_queue_full` | A live session control queue would exceed 1,024 outstanding operations or 8 MiB aggregate UTF-8 input text; no input or attachment is performed for the rejected operation. |
31
32
  | `session_not_running` | Operation requires a running process but the session is stopped. |
32
33
  | `termination_failed` | A stop/kill request did not observe process exit after escalation, or the PTY exited but its process group could not be confirmed reaped. |
33
34
  | `teardown_failed` | Elwood could not remove all owned session files. |
@@ -37,8 +38,8 @@ Initial required error names:
37
38
  | `login_failed` | The interactive `/login` re-authentication flow reported an explicit failure or an invalid authorization code. |
38
39
  | `login_timeout` | The interactive `/login` re-authentication flow did not report success before the timeout. |
39
40
  | `invalid_image` | An `images` input is not attachable: an unsupported/absent byte format, empty bytes, a path that is not a readable file, or a total image count/size beyond the documented limits (C-API-44). Raised before any partial input reaches the composer. |
40
- | `image_attach_failed` | An image could not be confirmed attached: the CLI's `[Image #N]` chip did not appear before the confirmation timeout, or the OS clipboard could not be read/written. No text is submitted afterward. (A session that TERMINATES mid-attach rejects with `session_not_running`, like any queued op.) (C-API-44/45/46) |
41
- | `wait_timeout` | A `waitForStatus`/`waitForActivity` call did not observe its condition before the timeout. |
41
+ | `image_attach_failed` | An image could not be confirmed attached: the CLI's `[Image #N]` chip did not appear before the confirmation timeout, the OS clipboard could not be read/written, or terminal rendering permanently failed. No text is submitted afterward. (A session that TERMINATES mid-attach rejects with `session_not_running`, like any queued op.) (C-API-44/45/46) |
42
+ | `wait_timeout` | A `waitForStatus`/`waitForActivity` call did not observe its condition before the timeout, the PTY rejected a staged-draft cleanup write before successor input, or raw input replaced an initial/replay ergonomic submission awaiting empty-input confirmation (§5.3). The same code rejects queue-backed input admitted from an expired Stop callback/observer context (§6.3), before terminal-state checks even after teardown. Cleanup failures retain the pending draft and use a bounded message without raw PTY diagnostics. |
42
43
  | `invalid_loop` | A loop request or recognized `/loop` command violates the documented shape, interval, or UTF-8 message bounds. |
43
44
  | `loop_limit_reached` | Creating a loop would exceed 50 unexpired definitions; existing loops are unchanged. |
44
45
  | `loop_not_found` | Cancellation targeted an unknown or already-finished loop ID. |
@@ -53,3 +54,9 @@ Startup errors MUST NOT swallow their underlying cause: `pty_start_failed`,
53
54
  message in `details.cause`, plus `errno`, `syscall`, and `path` fields when
54
55
  the underlying error exposes them, so consumers can diagnose environment
55
56
  failures without instrumenting Elwood internals.
57
+
58
+ Native question controls add `question_not_found` (no current request with this live ID), `invalid_question_answer` (invalid complete answer batch or timeout option), and `question_answer_failed` (busy, revoked, unsupported or unacknowledged native input). Messages and details do not echo answer text.
59
+
60
+ Native question answer failures may include only the fixed `details.category` values
61
+ `frame_wait`, `adapter`, `terminal_write`, `native_acceptance`, or `aborted`
62
+ (§5.10). Raw native exceptions and submitted answer values are never retained.