@with-logic/elwood 0.1.3 → 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 (1199) hide show
  1. package/CHANGELOG.md +383 -2
  2. package/CONTRIBUTING.md +29 -18
  3. package/README.md +32 -7
  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 +2 -1
  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/models/settings.d.ts +2 -0
  207. package/dist/cli/models/settings.d.ts.map +1 -1
  208. package/dist/cli/request/index.d.ts.map +1 -1
  209. package/dist/cli/request/index.js +1 -0
  210. package/dist/cli/request/index.js.map +1 -1
  211. package/dist/cli/run/index.d.ts.map +1 -1
  212. package/dist/cli/run/index.js +3 -1
  213. package/dist/cli/run/index.js.map +1 -1
  214. package/dist/cli/run/output.d.ts.map +1 -1
  215. package/dist/cli/run/output.js +1 -0
  216. package/dist/cli/run/output.js.map +1 -1
  217. package/dist/cli/run/subscribe.js +1 -1
  218. package/dist/cli/run/subscribe.js.map +1 -1
  219. package/dist/cli/session/index.d.ts +2 -0
  220. package/dist/cli/session/index.d.ts.map +1 -1
  221. package/dist/cli/session/index.js +3 -0
  222. package/dist/cli/session/index.js.map +1 -1
  223. package/dist/cli/session/launch.d.ts +0 -3
  224. package/dist/cli/session/launch.d.ts.map +1 -1
  225. package/dist/cli/session/launch.js +0 -11
  226. package/dist/cli/session/launch.js.map +1 -1
  227. package/dist/cli/sessions/list.d.ts.map +1 -1
  228. package/dist/cli/sessions/list.js +5 -4
  229. package/dist/cli/sessions/list.js.map +1 -1
  230. package/dist/cli/types.d.ts +2 -0
  231. package/dist/cli/types.d.ts.map +1 -1
  232. package/dist/cli/update-attention.d.ts +2 -1
  233. package/dist/cli/update-attention.d.ts.map +1 -1
  234. package/dist/cli/update-attention.js +11 -2
  235. package/dist/cli/update-attention.js.map +1 -1
  236. package/dist/codex/accepted-turn.d.ts +4 -0
  237. package/dist/codex/accepted-turn.d.ts.map +1 -0
  238. package/dist/codex/accepted-turn.js +17 -0
  239. package/dist/codex/accepted-turn.js.map +1 -0
  240. package/dist/codex/config/transaction.d.ts +22 -0
  241. package/dist/codex/config/transaction.d.ts.map +1 -1
  242. package/dist/codex/config/transaction.js +61 -31
  243. package/dist/codex/config/transaction.js.map +1 -1
  244. package/dist/codex/hooks/index.d.ts +6 -1
  245. package/dist/codex/hooks/index.d.ts.map +1 -1
  246. package/dist/codex/hooks/validate-result.d.ts.map +1 -1
  247. package/dist/codex/hooks/validate-result.js +2 -1
  248. package/dist/codex/hooks/validate-result.js.map +1 -1
  249. package/dist/codex/hooks/validate.d.ts.map +1 -1
  250. package/dist/codex/hooks/validate.js +1 -3
  251. package/dist/codex/hooks/validate.js.map +1 -1
  252. package/dist/codex/hooks/values.d.ts +3 -0
  253. package/dist/codex/hooks/values.d.ts.map +1 -0
  254. package/dist/codex/hooks/values.js +5 -0
  255. package/dist/codex/hooks/values.js.map +1 -0
  256. package/dist/codex/images/attach.d.ts +3 -1
  257. package/dist/codex/images/attach.d.ts.map +1 -1
  258. package/dist/codex/images/attach.js +10 -11
  259. package/dist/codex/images/attach.js.map +1 -1
  260. package/dist/codex/images/clipboard.d.ts.map +1 -1
  261. package/dist/codex/images/clipboard.js +11 -3
  262. package/dist/codex/images/clipboard.js.map +1 -1
  263. package/dist/codex/model-picker.d.ts.map +1 -1
  264. package/dist/codex/model-picker.js +23 -5
  265. package/dist/codex/model-picker.js.map +1 -1
  266. package/dist/codex/preflight.d.ts.map +1 -1
  267. package/dist/codex/preflight.js +2 -2
  268. package/dist/codex/preflight.js.map +1 -1
  269. package/dist/codex/questions/acceptance.d.ts +18 -0
  270. package/dist/codex/questions/acceptance.d.ts.map +1 -0
  271. package/dist/codex/questions/acceptance.js +70 -0
  272. package/dist/codex/questions/acceptance.js.map +1 -0
  273. package/dist/codex/questions/adapter.d.ts +26 -0
  274. package/dist/codex/questions/adapter.d.ts.map +1 -0
  275. package/dist/codex/questions/adapter.js +163 -0
  276. package/dist/codex/questions/adapter.js.map +1 -0
  277. package/dist/codex/questions/candidate-acceptance.d.ts +5 -0
  278. package/dist/codex/questions/candidate-acceptance.d.ts.map +1 -0
  279. package/dist/codex/questions/candidate-acceptance.js +8 -0
  280. package/dist/codex/questions/candidate-acceptance.js.map +1 -0
  281. package/dist/codex/questions/candidate-authority.d.ts +10 -0
  282. package/dist/codex/questions/candidate-authority.d.ts.map +1 -0
  283. package/dist/codex/questions/candidate-authority.js +25 -0
  284. package/dist/codex/questions/candidate-authority.js.map +1 -0
  285. package/dist/codex/questions/candidate-disable.d.ts +5 -0
  286. package/dist/codex/questions/candidate-disable.d.ts.map +1 -0
  287. package/dist/codex/questions/candidate-disable.js +14 -0
  288. package/dist/codex/questions/candidate-disable.js.map +1 -0
  289. package/dist/codex/questions/candidate-publication.d.ts +7 -0
  290. package/dist/codex/questions/candidate-publication.d.ts.map +1 -0
  291. package/dist/codex/questions/candidate-publication.js +8 -0
  292. package/dist/codex/questions/candidate-publication.js.map +1 -0
  293. package/dist/codex/questions/candidate-reservation.d.ts +6 -0
  294. package/dist/codex/questions/candidate-reservation.d.ts.map +1 -0
  295. package/dist/codex/questions/candidate-reservation.js +7 -0
  296. package/dist/codex/questions/candidate-reservation.js.map +1 -0
  297. package/dist/codex/questions/candidate-store.d.ts +53 -0
  298. package/dist/codex/questions/candidate-store.d.ts.map +1 -0
  299. package/dist/codex/questions/candidate-store.js +188 -0
  300. package/dist/codex/questions/candidate-store.js.map +1 -0
  301. package/dist/codex/questions/candidate.d.ts +40 -0
  302. package/dist/codex/questions/candidate.d.ts.map +1 -0
  303. package/dist/codex/questions/candidate.js +39 -0
  304. package/dist/codex/questions/candidate.js.map +1 -0
  305. package/dist/codex/questions/candidates.d.ts +16 -0
  306. package/dist/codex/questions/candidates.d.ts.map +1 -0
  307. package/dist/codex/questions/candidates.js +113 -0
  308. package/dist/codex/questions/candidates.js.map +1 -0
  309. package/dist/codex/questions/chrome.d.ts +10 -0
  310. package/dist/codex/questions/chrome.d.ts.map +1 -0
  311. package/dist/codex/questions/chrome.js +21 -0
  312. package/dist/codex/questions/chrome.js.map +1 -0
  313. package/dist/codex/questions/definitions.d.ts +19 -0
  314. package/dist/codex/questions/definitions.d.ts.map +1 -0
  315. package/dist/codex/questions/definitions.js +86 -0
  316. package/dist/codex/questions/definitions.js.map +1 -0
  317. package/dist/codex/questions/draft.d.ts +25 -0
  318. package/dist/codex/questions/draft.d.ts.map +1 -0
  319. package/dist/codex/questions/draft.js +76 -0
  320. package/dist/codex/questions/draft.js.map +1 -0
  321. package/dist/codex/questions/driver-support.d.ts +6 -0
  322. package/dist/codex/questions/driver-support.d.ts.map +1 -0
  323. package/dist/codex/questions/driver-support.js +7 -0
  324. package/dist/codex/questions/driver-support.js.map +1 -0
  325. package/dist/codex/questions/driver.d.ts +10 -0
  326. package/dist/codex/questions/driver.d.ts.map +1 -0
  327. package/dist/codex/questions/driver.js +139 -0
  328. package/dist/codex/questions/driver.js.map +1 -0
  329. package/dist/codex/questions/frame.d.ts +36 -0
  330. package/dist/codex/questions/frame.d.ts.map +1 -0
  331. package/dist/codex/questions/frame.js +138 -0
  332. package/dist/codex/questions/frame.js.map +1 -0
  333. package/dist/codex/questions/labels.d.ts +6 -0
  334. package/dist/codex/questions/labels.d.ts.map +1 -0
  335. package/dist/codex/questions/labels.js +6 -0
  336. package/dist/codex/questions/labels.js.map +1 -0
  337. package/dist/codex/questions/limits.d.ts +18 -0
  338. package/dist/codex/questions/limits.d.ts.map +1 -0
  339. package/dist/codex/questions/limits.js +61 -0
  340. package/dist/codex/questions/limits.js.map +1 -0
  341. package/dist/codex/questions/native-pending.d.ts +7 -0
  342. package/dist/codex/questions/native-pending.d.ts.map +1 -0
  343. package/dist/codex/questions/native-pending.js +37 -0
  344. package/dist/codex/questions/native-pending.js.map +1 -0
  345. package/dist/codex/questions/owned-editor.d.ts +12 -0
  346. package/dist/codex/questions/owned-editor.d.ts.map +1 -0
  347. package/dist/codex/questions/owned-editor.js +37 -0
  348. package/dist/codex/questions/owned-editor.js.map +1 -0
  349. package/dist/codex/questions/pending-submissions.d.ts +12 -0
  350. package/dist/codex/questions/pending-submissions.d.ts.map +1 -0
  351. package/dist/codex/questions/pending-submissions.js +42 -0
  352. package/dist/codex/questions/pending-submissions.js.map +1 -0
  353. package/dist/codex/questions/records.d.ts +29 -0
  354. package/dist/codex/questions/records.d.ts.map +1 -0
  355. package/dist/codex/questions/records.js +113 -0
  356. package/dist/codex/questions/records.js.map +1 -0
  357. package/dist/codex/questions/selection.d.ts +3 -0
  358. package/dist/codex/questions/selection.d.ts.map +1 -0
  359. package/dist/codex/questions/selection.js +18 -0
  360. package/dist/codex/questions/selection.js.map +1 -0
  361. package/dist/codex/questions/session.d.ts +6 -0
  362. package/dist/codex/questions/session.d.ts.map +1 -0
  363. package/dist/codex/questions/session.js +21 -0
  364. package/dist/codex/questions/session.js.map +1 -0
  365. package/dist/codex/screen/clearance.d.ts +17 -0
  366. package/dist/codex/screen/clearance.d.ts.map +1 -0
  367. package/dist/codex/screen/clearance.js +170 -0
  368. package/dist/codex/screen/clearance.js.map +1 -0
  369. package/dist/codex/screen/empty-input.d.ts +4 -0
  370. package/dist/codex/screen/empty-input.d.ts.map +1 -0
  371. package/dist/codex/screen/empty-input.js +10 -0
  372. package/dist/codex/screen/empty-input.js.map +1 -0
  373. package/dist/codex/screen/live-clearance.d.ts +6 -0
  374. package/dist/codex/screen/live-clearance.d.ts.map +1 -0
  375. package/dist/codex/screen/live-clearance.js +34 -0
  376. package/dist/codex/screen/live-clearance.js.map +1 -0
  377. package/dist/codex/screen/retained-clearance.d.ts +19 -0
  378. package/dist/codex/screen/retained-clearance.d.ts.map +1 -0
  379. package/dist/codex/screen/retained-clearance.js +67 -0
  380. package/dist/codex/screen/retained-clearance.js.map +1 -0
  381. package/dist/codex/screen/staged-input.d.ts +7 -0
  382. package/dist/codex/screen/staged-input.d.ts.map +1 -0
  383. package/dist/codex/screen/staged-input.js +40 -0
  384. package/dist/codex/screen/staged-input.js.map +1 -0
  385. package/dist/codex/screen/working.d.ts +4 -0
  386. package/dist/codex/screen/working.d.ts.map +1 -0
  387. package/dist/codex/screen/working.js +5 -0
  388. package/dist/codex/screen/working.js.map +1 -0
  389. package/dist/codex/screen-table.d.ts +4 -1
  390. package/dist/codex/screen-table.d.ts.map +1 -1
  391. package/dist/codex/screen-table.js +44 -11
  392. package/dist/codex/screen-table.js.map +1 -1
  393. package/dist/codex/session/build.d.ts +1 -0
  394. package/dist/codex/session/build.d.ts.map +1 -1
  395. package/dist/codex/session/build.js +62 -68
  396. package/dist/codex/session/build.js.map +1 -1
  397. package/dist/codex/session/caller-input.d.ts +18 -0
  398. package/dist/codex/session/caller-input.d.ts.map +1 -0
  399. package/dist/codex/session/caller-input.js +50 -0
  400. package/dist/codex/session/caller-input.js.map +1 -0
  401. package/dist/codex/session/cleanup.d.ts +2 -1
  402. package/dist/codex/session/cleanup.d.ts.map +1 -1
  403. package/dist/codex/session/cleanup.js +3 -2
  404. package/dist/codex/session/cleanup.js.map +1 -1
  405. package/dist/codex/session/cli-exit.d.ts +24 -0
  406. package/dist/codex/session/cli-exit.d.ts.map +1 -0
  407. package/dist/codex/session/cli-exit.js +43 -0
  408. package/dist/codex/session/cli-exit.js.map +1 -0
  409. package/dist/codex/session/hooks.d.ts +3 -0
  410. package/dist/codex/session/hooks.d.ts.map +1 -1
  411. package/dist/codex/session/hooks.js +66 -13
  412. package/dist/codex/session/hooks.js.map +1 -1
  413. package/dist/codex/session/index.d.ts +2 -1
  414. package/dist/codex/session/index.d.ts.map +1 -1
  415. package/dist/codex/session/index.js +23 -8
  416. package/dist/codex/session/index.js.map +1 -1
  417. package/dist/codex/session/initial-ready.d.ts +6 -0
  418. package/dist/codex/session/initial-ready.d.ts.map +1 -0
  419. package/dist/codex/session/initial-ready.js +9 -0
  420. package/dist/codex/session/initial-ready.js.map +1 -0
  421. package/dist/codex/session/instance.d.ts +19 -4
  422. package/dist/codex/session/instance.d.ts.map +1 -1
  423. package/dist/codex/session/instance.js +60 -30
  424. package/dist/codex/session/instance.js.map +1 -1
  425. package/dist/codex/session/resume.d.ts.map +1 -1
  426. package/dist/codex/session/resume.js +35 -26
  427. package/dist/codex/session/resume.js.map +1 -1
  428. package/dist/codex/session/runtime.d.ts.map +1 -1
  429. package/dist/codex/session/runtime.js +1 -2
  430. package/dist/codex/session/runtime.js.map +1 -1
  431. package/dist/codex/session/startup-warnings.d.ts +11 -0
  432. package/dist/codex/session/startup-warnings.d.ts.map +1 -0
  433. package/dist/codex/session/startup-warnings.js +9 -0
  434. package/dist/codex/session/startup-warnings.js.map +1 -0
  435. package/dist/codex/session/transcript.d.ts +3 -1
  436. package/dist/codex/session/transcript.d.ts.map +1 -1
  437. package/dist/codex/session/transcript.js +51 -8
  438. package/dist/codex/session/transcript.js.map +1 -1
  439. package/dist/codex/session/types.d.ts +4 -3
  440. package/dist/codex/session/types.d.ts.map +1 -1
  441. package/dist/codex/session/update-attention.d.ts +4 -0
  442. package/dist/codex/session/update-attention.d.ts.map +1 -0
  443. package/dist/codex/session/update-attention.js +18 -0
  444. package/dist/codex/session/update-attention.js.map +1 -0
  445. package/dist/codex/session/warnings.d.ts +2 -1
  446. package/dist/codex/session/warnings.d.ts.map +1 -1
  447. package/dist/codex/session/warnings.js +2 -1
  448. package/dist/codex/session/warnings.js.map +1 -1
  449. package/dist/codex/simple.d.ts +1 -0
  450. package/dist/codex/simple.d.ts.map +1 -1
  451. package/dist/codex/simple.js +2 -0
  452. package/dist/codex/simple.js.map +1 -1
  453. package/dist/codex/startup-prompts.d.ts +29 -14
  454. package/dist/codex/startup-prompts.d.ts.map +1 -1
  455. package/dist/codex/startup-prompts.js +113 -93
  456. package/dist/codex/startup-prompts.js.map +1 -1
  457. package/dist/codex/startup-warnings.d.ts +10 -0
  458. package/dist/codex/startup-warnings.d.ts.map +1 -0
  459. package/dist/codex/startup-warnings.js +65 -0
  460. package/dist/codex/startup-warnings.js.map +1 -0
  461. package/dist/codex/transcript/summary.d.ts +1 -1
  462. package/dist/codex/transcript/summary.d.ts.map +1 -1
  463. package/dist/codex/transcript/summary.js +18 -7
  464. package/dist/codex/transcript/summary.js.map +1 -1
  465. package/dist/codex/transcript/types.d.ts +23 -12
  466. package/dist/codex/transcript/types.d.ts.map +1 -1
  467. package/dist/codex/transcript/watcher.d.ts.map +1 -1
  468. package/dist/codex/transcript/watcher.js +2 -1
  469. package/dist/codex/transcript/watcher.js.map +1 -1
  470. package/dist/codex/update/classification.d.ts +27 -0
  471. package/dist/codex/update/classification.d.ts.map +1 -0
  472. package/dist/codex/update/classification.js +28 -0
  473. package/dist/codex/update/classification.js.map +1 -0
  474. package/dist/codex/update/evidence.d.ts +22 -0
  475. package/dist/codex/update/evidence.d.ts.map +1 -0
  476. package/dist/codex/update/evidence.js +69 -0
  477. package/dist/codex/update/evidence.js.map +1 -0
  478. package/dist/codex/update/layout.d.ts +7 -0
  479. package/dist/codex/update/layout.d.ts.map +1 -0
  480. package/dist/codex/update/layout.js +65 -0
  481. package/dist/codex/update/layout.js.map +1 -0
  482. package/dist/codex/update/recognition.d.ts +3 -0
  483. package/dist/codex/update/recognition.d.ts.map +1 -0
  484. package/dist/codex/update/recognition.js +7 -0
  485. package/dist/codex/update/recognition.js.map +1 -0
  486. package/dist/codex/update/selection.d.ts +7 -0
  487. package/dist/codex/update/selection.d.ts.map +1 -0
  488. package/dist/codex/update/selection.js +10 -0
  489. package/dist/codex/update/selection.js.map +1 -0
  490. package/dist/codex/update/skip-attempt.d.ts +25 -0
  491. package/dist/codex/update/skip-attempt.d.ts.map +1 -0
  492. package/dist/codex/update/skip-attempt.js +64 -0
  493. package/dist/codex/update/skip-attempt.js.map +1 -0
  494. package/dist/codex/update/tracker.d.ts +37 -0
  495. package/dist/codex/update/tracker.d.ts.map +1 -0
  496. package/dist/codex/update/tracker.js +156 -0
  497. package/dist/codex/update/tracker.js.map +1 -0
  498. package/dist/codex/update-identity.d.ts +23 -0
  499. package/dist/codex/update-identity.d.ts.map +1 -0
  500. package/dist/codex/update-identity.js +46 -0
  501. package/dist/codex/update-identity.js.map +1 -0
  502. package/dist/codex/update-prompt.d.ts +26 -17
  503. package/dist/codex/update-prompt.d.ts.map +1 -1
  504. package/dist/codex/update-prompt.js +65 -62
  505. package/dist/codex/update-prompt.js.map +1 -1
  506. package/dist/core/activity/index.d.ts +24 -3
  507. package/dist/core/activity/index.d.ts.map +1 -1
  508. package/dist/core/activity/index.js.map +1 -1
  509. package/dist/core/activity/meta.d.ts +6 -1
  510. package/dist/core/activity/meta.d.ts.map +1 -1
  511. package/dist/core/activity/meta.js.map +1 -1
  512. package/dist/core/activity/transcript.d.ts +4 -1
  513. package/dist/core/activity/transcript.d.ts.map +1 -1
  514. package/dist/core/activity/transcript.js +28 -18
  515. package/dist/core/activity/transcript.js.map +1 -1
  516. package/dist/core/agent-session.d.ts +2 -1
  517. package/dist/core/agent-session.d.ts.map +1 -1
  518. package/dist/core/async-mutex.d.ts +14 -8
  519. package/dist/core/async-mutex.d.ts.map +1 -1
  520. package/dist/core/async-mutex.js +48 -12
  521. package/dist/core/async-mutex.js.map +1 -1
  522. package/dist/core/attention.d.ts +6 -2
  523. package/dist/core/attention.d.ts.map +1 -1
  524. package/dist/core/attention.js +23 -9
  525. package/dist/core/attention.js.map +1 -1
  526. package/dist/core/control-queue/admission-scan.d.ts +10 -0
  527. package/dist/core/control-queue/admission-scan.d.ts.map +1 -0
  528. package/dist/core/control-queue/admission-scan.js +28 -0
  529. package/dist/core/control-queue/admission-scan.js.map +1 -0
  530. package/dist/core/control-queue/admission.d.ts +15 -0
  531. package/dist/core/control-queue/admission.d.ts.map +1 -0
  532. package/dist/core/control-queue/admission.js +70 -0
  533. package/dist/core/control-queue/admission.js.map +1 -0
  534. package/dist/core/control-queue/budget.d.ts +15 -0
  535. package/dist/core/control-queue/budget.d.ts.map +1 -0
  536. package/dist/core/control-queue/budget.js +33 -0
  537. package/dist/core/control-queue/budget.js.map +1 -0
  538. package/dist/core/control-queue/index.d.ts +6 -3
  539. package/dist/core/control-queue/index.d.ts.map +1 -1
  540. package/dist/core/control-queue/index.js +52 -28
  541. package/dist/core/control-queue/index.js.map +1 -1
  542. package/dist/core/control-queue/scan.d.ts +10 -0
  543. package/dist/core/control-queue/scan.d.ts.map +1 -0
  544. package/dist/core/control-queue/scan.js +24 -0
  545. package/dist/core/control-queue/scan.js.map +1 -0
  546. package/dist/core/control-queue/state.d.ts +19 -3
  547. package/dist/core/control-queue/state.d.ts.map +1 -1
  548. package/dist/core/control-queue/state.js +87 -15
  549. package/dist/core/control-queue/state.js.map +1 -1
  550. package/dist/core/control-queue/submission.d.ts +8 -0
  551. package/dist/core/control-queue/submission.d.ts.map +1 -0
  552. package/dist/core/control-queue/submission.js +41 -0
  553. package/dist/core/control-queue/submission.js.map +1 -0
  554. package/dist/core/control-queue/traits.d.ts +6 -9
  555. package/dist/core/control-queue/traits.d.ts.map +1 -1
  556. package/dist/core/control-queue/traits.js +2 -15
  557. package/dist/core/control-queue/traits.js.map +1 -1
  558. package/dist/core/control-queue/types.d.ts +28 -2
  559. package/dist/core/control-queue/types.d.ts.map +1 -1
  560. package/dist/core/errors.d.ts +7 -2
  561. package/dist/core/errors.d.ts.map +1 -1
  562. package/dist/core/errors.js +7 -0
  563. package/dist/core/errors.js.map +1 -1
  564. package/dist/core/freeze-hook-event.d.ts +6 -0
  565. package/dist/core/freeze-hook-event.d.ts.map +1 -0
  566. package/dist/core/freeze-hook-event.js +16 -0
  567. package/dist/core/freeze-hook-event.js.map +1 -0
  568. package/dist/core/hook-dispatch.d.ts +3 -2
  569. package/dist/core/hook-dispatch.d.ts.map +1 -1
  570. package/dist/core/hook-dispatch.js +14 -6
  571. package/dist/core/hook-dispatch.js.map +1 -1
  572. package/dist/core/hook-observation.d.ts +24 -0
  573. package/dist/core/hook-observation.d.ts.map +1 -0
  574. package/dist/core/hook-observation.js +68 -0
  575. package/dist/core/hook-observation.js.map +1 -0
  576. package/dist/core/hook-result.d.ts +12 -2
  577. package/dist/core/hook-result.d.ts.map +1 -1
  578. package/dist/core/hook-result.js +10 -9
  579. package/dist/core/hook-result.js.map +1 -1
  580. package/dist/core/hook-timeout.d.ts.map +1 -1
  581. package/dist/core/hook-timeout.js +3 -2
  582. package/dist/core/hook-timeout.js.map +1 -1
  583. package/dist/core/images/capture.d.ts +14 -0
  584. package/dist/core/images/capture.d.ts.map +1 -0
  585. package/dist/core/images/capture.js +35 -0
  586. package/dist/core/images/capture.js.map +1 -0
  587. package/dist/core/images/chip-wait.d.ts +14 -16
  588. package/dist/core/images/chip-wait.d.ts.map +1 -1
  589. package/dist/core/images/chip-wait.js +31 -34
  590. package/dist/core/images/chip-wait.js.map +1 -1
  591. package/dist/core/images/queued-budget.d.ts +18 -0
  592. package/dist/core/images/queued-budget.d.ts.map +1 -0
  593. package/dist/core/images/queued-budget.js +41 -0
  594. package/dist/core/images/queued-budget.js.map +1 -0
  595. package/dist/core/inert-record.d.ts +3 -0
  596. package/dist/core/inert-record.d.ts.map +1 -0
  597. package/dist/core/inert-record.js +6 -0
  598. package/dist/core/inert-record.js.map +1 -0
  599. package/dist/core/input/abort.d.ts +33 -2
  600. package/dist/core/input/abort.d.ts.map +1 -1
  601. package/dist/core/input/abort.js +42 -2
  602. package/dist/core/input/abort.js.map +1 -1
  603. package/dist/core/input/clear-ack.d.ts +10 -0
  604. package/dist/core/input/clear-ack.d.ts.map +1 -0
  605. package/dist/core/input/clear-ack.js +26 -0
  606. package/dist/core/input/clear-ack.js.map +1 -0
  607. package/dist/core/input/composer-cleanup.d.ts +33 -0
  608. package/dist/core/input/composer-cleanup.d.ts.map +1 -0
  609. package/dist/core/input/composer-cleanup.js +127 -0
  610. package/dist/core/input/composer-cleanup.js.map +1 -0
  611. package/dist/core/input/constants.d.ts +12 -0
  612. package/dist/core/input/constants.d.ts.map +1 -0
  613. package/dist/core/input/constants.js +12 -0
  614. package/dist/core/input/constants.js.map +1 -0
  615. package/dist/core/input/empty-frame.d.ts +4 -0
  616. package/dist/core/input/empty-frame.d.ts.map +1 -0
  617. package/dist/core/input/empty-frame.js +15 -0
  618. package/dist/core/input/empty-frame.js.map +1 -0
  619. package/dist/core/input/index.d.ts +8 -25
  620. package/dist/core/input/index.d.ts.map +1 -1
  621. package/dist/core/input/index.js +67 -102
  622. package/dist/core/input/index.js.map +1 -1
  623. package/dist/core/input/paste-guard.d.ts +34 -0
  624. package/dist/core/input/paste-guard.d.ts.map +1 -0
  625. package/dist/core/input/paste-guard.js +2 -0
  626. package/dist/core/input/paste-guard.js.map +1 -0
  627. package/dist/core/input/paste-nudge.d.ts +10 -0
  628. package/dist/core/input/paste-nudge.d.ts.map +1 -0
  629. package/dist/core/input/paste-nudge.js +91 -0
  630. package/dist/core/input/paste-nudge.js.map +1 -0
  631. package/dist/core/input/render-observation.d.ts +3 -0
  632. package/dist/core/input/render-observation.d.ts.map +1 -0
  633. package/dist/core/input/render-observation.js +38 -0
  634. package/dist/core/input/render-observation.js.map +1 -0
  635. package/dist/core/input/render-wakeup.d.ts +10 -0
  636. package/dist/core/input/render-wakeup.d.ts.map +1 -0
  637. package/dist/core/input/render-wakeup.js +45 -0
  638. package/dist/core/input/render-wakeup.js.map +1 -0
  639. package/dist/core/input/sanitize.d.ts +11 -0
  640. package/dist/core/input/sanitize.d.ts.map +1 -0
  641. package/dist/core/input/sanitize.js +19 -0
  642. package/dist/core/input/sanitize.js.map +1 -0
  643. package/dist/core/input/staged-composer.d.ts +12 -0
  644. package/dist/core/input/staged-composer.d.ts.map +1 -0
  645. package/dist/core/input/staged-composer.js +56 -0
  646. package/dist/core/input/staged-composer.js.map +1 -0
  647. package/dist/core/input/submission-cancel.d.ts +6 -0
  648. package/dist/core/input/submission-cancel.d.ts.map +1 -0
  649. package/dist/core/input/submission-cancel.js +18 -0
  650. package/dist/core/input/submission-cancel.js.map +1 -0
  651. package/dist/core/json-shape.d.ts +2 -0
  652. package/dist/core/json-shape.d.ts.map +1 -0
  653. package/dist/core/json-shape.js +6 -0
  654. package/dist/core/json-shape.js.map +1 -0
  655. package/dist/core/json-snapshot.d.ts +10 -0
  656. package/dist/core/json-snapshot.d.ts.map +1 -0
  657. package/dist/core/json-snapshot.js +84 -0
  658. package/dist/core/json-snapshot.js.map +1 -0
  659. package/dist/core/loops/scheduler.d.ts +1 -1
  660. package/dist/core/loops/scheduler.d.ts.map +1 -1
  661. package/dist/core/loops/scheduler.js +1 -2
  662. package/dist/core/loops/scheduler.js.map +1 -1
  663. package/dist/core/models/dialog-region.d.ts +16 -0
  664. package/dist/core/models/dialog-region.d.ts.map +1 -0
  665. package/dist/core/models/dialog-region.js +133 -0
  666. package/dist/core/models/dialog-region.js.map +1 -0
  667. package/dist/core/models/input.d.ts +1 -1
  668. package/dist/core/models/input.d.ts.map +1 -1
  669. package/dist/core/models/input.js.map +1 -1
  670. package/dist/core/models/intervention.d.ts +3 -0
  671. package/dist/core/models/intervention.d.ts.map +1 -0
  672. package/dist/core/models/intervention.js +12 -0
  673. package/dist/core/models/intervention.js.map +1 -0
  674. package/dist/core/models/picker.d.ts +14 -1
  675. package/dist/core/models/picker.d.ts.map +1 -1
  676. package/dist/core/models/picker.js +27 -6
  677. package/dist/core/models/picker.js.map +1 -1
  678. package/dist/core/models/rows.d.ts +42 -2
  679. package/dist/core/models/rows.d.ts.map +1 -1
  680. package/dist/core/models/rows.js +30 -3
  681. package/dist/core/models/rows.js.map +1 -1
  682. package/dist/core/models/tui-screen.d.ts +11 -1
  683. package/dist/core/models/tui-screen.d.ts.map +1 -1
  684. package/dist/core/models/tui-screen.js +22 -4
  685. package/dist/core/models/tui-screen.js.map +1 -1
  686. package/dist/core/module-require.d.ts +1 -1
  687. package/dist/core/module-require.js +1 -1
  688. package/dist/core/persona.d.ts +5 -4
  689. package/dist/core/persona.d.ts.map +1 -1
  690. package/dist/core/persona.js +18 -3
  691. package/dist/core/persona.js.map +1 -1
  692. package/dist/core/predicates.d.ts +9 -1
  693. package/dist/core/predicates.d.ts.map +1 -1
  694. package/dist/core/predicates.js +12 -2
  695. package/dist/core/predicates.js.map +1 -1
  696. package/dist/core/questions/abort.d.ts +2 -0
  697. package/dist/core/questions/abort.d.ts.map +1 -0
  698. package/dist/core/questions/abort.js +21 -0
  699. package/dist/core/questions/abort.js.map +1 -0
  700. package/dist/core/questions/activity-fields.d.ts +5 -0
  701. package/dist/core/questions/activity-fields.d.ts.map +1 -0
  702. package/dist/core/questions/activity-fields.js +15 -0
  703. package/dist/core/questions/activity-fields.js.map +1 -0
  704. package/dist/core/questions/activity.d.ts +6 -0
  705. package/dist/core/questions/activity.d.ts.map +1 -0
  706. package/dist/core/questions/activity.js +2 -0
  707. package/dist/core/questions/activity.js.map +1 -0
  708. package/dist/core/questions/adapter.d.ts +15 -0
  709. package/dist/core/questions/adapter.d.ts.map +1 -0
  710. package/dist/core/questions/adapter.js +2 -0
  711. package/dist/core/questions/adapter.js.map +1 -0
  712. package/dist/core/questions/attempt.d.ts +26 -0
  713. package/dist/core/questions/attempt.d.ts.map +1 -0
  714. package/dist/core/questions/attempt.js +85 -0
  715. package/dist/core/questions/attempt.js.map +1 -0
  716. package/dist/core/questions/controller.d.ts +24 -0
  717. package/dist/core/questions/controller.d.ts.map +1 -0
  718. package/dist/core/questions/controller.js +83 -0
  719. package/dist/core/questions/controller.js.map +1 -0
  720. package/dist/core/questions/correlation.d.ts +8 -0
  721. package/dist/core/questions/correlation.d.ts.map +1 -0
  722. package/dist/core/questions/correlation.js +11 -0
  723. package/dist/core/questions/correlation.js.map +1 -0
  724. package/dist/core/questions/cursor-provenance.d.ts +12 -0
  725. package/dist/core/questions/cursor-provenance.d.ts.map +1 -0
  726. package/dist/core/questions/cursor-provenance.js +19 -0
  727. package/dist/core/questions/cursor-provenance.js.map +1 -0
  728. package/dist/core/questions/deadline.d.ts +2 -0
  729. package/dist/core/questions/deadline.d.ts.map +1 -0
  730. package/dist/core/questions/deadline.js +11 -0
  731. package/dist/core/questions/deadline.js.map +1 -0
  732. package/dist/core/questions/dispatch.d.ts +17 -0
  733. package/dist/core/questions/dispatch.d.ts.map +1 -0
  734. package/dist/core/questions/dispatch.js +46 -0
  735. package/dist/core/questions/dispatch.js.map +1 -0
  736. package/dist/core/questions/errors.d.ts +8 -0
  737. package/dist/core/questions/errors.d.ts.map +1 -0
  738. package/dist/core/questions/errors.js +10 -0
  739. package/dist/core/questions/errors.js.map +1 -0
  740. package/dist/core/questions/input.d.ts +13 -0
  741. package/dist/core/questions/input.d.ts.map +1 -0
  742. package/dist/core/questions/input.js +93 -0
  743. package/dist/core/questions/input.js.map +1 -0
  744. package/dist/core/questions/io.d.ts +23 -0
  745. package/dist/core/questions/io.d.ts.map +1 -0
  746. package/dist/core/questions/io.js +2 -0
  747. package/dist/core/questions/io.js.map +1 -0
  748. package/dist/core/questions/notification-errors.d.ts +14 -0
  749. package/dist/core/questions/notification-errors.d.ts.map +1 -0
  750. package/dist/core/questions/notification-errors.js +45 -0
  751. package/dist/core/questions/notification-errors.js.map +1 -0
  752. package/dist/core/questions/observers.d.ts +17 -0
  753. package/dist/core/questions/observers.d.ts.map +1 -0
  754. package/dist/core/questions/observers.js +57 -0
  755. package/dist/core/questions/observers.js.map +1 -0
  756. package/dist/core/questions/registry.d.ts +35 -0
  757. package/dist/core/questions/registry.d.ts.map +1 -0
  758. package/dist/core/questions/registry.js +158 -0
  759. package/dist/core/questions/registry.js.map +1 -0
  760. package/dist/core/questions/transaction.d.ts +23 -0
  761. package/dist/core/questions/transaction.d.ts.map +1 -0
  762. package/dist/core/questions/transaction.js +97 -0
  763. package/dist/core/questions/transaction.js.map +1 -0
  764. package/dist/core/questions/types.d.ts +62 -0
  765. package/dist/core/questions/types.d.ts.map +1 -0
  766. package/dist/core/questions/types.js +2 -0
  767. package/dist/core/questions/types.js.map +1 -0
  768. package/dist/core/questions/validate.d.ts +16 -0
  769. package/dist/core/questions/validate.d.ts.map +1 -0
  770. package/dist/core/questions/validate.js +95 -0
  771. package/dist/core/questions/validate.js.map +1 -0
  772. package/dist/core/rendered-observers.d.ts +7 -2
  773. package/dist/core/rendered-observers.d.ts.map +1 -1
  774. package/dist/core/rendered-observers.js +44 -10
  775. package/dist/core/rendered-observers.js.map +1 -1
  776. package/dist/core/screen-facts.d.ts +8 -3
  777. package/dist/core/screen-facts.d.ts.map +1 -1
  778. package/dist/core/screen-facts.js +6 -3
  779. package/dist/core/screen-facts.js.map +1 -1
  780. package/dist/core/simple/boundary-observer.d.ts +30 -0
  781. package/dist/core/simple/boundary-observer.d.ts.map +1 -0
  782. package/dist/core/simple/boundary-observer.js +111 -0
  783. package/dist/core/simple/boundary-observer.js.map +1 -0
  784. package/dist/core/simple/boundary-signal.d.ts +31 -0
  785. package/dist/core/simple/boundary-signal.d.ts.map +1 -0
  786. package/dist/core/simple/boundary-signal.js +19 -0
  787. package/dist/core/simple/boundary-signal.js.map +1 -0
  788. package/dist/core/simple/captured-input.d.ts +19 -0
  789. package/dist/core/simple/captured-input.d.ts.map +1 -0
  790. package/dist/core/simple/captured-input.js +78 -0
  791. package/dist/core/simple/captured-input.js.map +1 -0
  792. package/dist/core/simple/close.d.ts +6 -0
  793. package/dist/core/simple/close.d.ts.map +1 -0
  794. package/dist/core/simple/close.js +20 -0
  795. package/dist/core/simple/close.js.map +1 -0
  796. package/dist/core/simple/events.d.ts +2 -2
  797. package/dist/core/simple/events.js +2 -2
  798. package/dist/core/simple/loop-boundary.d.ts +12 -0
  799. package/dist/core/simple/loop-boundary.d.ts.map +1 -0
  800. package/dist/core/simple/loop-boundary.js +68 -0
  801. package/dist/core/simple/loop-boundary.js.map +1 -0
  802. package/dist/core/simple/loop-hold.d.ts +7 -0
  803. package/dist/core/simple/loop-hold.d.ts.map +1 -0
  804. package/dist/core/simple/loop-hold.js +9 -0
  805. package/dist/core/simple/loop-hold.js.map +1 -0
  806. package/dist/core/simple/native-boundary.d.ts +15 -0
  807. package/dist/core/simple/native-boundary.d.ts.map +1 -0
  808. package/dist/core/simple/native-boundary.js +18 -0
  809. package/dist/core/simple/native-boundary.js.map +1 -0
  810. package/dist/core/simple/native-idle.d.ts +17 -0
  811. package/dist/core/simple/native-idle.d.ts.map +1 -0
  812. package/dist/core/simple/native-idle.js +25 -0
  813. package/dist/core/simple/native-idle.js.map +1 -0
  814. package/dist/core/simple/observe-boundary.d.ts +28 -0
  815. package/dist/core/simple/observe-boundary.d.ts.map +1 -0
  816. package/dist/core/simple/observe-boundary.js +13 -0
  817. package/dist/core/simple/observe-boundary.js.map +1 -0
  818. package/dist/core/simple/owned-loop.d.ts +8 -0
  819. package/dist/core/simple/owned-loop.d.ts.map +1 -0
  820. package/dist/core/simple/owned-loop.js +42 -0
  821. package/dist/core/simple/owned-loop.js.map +1 -0
  822. package/dist/core/simple/session.d.ts +7 -7
  823. package/dist/core/simple/session.d.ts.map +1 -1
  824. package/dist/core/simple/session.js +20 -33
  825. package/dist/core/simple/session.js.map +1 -1
  826. package/dist/core/simple/submission-context.d.ts +13 -0
  827. package/dist/core/simple/submission-context.d.ts.map +1 -0
  828. package/dist/core/simple/submission-context.js +35 -0
  829. package/dist/core/simple/submission-context.js.map +1 -0
  830. package/dist/core/simple/turn/bounds.d.ts +22 -0
  831. package/dist/core/simple/turn/bounds.d.ts.map +1 -0
  832. package/dist/core/simple/turn/bounds.js +22 -0
  833. package/dist/core/simple/turn/bounds.js.map +1 -0
  834. package/dist/core/simple/turn/defaults.d.ts +24 -0
  835. package/dist/core/simple/turn/defaults.d.ts.map +1 -0
  836. package/dist/core/simple/turn/defaults.js +34 -0
  837. package/dist/core/simple/turn/defaults.js.map +1 -0
  838. package/dist/core/simple/turn-acceptance.d.ts +20 -3
  839. package/dist/core/simple/turn-acceptance.d.ts.map +1 -1
  840. package/dist/core/simple/turn-acceptance.js +55 -5
  841. package/dist/core/simple/turn-acceptance.js.map +1 -1
  842. package/dist/core/simple/turn-boundary.d.ts +7 -2
  843. package/dist/core/simple/turn-boundary.d.ts.map +1 -1
  844. package/dist/core/simple/turn-boundary.js +17 -5
  845. package/dist/core/simple/turn-boundary.js.map +1 -1
  846. package/dist/core/simple/turn-gate.d.ts.map +1 -1
  847. package/dist/core/simple/turn-gate.js +1 -11
  848. package/dist/core/simple/turn-gate.js.map +1 -1
  849. package/dist/core/simple/turn-identity.d.ts +28 -0
  850. package/dist/core/simple/turn-identity.d.ts.map +1 -0
  851. package/dist/core/simple/turn-identity.js +74 -0
  852. package/dist/core/simple/turn-identity.js.map +1 -0
  853. package/dist/core/simple/turn-types.d.ts +11 -4
  854. package/dist/core/simple/turn-types.d.ts.map +1 -1
  855. package/dist/core/simple/turn-types.js +1 -6
  856. package/dist/core/simple/turn-types.js.map +1 -1
  857. package/dist/core/simple/turn.d.ts +7 -30
  858. package/dist/core/simple/turn.d.ts.map +1 -1
  859. package/dist/core/simple/turn.js +75 -75
  860. package/dist/core/simple/turn.js.map +1 -1
  861. package/dist/core/startup/barrier.d.ts +37 -0
  862. package/dist/core/startup/barrier.d.ts.map +1 -0
  863. package/dist/core/startup/barrier.js +59 -0
  864. package/dist/core/startup/barrier.js.map +1 -0
  865. package/dist/core/startup/frame.d.ts +2 -0
  866. package/dist/core/startup/frame.d.ts.map +1 -1
  867. package/dist/core/startup/frame.js +12 -0
  868. package/dist/core/startup/frame.js.map +1 -1
  869. package/dist/core/startup/warnings.d.ts +5 -0
  870. package/dist/core/startup/warnings.d.ts.map +1 -0
  871. package/dist/core/startup/warnings.js +14 -0
  872. package/dist/core/startup/warnings.js.map +1 -0
  873. package/dist/core/startup/write.d.ts +13 -11
  874. package/dist/core/startup/write.d.ts.map +1 -1
  875. package/dist/core/startup/write.js +12 -5
  876. package/dist/core/startup/write.js.map +1 -1
  877. package/dist/core/stop-input.d.ts +19 -0
  878. package/dist/core/stop-input.d.ts.map +1 -0
  879. package/dist/core/stop-input.js +47 -0
  880. package/dist/core/stop-input.js.map +1 -0
  881. package/dist/core/terminal-options.d.ts +13 -3
  882. package/dist/core/terminal-options.d.ts.map +1 -1
  883. package/dist/core/terminal-options.js +17 -7
  884. package/dist/core/terminal-options.js.map +1 -1
  885. package/dist/core/terminal-replay.d.ts +1 -0
  886. package/dist/core/terminal-replay.d.ts.map +1 -1
  887. package/dist/core/terminal-replay.js +6 -0
  888. package/dist/core/terminal-replay.js.map +1 -1
  889. package/dist/core/timers.d.ts +15 -0
  890. package/dist/core/timers.d.ts.map +1 -0
  891. package/dist/core/timers.js +17 -0
  892. package/dist/core/timers.js.map +1 -0
  893. package/dist/core/trust/allowlist.d.ts +24 -1
  894. package/dist/core/trust/allowlist.d.ts.map +1 -1
  895. package/dist/core/trust/allowlist.js +39 -12
  896. package/dist/core/trust/allowlist.js.map +1 -1
  897. package/dist/core/trust/blocking.d.ts +21 -10
  898. package/dist/core/trust/blocking.d.ts.map +1 -1
  899. package/dist/core/trust/blocking.js +64 -18
  900. package/dist/core/trust/blocking.js.map +1 -1
  901. package/dist/core/trust/clearance.d.ts +20 -0
  902. package/dist/core/trust/clearance.d.ts.map +1 -0
  903. package/dist/core/trust/clearance.js +25 -0
  904. package/dist/core/trust/clearance.js.map +1 -0
  905. package/dist/core/trust/copy.d.ts +19 -0
  906. package/dist/core/trust/copy.d.ts.map +1 -0
  907. package/dist/core/trust/copy.js +23 -0
  908. package/dist/core/trust/copy.js.map +1 -0
  909. package/dist/core/trust/dialog.d.ts +28 -0
  910. package/dist/core/trust/dialog.d.ts.map +1 -0
  911. package/dist/core/trust/dialog.js +96 -0
  912. package/dist/core/trust/dialog.js.map +1 -0
  913. package/dist/core/trust/options.d.ts +9 -0
  914. package/dist/core/trust/options.d.ts.map +1 -0
  915. package/dist/core/trust/options.js +9 -0
  916. package/dist/core/trust/options.js.map +1 -0
  917. package/dist/core/trust/prompts.d.ts +16 -37
  918. package/dist/core/trust/prompts.d.ts.map +1 -1
  919. package/dist/core/trust/prompts.js +10 -18
  920. package/dist/core/trust/prompts.js.map +1 -1
  921. package/dist/core/trust/responder.d.ts +27 -45
  922. package/dist/core/trust/responder.d.ts.map +1 -1
  923. package/dist/core/trust/responder.js +178 -108
  924. package/dist/core/trust/responder.js.map +1 -1
  925. package/dist/core/trust/types.d.ts +36 -0
  926. package/dist/core/trust/types.d.ts.map +1 -0
  927. package/dist/core/trust/types.js +17 -0
  928. package/dist/core/trust/types.js.map +1 -0
  929. package/dist/core/trust/view.d.ts +31 -0
  930. package/dist/core/trust/view.d.ts.map +1 -0
  931. package/dist/core/trust/view.js +52 -0
  932. package/dist/core/trust/view.js.map +1 -0
  933. package/dist/core/trust/write.d.ts +31 -0
  934. package/dist/core/trust/write.d.ts.map +1 -0
  935. package/dist/core/trust/write.js +148 -0
  936. package/dist/core/trust/write.js.map +1 -0
  937. package/dist/core/turn-state.d.ts +6 -0
  938. package/dist/core/turn-state.d.ts.map +1 -1
  939. package/dist/core/turn-state.js +31 -1
  940. package/dist/core/turn-state.js.map +1 -1
  941. package/dist/core/types.d.ts +4 -2
  942. package/dist/core/types.d.ts.map +1 -1
  943. package/dist/core/warnings/auth.d.ts +25 -0
  944. package/dist/core/warnings/auth.d.ts.map +1 -0
  945. package/dist/core/warnings/auth.js +2 -0
  946. package/dist/core/warnings/auth.js.map +1 -0
  947. package/dist/core/warnings/index.d.ts +9 -16
  948. package/dist/core/warnings/index.d.ts.map +1 -1
  949. package/dist/core/warnings/index.js +2 -3
  950. package/dist/core/warnings/index.js.map +1 -1
  951. package/dist/core/warnings/lifecycle.d.ts +25 -1
  952. package/dist/core/warnings/lifecycle.d.ts.map +1 -1
  953. package/dist/core/warnings/lifecycle.js +1 -1
  954. package/dist/core/warnings/questions.d.ts +23 -0
  955. package/dist/core/warnings/questions.d.ts.map +1 -0
  956. package/dist/core/warnings/questions.js +2 -0
  957. package/dist/core/warnings/questions.js.map +1 -0
  958. package/dist/core/warnings/session.d.ts +3 -2
  959. package/dist/core/warnings/session.d.ts.map +1 -1
  960. package/dist/core/warnings/session.js +3 -2
  961. package/dist/core/warnings/session.js.map +1 -1
  962. package/dist/core/warnings/transcript.d.ts +12 -0
  963. package/dist/core/warnings/transcript.d.ts.map +1 -0
  964. package/dist/core/warnings/transcript.js +2 -0
  965. package/dist/core/warnings/transcript.js.map +1 -0
  966. package/dist/core/warnings/update.d.ts +11 -2
  967. package/dist/core/warnings/update.d.ts.map +1 -1
  968. package/dist/core/warnings/update.js +27 -4
  969. package/dist/core/warnings/update.js.map +1 -1
  970. package/dist/events/emitter.d.ts +18 -2
  971. package/dist/events/emitter.d.ts.map +1 -1
  972. package/dist/events/emitter.js +61 -14
  973. package/dist/events/emitter.js.map +1 -1
  974. package/dist/events/observer-errors.d.ts +9 -0
  975. package/dist/events/observer-errors.d.ts.map +1 -0
  976. package/dist/events/observer-errors.js +68 -0
  977. package/dist/events/observer-errors.js.map +1 -0
  978. package/dist/index.d.ts +1 -0
  979. package/dist/index.d.ts.map +1 -1
  980. package/dist/pty/node.d.ts.map +1 -1
  981. package/dist/pty/node.js +4 -0
  982. package/dist/pty/node.js.map +1 -1
  983. package/dist/pty/types.d.ts +5 -0
  984. package/dist/pty/types.d.ts.map +1 -1
  985. package/dist/runtime/probe-cleanup.d.ts +34 -0
  986. package/dist/runtime/probe-cleanup.d.ts.map +1 -0
  987. package/dist/runtime/probe-cleanup.js +139 -0
  988. package/dist/runtime/probe-cleanup.js.map +1 -0
  989. package/dist/runtime/probe.d.ts.map +1 -1
  990. package/dist/runtime/probe.js +18 -25
  991. package/dist/runtime/probe.js.map +1 -1
  992. package/dist/runtime/readiness/initial-ready.d.ts +13 -11
  993. package/dist/runtime/readiness/initial-ready.d.ts.map +1 -1
  994. package/dist/runtime/readiness/initial-ready.js +23 -18
  995. package/dist/runtime/readiness/initial-ready.js.map +1 -1
  996. package/dist/runtime/seams.d.ts +2 -1
  997. package/dist/runtime/seams.d.ts.map +1 -1
  998. package/dist/runtime/seams.js.map +1 -1
  999. package/dist/runtime/session/attention-clearance.d.ts +5 -0
  1000. package/dist/runtime/session/attention-clearance.d.ts.map +1 -0
  1001. package/dist/runtime/session/attention-clearance.js +20 -0
  1002. package/dist/runtime/session/attention-clearance.js.map +1 -0
  1003. package/dist/runtime/session/base.d.ts +17 -4
  1004. package/dist/runtime/session/base.d.ts.map +1 -1
  1005. package/dist/runtime/session/base.js +68 -14
  1006. package/dist/runtime/session/base.js.map +1 -1
  1007. package/dist/runtime/session/commands.d.ts +17 -3
  1008. package/dist/runtime/session/commands.d.ts.map +1 -1
  1009. package/dist/runtime/session/commands.js +60 -13
  1010. package/dist/runtime/session/commands.js.map +1 -1
  1011. package/dist/runtime/session/foreign-picker.d.ts +8 -0
  1012. package/dist/runtime/session/foreign-picker.d.ts.map +1 -0
  1013. package/dist/runtime/session/foreign-picker.js +18 -0
  1014. package/dist/runtime/session/foreign-picker.js.map +1 -0
  1015. package/dist/runtime/session/frames.d.ts +27 -0
  1016. package/dist/runtime/session/frames.d.ts.map +1 -0
  1017. package/dist/runtime/session/frames.js +80 -0
  1018. package/dist/runtime/session/frames.js.map +1 -0
  1019. package/dist/runtime/session/image-attach.d.ts +3 -15
  1020. package/dist/runtime/session/image-attach.d.ts.map +1 -1
  1021. package/dist/runtime/session/image-attach.js +9 -27
  1022. package/dist/runtime/session/image-attach.js.map +1 -1
  1023. package/dist/runtime/session/lifecycle.d.ts +20 -14
  1024. package/dist/runtime/session/lifecycle.d.ts.map +1 -1
  1025. package/dist/runtime/session/lifecycle.js +49 -47
  1026. package/dist/runtime/session/lifecycle.js.map +1 -1
  1027. package/dist/runtime/session/loops.d.ts +10 -1
  1028. package/dist/runtime/session/loops.d.ts.map +1 -1
  1029. package/dist/runtime/session/loops.js +61 -19
  1030. package/dist/runtime/session/loops.js.map +1 -1
  1031. package/dist/runtime/session/native-submission.d.ts +10 -0
  1032. package/dist/runtime/session/native-submission.d.ts.map +1 -0
  1033. package/dist/runtime/session/native-submission.js +62 -0
  1034. package/dist/runtime/session/native-submission.js.map +1 -0
  1035. package/dist/runtime/session/not-running.d.ts +13 -0
  1036. package/dist/runtime/session/not-running.d.ts.map +1 -0
  1037. package/dist/runtime/session/not-running.js +28 -0
  1038. package/dist/runtime/session/not-running.js.map +1 -0
  1039. package/dist/runtime/session/paste-recovery.d.ts +15 -0
  1040. package/dist/runtime/session/paste-recovery.d.ts.map +1 -0
  1041. package/dist/runtime/session/paste-recovery.js +30 -0
  1042. package/dist/runtime/session/paste-recovery.js.map +1 -0
  1043. package/dist/runtime/session/picker-cleanup.d.ts +56 -0
  1044. package/dist/runtime/session/picker-cleanup.d.ts.map +1 -0
  1045. package/dist/runtime/session/picker-cleanup.js +126 -0
  1046. package/dist/runtime/session/picker-cleanup.js.map +1 -0
  1047. package/dist/runtime/session/picker-input.d.ts +17 -0
  1048. package/dist/runtime/session/picker-input.d.ts.map +1 -0
  1049. package/dist/runtime/session/picker-input.js +74 -0
  1050. package/dist/runtime/session/picker-input.js.map +1 -0
  1051. package/dist/runtime/session/picker.d.ts +56 -0
  1052. package/dist/runtime/session/picker.d.ts.map +1 -0
  1053. package/dist/runtime/session/picker.js +143 -0
  1054. package/dist/runtime/session/picker.js.map +1 -0
  1055. package/dist/runtime/session/questions.d.ts +23 -0
  1056. package/dist/runtime/session/questions.d.ts.map +1 -0
  1057. package/dist/runtime/session/questions.js +25 -0
  1058. package/dist/runtime/session/questions.js.map +1 -0
  1059. package/dist/runtime/session/readiness.d.ts +6 -3
  1060. package/dist/runtime/session/readiness.d.ts.map +1 -1
  1061. package/dist/runtime/session/readiness.js +19 -8
  1062. package/dist/runtime/session/readiness.js.map +1 -1
  1063. package/dist/runtime/session/shutdown-binding.d.ts +9 -0
  1064. package/dist/runtime/session/shutdown-binding.d.ts.map +1 -1
  1065. package/dist/runtime/session/shutdown-binding.js +57 -8
  1066. package/dist/runtime/session/shutdown-binding.js.map +1 -1
  1067. package/dist/runtime/session/shutdown.d.ts +2 -5
  1068. package/dist/runtime/session/shutdown.d.ts.map +1 -1
  1069. package/dist/runtime/session/shutdown.js +12 -13
  1070. package/dist/runtime/session/shutdown.js.map +1 -1
  1071. package/dist/runtime/session/status-wiring.d.ts +9 -4
  1072. package/dist/runtime/session/status-wiring.d.ts.map +1 -1
  1073. package/dist/runtime/session/status-wiring.js +8 -5
  1074. package/dist/runtime/session/status-wiring.js.map +1 -1
  1075. package/dist/runtime/session/stop-completion.d.ts +23 -0
  1076. package/dist/runtime/session/stop-completion.d.ts.map +1 -0
  1077. package/dist/runtime/session/stop-completion.js +32 -0
  1078. package/dist/runtime/session/stop-completion.js.map +1 -0
  1079. package/dist/runtime/session/turn-submission.d.ts +9 -0
  1080. package/dist/runtime/session/turn-submission.d.ts.map +1 -0
  1081. package/dist/runtime/session/turn-submission.js +19 -0
  1082. package/dist/runtime/session/turn-submission.js.map +1 -0
  1083. package/dist/runtime/shutdown/terminal.d.ts +10 -0
  1084. package/dist/runtime/shutdown/terminal.d.ts.map +1 -0
  1085. package/dist/runtime/shutdown/terminal.js +38 -0
  1086. package/dist/runtime/shutdown/terminal.js.map +1 -0
  1087. package/dist/runtime/startup/buffer.d.ts +1 -1
  1088. package/dist/runtime/startup/buffer.d.ts.map +1 -1
  1089. package/dist/runtime/startup/buffer.js +14 -8
  1090. package/dist/runtime/startup/buffer.js.map +1 -1
  1091. package/dist/runtime/status-evidence.d.ts +7 -3
  1092. package/dist/runtime/status-evidence.d.ts.map +1 -1
  1093. package/dist/runtime/status-evidence.js +12 -10
  1094. package/dist/runtime/status-evidence.js.map +1 -1
  1095. package/dist/runtime/update/lock.d.ts +7 -0
  1096. package/dist/runtime/update/lock.d.ts.map +1 -1
  1097. package/dist/runtime/update/lock.js +102 -121
  1098. package/dist/runtime/update/lock.js.map +1 -1
  1099. package/dist/runtime/update/owner.d.ts +54 -0
  1100. package/dist/runtime/update/owner.d.ts.map +1 -0
  1101. package/dist/runtime/update/owner.js +131 -0
  1102. package/dist/runtime/update/owner.js.map +1 -0
  1103. package/dist/runtime/update/retained-lease.d.ts +13 -0
  1104. package/dist/runtime/update/retained-lease.d.ts.map +1 -0
  1105. package/dist/runtime/update/retained-lease.js +40 -0
  1106. package/dist/runtime/update/retained-lease.js.map +1 -0
  1107. package/dist/runtime/update/waiting.d.ts +4 -0
  1108. package/dist/runtime/update/waiting.d.ts.map +1 -0
  1109. package/dist/runtime/update/waiting.js +95 -0
  1110. package/dist/runtime/update/waiting.js.map +1 -0
  1111. package/dist/state/canonical-path.d.ts +2 -0
  1112. package/dist/state/canonical-path.d.ts.map +1 -0
  1113. package/dist/state/canonical-path.js +22 -0
  1114. package/dist/state/canonical-path.js.map +1 -0
  1115. package/dist/state/launch-ownership.d.ts +21 -0
  1116. package/dist/state/launch-ownership.d.ts.map +1 -0
  1117. package/dist/state/launch-ownership.js +154 -0
  1118. package/dist/state/launch-ownership.js.map +1 -0
  1119. package/dist/state/launch-publication.d.ts +7 -0
  1120. package/dist/state/launch-publication.d.ts.map +1 -0
  1121. package/dist/state/launch-publication.js +53 -0
  1122. package/dist/state/launch-publication.js.map +1 -0
  1123. package/dist/state/private-read.js +2 -1
  1124. package/dist/state/private-read.js.map +1 -1
  1125. package/dist/state/private-session.d.ts +1 -1
  1126. package/dist/state/private-session.d.ts.map +1 -1
  1127. package/dist/state/private-session.js +4 -1
  1128. package/dist/state/private-session.js.map +1 -1
  1129. package/dist/state/runtime-paths.d.ts +10 -9
  1130. package/dist/state/runtime-paths.d.ts.map +1 -1
  1131. package/dist/state/runtime-paths.js +14 -12
  1132. package/dist/state/runtime-paths.js.map +1 -1
  1133. package/dist/state/socket-home.d.ts +8 -4
  1134. package/dist/state/socket-home.d.ts.map +1 -1
  1135. package/dist/state/socket-home.js +31 -7
  1136. package/dist/state/socket-home.js.map +1 -1
  1137. package/dist/state/startup-ownership.d.ts +4 -0
  1138. package/dist/state/startup-ownership.d.ts.map +1 -0
  1139. package/dist/state/startup-ownership.js +14 -0
  1140. package/dist/state/startup-ownership.js.map +1 -0
  1141. package/dist/state/store.d.ts +1 -1
  1142. package/dist/state/store.d.ts.map +1 -1
  1143. package/dist/state/store.js +2 -2
  1144. package/dist/state/store.js.map +1 -1
  1145. package/dist/terminal/coordinates.d.ts +7 -0
  1146. package/dist/terminal/coordinates.d.ts.map +1 -0
  1147. package/dist/terminal/coordinates.js +6 -0
  1148. package/dist/terminal/coordinates.js.map +1 -0
  1149. package/dist/terminal/cursor.d.ts +40 -0
  1150. package/dist/terminal/cursor.d.ts.map +1 -0
  1151. package/dist/terminal/cursor.js +116 -0
  1152. package/dist/terminal/cursor.js.map +1 -0
  1153. package/dist/terminal/headless.d.ts +7 -5
  1154. package/dist/terminal/headless.d.ts.map +1 -1
  1155. package/dist/terminal/headless.js +47 -35
  1156. package/dist/terminal/headless.js.map +1 -1
  1157. package/dist/terminal/pty-output.d.ts +37 -0
  1158. package/dist/terminal/pty-output.d.ts.map +1 -0
  1159. package/dist/terminal/pty-output.js +109 -0
  1160. package/dist/terminal/pty-output.js.map +1 -0
  1161. package/dist/terminal/render-queue.d.ts +30 -0
  1162. package/dist/terminal/render-queue.d.ts.map +1 -0
  1163. package/dist/terminal/render-queue.js +105 -0
  1164. package/dist/terminal/render-queue.js.map +1 -0
  1165. package/dist/terminal/snapshot.d.ts +5 -0
  1166. package/dist/terminal/snapshot.d.ts.map +1 -0
  1167. package/dist/terminal/snapshot.js +13 -0
  1168. package/dist/terminal/snapshot.js.map +1 -0
  1169. package/docs/api.md +8 -1
  1170. package/docs/cli-behavior.md +930 -43
  1171. package/docs/cli-output.md +4 -0
  1172. package/docs/cli.md +15 -9
  1173. package/docs/codex/cli.md +44 -0
  1174. package/docs/login-recovery.md +24 -0
  1175. package/docs/native-question-proofs.md +57 -0
  1176. package/docs/performance.md +73 -0
  1177. package/docs/questions.md +181 -0
  1178. package/package.json +1 -1
  1179. package/prd/04-architecture.md +15 -0
  1180. package/prd/05-api/5.1-starting-claude.md +11 -1
  1181. package/prd/05-api/5.10-questions.md +117 -0
  1182. package/prd/05-api/5.3-claude-session-api.md +293 -24
  1183. package/prd/05-api/5.4-events.md +159 -32
  1184. package/prd/05-api/5.5-starting-codex.md +85 -18
  1185. package/prd/05-api/5.7-codex-session-api.md +143 -5
  1186. package/prd/05-api/5.8-session-api.md +58 -6
  1187. package/prd/05-api/5.9-loops.md +11 -1
  1188. package/prd/05-api/README.md +2 -0
  1189. package/prd/06-claude-hook-bridge.md +115 -0
  1190. package/prd/07-claude-policy.md +2 -0
  1191. package/prd/07a-codex-hook-bridge.md +90 -0
  1192. package/prd/08-state.md +51 -10
  1193. package/prd/09-lifecycle.md +79 -3
  1194. package/prd/10-errors.md +9 -2
  1195. package/prd/12a-cli.md +13 -7
  1196. package/prd/13-latitude.md +89 -0
  1197. package/prd/14-conformance.md +84 -30
  1198. package/prd/16-maintainer-review.md +75 -0
  1199. package/prd/README.md +1 -0
@@ -0,0 +1,28 @@
1
+ import { elwoodError, toError } from "../../core/errors.js";
2
+ import { terminalStatuses } from "../../core/status-categories.js";
3
+ export function notRunningError(agent) {
4
+ const title = agent === "claude" ? "Claude" : "Codex";
5
+ return elwoodError("session_not_running", `${title} session is not running.`);
6
+ }
7
+ /**
8
+ * Once shutdown begins the PTY is, or is about to be, signalled, so held submissions
9
+ * reject now with `session_not_running` rather than waiting on a shutdown that may
10
+ * fail and need a retry (§9 keeps the shutdown itself retryable).
11
+ */
12
+ export function closingController(rejectHeldInput) {
13
+ const closing = new AbortController();
14
+ closing.signal.addEventListener("abort", rejectHeldInput, { once: true });
15
+ return closing;
16
+ }
17
+ /** Normalize operation failures and reject operations after a terminal status. */
18
+ export function runSessionOperation(agent, status, work, allowTerminal) {
19
+ if (!allowTerminal && terminalStatuses.has(status))
20
+ return Promise.reject(notRunningError(agent));
21
+ try {
22
+ return Promise.resolve(work());
23
+ }
24
+ catch (error) {
25
+ return Promise.reject(toError(error));
26
+ }
27
+ }
28
+ //# sourceMappingURL=not-running.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-running.js","sourceRoot":"","sources":["../../../src/runtime/session/not-running.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,MAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,OAAO,WAAW,CAAC,qBAAqB,EAAE,GAAG,KAAK,0BAA0B,CAAC,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,eAA2B;IAC3D,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CACjC,KAAsB,EACtB,MAA2B,EAC3B,IAA0B,EAC1B,aAAsB;IAEtB,IAAI,CAAC,aAAa,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAClG,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** Native submission activity revokes background recovery (PRD §5.3/C-API-31). */
2
+ import type { PasteGuard, RecoveryComposer } from "../../core/input/index.ts";
3
+ import type { ElwoodTerminal } from "../../terminal/headless.ts";
4
+ import type { SessionStatusEmitter } from "./status-wiring.ts";
5
+ export declare class PasteRecoveryRevocation {
6
+ private generation;
7
+ constructor(events: SessionStatusEmitter, closing: AbortSignal);
8
+ /** Share native-frame and ownership captures with every queued paste. */
9
+ createGuard(terminal: ElwoodTerminal, composer: () => RecoveryComposer, blocked: () => boolean, beforeEnter: () => void): PasteGuard;
10
+ /** Capture before paste so a hook during the physical Enter cannot be missed. */
11
+ captureRevocationGuard(): {
12
+ revoked: () => boolean;
13
+ };
14
+ }
15
+ //# sourceMappingURL=paste-recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paste-recovery.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/paste-recovery.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,qBAAa,uBAAuB;IAClC,OAAO,CAAC,UAAU,CAAK;gBAEX,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,WAAW;IAQ9D,yEAAyE;IACzE,WAAW,CACT,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,gBAAgB,EAChC,OAAO,EAAE,MAAM,OAAO,EACtB,WAAW,EAAE,MAAM,IAAI,GACtB,UAAU;IAYb,iFAAiF;IACjF,sBAAsB;;;CAIvB"}
@@ -0,0 +1,30 @@
1
+ import { captureRenderProgress, subscribeRender } from "../../terminal/cursor.js";
2
+ export class PasteRecoveryRevocation {
3
+ generation = 0;
4
+ constructor(events, closing) {
5
+ const unsubscribe = events.on("activity", (event) => {
6
+ // Conservative revocation, not proof of prompt/turn correlation.
7
+ if (event.kind === "user_message")
8
+ this.generation += 1;
9
+ });
10
+ closing.addEventListener("abort", unsubscribe, { once: true });
11
+ }
12
+ /** Share native-frame and ownership captures with every queued paste. */
13
+ createGuard(terminal, composer, blocked, beforeEnter) {
14
+ return {
15
+ beforeEnter,
16
+ subscribeRender: (listener) => subscribeRender(terminal, listener),
17
+ captureRecovery: () => this.captureRevocationGuard(),
18
+ captureRenderProgress: () => captureRenderProgress(terminal),
19
+ prepareStaged: (payload) => composer().prepareStaged(payload),
20
+ emptyFrame: () => composer().emptyFrame(),
21
+ blocked,
22
+ };
23
+ }
24
+ /** Capture before paste so a hook during the physical Enter cannot be missed. */
25
+ captureRevocationGuard() {
26
+ const generation = this.generation;
27
+ return { revoked: () => generation !== this.generation };
28
+ }
29
+ }
30
+ //# sourceMappingURL=paste-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paste-recovery.js","sourceRoot":"","sources":["../../../src/runtime/session/paste-recovery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIlF,MAAM,OAAO,uBAAuB;IAC1B,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,MAA4B,EAAE,OAAoB;QAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YAClD,iEAAiE;YACjE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;gBAAE,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,yEAAyE;IACzE,WAAW,CACT,QAAwB,EACxB,QAAgC,EAChC,OAAsB,EACtB,WAAuB;QAEvB,OAAO;YACL,WAAW;YACX,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAClE,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACpD,qBAAqB,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YAC5D,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;YAC7D,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE;YACzC,OAAO;SACR,CAAC;IACJ,CAAC;IAED,iFAAiF;IACjF,sBAAsB;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,56 @@
1
+ import { type InputTerminal } from "../../core/input/abort.ts";
2
+ import type { ModelPickerSpec } from "../../core/models/picker.ts";
3
+ import type { ModelDialogAuthority, ModelDialogStage } from "../../core/models/rows.ts";
4
+ import type { ScreenTerminal } from "../../core/models/tui-screen.ts";
5
+ /** What the operation wrote and saw, so cleanup knows what it may repeat and what can still paint. */
6
+ export type Progress = {
7
+ /** The stage the operation itself last sent Escape to, which cleanup must not repeat. */
8
+ escapeSentTo: ModelDialogStage | undefined;
9
+ commandSubmitted: boolean;
10
+ dialogSeen: boolean;
11
+ /** A non-Escape key can accept a stage whose follow-up dialog paints late. */
12
+ keyWritten: boolean;
13
+ };
14
+ /**
15
+ * Consecutive clear frames that prove a dialog is gone rather than mid-repaint.
16
+ *
17
+ * Matches `quietFramesToSettle` in `core/turn-state.ts`, deliberately. That value IS
18
+ * measured: Codex's resume replay repaints in bursts with brief 1-frame quiet gaps, and 5
19
+ * clears them with margin (docs/cli-behavior.md, C-TURN-03). Picker repaints are the same
20
+ * class of problem — a dialog redrawing between stages is briefly unrecognizable — and we
21
+ * have NOT measured their gap length, so there is no evidence for a smaller number.
22
+ *
23
+ * The failure directions are not symmetric, which settles it. Too high only delays
24
+ * releasing the input hold. Too low releases queued input into a repainting picker, where
25
+ * Enter applies the highlighted model — the exact bug class this file exists to prevent.
26
+ * Absent a measurement, take the conservative measured precedent.
27
+ *
28
+ * This governs the SURVIVOR hold in `picker.ts`, which is unbounded and only observes, so
29
+ * a longer streak costs nothing but a little latency. The cleanup loop below uses a
30
+ * shorter one on purpose: see `cleanupClearFrames`.
31
+ */
32
+ export declare const clearFrames = 5;
33
+ export declare const escapeKey = "\u001B";
34
+ /**
35
+ * Cleanup only ever runs for a dialog the transaction itself opened, so every recognition
36
+ * call here carries its authority. Named rather than inlined so a future call site added
37
+ * OUTSIDE a transaction has to reach for it deliberately.
38
+ */
39
+ export declare const ours: ModelDialogAuthority;
40
+ /**
41
+ * Returns whether the queue is RELEASED: true when the dialog is gone (or never appeared),
42
+ * false when one survived cleanup and must keep holding queued input.
43
+ *
44
+ * One bounded second covers a late dialog appearing, every Escape, and the clearing.
45
+ * A submitted command whose picker never rendered can still open it, and an accepted
46
+ * stage can still paint its follow-up, so cleanup then waits out the bound for one.
47
+ * Cancelling a follow-up stage returns the CLI to the picker (real Claude 2.1.274 and
48
+ * Codex 0.154.0), so each stage gets one Escape and none is repeated while that stage
49
+ * stays up: a second Escape on a slow repaint would land on the composer. A `painting`
50
+ * shell is never written to. Termination aborts every read and write. A dialog still
51
+ * visible at the bound keeps queued input held.
52
+ */
53
+ export declare function cleanUpDialog(source: ScreenTerminal & InputTerminal, spec: ModelPickerSpec, progress: Progress, closed: AbortSignal): Promise<boolean>;
54
+ /** Reads and writes throw once `signal` aborts, so nothing reaches a terminated PTY. */
55
+ export declare function abortable(terminal: ScreenTerminal, signal: AbortSignal): ScreenTerminal;
56
+ //# sourceMappingURL=picker-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker-cleanup.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/picker-cleanup.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,aAAa,EAAe,MAAM,2BAA2B,CAAC;AAE5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,sGAAsG;AACtG,MAAM,MAAM,QAAQ,GAAG;IACrB,yFAAyF;IACzF,YAAY,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC3C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAGF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAa7B,eAAO,MAAM,SAAS,WAAW,CAAC;AAClC;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,oBAAuC,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,GAAG,aAAa,EACtC,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAiDlB;AACD,wFAAwF;AACxF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,GAAG,cAAc,CAWvF"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Failure cleanup for a model-picker transaction: cancel the dialog the operation left
3
+ * open, or report that one survived so queued input stays held (PRD §5.3, C-API-55).
4
+ */
5
+ import { delay } from "../../core/delay.js";
6
+ import { writeUnsafe } from "../../core/input/abort.js";
7
+ import { sendPickerInput } from "../../core/models/input.js";
8
+ const cleanupMs = 1_000;
9
+ /**
10
+ * Consecutive clear frames that prove a dialog is gone rather than mid-repaint.
11
+ *
12
+ * Matches `quietFramesToSettle` in `core/turn-state.ts`, deliberately. That value IS
13
+ * measured: Codex's resume replay repaints in bursts with brief 1-frame quiet gaps, and 5
14
+ * clears them with margin (docs/cli-behavior.md, C-TURN-03). Picker repaints are the same
15
+ * class of problem — a dialog redrawing between stages is briefly unrecognizable — and we
16
+ * have NOT measured their gap length, so there is no evidence for a smaller number.
17
+ *
18
+ * The failure directions are not symmetric, which settles it. Too high only delays
19
+ * releasing the input hold. Too low releases queued input into a repainting picker, where
20
+ * Enter applies the highlighted model — the exact bug class this file exists to prevent.
21
+ * Absent a measurement, take the conservative measured precedent.
22
+ *
23
+ * This governs the SURVIVOR hold in `picker.ts`, which is unbounded and only observes, so
24
+ * a longer streak costs nothing but a little latency. The cleanup loop below uses a
25
+ * shorter one on purpose: see `cleanupClearFrames`.
26
+ */
27
+ export const clearFrames = 5;
28
+ /**
29
+ * Cleanup's own streak, deliberately shorter than `clearFrames`.
30
+ *
31
+ * Cleanup is BOUNDED at one second and must also send its Escapes inside that budget, so
32
+ * demanding five clear frames (500 ms at a 100 ms poll) would spend half the budget
33
+ * proving a clearance it has already driven. It is also the safer of the two positions:
34
+ * a cleanup that returns early only hands off to the survivor hold, which then applies
35
+ * the full `clearFrames` streak before releasing any input. Nothing is released early.
36
+ */
37
+ const cleanupClearFrames = 2;
38
+ const pollMs = 100;
39
+ export const escapeKey = "\u001b";
40
+ /**
41
+ * Cleanup only ever runs for a dialog the transaction itself opened, so every recognition
42
+ * call here carries its authority. Named rather than inlined so a future call site added
43
+ * OUTSIDE a transaction has to reach for it deliberately.
44
+ */
45
+ export const ours = { opened: true };
46
+ /**
47
+ * Returns whether the queue is RELEASED: true when the dialog is gone (or never appeared),
48
+ * false when one survived cleanup and must keep holding queued input.
49
+ *
50
+ * One bounded second covers a late dialog appearing, every Escape, and the clearing.
51
+ * A submitted command whose picker never rendered can still open it, and an accepted
52
+ * stage can still paint its follow-up, so cleanup then waits out the bound for one.
53
+ * Cancelling a follow-up stage returns the CLI to the picker (real Claude 2.1.274 and
54
+ * Codex 0.154.0), so each stage gets one Escape and none is repeated while that stage
55
+ * stays up: a second Escape on a slow repaint would land on the composer. A `painting`
56
+ * shell is never written to. Termination aborts every read and write. A dialog still
57
+ * visible at the bound keeps queued input held.
58
+ */
59
+ export async function cleanUpDialog(source, spec, progress, closed) {
60
+ const terminal = abortable(source, closed);
61
+ const isActive = (text) => spec.activeDialog(text, ours) !== undefined;
62
+ let escaped = progress.escapeSentTo;
63
+ let clearStreak = 0;
64
+ /** Whether a dialog of ours was ever on screen here; only then can a clear frame lie. */
65
+ let sawDialog = progress.escapeSentTo !== undefined;
66
+ let lateDialogPossible = progress.keyWritten || (progress.commandSubmitted && !progress.dialogSeen);
67
+ try {
68
+ for (const bound = Date.now() + cleanupMs; Date.now() < bound; await delay(pollMs)) {
69
+ const stage = spec.activeDialog(terminal.snapshot().text, ours);
70
+ if (stage === undefined) {
71
+ // ONE clear frame is not proof a dialog we were CANCELLING is gone: a picker
72
+ // repainting between stages is momentarily unrecognizable, and releasing the queue
73
+ // there would let queued input land in the frame that follows. So a streak is
74
+ // required only once we have actually seen a dialog here; a cleanup that never
75
+ // found one has nothing to repaint and returns at once. (Same lesson as resume
76
+ // settling in docs/cli-behavior.md.)
77
+ clearStreak += 1;
78
+ const settled = !sawDialog || clearStreak >= cleanupClearFrames;
79
+ // The dialog is gone and nothing can still paint: the queue is released.
80
+ if (!lateDialogPossible && settled)
81
+ return true;
82
+ // Whatever paints after a clear frame is a new dialog, owed its own Escape.
83
+ escaped = undefined;
84
+ continue;
85
+ }
86
+ clearStreak = 0;
87
+ sawDialog = true;
88
+ lateDialogPossible = false;
89
+ // A `painting` shell may turn out to be a hook confirmation: wait, never write.
90
+ if (stage === "painting" || stage === escaped)
91
+ continue;
92
+ escaped = stage;
93
+ // Decide the WRITE on everything received, not the last rendered frame: a permission
94
+ // or hook dialog can already be in the PTY buffer while the observed screen still
95
+ // shows the picker, and an Escape chosen from that stale frame would dismiss it.
96
+ // `writeUnsafe` fails closed, so an unvouchable screen skips this Escape and the
97
+ // next poll re-decides rather than writing blind (C-API-56).
98
+ if (await writeUnsafe(source, undefined, closed))
99
+ continue;
100
+ await sendPickerInput({ terminal }, escapeKey, isActive, true);
101
+ }
102
+ }
103
+ catch {
104
+ // A terminated session has no input left to hold; a failed write leaves the dialog.
105
+ if (closed.aborted)
106
+ return true;
107
+ }
108
+ // The bound elapsed with a dialog still on screen (or one that could still paint and
109
+ // never did). A dialog we could not cancel SURVIVES, and queued input stays held on it;
110
+ // `lateDialogPossible` means none ever appeared, so there is nothing to hold.
111
+ return lateDialogPossible;
112
+ }
113
+ /** Reads and writes throw once `signal` aborts, so nothing reaches a terminated PTY. */
114
+ export function abortable(terminal, signal) {
115
+ return {
116
+ snapshot: () => {
117
+ signal.throwIfAborted();
118
+ return terminal.snapshot();
119
+ },
120
+ sendInput: (input) => {
121
+ signal.throwIfAborted();
122
+ return terminal.sendInput(input);
123
+ },
124
+ };
125
+ }
126
+ //# sourceMappingURL=picker-cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker-cleanup.js","sourceRoot":"","sources":["../../../src/runtime/session/picker-cleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** Raw terminal intervention revokes a picker operation's private authority (C-API-55). */
2
+ import type { EmptyComposerObserver } from "../../core/input/clear-ack.ts";
3
+ import { ComposerCleanup } from "../../core/input/composer-cleanup.ts";
4
+ import type { ElwoodTerminal } from "../../terminal/headless.ts";
5
+ type AutomatedWork = () => Promise<void>;
6
+ /** Preserve the same ownership scope for startup writers that retain their own input policy. */
7
+ export declare function withAutomatedInput(terminal: ElwoodTerminal, work: AutomatedWork): Promise<void>;
8
+ export declare class PickerInputOwnership {
9
+ readonly caller: ElwoodTerminal;
10
+ readonly automated: ElwoodTerminal;
11
+ private current;
12
+ constructor(inner: ElwoodTerminal);
13
+ composerCleanup(blocked: () => boolean, closing: AbortSignal, observeEmpty: EmptyComposerObserver): ComposerCleanup["run"];
14
+ signal(): AbortSignal;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=picker-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker-input.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/picker-input.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,KAAK,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAMzC,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/F;AAED,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,OAAO,CAAC,OAAO,CAAyB;gBAE5B,KAAK,EAAE,cAAc;IA+BjC,eAAe,CACb,OAAO,EAAE,MAAM,OAAO,EACtB,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,qBAAqB,GAClC,eAAe,CAAC,KAAK,CAAC;IAWzB,MAAM,IAAI,WAAW;CAGtB"}
@@ -0,0 +1,74 @@
1
+ import { ComposerCleanup } from "../../core/input/composer-cleanup.js";
2
+ import { pickerIntervention } from "../../core/models/intervention.js";
3
+ const automationScopes = new WeakMap();
4
+ /** Preserve the same ownership scope for startup writers that retain their own input policy. */
5
+ export function withAutomatedInput(terminal, work) {
6
+ return automationScopes.get(terminal.xterm)?.(work) ?? work();
7
+ }
8
+ export class PickerInputOwnership {
9
+ caller;
10
+ automated;
11
+ current = new AbortController();
12
+ constructor(inner) {
13
+ let automating = false;
14
+ const revoke = () => {
15
+ this.current.abort(pickerIntervention());
16
+ this.current = new AbortController();
17
+ };
18
+ // onData also carries parser-generated protocol replies; only input invocations
19
+ // represent caller keys. Native startup queries must not revoke draft ownership.
20
+ const input = inner.xterm.input.bind(inner.xterm);
21
+ inner.xterm.input = (data, wasUserInput) => {
22
+ if (!automating)
23
+ revoke();
24
+ input(data, wasUserInput);
25
+ };
26
+ const automate = (work) => {
27
+ const prior = automating;
28
+ automating = true;
29
+ try {
30
+ return work();
31
+ }
32
+ finally {
33
+ automating = prior;
34
+ }
35
+ };
36
+ automationScopes.set(inner.xterm, automate);
37
+ const send = (input) => automate(() => inner.sendInput(input));
38
+ this.automated = view(inner, send);
39
+ this.caller = view(inner, (input) => {
40
+ revoke();
41
+ return send(input);
42
+ });
43
+ }
44
+ composerCleanup(blocked, closing, observeEmpty) {
45
+ const cleanup = new ComposerCleanup(this.automated, blocked, closing, () => this.signal(), observeEmpty);
46
+ return (work, signal) => cleanup.run(work, signal);
47
+ }
48
+ signal() {
49
+ return this.current.signal;
50
+ }
51
+ }
52
+ function view(inner, sendInput) {
53
+ return {
54
+ get xterm() {
55
+ return inner.xterm;
56
+ },
57
+ get size() {
58
+ return inner.size;
59
+ },
60
+ get title() {
61
+ return inner.title;
62
+ },
63
+ get renderFailed() {
64
+ return inner.renderFailed;
65
+ },
66
+ writeOutput: (...args) => inner.writeOutput(...args),
67
+ sendInput,
68
+ resize: (size) => inner.resize(size),
69
+ snapshot: () => inner.snapshot(),
70
+ settled: () => inner.settled(),
71
+ dispose: () => inner.dispose(),
72
+ };
73
+ }
74
+ //# sourceMappingURL=picker-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker-input.js","sourceRoot":"","sources":["../../../src/runtime/session/picker-input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /** Exclusive model-picker queue ownership and failure cleanup (PRD §5.3, C-API-55). */
2
+ import type { ControlQueue } from "../../core/control-queue/index.ts";
3
+ import type { InputTerminal } from "../../core/input/abort.ts";
4
+ import type { ModelPickerIo, ModelPickerSpec } from "../../core/models/picker.ts";
5
+ import type { ScreenTerminal } from "../../core/models/tui-screen.ts";
6
+ type PickerDeps = {
7
+ readonly controlQueue: ControlQueue;
8
+ readonly observeRendered?: (listener: () => void) => void;
9
+ readonly inputSignal?: () => AbortSignal;
10
+ readonly submitDirect: (command: string, signal: AbortSignal) => Promise<void>;
11
+ /** Also carries the optional observation barrier (`settled`/`renderFailed`) when real. */
12
+ readonly terminal: ScreenTerminal & InputTerminal;
13
+ readonly blocked: () => boolean;
14
+ /** The adapter's picker spec, for recognizing a dialog nobody here opened. */
15
+ readonly picker: () => ModelPickerSpec;
16
+ };
17
+ export declare class PickerTransactions {
18
+ private readonly deps;
19
+ private readonly foreign;
20
+ private active;
21
+ private survivor;
22
+ /** Consecutive frames without the survivor; it is forgotten only after a stable run. */
23
+ private clearStreak;
24
+ constructor(deps: PickerDeps);
25
+ /**
26
+ * Whether a model dialog is on screen that queued input must not be written into.
27
+ *
28
+ * TWO cases, and the difference matters. A SURVIVOR is a dialog our own cleanup could not
29
+ * cancel: it is ours, and it is remembered until it clears. A dialog nobody here opened —
30
+ * a human who typed `/model` themselves — is NOT ours and never becomes a survivor, but
31
+ * Enter on it still applies its highlighted row, and Escape still discards the human's
32
+ * state. So writes are held on any visible model dialog, whoever opened it; ownership
33
+ * decides what Elwood may DRIVE, not what it may safely type over (C-API-55).
34
+ */
35
+ blocksInput(): boolean;
36
+ /**
37
+ * Whether a model dialog nobody here opened is on screen — a human who typed `/model`
38
+ * themselves. It is NOT ours, so it never becomes a `survivor` and must not suppress
39
+ * readiness (that would deadlock our own picker, whose dialog is visible by design).
40
+ * But Enter on it still applies its highlighted row and Escape still discards the
41
+ * human's state, so a WRITE that is not part of a picker transaction — `/login`
42
+ * recovery, a queued paste — must be withheld while it is up (C-API-55).
43
+ */
44
+ foreignDialogVisible(): boolean;
45
+ /**
46
+ * Runs `work` inside one exclusive queue slot, so no other command or message is
47
+ * dispatched until the whole open/navigate/apply-or-cancel flow settles. The queue
48
+ * wait and the flow share `timeoutMs`; the deadline or session close aborts `io`.
49
+ * A failed flow's dialog is cancelled before the slot is released.
50
+ */
51
+ run<T>(kind: "list_models" | "set_model", spec: ModelPickerSpec, timeoutMs: number, work: (io: ModelPickerIo, signal: AbortSignal) => Promise<T>): Promise<T>;
52
+ private io;
53
+ private cleanUp;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/picker.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAWtE,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,WAAW,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,aAAa,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,eAAe,CAAC;CACxC,CAAC;AAEF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,MAAM,CAA0D;IACxE,OAAO,CAAC,QAAQ,CAA8B;IAC9C,wFAAwF;IACxF,OAAO,CAAC,WAAW,CAAK;gBACZ,IAAI,EAAE,UAAU;IAK5B;;;;;;;;;OASG;IACH,WAAW,IAAI,OAAO;IAetB;;;;;;;OAOG;IACH,oBAAoB,IAAI,OAAO;IAM/B;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,aAAa,GAAG,WAAW,EACjC,IAAI,EAAE,eAAe,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,CAAC,CAAC;IAwDb,OAAO,CAAC,EAAE;YA6BI,OAAO;CAQtB"}
@@ -0,0 +1,143 @@
1
+ import { elwoodError } from "../../core/errors.js";
2
+ import { ForeignPickerHold } from "./foreign-picker.js";
3
+ import { abortable, cleanUpDialog, clearFrames, escapeKey, ours, } from "./picker-cleanup.js";
4
+ export class PickerTransactions {
5
+ deps;
6
+ foreign = new ForeignPickerHold();
7
+ active;
8
+ survivor;
9
+ /** Consecutive frames without the survivor; it is forgotten only after a stable run. */
10
+ clearStreak = 0;
11
+ constructor(deps) {
12
+ this.deps = deps;
13
+ deps.observeRendered?.(() => this.foreignDialogVisible());
14
+ }
15
+ /**
16
+ * Whether a model dialog is on screen that queued input must not be written into.
17
+ *
18
+ * TWO cases, and the difference matters. A SURVIVOR is a dialog our own cleanup could not
19
+ * cancel: it is ours, and it is remembered until it clears. A dialog nobody here opened —
20
+ * a human who typed `/model` themselves — is NOT ours and never becomes a survivor, but
21
+ * Enter on it still applies its highlighted row, and Escape still discards the human's
22
+ * state. So writes are held on any visible model dialog, whoever opened it; ownership
23
+ * decides what Elwood may DRIVE, not what it may safely type over (C-API-55).
24
+ */
25
+ blocksInput() {
26
+ if (this.survivor === undefined)
27
+ return false;
28
+ if (this.survivor.activeDialog(this.deps.terminal.snapshot().text, ours) !== undefined) {
29
+ this.clearStreak = 0;
30
+ return true;
31
+ }
32
+ // ONE unrecognized frame is not proof the survivor is gone: a picker repainting between
33
+ // stages is briefly unrecognizable, and forgetting it there would release queued input
34
+ // into the frame that follows. Cleanup requires the same streak for the same reason.
35
+ this.clearStreak += 1;
36
+ if (this.clearStreak < clearFrames)
37
+ return true;
38
+ this.survivor = undefined;
39
+ return false;
40
+ }
41
+ /**
42
+ * Whether a model dialog nobody here opened is on screen — a human who typed `/model`
43
+ * themselves. It is NOT ours, so it never becomes a `survivor` and must not suppress
44
+ * readiness (that would deadlock our own picker, whose dialog is visible by design).
45
+ * But Enter on it still applies its highlighted row and Escape still discards the
46
+ * human's state, so a WRITE that is not part of a picker transaction — `/login`
47
+ * recovery, a queued paste — must be withheld while it is up (C-API-55).
48
+ */
49
+ foreignDialogVisible() {
50
+ if (this.survivor !== undefined)
51
+ return false;
52
+ if (this.active?.progress.commandSubmitted && !this.active.signal.aborted)
53
+ return false;
54
+ return this.foreign.observe(this.deps.terminal.snapshot().text, this.deps.picker());
55
+ }
56
+ /**
57
+ * Runs `work` inside one exclusive queue slot, so no other command or message is
58
+ * dispatched until the whole open/navigate/apply-or-cancel flow settles. The queue
59
+ * wait and the flow share `timeoutMs`; the deadline or session close aborts `io`.
60
+ * A failed flow's dialog is cancelled before the slot is released.
61
+ */
62
+ async run(kind, spec, timeoutMs, work) {
63
+ const deadline = new AbortController();
64
+ const timer = setTimeout(() => deadline.abort(elwoodError("model_automation_failed", "Timed out waiting for model picker operation.")), timeoutMs);
65
+ let result;
66
+ try {
67
+ await this.deps.controlQueue.runExclusive(kind, async (closed) => {
68
+ // Elwood cannot tell its own dialog from picker text that precedes its command: a
69
+ // human's dialog, or a transcript quote the unanchored `isOpen` would drive.
70
+ const human = this.deps.inputSignal?.();
71
+ const before = this.deps.terminal.snapshot().text;
72
+ // We have NOT written `/model` yet, so nothing here is ours. We still ask the
73
+ // grammar under a hypothetical authority: anything it would call a dialog is
74
+ // someone else's, which is precisely why the operation must refuse to start.
75
+ if (spec.isOpen(before) || spec.activeDialog(before, ours) !== undefined)
76
+ throw elwoodError("model_automation_failed", "Model picker text was already visible before the operation began.");
77
+ const progress = {
78
+ escapeSentTo: undefined,
79
+ commandSubmitted: false,
80
+ dialogSeen: false,
81
+ keyWritten: false,
82
+ };
83
+ const ownership = AbortSignal.any(human === undefined ? [closed] : [closed, human]);
84
+ const signal = AbortSignal.any([ownership, deadline.signal]);
85
+ this.active = { signal: ownership, progress };
86
+ const revoked = () => this.foreign.observe(this.deps.terminal.snapshot().text, spec);
87
+ human?.addEventListener("abort", revoked, { once: true });
88
+ try {
89
+ result = await work(this.io(signal, spec, progress), signal);
90
+ }
91
+ catch (error) {
92
+ if (!ownership.aborted && progress.commandSubmitted)
93
+ await this.cleanUp(spec, progress, ownership);
94
+ throw error;
95
+ }
96
+ finally {
97
+ human?.removeEventListener("abort", revoked);
98
+ this.active = undefined;
99
+ }
100
+ }, { signal: deadline.signal, error: () => deadline.signal.reason });
101
+ return result;
102
+ }
103
+ finally {
104
+ clearTimeout(timer);
105
+ }
106
+ }
107
+ io(signal, spec, progress) {
108
+ const live = abortable(this.deps.terminal, signal);
109
+ const terminal = {
110
+ snapshot: () => {
111
+ const snapshot = live.snapshot();
112
+ progress.dialogSeen ||= spec.activeDialog(snapshot.text, ours) !== undefined;
113
+ return snapshot;
114
+ },
115
+ sendInput: (input) => {
116
+ const stage = spec.activeDialog(live.snapshot().text, ours);
117
+ const sent = live.sendInput(input);
118
+ if (input === escapeKey)
119
+ progress.escapeSentTo = stage;
120
+ else
121
+ progress.keyWritten = true;
122
+ return sent;
123
+ },
124
+ };
125
+ return {
126
+ terminal,
127
+ signal,
128
+ blocked: this.deps.blocked,
129
+ // The slot already owns the queue, so the command is written directly.
130
+ submit: async (command, pending) => {
131
+ signal.throwIfAborted();
132
+ await this.deps.submitDirect(command, AbortSignal.any([signal, pending]));
133
+ progress.commandSubmitted = true;
134
+ },
135
+ };
136
+ }
137
+ async cleanUp(spec, progress, closed) {
138
+ const released = await cleanUpDialog(this.deps.terminal, spec, progress, closed);
139
+ if (!released)
140
+ this.survivor = spec;
141
+ }
142
+ }
143
+ //# sourceMappingURL=picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker.js","sourceRoot":"","sources":["../../../src/runtime/session/picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /** Shared native question controls layered over lifecycle (PRD §5.10). */
2
+ import type { ElwoodAgentKind } from "../../core/activity/index.ts";
3
+ import type { QuestionAdapter } from "../../core/questions/adapter.ts";
4
+ import type { QuestionRegistry } from "../../core/questions/registry.ts";
5
+ import type { ElwoodQuestionAnswer, ElwoodQuestionAnswerOptions } from "../../core/questions/types.ts";
6
+ import type { TerminalReplayBuffer } from "../../core/terminal-replay.ts";
7
+ import type { PtyProcess } from "../../pty/types.ts";
8
+ import type { PersistedLoopDefinition } from "../../state/loop-store.ts";
9
+ import type { SessionRuntime } from "../../state/runtime-paths.ts";
10
+ import type { SessionRecord } from "../../state/store.ts";
11
+ import { SessionLifecycle } from "./lifecycle.ts";
12
+ import type { PickerInputOwnership } from "./picker-input.ts";
13
+ import type { SessionStatusEmitter } from "./status-wiring.ts";
14
+ export declare abstract class QuestionSessionBase extends SessionLifecycle {
15
+ private readonly questions;
16
+ protected constructor(agent: ElwoodAgentKind, record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, input: PickerInputOwnership, events: SessionStatusEmitter, replay: TerminalReplayBuffer, loops: readonly PersistedLoopDefinition[]);
17
+ protected configureQuestions(factory: (registry: QuestionRegistry) => QuestionAdapter): void;
18
+ protected revokeQuestionAnswer(): void;
19
+ protected isInputBlocked(): boolean;
20
+ listQuestions(): Promise<readonly import("../../index.ts").ElwoodQuestionRequest[]>;
21
+ answerQuestions(requestId: string, answers: readonly ElwoodQuestionAnswer[], options?: ElwoodQuestionAnswerOptions): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=questions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/questions.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,8BAAsB,mBAAoB,SAAQ,gBAAgB;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,SAAS,aACP,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,SAAS,uBAAuB,EAAE;IAY3C,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,eAAe,GAAG,IAAI;IAG5F,SAAS,CAAC,oBAAoB,IAAI,IAAI;cAGnB,cAAc,IAAI,OAAO;IAG5C,aAAa;IAGb,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,IAAI,CAAC;CAGjB"}