@with-logic/elwood 0.2.0 → 0.2.2

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 (878) hide show
  1. package/CHANGELOG.md +571 -1
  2. package/CONTRIBUTING.md +3 -0
  3. package/README.md +6 -2
  4. package/dist/bridge/socket-release.d.ts +15 -0
  5. package/dist/bridge/socket-release.d.ts.map +1 -0
  6. package/dist/bridge/socket-release.js +22 -0
  7. package/dist/bridge/socket-release.js.map +1 -0
  8. package/dist/claude/composer/border.d.ts +12 -0
  9. package/dist/claude/composer/border.d.ts.map +1 -0
  10. package/dist/claude/composer/border.js +12 -0
  11. package/dist/claude/composer/border.js.map +1 -0
  12. package/dist/claude/composer/empty-input.d.ts +15 -0
  13. package/dist/claude/composer/empty-input.d.ts.map +1 -1
  14. package/dist/claude/composer/empty-input.js +30 -11
  15. package/dist/claude/composer/empty-input.js.map +1 -1
  16. package/dist/claude/composer/footer.d.ts +26 -2
  17. package/dist/claude/composer/footer.d.ts.map +1 -1
  18. package/dist/claude/composer/footer.js +29 -2
  19. package/dist/claude/composer/footer.js.map +1 -1
  20. package/dist/claude/composer/idle.d.ts +14 -0
  21. package/dist/claude/composer/idle.d.ts.map +1 -0
  22. package/dist/claude/composer/idle.js +17 -0
  23. package/dist/claude/composer/idle.js.map +1 -0
  24. package/dist/claude/composer/last.d.ts +2 -0
  25. package/dist/claude/composer/last.d.ts.map +1 -0
  26. package/dist/claude/composer/last.js +15 -0
  27. package/dist/claude/composer/last.js.map +1 -0
  28. package/dist/claude/composer/staged-input.d.ts.map +1 -1
  29. package/dist/claude/composer/staged-input.js +2 -1
  30. package/dist/claude/composer/staged-input.js.map +1 -1
  31. package/dist/claude/hooks/stop-failure.d.ts +15 -2
  32. package/dist/claude/hooks/stop-failure.d.ts.map +1 -1
  33. package/dist/claude/hooks/stop-failure.js +32 -9
  34. package/dist/claude/hooks/stop-failure.js.map +1 -1
  35. package/dist/claude/login/stages.d.ts.map +1 -1
  36. package/dist/claude/login/stages.js +2 -2
  37. package/dist/claude/login/stages.js.map +1 -1
  38. package/dist/claude/model-picker.d.ts +1 -1
  39. package/dist/claude/model-picker.d.ts.map +1 -1
  40. package/dist/claude/model-picker.js +27 -10
  41. package/dist/claude/model-picker.js.map +1 -1
  42. package/dist/claude/preflight.d.ts +1 -1
  43. package/dist/claude/preflight.d.ts.map +1 -1
  44. package/dist/claude/preflight.js +18 -12
  45. package/dist/claude/preflight.js.map +1 -1
  46. package/dist/claude/questions/navigation.d.ts.map +1 -1
  47. package/dist/claude/questions/navigation.js +1 -2
  48. package/dist/claude/questions/navigation.js.map +1 -1
  49. package/dist/claude/questions/screen.d.ts.map +1 -1
  50. package/dist/claude/questions/screen.js +10 -2
  51. package/dist/claude/questions/screen.js.map +1 -1
  52. package/dist/claude/screen-table.d.ts +8 -5
  53. package/dist/claude/screen-table.d.ts.map +1 -1
  54. package/dist/claude/screen-table.js +20 -12
  55. package/dist/claude/screen-table.js.map +1 -1
  56. package/dist/claude/session/bridge.d.ts +2 -1
  57. package/dist/claude/session/bridge.d.ts.map +1 -1
  58. package/dist/claude/session/bridge.js +3 -1
  59. package/dist/claude/session/bridge.js.map +1 -1
  60. package/dist/claude/session/build.d.ts.map +1 -1
  61. package/dist/claude/session/build.js +13 -11
  62. package/dist/claude/session/build.js.map +1 -1
  63. package/dist/claude/session/cleanup.d.ts +18 -0
  64. package/dist/claude/session/cleanup.d.ts.map +1 -0
  65. package/dist/claude/session/cleanup.js +10 -0
  66. package/dist/claude/session/cleanup.js.map +1 -0
  67. package/dist/claude/session/index.d.ts.map +1 -1
  68. package/dist/claude/session/index.js +27 -13
  69. package/dist/claude/session/index.js.map +1 -1
  70. package/dist/claude/session/instance.d.ts +7 -8
  71. package/dist/claude/session/instance.d.ts.map +1 -1
  72. package/dist/claude/session/instance.js +9 -13
  73. package/dist/claude/session/instance.js.map +1 -1
  74. package/dist/claude/session/resume.d.ts.map +1 -1
  75. package/dist/claude/session/resume.js +14 -5
  76. package/dist/claude/session/resume.js.map +1 -1
  77. package/dist/claude/session/transcript.js +2 -2
  78. package/dist/claude/session/transcript.js.map +1 -1
  79. package/dist/claude/simple.d.ts +1 -1
  80. package/dist/claude/simple.d.ts.map +1 -1
  81. package/dist/claude/simple.js +3 -3
  82. package/dist/claude/simple.js.map +1 -1
  83. package/dist/claude/startup-prompts.d.ts +2 -0
  84. package/dist/claude/startup-prompts.d.ts.map +1 -1
  85. package/dist/claude/startup-prompts.js +5 -1
  86. package/dist/claude/startup-prompts.js.map +1 -1
  87. package/dist/claude/transcript/cursor-io.d.ts +1 -1
  88. package/dist/claude/transcript/cursor-io.d.ts.map +1 -1
  89. package/dist/claude/transcript/cursor-io.js +1 -1
  90. package/dist/claude/transcript/cursor-io.js.map +1 -1
  91. package/dist/claude/transcript/cursor.d.ts +5 -3
  92. package/dist/claude/transcript/cursor.d.ts.map +1 -1
  93. package/dist/claude/transcript/cursor.js +18 -8
  94. package/dist/claude/transcript/cursor.js.map +1 -1
  95. package/dist/claude/transcript/drain-context.d.ts +4 -3
  96. package/dist/claude/transcript/drain-context.d.ts.map +1 -1
  97. package/dist/claude/transcript/drain-context.js.map +1 -1
  98. package/dist/claude/transcript/emit.d.ts +2 -1
  99. package/dist/claude/transcript/emit.d.ts.map +1 -1
  100. package/dist/claude/transcript/emit.js +1 -0
  101. package/dist/claude/transcript/emit.js.map +1 -1
  102. package/dist/claude/transcript/index.d.ts.map +1 -1
  103. package/dist/claude/transcript/index.js +2 -2
  104. package/dist/claude/transcript/index.js.map +1 -1
  105. package/dist/claude/transcript/warnings.d.ts +2 -1
  106. package/dist/claude/transcript/warnings.d.ts.map +1 -1
  107. package/dist/claude/transcript/warnings.js +3 -2
  108. package/dist/claude/transcript/warnings.js.map +1 -1
  109. package/dist/cli/config/effective.d.ts +2 -2
  110. package/dist/cli/config/effective.d.ts.map +1 -1
  111. package/dist/cli/config/effective.js +0 -2
  112. package/dist/cli/config/effective.js.map +1 -1
  113. package/dist/cli/interactive/spawn.d.ts +0 -2
  114. package/dist/cli/interactive/spawn.d.ts.map +1 -1
  115. package/dist/cli/interactive/spawn.js +27 -24
  116. package/dist/cli/interactive/spawn.js.map +1 -1
  117. package/dist/cli/lifecycle/index.d.ts.map +1 -1
  118. package/dist/cli/lifecycle/index.js +5 -3
  119. package/dist/cli/lifecycle/index.js.map +1 -1
  120. package/dist/cli/main-failure.d.ts.map +1 -1
  121. package/dist/cli/main-failure.js +5 -2
  122. package/dist/cli/main-failure.js.map +1 -1
  123. package/dist/cli/models/combined.d.ts.map +1 -1
  124. package/dist/cli/models/combined.js +3 -2
  125. package/dist/cli/models/combined.js.map +1 -1
  126. package/dist/cli/models/render.d.ts.map +1 -1
  127. package/dist/cli/models/render.js +2 -1
  128. package/dist/cli/models/render.js.map +1 -1
  129. package/dist/cli/output/cleanup-error.d.ts +22 -0
  130. package/dist/cli/output/cleanup-error.d.ts.map +1 -0
  131. package/dist/cli/output/cleanup-error.js +67 -0
  132. package/dist/cli/output/cleanup-error.js.map +1 -0
  133. package/dist/cli/output/types.d.ts +6 -2
  134. package/dist/cli/output/types.d.ts.map +1 -1
  135. package/dist/cli/request/agent-detect.d.ts +6 -2
  136. package/dist/cli/request/agent-detect.d.ts.map +1 -1
  137. package/dist/cli/request/agent-detect.js +14 -6
  138. package/dist/cli/request/agent-detect.js.map +1 -1
  139. package/dist/cli/request/finalize.d.ts +1 -1
  140. package/dist/cli/request/finalize.d.ts.map +1 -1
  141. package/dist/cli/request/finalize.js +4 -25
  142. package/dist/cli/request/finalize.js.map +1 -1
  143. package/dist/cli/request/index.d.ts.map +1 -1
  144. package/dist/cli/request/index.js +11 -5
  145. package/dist/cli/request/index.js.map +1 -1
  146. package/dist/cli/request/path-replacement.d.ts +27 -0
  147. package/dist/cli/request/path-replacement.d.ts.map +1 -0
  148. package/dist/cli/request/path-replacement.js +79 -0
  149. package/dist/cli/request/path-replacement.js.map +1 -0
  150. package/dist/cli/request/workspace.d.ts +8 -0
  151. package/dist/cli/request/workspace.d.ts.map +1 -0
  152. package/dist/cli/request/workspace.js +50 -0
  153. package/dist/cli/request/workspace.js.map +1 -0
  154. package/dist/cli/run/output.d.ts.map +1 -1
  155. package/dist/cli/run/output.js +2 -1
  156. package/dist/cli/run/output.js.map +1 -1
  157. package/dist/cli/run/subscribe.d.ts.map +1 -1
  158. package/dist/cli/run/subscribe.js +1 -1
  159. package/dist/cli/run/subscribe.js.map +1 -1
  160. package/dist/cli/session/index.d.ts +4 -4
  161. package/dist/cli/session/index.d.ts.map +1 -1
  162. package/dist/cli/session/index.js +5 -5
  163. package/dist/cli/session/index.js.map +1 -1
  164. package/dist/cli/session/launch.d.ts +2 -2
  165. package/dist/cli/session/launch.d.ts.map +1 -1
  166. package/dist/cli/session/launch.js +12 -3
  167. package/dist/cli/session/launch.js.map +1 -1
  168. package/dist/cli/session/turn-readers.d.ts +14 -0
  169. package/dist/cli/session/turn-readers.d.ts.map +1 -0
  170. package/dist/cli/session/turn-readers.js +13 -0
  171. package/dist/cli/session/turn-readers.js.map +1 -0
  172. package/dist/codex/config/default-model.d.ts +24 -0
  173. package/dist/codex/config/default-model.d.ts.map +1 -0
  174. package/dist/codex/config/default-model.js +133 -0
  175. package/dist/codex/config/default-model.js.map +1 -0
  176. package/dist/codex/config/home.d.ts +35 -0
  177. package/dist/codex/config/home.d.ts.map +1 -0
  178. package/dist/codex/config/home.js +122 -0
  179. package/dist/codex/config/home.js.map +1 -0
  180. package/dist/codex/config/lock.d.ts +17 -11
  181. package/dist/codex/config/lock.d.ts.map +1 -1
  182. package/dist/codex/config/lock.js +102 -11
  183. package/dist/codex/config/lock.js.map +1 -1
  184. package/dist/codex/config/read.d.ts +16 -0
  185. package/dist/codex/config/read.d.ts.map +1 -0
  186. package/dist/codex/config/read.js +75 -0
  187. package/dist/codex/config/read.js.map +1 -0
  188. package/dist/codex/config/restore.d.ts +17 -7
  189. package/dist/codex/config/restore.d.ts.map +1 -1
  190. package/dist/codex/config/restore.js +33 -20
  191. package/dist/codex/config/restore.js.map +1 -1
  192. package/dist/codex/config/transaction.d.ts +6 -4
  193. package/dist/codex/config/transaction.d.ts.map +1 -1
  194. package/dist/codex/config/transaction.js +4 -3
  195. package/dist/codex/config/transaction.js.map +1 -1
  196. package/dist/codex/images/clipboard-copies.d.ts +39 -0
  197. package/dist/codex/images/clipboard-copies.d.ts.map +1 -0
  198. package/dist/codex/images/clipboard-copies.js +91 -0
  199. package/dist/codex/images/clipboard-copies.js.map +1 -0
  200. package/dist/codex/model-picker.d.ts +1 -1
  201. package/dist/codex/model-picker.d.ts.map +1 -1
  202. package/dist/codex/model-picker.js +16 -6
  203. package/dist/codex/model-picker.js.map +1 -1
  204. package/dist/codex/preflight.d.ts +2 -2
  205. package/dist/codex/preflight.d.ts.map +1 -1
  206. package/dist/codex/preflight.js +28 -21
  207. package/dist/codex/preflight.js.map +1 -1
  208. package/dist/codex/pty.d.ts +25 -3
  209. package/dist/codex/pty.d.ts.map +1 -1
  210. package/dist/codex/pty.js +53 -7
  211. package/dist/codex/pty.js.map +1 -1
  212. package/dist/codex/questions/candidates.d.ts.map +1 -1
  213. package/dist/codex/questions/candidates.js +4 -5
  214. package/dist/codex/questions/candidates.js.map +1 -1
  215. package/dist/codex/questions/driver.js +2 -2
  216. package/dist/codex/questions/driver.js.map +1 -1
  217. package/dist/codex/questions/records.d.ts +1 -1
  218. package/dist/codex/questions/records.d.ts.map +1 -1
  219. package/dist/codex/questions/records.js +1 -3
  220. package/dist/codex/questions/records.js.map +1 -1
  221. package/dist/codex/screen/clearance.d.ts +6 -0
  222. package/dist/codex/screen/clearance.d.ts.map +1 -1
  223. package/dist/codex/screen/clearance.js +10 -0
  224. package/dist/codex/screen/clearance.js.map +1 -1
  225. package/dist/codex/screen-table.d.ts.map +1 -1
  226. package/dist/codex/screen-table.js +6 -2
  227. package/dist/codex/screen-table.js.map +1 -1
  228. package/dist/codex/session/bridge.d.ts +1 -0
  229. package/dist/codex/session/bridge.d.ts.map +1 -1
  230. package/dist/codex/session/bridge.js +3 -1
  231. package/dist/codex/session/bridge.js.map +1 -1
  232. package/dist/codex/session/build.d.ts.map +1 -1
  233. package/dist/codex/session/build.js +14 -12
  234. package/dist/codex/session/build.js.map +1 -1
  235. package/dist/codex/session/cleanup.d.ts +2 -2
  236. package/dist/codex/session/cleanup.d.ts.map +1 -1
  237. package/dist/codex/session/cleanup.js +8 -11
  238. package/dist/codex/session/cleanup.js.map +1 -1
  239. package/dist/codex/session/config-switch.d.ts +20 -0
  240. package/dist/codex/session/config-switch.d.ts.map +1 -0
  241. package/dist/codex/session/config-switch.js +42 -0
  242. package/dist/codex/session/config-switch.js.map +1 -0
  243. package/dist/codex/session/hooks.d.ts.map +1 -1
  244. package/dist/codex/session/hooks.js +7 -0
  245. package/dist/codex/session/hooks.js.map +1 -1
  246. package/dist/codex/session/index.d.ts.map +1 -1
  247. package/dist/codex/session/index.js +34 -16
  248. package/dist/codex/session/index.js.map +1 -1
  249. package/dist/codex/session/instance.d.ts +10 -12
  250. package/dist/codex/session/instance.d.ts.map +1 -1
  251. package/dist/codex/session/instance.js +42 -37
  252. package/dist/codex/session/instance.js.map +1 -1
  253. package/dist/codex/session/readiness.d.ts +11 -0
  254. package/dist/codex/session/readiness.d.ts.map +1 -0
  255. package/dist/codex/session/readiness.js +22 -0
  256. package/dist/codex/session/readiness.js.map +1 -0
  257. package/dist/codex/session/resume.d.ts.map +1 -1
  258. package/dist/codex/session/resume.js +9 -4
  259. package/dist/codex/session/resume.js.map +1 -1
  260. package/dist/codex/session/transcript.d.ts.map +1 -1
  261. package/dist/codex/session/transcript.js +12 -1
  262. package/dist/codex/session/transcript.js.map +1 -1
  263. package/dist/codex/session/turn-commit.d.ts +58 -0
  264. package/dist/codex/session/turn-commit.d.ts.map +1 -0
  265. package/dist/codex/session/turn-commit.js +97 -0
  266. package/dist/codex/session/turn-commit.js.map +1 -0
  267. package/dist/codex/session/warnings.d.ts +13 -6
  268. package/dist/codex/session/warnings.d.ts.map +1 -1
  269. package/dist/codex/session/warnings.js +36 -9
  270. package/dist/codex/session/warnings.js.map +1 -1
  271. package/dist/codex/startup-prompts.d.ts +3 -0
  272. package/dist/codex/startup-prompts.d.ts.map +1 -1
  273. package/dist/codex/startup-prompts.js +20 -13
  274. package/dist/codex/startup-prompts.js.map +1 -1
  275. package/dist/codex/startup-warnings.d.ts +2 -0
  276. package/dist/codex/startup-warnings.d.ts.map +1 -1
  277. package/dist/codex/startup-warnings.js +6 -0
  278. package/dist/codex/startup-warnings.js.map +1 -1
  279. package/dist/codex/transcript/payload.d.ts +8 -0
  280. package/dist/codex/transcript/payload.d.ts.map +1 -0
  281. package/dist/codex/transcript/payload.js +11 -0
  282. package/dist/codex/transcript/payload.js.map +1 -0
  283. package/dist/codex/transcript/rejection.d.ts +15 -0
  284. package/dist/codex/transcript/rejection.d.ts.map +1 -0
  285. package/dist/codex/transcript/rejection.js +44 -0
  286. package/dist/codex/transcript/rejection.js.map +1 -0
  287. package/dist/codex/transcript/turn-end.d.ts +8 -0
  288. package/dist/codex/transcript/turn-end.d.ts.map +1 -0
  289. package/dist/codex/transcript/turn-end.js +17 -0
  290. package/dist/codex/transcript/turn-end.js.map +1 -0
  291. package/dist/codex/transcript/watcher.d.ts +5 -2
  292. package/dist/codex/transcript/watcher.d.ts.map +1 -1
  293. package/dist/codex/transcript/watcher.js +11 -6
  294. package/dist/codex/transcript/watcher.js.map +1 -1
  295. package/dist/codex/trust-retry.d.ts +12 -0
  296. package/dist/codex/trust-retry.d.ts.map +1 -0
  297. package/dist/codex/trust-retry.js +12 -0
  298. package/dist/codex/trust-retry.js.map +1 -0
  299. package/dist/codex/update/skip-attempt.d.ts +2 -0
  300. package/dist/codex/update/skip-attempt.d.ts.map +1 -1
  301. package/dist/codex/update/skip-attempt.js +4 -0
  302. package/dist/codex/update/skip-attempt.js.map +1 -1
  303. package/dist/codex/update/tracker.d.ts +2 -0
  304. package/dist/codex/update/tracker.d.ts.map +1 -1
  305. package/dist/codex/update/tracker.js +4 -0
  306. package/dist/codex/update/tracker.js.map +1 -1
  307. package/dist/core/delay.d.ts +3 -2
  308. package/dist/core/delay.d.ts.map +1 -1
  309. package/dist/core/delay.js +3 -2
  310. package/dist/core/delay.js.map +1 -1
  311. package/dist/core/errors.d.ts +33 -4
  312. package/dist/core/errors.d.ts.map +1 -1
  313. package/dist/core/errors.js +51 -7
  314. package/dist/core/errors.js.map +1 -1
  315. package/dist/core/images/materialize.d.ts +13 -4
  316. package/dist/core/images/materialize.d.ts.map +1 -1
  317. package/dist/core/images/materialize.js +48 -11
  318. package/dist/core/images/materialize.js.map +1 -1
  319. package/dist/core/input/abort.d.ts +15 -0
  320. package/dist/core/input/abort.d.ts.map +1 -1
  321. package/dist/core/input/abort.js +18 -2
  322. package/dist/core/input/abort.js.map +1 -1
  323. package/dist/core/input/constants.d.ts +4 -1
  324. package/dist/core/input/constants.d.ts.map +1 -1
  325. package/dist/core/input/constants.js +4 -1
  326. package/dist/core/input/constants.js.map +1 -1
  327. package/dist/core/input/index.d.ts +1 -1
  328. package/dist/core/input/index.d.ts.map +1 -1
  329. package/dist/core/input/index.js +1 -1
  330. package/dist/core/input/index.js.map +1 -1
  331. package/dist/core/models/clearance.d.ts +38 -0
  332. package/dist/core/models/clearance.d.ts.map +1 -0
  333. package/dist/core/models/clearance.js +38 -0
  334. package/dist/core/models/clearance.js.map +1 -0
  335. package/dist/core/models/close-wait.d.ts +17 -0
  336. package/dist/core/models/close-wait.d.ts.map +1 -0
  337. package/dist/core/models/close-wait.js +44 -0
  338. package/dist/core/models/close-wait.js.map +1 -0
  339. package/dist/core/models/dialog-region.d.ts +18 -3
  340. package/dist/core/models/dialog-region.d.ts.map +1 -1
  341. package/dist/core/models/dialog-region.js +29 -40
  342. package/dist/core/models/dialog-region.js.map +1 -1
  343. package/dist/core/models/input.d.ts +10 -1
  344. package/dist/core/models/input.d.ts.map +1 -1
  345. package/dist/core/models/input.js +15 -2
  346. package/dist/core/models/input.js.map +1 -1
  347. package/dist/core/models/intervention.d.ts +2 -2
  348. package/dist/core/models/intervention.d.ts.map +1 -1
  349. package/dist/core/models/intervention.js +6 -3
  350. package/dist/core/models/intervention.js.map +1 -1
  351. package/dist/core/models/own-picker.d.ts +21 -0
  352. package/dist/core/models/own-picker.d.ts.map +1 -0
  353. package/dist/core/models/own-picker.js +21 -0
  354. package/dist/core/models/own-picker.js.map +1 -0
  355. package/dist/core/models/picker.d.ts +34 -4
  356. package/dist/core/models/picker.d.ts.map +1 -1
  357. package/dist/core/models/picker.js +50 -44
  358. package/dist/core/models/picker.js.map +1 -1
  359. package/dist/core/models/row-block.d.ts +66 -0
  360. package/dist/core/models/row-block.d.ts.map +1 -0
  361. package/dist/core/models/row-block.js +87 -0
  362. package/dist/core/models/row-block.js.map +1 -0
  363. package/dist/core/models/rows.d.ts +32 -3
  364. package/dist/core/models/rows.d.ts.map +1 -1
  365. package/dist/core/models/rows.js +48 -20
  366. package/dist/core/models/rows.js.map +1 -1
  367. package/dist/core/models/tui-screen.d.ts +6 -1
  368. package/dist/core/models/tui-screen.d.ts.map +1 -1
  369. package/dist/core/models/tui-screen.js +25 -10
  370. package/dist/core/models/tui-screen.js.map +1 -1
  371. package/dist/core/models/window.d.ts +49 -0
  372. package/dist/core/models/window.d.ts.map +1 -0
  373. package/dist/core/models/window.js +105 -0
  374. package/dist/core/models/window.js.map +1 -0
  375. package/dist/core/path-trust.d.ts +11 -0
  376. package/dist/core/path-trust.d.ts.map +1 -0
  377. package/dist/core/path-trust.js +21 -0
  378. package/dist/core/path-trust.js.map +1 -0
  379. package/dist/core/screen-facts.d.ts +3 -1
  380. package/dist/core/screen-facts.d.ts.map +1 -1
  381. package/dist/core/screen-facts.js +1 -0
  382. package/dist/core/screen-facts.js.map +1 -1
  383. package/dist/core/simple/boundary-signal.d.ts +41 -6
  384. package/dist/core/simple/boundary-signal.d.ts.map +1 -1
  385. package/dist/core/simple/boundary-signal.js +43 -3
  386. package/dist/core/simple/boundary-signal.js.map +1 -1
  387. package/dist/core/simple/close.d.ts +2 -1
  388. package/dist/core/simple/close.d.ts.map +1 -1
  389. package/dist/core/simple/close.js +10 -2
  390. package/dist/core/simple/close.js.map +1 -1
  391. package/dist/core/simple/turn-boundary.d.ts +2 -0
  392. package/dist/core/simple/turn-boundary.d.ts.map +1 -1
  393. package/dist/core/simple/turn-boundary.js +1 -1
  394. package/dist/core/simple/turn-boundary.js.map +1 -1
  395. package/dist/core/simple/turn-types.d.ts +9 -3
  396. package/dist/core/simple/turn-types.d.ts.map +1 -1
  397. package/dist/core/simple/turn-types.js +10 -2
  398. package/dist/core/simple/turn-types.js.map +1 -1
  399. package/dist/core/simple/turn.d.ts +2 -0
  400. package/dist/core/simple/turn.d.ts.map +1 -1
  401. package/dist/core/simple/turn.js +11 -5
  402. package/dist/core/simple/turn.js.map +1 -1
  403. package/dist/core/terminal-options.d.ts +17 -1
  404. package/dist/core/terminal-options.d.ts.map +1 -1
  405. package/dist/core/terminal-options.js +20 -8
  406. package/dist/core/terminal-options.js.map +1 -1
  407. package/dist/core/transcript/cursor-io.d.ts +8 -0
  408. package/dist/core/transcript/cursor-io.d.ts.map +1 -1
  409. package/dist/core/transcript/cursor-io.js +11 -5
  410. package/dist/core/transcript/cursor-io.js.map +1 -1
  411. package/dist/core/transcript/cursor.d.ts +28 -4
  412. package/dist/core/transcript/cursor.d.ts.map +1 -1
  413. package/dist/core/transcript/cursor.js +53 -7
  414. package/dist/core/transcript/cursor.js.map +1 -1
  415. package/dist/core/transcript/drain.d.ts +43 -0
  416. package/dist/core/transcript/drain.d.ts.map +1 -0
  417. package/dist/core/transcript/drain.js +67 -0
  418. package/dist/core/transcript/drain.js.map +1 -0
  419. package/dist/core/trust/abortable.d.ts +12 -0
  420. package/dist/core/trust/abortable.d.ts.map +1 -0
  421. package/dist/core/trust/abortable.js +48 -0
  422. package/dist/core/trust/abortable.js.map +1 -0
  423. package/dist/core/trust/allowlist.d.ts +2 -0
  424. package/dist/core/trust/allowlist.d.ts.map +1 -1
  425. package/dist/core/trust/allowlist.js +4 -1
  426. package/dist/core/trust/allowlist.js.map +1 -1
  427. package/dist/core/trust/blocking.d.ts +11 -0
  428. package/dist/core/trust/blocking.d.ts.map +1 -1
  429. package/dist/core/trust/blocking.js +5 -4
  430. package/dist/core/trust/blocking.js.map +1 -1
  431. package/dist/core/trust/copy.d.ts.map +1 -1
  432. package/dist/core/trust/copy.js +7 -1
  433. package/dist/core/trust/copy.js.map +1 -1
  434. package/dist/core/trust/deadline.d.ts +24 -0
  435. package/dist/core/trust/deadline.d.ts.map +1 -0
  436. package/dist/core/trust/deadline.js +56 -0
  437. package/dist/core/trust/deadline.js.map +1 -0
  438. package/dist/core/trust/dialog.d.ts +11 -2
  439. package/dist/core/trust/dialog.d.ts.map +1 -1
  440. package/dist/core/trust/dialog.js +12 -3
  441. package/dist/core/trust/dialog.js.map +1 -1
  442. package/dist/core/trust/options.d.ts +5 -1
  443. package/dist/core/trust/options.d.ts.map +1 -1
  444. package/dist/core/trust/options.js +8 -2
  445. package/dist/core/trust/options.js.map +1 -1
  446. package/dist/core/trust/prompts.d.ts +3 -0
  447. package/dist/core/trust/prompts.d.ts.map +1 -1
  448. package/dist/core/trust/prompts.js +2 -1
  449. package/dist/core/trust/prompts.js.map +1 -1
  450. package/dist/core/trust/responder.d.ts +10 -5
  451. package/dist/core/trust/responder.d.ts.map +1 -1
  452. package/dist/core/trust/responder.js +37 -33
  453. package/dist/core/trust/responder.js.map +1 -1
  454. package/dist/core/trust/step.d.ts +67 -0
  455. package/dist/core/trust/step.d.ts.map +1 -0
  456. package/dist/core/trust/step.js +45 -0
  457. package/dist/core/trust/step.js.map +1 -0
  458. package/dist/core/trust/types.d.ts +21 -1
  459. package/dist/core/trust/types.d.ts.map +1 -1
  460. package/dist/core/trust/types.js +25 -1
  461. package/dist/core/trust/types.js.map +1 -1
  462. package/dist/core/trust/view.d.ts +2 -0
  463. package/dist/core/trust/view.d.ts.map +1 -1
  464. package/dist/core/trust/view.js +3 -0
  465. package/dist/core/trust/view.js.map +1 -1
  466. package/dist/core/trust/write.d.ts +31 -6
  467. package/dist/core/trust/write.d.ts.map +1 -1
  468. package/dist/core/trust/write.js +95 -80
  469. package/dist/core/trust/write.js.map +1 -1
  470. package/dist/core/turn-state.d.ts +18 -4
  471. package/dist/core/turn-state.d.ts.map +1 -1
  472. package/dist/core/turn-state.js +47 -25
  473. package/dist/core/turn-state.js.map +1 -1
  474. package/dist/core/warnings/images.d.ts +22 -0
  475. package/dist/core/warnings/images.d.ts.map +1 -0
  476. package/dist/core/warnings/images.js +3 -0
  477. package/dist/core/warnings/images.js.map +1 -0
  478. package/dist/core/warnings/index.d.ts +3 -2
  479. package/dist/core/warnings/index.d.ts.map +1 -1
  480. package/dist/core/warnings/lifecycle.d.ts +35 -4
  481. package/dist/core/warnings/lifecycle.d.ts.map +1 -1
  482. package/dist/core/warnings/lifecycle.js +1 -1
  483. package/dist/core/warnings/update.d.ts +8 -4
  484. package/dist/core/warnings/update.d.ts.map +1 -1
  485. package/dist/core/warnings/update.js +21 -6
  486. package/dist/core/warnings/update.js.map +1 -1
  487. package/dist/pty/exit-latch.d.ts +28 -0
  488. package/dist/pty/exit-latch.d.ts.map +1 -0
  489. package/dist/pty/exit-latch.js +50 -0
  490. package/dist/pty/exit-latch.js.map +1 -0
  491. package/dist/runtime/exit-status.d.ts +7 -0
  492. package/dist/runtime/exit-status.d.ts.map +1 -0
  493. package/dist/runtime/exit-status.js +13 -0
  494. package/dist/runtime/exit-status.js.map +1 -0
  495. package/dist/runtime/home-guard/index.d.ts +45 -0
  496. package/dist/runtime/home-guard/index.d.ts.map +1 -0
  497. package/dist/runtime/home-guard/index.js +69 -0
  498. package/dist/runtime/home-guard/index.js.map +1 -0
  499. package/dist/runtime/loop-restore.d.ts +9 -9
  500. package/dist/runtime/loop-restore.d.ts.map +1 -1
  501. package/dist/runtime/loop-restore.js +10 -10
  502. package/dist/runtime/loop-restore.js.map +1 -1
  503. package/dist/runtime/probe/capped-buffer.d.ts +16 -0
  504. package/dist/runtime/probe/capped-buffer.d.ts.map +1 -0
  505. package/dist/runtime/probe/capped-buffer.js +38 -0
  506. package/dist/runtime/probe/capped-buffer.js.map +1 -0
  507. package/dist/runtime/probe/capture.d.ts +55 -0
  508. package/dist/runtime/probe/capture.d.ts.map +1 -0
  509. package/dist/runtime/probe/capture.js +71 -0
  510. package/dist/runtime/probe/capture.js.map +1 -0
  511. package/dist/runtime/{probe-cleanup.d.ts → probe/cleanup.d.ts} +2 -2
  512. package/dist/runtime/probe/cleanup.d.ts.map +1 -0
  513. package/dist/runtime/{probe-cleanup.js → probe/cleanup.js} +3 -3
  514. package/dist/runtime/probe/cleanup.js.map +1 -0
  515. package/dist/runtime/probe/directory-key.d.ts +26 -0
  516. package/dist/runtime/probe/directory-key.d.ts.map +1 -0
  517. package/dist/runtime/probe/directory-key.js +46 -0
  518. package/dist/runtime/probe/directory-key.js.map +1 -0
  519. package/dist/runtime/probe/index.d.ts +25 -0
  520. package/dist/runtime/probe/index.d.ts.map +1 -0
  521. package/dist/runtime/probe/index.js +153 -0
  522. package/dist/runtime/probe/index.js.map +1 -0
  523. package/dist/runtime/probe/lookup.d.ts +12 -0
  524. package/dist/runtime/probe/lookup.d.ts.map +1 -0
  525. package/dist/runtime/probe/lookup.js +29 -0
  526. package/dist/runtime/probe/lookup.js.map +1 -0
  527. package/dist/runtime/probe/named-pipes.d.ts +35 -0
  528. package/dist/runtime/probe/named-pipes.d.ts.map +1 -0
  529. package/dist/runtime/probe/named-pipes.js +167 -0
  530. package/dist/runtime/probe/named-pipes.js.map +1 -0
  531. package/dist/runtime/probe/private-directory.d.ts +14 -0
  532. package/dist/runtime/probe/private-directory.d.ts.map +1 -0
  533. package/dist/runtime/probe/private-directory.js +50 -0
  534. package/dist/runtime/probe/private-directory.js.map +1 -0
  535. package/dist/runtime/probe/results.d.ts +14 -0
  536. package/dist/runtime/probe/results.d.ts.map +1 -0
  537. package/dist/runtime/probe/results.js +38 -0
  538. package/dist/runtime/probe/results.js.map +1 -0
  539. package/dist/runtime/probe/slots.d.ts +17 -0
  540. package/dist/runtime/probe/slots.d.ts.map +1 -0
  541. package/dist/runtime/probe/slots.js +35 -0
  542. package/dist/runtime/probe/slots.js.map +1 -0
  543. package/dist/runtime/probe/start.d.ts +64 -0
  544. package/dist/runtime/probe/start.d.ts.map +1 -0
  545. package/dist/runtime/probe/start.js +80 -0
  546. package/dist/runtime/probe/start.js.map +1 -0
  547. package/dist/runtime/probe-cache.d.ts +19 -0
  548. package/dist/runtime/probe-cache.d.ts.map +1 -0
  549. package/dist/runtime/probe-cache.js +56 -0
  550. package/dist/runtime/probe-cache.js.map +1 -0
  551. package/dist/runtime/readiness/initial-ready.d.ts +31 -5
  552. package/dist/runtime/readiness/initial-ready.d.ts.map +1 -1
  553. package/dist/runtime/readiness/initial-ready.js +64 -18
  554. package/dist/runtime/readiness/initial-ready.js.map +1 -1
  555. package/dist/runtime/seams.d.ts +14 -2
  556. package/dist/runtime/seams.d.ts.map +1 -1
  557. package/dist/runtime/seams.js +2 -2
  558. package/dist/runtime/seams.js.map +1 -1
  559. package/dist/runtime/session/base.d.ts.map +1 -1
  560. package/dist/runtime/session/base.js +9 -6
  561. package/dist/runtime/session/base.js.map +1 -1
  562. package/dist/runtime/session/commands.d.ts +6 -4
  563. package/dist/runtime/session/commands.d.ts.map +1 -1
  564. package/dist/runtime/session/commands.js +5 -2
  565. package/dist/runtime/session/commands.js.map +1 -1
  566. package/dist/runtime/session/frames.d.ts +12 -2
  567. package/dist/runtime/session/frames.d.ts.map +1 -1
  568. package/dist/runtime/session/frames.js +10 -3
  569. package/dist/runtime/session/frames.js.map +1 -1
  570. package/dist/runtime/session/image-attach.js +7 -2
  571. package/dist/runtime/session/image-attach.js.map +1 -1
  572. package/dist/runtime/session/launch-directory.d.ts +33 -0
  573. package/dist/runtime/session/launch-directory.d.ts.map +1 -0
  574. package/dist/runtime/session/launch-directory.js +84 -0
  575. package/dist/runtime/session/launch-directory.js.map +1 -0
  576. package/dist/runtime/session/lifecycle.d.ts +3 -3
  577. package/dist/runtime/session/lifecycle.d.ts.map +1 -1
  578. package/dist/runtime/session/lifecycle.js +1 -5
  579. package/dist/runtime/session/lifecycle.js.map +1 -1
  580. package/dist/runtime/session/loops.d.ts +1 -1
  581. package/dist/runtime/session/loops.d.ts.map +1 -1
  582. package/dist/runtime/session/loops.js +6 -3
  583. package/dist/runtime/session/loops.js.map +1 -1
  584. package/dist/runtime/session/picker-cleanup.d.ts +6 -21
  585. package/dist/runtime/session/picker-cleanup.d.ts.map +1 -1
  586. package/dist/runtime/session/picker-cleanup.js +19 -31
  587. package/dist/runtime/session/picker-cleanup.js.map +1 -1
  588. package/dist/runtime/session/picker-hold.d.ts +24 -0
  589. package/dist/runtime/session/picker-hold.d.ts.map +1 -0
  590. package/dist/runtime/session/picker-hold.js +42 -0
  591. package/dist/runtime/session/picker-hold.js.map +1 -0
  592. package/dist/runtime/session/picker.d.ts +15 -13
  593. package/dist/runtime/session/picker.d.ts.map +1 -1
  594. package/dist/runtime/session/picker.js +49 -27
  595. package/dist/runtime/session/picker.js.map +1 -1
  596. package/dist/runtime/session/prepare-state.d.ts +6 -0
  597. package/dist/runtime/session/prepare-state.d.ts.map +1 -0
  598. package/dist/runtime/session/prepare-state.js +14 -0
  599. package/dist/runtime/session/prepare-state.js.map +1 -0
  600. package/dist/runtime/session/questions.d.ts +2 -2
  601. package/dist/runtime/session/questions.d.ts.map +1 -1
  602. package/dist/runtime/session/questions.js.map +1 -1
  603. package/dist/runtime/session/readiness.d.ts +14 -5
  604. package/dist/runtime/session/readiness.d.ts.map +1 -1
  605. package/dist/runtime/session/readiness.js +22 -6
  606. package/dist/runtime/session/readiness.js.map +1 -1
  607. package/dist/runtime/session/reap.d.ts +11 -7
  608. package/dist/runtime/session/reap.d.ts.map +1 -1
  609. package/dist/runtime/session/reap.js +16 -10
  610. package/dist/runtime/session/reap.js.map +1 -1
  611. package/dist/runtime/session/runtime-cleanup.d.ts +18 -0
  612. package/dist/runtime/session/runtime-cleanup.d.ts.map +1 -0
  613. package/dist/runtime/session/runtime-cleanup.js +18 -0
  614. package/dist/runtime/session/runtime-cleanup.js.map +1 -0
  615. package/dist/runtime/session/session-input.d.ts +32 -0
  616. package/dist/runtime/session/session-input.d.ts.map +1 -0
  617. package/dist/runtime/session/{picker-input.js → session-input.js} +35 -7
  618. package/dist/runtime/session/session-input.js.map +1 -0
  619. package/dist/runtime/session/shutdown-binding.d.ts +12 -1
  620. package/dist/runtime/session/shutdown-binding.d.ts.map +1 -1
  621. package/dist/runtime/session/shutdown-binding.js +33 -1
  622. package/dist/runtime/session/shutdown-binding.js.map +1 -1
  623. package/dist/runtime/session/shutdown-cleanup.d.ts +17 -0
  624. package/dist/runtime/session/shutdown-cleanup.d.ts.map +1 -0
  625. package/dist/runtime/session/shutdown-cleanup.js +49 -0
  626. package/dist/runtime/session/shutdown-cleanup.js.map +1 -0
  627. package/dist/runtime/session/shutdown.d.ts +3 -2
  628. package/dist/runtime/session/shutdown.d.ts.map +1 -1
  629. package/dist/runtime/session/shutdown.js +13 -24
  630. package/dist/runtime/session/shutdown.js.map +1 -1
  631. package/dist/runtime/shell-quote.d.ts +8 -0
  632. package/dist/runtime/shell-quote.d.ts.map +1 -0
  633. package/dist/runtime/shell-quote.js +10 -0
  634. package/dist/runtime/shell-quote.js.map +1 -0
  635. package/dist/runtime/shell.d.ts +36 -12
  636. package/dist/runtime/shell.d.ts.map +1 -1
  637. package/dist/runtime/shell.js +90 -14
  638. package/dist/runtime/shell.js.map +1 -1
  639. package/dist/runtime/shutdown/coalesce.d.ts +15 -0
  640. package/dist/runtime/shutdown/coalesce.d.ts.map +1 -0
  641. package/dist/runtime/shutdown/coalesce.js +42 -0
  642. package/dist/runtime/shutdown/coalesce.js.map +1 -0
  643. package/dist/runtime/shutdown/detached-sweep/failures.d.ts +24 -0
  644. package/dist/runtime/shutdown/detached-sweep/failures.d.ts.map +1 -0
  645. package/dist/runtime/shutdown/detached-sweep/failures.js +32 -0
  646. package/dist/runtime/shutdown/detached-sweep/failures.js.map +1 -0
  647. package/dist/runtime/shutdown/detached-sweep/index.d.ts +55 -0
  648. package/dist/runtime/shutdown/detached-sweep/index.d.ts.map +1 -0
  649. package/dist/runtime/shutdown/detached-sweep/index.js +129 -0
  650. package/dist/runtime/shutdown/detached-sweep/index.js.map +1 -0
  651. package/dist/runtime/shutdown/detached-sweep/kill.d.ts +37 -0
  652. package/dist/runtime/shutdown/detached-sweep/kill.d.ts.map +1 -0
  653. package/dist/runtime/shutdown/detached-sweep/kill.js +87 -0
  654. package/dist/runtime/shutdown/detached-sweep/kill.js.map +1 -0
  655. package/dist/runtime/shutdown/detached-sweep/record.d.ts +67 -0
  656. package/dist/runtime/shutdown/detached-sweep/record.d.ts.map +1 -0
  657. package/dist/runtime/shutdown/detached-sweep/record.js +111 -0
  658. package/dist/runtime/shutdown/detached-sweep/record.js.map +1 -0
  659. package/dist/runtime/shutdown/detached-sweep/rounds.d.ts +78 -0
  660. package/dist/runtime/shutdown/detached-sweep/rounds.d.ts.map +1 -0
  661. package/dist/runtime/shutdown/detached-sweep/rounds.js +116 -0
  662. package/dist/runtime/shutdown/detached-sweep/rounds.js.map +1 -0
  663. package/dist/runtime/shutdown/detached-sweep/survivors.d.ts +40 -0
  664. package/dist/runtime/shutdown/detached-sweep/survivors.d.ts.map +1 -0
  665. package/dist/runtime/shutdown/detached-sweep/survivors.js +112 -0
  666. package/dist/runtime/shutdown/detached-sweep/survivors.js.map +1 -0
  667. package/dist/runtime/shutdown/leader-group.d.ts +29 -0
  668. package/dist/runtime/shutdown/leader-group.d.ts.map +1 -0
  669. package/dist/runtime/shutdown/leader-group.js +35 -0
  670. package/dist/runtime/shutdown/leader-group.js.map +1 -0
  671. package/dist/runtime/shutdown/native-read-admission.d.ts +13 -0
  672. package/dist/runtime/shutdown/native-read-admission.d.ts.map +1 -0
  673. package/dist/runtime/shutdown/native-read-admission.js +64 -0
  674. package/dist/runtime/shutdown/native-read-admission.js.map +1 -0
  675. package/dist/runtime/shutdown/process-table.d.ts +80 -0
  676. package/dist/runtime/shutdown/process-table.d.ts.map +1 -0
  677. package/dist/runtime/shutdown/process-table.js +147 -0
  678. package/dist/runtime/shutdown/process-table.js.map +1 -0
  679. package/dist/runtime/shutdown/process-tree-ops.d.ts +39 -0
  680. package/dist/runtime/shutdown/process-tree-ops.d.ts.map +1 -0
  681. package/dist/runtime/shutdown/process-tree-ops.js +73 -0
  682. package/dist/runtime/shutdown/process-tree-ops.js.map +1 -0
  683. package/dist/runtime/shutdown/read-timeout.d.ts +4 -0
  684. package/dist/runtime/shutdown/read-timeout.d.ts.map +1 -0
  685. package/dist/runtime/shutdown/read-timeout.js +6 -0
  686. package/dist/runtime/shutdown/read-timeout.js.map +1 -0
  687. package/dist/runtime/shutdown/reap-queue.d.ts +10 -0
  688. package/dist/runtime/shutdown/reap-queue.d.ts.map +1 -0
  689. package/dist/runtime/shutdown/reap-queue.js +29 -0
  690. package/dist/runtime/shutdown/reap-queue.js.map +1 -0
  691. package/dist/runtime/shutdown/reap-tree.d.ts +42 -32
  692. package/dist/runtime/shutdown/reap-tree.d.ts.map +1 -1
  693. package/dist/runtime/shutdown/reap-tree.js +78 -71
  694. package/dist/runtime/shutdown/reap-tree.js.map +1 -1
  695. package/dist/runtime/shutdown/shared-daemon.d.ts +59 -0
  696. package/dist/runtime/shutdown/shared-daemon.d.ts.map +1 -0
  697. package/dist/runtime/shutdown/shared-daemon.js +139 -0
  698. package/dist/runtime/shutdown/shared-daemon.js.map +1 -0
  699. package/dist/runtime/shutdown/teardown.d.ts +15 -0
  700. package/dist/runtime/shutdown/teardown.d.ts.map +1 -1
  701. package/dist/runtime/shutdown/teardown.js +19 -6
  702. package/dist/runtime/shutdown/teardown.js.map +1 -1
  703. package/dist/runtime/shutdown/terminate.d.ts +21 -1
  704. package/dist/runtime/shutdown/terminate.d.ts.map +1 -1
  705. package/dist/runtime/shutdown/terminate.js +83 -56
  706. package/dist/runtime/shutdown/terminate.js.map +1 -1
  707. package/dist/runtime/startup/buffer.d.ts +26 -7
  708. package/dist/runtime/startup/buffer.d.ts.map +1 -1
  709. package/dist/runtime/startup/buffer.js +42 -19
  710. package/dist/runtime/startup/buffer.js.map +1 -1
  711. package/dist/runtime/startup/cleanup.d.ts +37 -11
  712. package/dist/runtime/startup/cleanup.d.ts.map +1 -1
  713. package/dist/runtime/startup/cleanup.js +55 -25
  714. package/dist/runtime/startup/cleanup.js.map +1 -1
  715. package/dist/runtime/startup/index.d.ts +13 -1
  716. package/dist/runtime/startup/index.d.ts.map +1 -1
  717. package/dist/runtime/startup/index.js +38 -6
  718. package/dist/runtime/startup/index.js.map +1 -1
  719. package/dist/runtime/stream-marker.d.ts +17 -0
  720. package/dist/runtime/stream-marker.d.ts.map +1 -0
  721. package/dist/runtime/stream-marker.js +35 -0
  722. package/dist/runtime/stream-marker.js.map +1 -0
  723. package/dist/runtime/update/acquire.d.ts +16 -0
  724. package/dist/runtime/update/acquire.d.ts.map +1 -0
  725. package/dist/runtime/update/acquire.js +62 -0
  726. package/dist/runtime/update/acquire.js.map +1 -0
  727. package/dist/runtime/update/completion.d.ts +12 -0
  728. package/dist/runtime/update/completion.d.ts.map +1 -0
  729. package/dist/runtime/update/completion.js +50 -0
  730. package/dist/runtime/update/completion.js.map +1 -0
  731. package/dist/runtime/update/lock.d.ts +1 -1
  732. package/dist/runtime/update/lock.d.ts.map +1 -1
  733. package/dist/runtime/update/lock.js +21 -38
  734. package/dist/runtime/update/lock.js.map +1 -1
  735. package/dist/runtime/update/once.d.ts +16 -13
  736. package/dist/runtime/update/once.d.ts.map +1 -1
  737. package/dist/runtime/update/once.js +41 -31
  738. package/dist/runtime/update/once.js.map +1 -1
  739. package/dist/runtime/update/owner.js +1 -1
  740. package/dist/runtime/update/retained-lease.js +1 -1
  741. package/dist/runtime/update/waiting.d.ts +14 -1
  742. package/dist/runtime/update/waiting.d.ts.map +1 -1
  743. package/dist/runtime/update/waiting.js +20 -12
  744. package/dist/runtime/update/waiting.js.map +1 -1
  745. package/dist/state/canonical-path.d.ts +5 -0
  746. package/dist/state/canonical-path.d.ts.map +1 -1
  747. package/dist/state/canonical-path.js +11 -5
  748. package/dist/state/canonical-path.js.map +1 -1
  749. package/dist/state/directories.d.ts +31 -1
  750. package/dist/state/directories.d.ts.map +1 -1
  751. package/dist/state/directories.js +75 -13
  752. package/dist/state/directories.js.map +1 -1
  753. package/dist/state/files.d.ts +3 -3
  754. package/dist/state/files.d.ts.map +1 -1
  755. package/dist/state/files.js +4 -10
  756. package/dist/state/files.js.map +1 -1
  757. package/dist/state/launch-ownership.d.ts +4 -2
  758. package/dist/state/launch-ownership.d.ts.map +1 -1
  759. package/dist/state/launch-ownership.js +18 -10
  760. package/dist/state/launch-ownership.js.map +1 -1
  761. package/dist/state/launch-publication.d.ts +7 -1
  762. package/dist/state/launch-publication.d.ts.map +1 -1
  763. package/dist/state/launch-publication.js +14 -2
  764. package/dist/state/launch-publication.js.map +1 -1
  765. package/dist/state/loop-store.d.ts +15 -4
  766. package/dist/state/loop-store.d.ts.map +1 -1
  767. package/dist/state/loop-store.js +13 -7
  768. package/dist/state/loop-store.js.map +1 -1
  769. package/dist/state/preparation/created-directories.d.ts +13 -0
  770. package/dist/state/preparation/created-directories.d.ts.map +1 -0
  771. package/dist/state/preparation/created-directories.js +45 -0
  772. package/dist/state/preparation/created-directories.js.map +1 -0
  773. package/dist/state/preparation/ignore-sync.d.ts +9 -0
  774. package/dist/state/preparation/ignore-sync.d.ts.map +1 -0
  775. package/dist/state/preparation/ignore-sync.js +47 -0
  776. package/dist/state/preparation/ignore-sync.js.map +1 -0
  777. package/dist/state/preparation/index.d.ts +25 -0
  778. package/dist/state/preparation/index.d.ts.map +1 -0
  779. package/dist/state/preparation/index.js +31 -0
  780. package/dist/state/preparation/index.js.map +1 -0
  781. package/dist/state/preparation/install-ignore.d.ts +6 -0
  782. package/dist/state/preparation/install-ignore.d.ts.map +1 -0
  783. package/dist/state/preparation/install-ignore.js +87 -0
  784. package/dist/state/preparation/install-ignore.js.map +1 -0
  785. package/dist/state/preparation/rollback-parent.d.ts +3 -0
  786. package/dist/state/preparation/rollback-parent.d.ts.map +1 -0
  787. package/dist/state/preparation/rollback-parent.js +18 -0
  788. package/dist/state/preparation/rollback-parent.js.map +1 -0
  789. package/dist/state/preparation/root-trust.d.ts +3 -0
  790. package/dist/state/preparation/root-trust.d.ts.map +1 -0
  791. package/dist/state/preparation/root-trust.js +70 -0
  792. package/dist/state/preparation/root-trust.js.map +1 -0
  793. package/dist/state/private-session.d.ts +5 -2
  794. package/dist/state/private-session.d.ts.map +1 -1
  795. package/dist/state/private-session.js +21 -9
  796. package/dist/state/private-session.js.map +1 -1
  797. package/dist/state/root.d.ts +25 -0
  798. package/dist/state/root.d.ts.map +1 -0
  799. package/dist/state/root.js +84 -0
  800. package/dist/state/root.js.map +1 -0
  801. package/dist/state/runtime-paths.d.ts +5 -4
  802. package/dist/state/runtime-paths.d.ts.map +1 -1
  803. package/dist/state/runtime-paths.js +5 -4
  804. package/dist/state/runtime-paths.js.map +1 -1
  805. package/dist/state/setup-failure.d.ts +3 -0
  806. package/dist/state/setup-failure.d.ts.map +1 -0
  807. package/dist/state/setup-failure.js +13 -0
  808. package/dist/state/setup-failure.js.map +1 -0
  809. package/dist/state/socket-home.d.ts +17 -12
  810. package/dist/state/socket-home.d.ts.map +1 -1
  811. package/dist/state/socket-home.js +31 -14
  812. package/dist/state/socket-home.js.map +1 -1
  813. package/dist/state/store.d.ts +1 -3
  814. package/dist/state/store.d.ts.map +1 -1
  815. package/dist/state/store.js +3 -18
  816. package/dist/state/store.js.map +1 -1
  817. package/dist/terminal/cursor.d.ts +1 -1
  818. package/dist/terminal/cursor.d.ts.map +1 -1
  819. package/dist/terminal/cursor.js +36 -1
  820. package/dist/terminal/cursor.js.map +1 -1
  821. package/dist/terminal/headless.d.ts +1 -1
  822. package/dist/terminal/headless.d.ts.map +1 -1
  823. package/dist/terminal/headless.js +1 -3
  824. package/dist/terminal/headless.js.map +1 -1
  825. package/docs/cli-behavior.md +1218 -28
  826. package/docs/cli.md +2 -0
  827. package/docs/codex/cli.md +4 -2
  828. package/docs/embedding.md +7 -0
  829. package/docs/performance/terminal-engines.md +88 -0
  830. package/docs/performance.md +120 -0
  831. package/package.json +4 -4
  832. package/prd/04-architecture.md +32 -0
  833. package/prd/05-api/5.1-starting-claude.md +17 -1
  834. package/prd/05-api/5.2-resuming-claude.md +5 -0
  835. package/prd/05-api/5.3-claude-session-api.md +267 -40
  836. package/prd/05-api/5.4-events.md +77 -10
  837. package/prd/05-api/5.5-starting-codex.md +3 -1
  838. package/prd/05-api/5.6-resuming-codex.md +4 -1
  839. package/prd/05-api/5.7-codex-session-api.md +87 -5
  840. package/prd/05-api/5.8-session-api.md +32 -1
  841. package/prd/06-claude-hook-bridge.md +2 -0
  842. package/prd/07a-codex-hook-bridge.md +5 -0
  843. package/prd/08-state.md +63 -7
  844. package/prd/09-lifecycle.md +126 -35
  845. package/prd/10-errors.md +11 -4
  846. package/prd/12-e2e.md +81 -0
  847. package/prd/12a-cli.md +63 -9
  848. package/prd/14-conformance.md +52 -35
  849. package/prd/16-maintainer-review.md +11 -0
  850. package/dist/claude/model-composer.d.ts +0 -2
  851. package/dist/claude/model-composer.d.ts.map +0 -1
  852. package/dist/claude/model-composer.js +0 -12
  853. package/dist/claude/model-composer.js.map +0 -1
  854. package/dist/claude/transcript/drain.d.ts +0 -33
  855. package/dist/claude/transcript/drain.d.ts.map +0 -1
  856. package/dist/claude/transcript/drain.js +0 -56
  857. package/dist/claude/transcript/drain.js.map +0 -1
  858. package/dist/codex/session/cli-exit.d.ts +0 -24
  859. package/dist/codex/session/cli-exit.d.ts.map +0 -1
  860. package/dist/codex/session/cli-exit.js +0 -43
  861. package/dist/codex/session/cli-exit.js.map +0 -1
  862. package/dist/codex/transcript/drain.d.ts +0 -30
  863. package/dist/codex/transcript/drain.d.ts.map +0 -1
  864. package/dist/codex/transcript/drain.js +0 -48
  865. package/dist/codex/transcript/drain.js.map +0 -1
  866. package/dist/runtime/probe-cleanup.d.ts.map +0 -1
  867. package/dist/runtime/probe-cleanup.js.map +0 -1
  868. package/dist/runtime/probe.d.ts +0 -11
  869. package/dist/runtime/probe.d.ts.map +0 -1
  870. package/dist/runtime/probe.js +0 -113
  871. package/dist/runtime/probe.js.map +0 -1
  872. package/dist/runtime/session/foreign-picker.d.ts +0 -8
  873. package/dist/runtime/session/foreign-picker.d.ts.map +0 -1
  874. package/dist/runtime/session/foreign-picker.js +0 -18
  875. package/dist/runtime/session/foreign-picker.js.map +0 -1
  876. package/dist/runtime/session/picker-input.d.ts +0 -17
  877. package/dist/runtime/session/picker-input.d.ts.map +0 -1
  878. package/dist/runtime/session/picker-input.js.map +0 -1
@@ -4,12 +4,13 @@
4
4
  * are sourced from the JSONL transcript Codex writes; reads are bounded (fixed-size
5
5
  * chunks, a max-pending ceiling, a per-scan chunk budget) so a hundreds-of-MiB file
6
6
  * never OOMs or blocks the event loop, and lost committed data is surfaced through
7
- * bounded, content-free drop notices.
7
+ * bounded, content-free drop notices. A transcript not created yet is waited on silently;
8
+ * one removed after it existed is a read race that warns (§5.7, C-CODEX-23).
8
9
  */
9
10
  import { outsideStopInput } from "../../core/stop-input.js";
10
11
  import { BoundedTranscriptCursor } from "../../core/transcript/cursor.js";
12
+ import { drainToBudget, newTerminalBudget, } from "../../core/transcript/drain.js";
11
13
  import { DropReporter, ReadErrorReporter } from "../../core/transcript/drops.js";
12
- import { drainToBudget, newTerminalBudget } from "./drain.js";
13
14
  import { CodexLineEmitter } from "./emit.js";
14
15
  import { CodexTranscriptFsGuard } from "./fs-guard.js";
15
16
  const defaultScanIntervalMs = 250; // poll cadence: transcript activity is not latency-critical
@@ -51,10 +52,12 @@ export class CodexTranscriptWatcher {
51
52
  // A scan() throw (a throwing drop/activity/warning listener) must not escape the
52
53
  // timer as an uncaught exception — contain it, stop, and route a bounded live
53
54
  // diagnostic (non-throwing recovery), mirroring Claude's poll recovery.
54
- this.interval = outsideStopInput(() => setInterval(() => this.runScan(), this.scanIntervalMs ?? defaultScanIntervalMs));
55
+ this.interval = outsideStopInput(() => setInterval(() => this.poll(), this.scanIntervalMs ?? defaultScanIntervalMs));
55
56
  this.interval.unref?.();
56
57
  }
57
- runScan() {
58
+ /** One `scan()` that never throws, as the poll timer runs it: a failure finishes the
59
+ * watcher and reports `onPollError`. For callers that scan from their own timers. */
60
+ poll() {
58
61
  try {
59
62
  this.scan();
60
63
  }
@@ -71,7 +74,9 @@ export class CodexTranscriptWatcher {
71
74
  const budget = { chunks: scanChunksPerScan };
72
75
  while (budget.chunks > 0) {
73
76
  budget.chunks -= 1;
74
- const chunk = this.guard.read(cursor.path, () => cursor.readChunk());
77
+ // Each read is sized by its own stat: a file not created yet reads nothing, and a
78
+ // removal after it existed throws for the guard rather than reading as a truncation.
79
+ const chunk = this.guard.read(cursor.path, () => cursor.readLiveChunk());
75
80
  if (!chunk)
76
81
  break; // contained FS failure; keep last offset
77
82
  if (chunk.text.length > 0)
@@ -88,7 +93,7 @@ export class CodexTranscriptWatcher {
88
93
  flush() {
89
94
  if (this.finished || !this.cursor)
90
95
  return;
91
- drainToBudget(this.drainContext(), this.cursor, this.terminalBudget);
96
+ drainToBudget(this.drainContext(), [this.cursor], this.terminalBudget);
92
97
  }
93
98
  // Flush trailing partials, then permanently stop. Idempotent (`finished` gates a
94
99
  // second call) and terminal; `stop()` runs in `finally` so a throwing drain still
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/codex/transcript/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/codex/transcript/watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Codex's numbered trust retry (PRD §5.4, C-TRUST-01). Under load Codex 0.164 takes the
3
+ * directory-trust answer `1\r` but can paint its composer after the retry interval, so
4
+ * typing the number again would submit "1" as a user turn. Enter on its gate confirms
5
+ * the highlighted option, and Enter on its empty composer submits nothing
6
+ * (docs/cli-behavior.md), so Codex retries with Enter alone while the caret is on the
7
+ * affirmative. Its hook gate opens with the caret on `Review hooks`, so that gate falls
8
+ * back to retyping after a rendered frame.
9
+ */
10
+ import { type NumberedRetry } from "../core/trust/step.ts";
11
+ export declare const codexNumberedRetry: NumberedRetry;
12
+ //# sourceMappingURL=trust-retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-retry.d.ts","sourceRoot":"","sources":["../../src/codex/trust-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE/E,eAAO,MAAM,kBAAkB,EAAE,aAAkC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Codex's numbered trust retry (PRD §5.4, C-TRUST-01). Under load Codex 0.164 takes the
3
+ * directory-trust answer `1\r` but can paint its composer after the retry interval, so
4
+ * typing the number again would submit "1" as a user turn. Enter on its gate confirms
5
+ * the highlighted option, and Enter on its empty composer submits nothing
6
+ * (docs/cli-behavior.md), so Codex retries with Enter alone while the caret is on the
7
+ * affirmative. Its hook gate opens with the caret on `Review hooks`, so that gate falls
8
+ * back to retyping after a rendered frame.
9
+ */
10
+ import { enterWhileSelected } from "../core/trust/step.js";
11
+ export const codexNumberedRetry = enterWhileSelected;
12
+ //# sourceMappingURL=trust-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-retry.js","sourceRoot":"","sources":["../../src/codex/trust-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,kBAAkB,EAAsB,MAAM,uBAAuB,CAAC;AAE/E,MAAM,CAAC,MAAM,kBAAkB,GAAkB,kBAAkB,CAAC"}
@@ -19,6 +19,8 @@ type UpdateSkipRequest = {
19
19
  type UpdateSkipAttempt = {
20
20
  readonly settled: Promise<StartupWriteCompletion>;
21
21
  readonly observeClearance: (frame: string) => void;
22
+ /** Raw caller input owns this appearance: no retry or pending write follows it. */
23
+ readonly cancel: () => void;
22
24
  };
23
25
  export declare function startCodexUpdateSkip(request: UpdateSkipRequest): UpdateSkipAttempt;
24
26
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"skip-attempt.d.ts","sourceRoot":"","sources":["../../../src/codex/update/skip-attempt.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE7D,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/F,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAClD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAgElF"}
1
+ {"version":3,"file":"skip-attempt.d.ts","sourceRoot":"","sources":["../../../src/codex/update/skip-attempt.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE7D,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/F,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAClD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAmElF"}
@@ -49,6 +49,10 @@ export function startCodexUpdateSkip(request) {
49
49
  });
50
50
  return {
51
51
  settled: completion.promise,
52
+ cancel: () => {
53
+ if (!retries.signal.aborted)
54
+ finish("cancelled");
55
+ },
52
56
  observeClearance(frame) {
53
57
  if (retries.signal.aborted || readFrame === undefined || !ownsAttempt())
54
58
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"skip-attempt.js","sourceRoot":"","sources":["../../../src/codex/update/skip-attempt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAqBlD,MAAM,UAAU,oBAAoB,CAAC,OAA0B;IAC7D,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACrF,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAA0B,CAAC;IACnE,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAChC,CAAC,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAC/F,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5F,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,MAAM,GAAG,CAAC,MAA8B,EAAE,EAAE;QAChD,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,WAAW,EAAE;YAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACzF,CAAC,CAAC;IACF,KAAK,oBAAoB,CACvB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,eAAe,EACvB,SAAS,EACT,OAAO,EACP,WAAW,EACX,WAAW,EACX,OAAO,CAAC,SAAS,EACjB,GAAG,EAAE;QACH,OAAO,GAAG,IAAI,CAAC;QACf,eAAe,EAAE,CAAC;IACpB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CACpE,CAAC,IAAI,CACJ,CAAC,MAAM,EAAE,EAAE;QACT,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QACnC,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YACxE,MAAM,CAAC,WAAW,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,MAAM,KAAK,WAAW;YAAE,YAAY,EAAE,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;QACjB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QACnC,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ;YAAE,YAAY,EAAE,CAAC;QAC9B,mEAAmE;QACnE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,UAAU,CAAC;YAAE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;QACtE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CACF,CAAC;IACF,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,gBAAgB,CAAC,KAAa;YAC5B,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO;YAChF,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,OAAO;YAC5D,wEAAwE;YACxE,6EAA6E;YAC7E,OAAO,GAAG,IAAI,CAAC;YACf,eAAe,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"skip-attempt.js","sourceRoot":"","sources":["../../../src/codex/update/skip-attempt.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ export declare class CodexUpdatePromptTracker {
15
15
  constructor(clearance?: TrustClearance, deferClearance?: boolean);
16
16
  /** Identifies the current appearance; it changes when the screen clears, appears, or revokes an attempt. */
17
17
  get currentGeneration(): number;
18
+ /** An appearance is on screen, or left it without a positive native clearance since. */
19
+ get unresolved(): boolean;
18
20
  /** Ordinary frames need no clearance parsing without a pending or revoked update. */
19
21
  get needsClearance(): boolean;
20
22
  /** A replacement revokes the attempt; its positive clear is only `generation + 1`. */
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/codex/update/tracker.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,KAAK,gBAAgB,EAA8B,MAAM,qBAAqB,CAAC;AAYxF,mFAAmF;AACnF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,mGAAmG;gBACvF,SAAS,GAAE,cAAuC,EAAE,cAAc,UAAQ;IAKtF,4GAA4G;IAC5G,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,qFAAqF;IACrF,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,sFAAsF;IACtF,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIrD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAkB7C,mFAAmF;IACnF,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAY3C,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAI7C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IA0CnC,uEAAuE;IACvE,OAAO,CAAC,eAAe;IAsBvB,+EAA+E;IAC/E,OAAO,CAAC,oBAAoB;IAU5B,yFAAyF;IACzF,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQxC,4FAA4F;IAC5F,qBAAqB,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO;CAcxD"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/codex/update/tracker.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,KAAK,gBAAgB,EAA8B,MAAM,qBAAqB,CAAC;AAYxF,mFAAmF;AACnF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,mGAAmG;gBACvF,SAAS,GAAE,cAAuC,EAAE,cAAc,UAAQ;IAKtF,4GAA4G;IAC5G,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,wFAAwF;IACxF,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,qFAAqF;IACrF,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,sFAAsF;IACtF,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIrD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAkB7C,mFAAmF;IACnF,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAY3C,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAI7C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IA0CnC,uEAAuE;IACvE,OAAO,CAAC,eAAe;IAsBvB,+EAA+E;IAC/E,OAAO,CAAC,oBAAoB;IAU5B,yFAAyF;IACzF,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQxC,4FAA4F;IAC5F,qBAAqB,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO;CAcxD"}
@@ -22,6 +22,10 @@ export class CodexUpdatePromptTracker {
22
22
  get currentGeneration() {
23
23
  return this.generation;
24
24
  }
25
+ /** An appearance is on screen, or left it without a positive native clearance since. */
26
+ get unresolved() {
27
+ return this.active || this.requiresBanner;
28
+ }
25
29
  /** Ordinary frames need no clearance parsing without a pending or revoked update. */
26
30
  get needsClearance() {
27
31
  return this.pendingClearance || this.requiresBanner;
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/codex/update/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/codex/update/tracker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAyB,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,mFAAmF;AACnF,MAAM,OAAO,wBAAwB;IAClB,MAAM,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACnD,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACjC,MAAM,GAAG,KAAK,CAAC;IACf,UAAU,GAAG,CAAC,CAAC;IACf,cAAc,GAAG,KAAK,CAAC;IACvB,gBAAgB,GAAG,KAAK,CAAC;IAEhB,SAAS,CAAiB;IAC1B,cAAc,CAAU;IACzC,mGAAmG;IACnG,YAAY,YAA4B,sBAAsB,EAAE,cAAc,GAAG,KAAK;QACpF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,4GAA4G;IAC5G,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,wFAAwF;IACxF,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC;IAC5C,CAAC;IAED,qFAAqF;IACrF,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAC;IACtD,CAAC;IAED,sFAAsF;IACtF,wBAAwB,CAAC,UAAkB;QACzC,OAAO,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,iBAAiB,CAAC,SAAiB;QACjC,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QACjD,OAAO,CACL,IAAI,CAAC,MAAM;YACX,MAAM,KAAK,SAAS;YACpB,CAAC,2BAA2B,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC;YACnE,CAAC,2BAA2B,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACpD,CAAC,OAAO,KAAK,SAAS;oBACpB,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,SAAS;oBAClD,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;oBACzB,CAAC,CACC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;wBAC5D,0BAA0B,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CACnD,CAAC,CAAC,CACR,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,eAAe,CAAC,SAAiB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,CACL,KAAK,CAAC,OAAO,KAAK,SAAS;YAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;gBACxB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBACjC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;YAClF,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAChF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,QAAQ,CAAC,SAAiB;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,SAAiB;QACvB,2EAA2E;QAC3E,IAAI,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3E,4EAA4E;YAC5E,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACvC,IACE,aAAa;gBACb,IAAI,CAAC,cAAc;gBACnB,KAAK,CAAC,SAAS;gBACf,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAC1C,CAAC;gBACD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,mBAAmB,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;gBAC7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,uEAAuE;IAC/D,eAAe,CAAC,SAAiB,EAAE,KAAuB;QAChE,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvF,MAAM,kBAAkB,GACtB,KAAK,CAAC,OAAO,KAAK,SAAS;YAC3B,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YAClE,0BAA0B,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG;gBACd,GAAG,IAAI,CAAC,QAAQ;gBAChB,cAAc,EACZ,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aAC1F,CAAC;QACJ,CAAC;QACD,OAAO,CACL,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,kBAAkB,CAC7F,CAAC;IACJ,CAAC;IAED,+EAA+E;IACvE,oBAAoB,CAAC,SAAiB,EAAE,KAAuB;QACrE,OAAO,CACL,IAAI,CAAC,cAAc;YACnB,KAAK,CAAC,SAAS;YACf,KAAK,CAAC,OAAO,KAAK,SAAS;YAC3B,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS;YACxD,CAAC,uBAAuB,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,CAC3F,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,gBAAgB,CAAC,OAAgB;QAC/B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAChC,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC3D,CAAC;IAED,4FAA4F;IAC5F,qBAAqB;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,OAAO,CAAC,SAAS,EAAE,EAAE;YACnB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3F,IAAI,2BAA2B,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvC,OAAO,CACL,KAAK,CAAC,SAAS;gBACf,KAAK,CAAC,OAAO,KAAK,SAAS;gBAC3B,0BAA0B,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;gBACxD,0BAA0B,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CACpE,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The one promise-returning sleep used by the TUI automation flows (model picker
3
- * polling, cursor trust navigation). Implements PRD §5.3: a plain referenced timer,
4
- * so an automation step that is mid-wait keeps the process alive until it settles.
3
+ * polling, cursor trust navigation) and the startup check (§9.1). Implements PRD §5.3: a
4
+ * plain referenced timer, so an automation step that is mid-wait keeps the process alive
5
+ * until it settles.
5
6
  */
6
7
  export declare function delay(ms: number): Promise<void>;
7
8
  //# sourceMappingURL=delay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../src/core/delay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
1
+ {"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../src/core/delay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The one promise-returning sleep used by the TUI automation flows (model picker
3
- * polling, cursor trust navigation). Implements PRD §5.3: a plain referenced timer,
4
- * so an automation step that is mid-wait keeps the process alive until it settles.
3
+ * polling, cursor trust navigation) and the startup check (§9.1). Implements PRD §5.3: a
4
+ * plain referenced timer, so an automation step that is mid-wait keeps the process alive
5
+ * until it settles.
5
6
  */
6
7
  export function delay(ms) {
7
8
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -1 +1 @@
1
- {"version":3,"file":"delay.js","sourceRoot":"","sources":["../../src/core/delay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"delay.js","sourceRoot":"","sources":["../../src/core/delay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -2,7 +2,8 @@
2
2
  * Stable public error names and error class.
3
3
  * Implements PRD §10.
4
4
  */
5
- export type ElwoodErrorName = "unsupported_platform" | "claude_not_found" | "claude_start_failed" | "claude_update_failed" | "claude_not_authenticated" | "claude_version_unsupported" | "claude_invalid_reasoning_effort" | "claude_high_trust_conflict" | "codex_not_found" | "codex_start_failed" | "codex_update_failed" | "codex_not_authenticated" | "codex_version_unsupported" | "codex_invalid_reasoning_effort" | "codex_high_trust_conflict" | "state_not_found" | "state_corrupt" | "adapter_mismatch" | "resume_unavailable" | "pty_start_failed" | "hook_bridge_failed" | "session_not_running" | "input_queue_full" | "termination_failed" | "teardown_failed" | "compact_failed" | "interrupt_failed" | "model_automation_failed" | "question_not_found" | "invalid_question_answer" | "question_answer_failed" | "login_failed" | "login_timeout" | "invalid_image" | "image_attach_failed" | "invalid_loop" | "loop_limit_reached" | "loop_not_found" | "loop_persistence_failed" | "loop_submission_failed" | "wait_timeout";
5
+ import type { ElwoodAgentKind } from "./activity/index.ts";
6
+ export type ElwoodErrorName = "unsupported_platform" | "claude_not_found" | "claude_start_failed" | "claude_update_failed" | "claude_not_authenticated" | "claude_version_unsupported" | "claude_invalid_reasoning_effort" | "claude_high_trust_conflict" | "codex_not_found" | "codex_start_failed" | "codex_update_failed" | "codex_not_authenticated" | "codex_version_unsupported" | "codex_invalid_reasoning_effort" | "codex_high_trust_conflict" | "state_not_found" | "state_corrupt" | "adapter_mismatch" | "resume_unavailable" | "pty_start_failed" | "hook_bridge_failed" | "session_not_running" | "input_queue_full" | "termination_failed" | "teardown_failed" | "compact_failed" | "interrupt_failed" | "model_automation_failed" | "question_not_found" | "invalid_question_answer" | "question_answer_failed" | "login_failed" | "login_timeout" | "invalid_image" | "image_attach_failed" | "invalid_loop" | "loop_limit_reached" | "loop_not_found" | "loop_persistence_failed" | "loop_submission_failed" | "turn_failed" | "wait_timeout";
6
7
  export declare class ElwoodError extends Error {
7
8
  readonly name = "ElwoodError";
8
9
  readonly code: ElwoodErrorName;
@@ -19,26 +20,54 @@ export declare function toError(value: unknown): Error;
19
20
  * failure — the caller keeps and rethrows the real thrown value (C-ERR-01).
20
21
  */
21
22
  export declare function errnoCode(error: unknown): string | undefined;
23
+ declare const errnoTokenBrand: unique symbol;
24
+ /** A string `isErrnoToken` accepted, so a producer cannot pass unchecked text where one goes. */
25
+ export type ErrnoToken = string & {
26
+ readonly [errnoTokenBrand]: true;
27
+ };
28
+ /**
29
+ * True for an errno-shaped token (`EPERM`, `ERR_CHILD_PROCESS_STDIO_MAXBUFFER`): fixed by
30
+ * the platform or Node, never process or user content, so it can travel in a public
31
+ * message or a CLI diagnostic.
32
+ */
33
+ export declare function isErrnoToken(value: unknown): value is ErrnoToken;
34
+ /**
35
+ * The errno behind a failure: a typed error's `details.errno` (as `causeDetails` records
36
+ * it), else the thrown value's own errno; `undefined` when neither exists. Never throws.
37
+ */
38
+ export declare function underlyingErrno(error: unknown): string | undefined;
22
39
  /**
23
40
  * Extracts diagnosable details from an underlying failure (C-ERR-08):
24
- * message as cause, plus errno/syscall/path when the error exposes them.
41
+ * message as cause, plus errno/syscall/path when the error exposes them, and the
42
+ * `cleanupErrorCode` of a cleanup that failed after it, when one was attached.
25
43
  */
26
44
  export declare function causeDetails(error: unknown): Readonly<Record<string, string>>;
27
45
  /**
28
46
  * Diagnosable details for a failed CLI probe (C-ERR-08): stderr plus the
29
- * runner's typed cause/errno (e.g. `ETIMEDOUT` on a probe timeout, `E2BIG` on
30
- * output overflow) so a start failure never drops the underlying reason.
47
+ * runner's cause/errno/syscall/path when present (e.g. `ETIMEDOUT` on a probe timeout, `E2BIG` on
48
+ * output overflow) so a start failure never drops the underlying reason. `exitStatus` is the
49
+ * status the probe reported, 128+n for a signal death, and is absent when it reported none.
50
+ * A login-shell failure (`phase: "login_shell"`) never ran the command, so its stderr is
51
+ * only the user's startup output, which can carry expanded secrets: it is withheld.
31
52
  * `cleanupErrorCode` and `cleanupProcessGroupId` appear only when an aborted probe's cleanup
32
53
  * stayed unconfirmed. The group id is diagnostic: it may already be reissued to an unrelated
33
54
  * group, so it must never be signaled.
34
55
  */
35
56
  export declare function probeFailureDetails(result: {
57
+ readonly status?: number | null;
36
58
  readonly stderr: string;
37
59
  readonly error?: {
38
60
  readonly code?: string | undefined;
61
+ readonly syscall?: string | undefined;
62
+ readonly path?: string | undefined;
39
63
  readonly message: string;
40
64
  readonly cleanupErrorCode?: string;
41
65
  readonly cleanupProcessGroupId?: number;
66
+ /** The user's login shell, not the probe command, failed (§9.2). */
67
+ readonly phase?: "login_shell";
42
68
  };
43
69
  }): Readonly<Record<string, string | number>>;
70
+ /** Missing CLI diagnostics retain native causes, withholding shell output (PRD §10, C-ERR-08). */
71
+ export declare function notFoundDetails(result: Parameters<typeof probeFailureDetails>[0], command: ElwoodAgentKind): Readonly<Record<string, string | number>>;
72
+ export {};
44
73
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,eAAe,GACvB,sBAAsB,GACtB,kBAAkB,GAClB,qBAAqB,GACrB,sBAAsB,GACtB,0BAA0B,GAC1B,4BAA4B,GAC5B,iCAAiC,GACjC,4BAA4B,GAC5B,iBAAiB,GACjB,oBAAoB,GACpB,qBAAqB,GACrB,yBAAyB,GACzB,2BAA2B,GAC3B,gCAAgC,GAChC,2BAA2B,GAC3B,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,oBAAoB,GACpB,iBAAiB,GACjB,gBAAgB,GAChB,kBAAkB,GAClB,yBAAyB,GACzB,oBAAoB,GACpB,yBAAyB,GACzB,wBAAwB,GACxB,cAAc,GACd,eAAe,GACf,eAAe,GACf,qBAAqB,GACrB,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,yBAAyB,GACzB,wBAAwB,GACxB,cAAc,CAAC;AAEnB,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAkB,IAAI,iBAAiB;IACvC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAGlD,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;CAMlD;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GAC9C,WAAW,CAEb;AAED,qFAAqF;AACrF,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAQ7E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAKzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;KACzC,CAAC;CACH,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAW5C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -31,13 +31,44 @@ export function errnoCode(error) {
31
31
  const code = error.code;
32
32
  return typeof code === "string" ? code : undefined;
33
33
  }
34
+ // System errno names fit easily (the longest, such as EPROTONOSUPPORT, are 15 characters),
35
+ // as do Node's own `ERR_*` codes; the cap bounds what a malformed value can add to a line.
36
+ const MAX_ERRNO_SUFFIX_LENGTH = 40;
37
+ const ERRNO_TOKEN = new RegExp(`^E[A-Z0-9_]{1,${MAX_ERRNO_SUFFIX_LENGTH}}$`);
38
+ /**
39
+ * True for an errno-shaped token (`EPERM`, `ERR_CHILD_PROCESS_STDIO_MAXBUFFER`): fixed by
40
+ * the platform or Node, never process or user content, so it can travel in a public
41
+ * message or a CLI diagnostic.
42
+ */
43
+ export function isErrnoToken(value) {
44
+ return typeof value === "string" && ERRNO_TOKEN.test(value);
45
+ }
46
+ /**
47
+ * The errno behind a failure: a typed error's `details.errno` (as `causeDetails` records
48
+ * it), else the thrown value's own errno; `undefined` when neither exists. Never throws.
49
+ */
50
+ export function underlyingErrno(error) {
51
+ if (!(error instanceof ElwoodError))
52
+ return errnoCode(error);
53
+ const errno = error.details["errno"];
54
+ return typeof errno === "string" ? errno : undefined;
55
+ }
34
56
  /**
35
57
  * Extracts diagnosable details from an underlying failure (C-ERR-08):
36
- * message as cause, plus errno/syscall/path when the error exposes them.
58
+ * message as cause, plus errno/syscall/path when the error exposes them, and the
59
+ * `cleanupErrorCode` of a cleanup that failed after it, when one was attached.
37
60
  */
38
61
  export function causeDetails(error) {
39
62
  if (!(error instanceof Error))
40
63
  return { cause: String(error) };
64
+ const details = nativeFailureDetails(error);
65
+ const { cleanupErrorCode } = error;
66
+ if (typeof cleanupErrorCode === "string")
67
+ details["cleanupErrorCode"] = cleanupErrorCode;
68
+ return details;
69
+ }
70
+ /** The native diagnostic fields shared by thrown failures and structured probe errors. */
71
+ function nativeFailureDetails(error) {
41
72
  const details = { cause: error.message };
42
73
  const { code, syscall, path } = error;
43
74
  if (typeof code === "string")
@@ -50,18 +81,24 @@ export function causeDetails(error) {
50
81
  }
51
82
  /**
52
83
  * Diagnosable details for a failed CLI probe (C-ERR-08): stderr plus the
53
- * runner's typed cause/errno (e.g. `ETIMEDOUT` on a probe timeout, `E2BIG` on
54
- * output overflow) so a start failure never drops the underlying reason.
84
+ * runner's cause/errno/syscall/path when present (e.g. `ETIMEDOUT` on a probe timeout, `E2BIG` on
85
+ * output overflow) so a start failure never drops the underlying reason. `exitStatus` is the
86
+ * status the probe reported, 128+n for a signal death, and is absent when it reported none.
87
+ * A login-shell failure (`phase: "login_shell"`) never ran the command, so its stderr is
88
+ * only the user's startup output, which can carry expanded secrets: it is withheld.
55
89
  * `cleanupErrorCode` and `cleanupProcessGroupId` appear only when an aborted probe's cleanup
56
90
  * stayed unconfirmed. The group id is diagnostic: it may already be reissued to an unrelated
57
91
  * group, so it must never be signaled.
58
92
  */
59
93
  export function probeFailureDetails(result) {
60
- const details = { stderr: result.stderr };
94
+ const loginShell = result.error?.phase === "login_shell";
95
+ const details = { stderr: loginShell ? "" : result.stderr };
96
+ if (typeof result.status === "number")
97
+ details["exitStatus"] = result.status;
61
98
  if (result.error) {
62
- details["cause"] = result.error.message;
63
- if (typeof result.error.code === "string")
64
- details["errno"] = result.error.code;
99
+ Object.assign(details, nativeFailureDetails(result.error));
100
+ if (result.error.phase !== undefined)
101
+ details["phase"] = result.error.phase;
65
102
  if (result.error.cleanupErrorCode !== undefined)
66
103
  details["cleanupErrorCode"] = result.error.cleanupErrorCode;
67
104
  if (result.error.cleanupProcessGroupId !== undefined)
@@ -69,4 +106,11 @@ export function probeFailureDetails(result) {
69
106
  }
70
107
  return details;
71
108
  }
109
+ /** Missing CLI diagnostics retain native causes, withholding shell output (PRD §10, C-ERR-08). */
110
+ export function notFoundDetails(result, command) {
111
+ const { stderr: _shellOutput, ...details } = probeFailureDetails(result);
112
+ return result.error
113
+ ? details
114
+ : { ...details, cause: `The login shell found no \`${command}\` (status 127).` };
115
+ }
72
116
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6CH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAClB,IAAI,GAAG,aAAa,CAAC;IAC9B,IAAI,CAAkB;IACtB,OAAO,CAAoC;IAEpD,YACE,IAAqB,EACrB,OAAe,EACf,UAA6C,EAAE;QAE/C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CACzB,IAAqB,EACrB,OAAe,EACf,UAA6C,EAAE;IAE/C,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;IAChD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/D,MAAM,OAAO,GAA2B,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IACjE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAA8B,CAAC;IAC/D,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;IAC9D,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACrD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAYnC;IACC,MAAM,OAAO,GAAoC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3E,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACxC,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAChF,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;YAC7C,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,SAAS;YAClD,OAAO,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAC1E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,29 @@
3
3
  * Byte inputs are written to a short-lived temp dir; path inputs pass through
4
4
  * (already absolutized at snapshot). A materialize failure removes the temp dir and
5
5
  * rethrows as the stable typed `image_attach_failed`, never a raw platform error
6
- * out of the public send APIs. Implements PRD §5.3 (C-ERR-01/C-API-44).
6
+ * out of the public send APIs. An abort of the attach removes the temp dir at once,
7
+ * whether it lands during the writes or after them, so a closing session's `stop`,
8
+ * `kill`, or `teardown` resolves with it gone unless that best-effort removal fails;
9
+ * `cleanup` then retries it once the attach unwinds. Implements PRD §5.3 and §8.4
10
+ * (C-ERR-01/C-API-44).
7
11
  */
8
12
  import { type ImageInput } from "./types.ts";
9
13
  /** A materialized set of image paths plus the cleanup for any temp files created. */
10
14
  export type MaterializedImages = {
11
15
  readonly paths: readonly string[];
12
- /** Best-effort removal of temp files; retryable (only clears on success). */
16
+ /**
17
+ * Best-effort removal of temp files, retryable (only clears on success). It also stops
18
+ * watching the attach's abort signal.
19
+ */
13
20
  readonly cleanup: () => Promise<void>;
14
21
  };
15
22
  /**
16
23
  * Materializes byte inputs (already validated/snapshotted) to one temp dir and
17
24
  * returns every absolute path. A materialize failure (e.g. ENOSPC) removes the
18
25
  * temp dir, then rethrows as the stable typed `image_attach_failed` — never a raw
19
- * platform error out of the public send APIs (C-ERR-01/C-API-44).
26
+ * platform error out of the public send APIs (C-ERR-01/C-API-44). `signal` is the
27
+ * attach's abort signal: an attach already aborted writes nothing, and a later abort
28
+ * removes the temp dir at once (`makeTempDir`).
20
29
  */
21
- export declare function materializeImages(images: readonly ImageInput[]): Promise<MaterializedImages>;
30
+ export declare function materializeImages(images: readonly ImageInput[], signal?: AbortSignal): Promise<MaterializedImages>;
22
31
  //# sourceMappingURL=materialize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../../../src/core/images/materialize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,YAAY,CAAC;AAEnE,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,UAAU,EAAE,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA0B7B"}
1
+ {"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../../../src/core/images/materialize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,YAAY,CAAC;AAEnE,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,CAAC;AAoCF;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAyB7B"}
@@ -3,27 +3,64 @@
3
3
  * Byte inputs are written to a short-lived temp dir; path inputs pass through
4
4
  * (already absolutized at snapshot). A materialize failure removes the temp dir and
5
5
  * rethrows as the stable typed `image_attach_failed`, never a raw platform error
6
- * out of the public send APIs. Implements PRD §5.3 (C-ERR-01/C-API-44).
6
+ * out of the public send APIs. An abort of the attach removes the temp dir at once,
7
+ * whether it lands during the writes or after them, so a closing session's `stop`,
8
+ * `kill`, or `teardown` resolves with it gone unless that best-effort removal fails;
9
+ * `cleanup` then retries it once the attach unwinds. Implements PRD §5.3 and §8.4
10
+ * (C-ERR-01/C-API-44).
7
11
  */
8
12
  import { randomUUID } from "node:crypto";
9
- import { mkdtemp, rm, writeFile } from "node:fs/promises";
13
+ import { mkdtempSync, rmSync } from "node:fs";
14
+ import { rm, writeFile } from "node:fs/promises";
10
15
  import { tmpdir } from "node:os";
11
16
  import { join } from "node:path";
12
17
  import { elwoodError } from "../errors.js";
13
18
  import { imageFormatExtension } from "./types.js";
19
+ /**
20
+ * Makes the temp dir synchronously and watches `signal` from that same tick until `remove`
21
+ * has removed it, so an abort at any point before then removes the dir before the code
22
+ * that aborted resumes. A write still in flight either fails or finishes into the removed
23
+ * dir; either way nothing stays on disk. A removal that fails at abort stays for `remove`
24
+ * to retry.
25
+ */
26
+ function makeTempDir(signal) {
27
+ const path = mkdtempSync(join(tmpdir(), "elwood-image-"));
28
+ let present = true;
29
+ const removeNow = () => {
30
+ try {
31
+ rmSync(path, { recursive: true, force: true });
32
+ present = false;
33
+ }
34
+ catch {
35
+ // Best-effort: `remove` retries once the attach unwinds.
36
+ }
37
+ };
38
+ signal?.addEventListener("abort", removeNow, { once: true });
39
+ return {
40
+ path,
41
+ remove: async () => {
42
+ if (present) {
43
+ await rm(path, { recursive: true, force: true });
44
+ present = false; // cleared only on success → a transient failure stays retryable
45
+ }
46
+ // Only now: an abort while `rm` is pending still removes the dir synchronously.
47
+ signal?.removeEventListener("abort", removeNow);
48
+ },
49
+ };
50
+ }
14
51
  /**
15
52
  * Materializes byte inputs (already validated/snapshotted) to one temp dir and
16
53
  * returns every absolute path. A materialize failure (e.g. ENOSPC) removes the
17
54
  * temp dir, then rethrows as the stable typed `image_attach_failed` — never a raw
18
- * platform error out of the public send APIs (C-ERR-01/C-API-44).
55
+ * platform error out of the public send APIs (C-ERR-01/C-API-44). `signal` is the
56
+ * attach's abort signal: an attach already aborted writes nothing, and a later abort
57
+ * removes the temp dir at once (`makeTempDir`).
19
58
  */
20
- export async function materializeImages(images) {
21
- let dir;
59
+ export async function materializeImages(images, signal) {
60
+ signal?.throwIfAborted();
61
+ let temp;
22
62
  const cleanup = async () => {
23
- if (!dir)
24
- return;
25
- await rm(dir, { recursive: true, force: true });
26
- dir = undefined; // cleared only on success → a transient failure stays retryable
63
+ await temp?.remove();
27
64
  };
28
65
  try {
29
66
  const paths = [];
@@ -32,8 +69,8 @@ export async function materializeImages(images) {
32
69
  paths.push(image.path);
33
70
  continue;
34
71
  }
35
- dir ??= await mkdtemp(join(tmpdir(), "elwood-image-"));
36
- const file = join(dir, `${randomUUID()}.${imageFormatExtension[image.format]}`);
72
+ temp ??= makeTempDir(signal);
73
+ const file = join(temp.path, `${randomUUID()}.${imageFormatExtension[image.format]}`);
37
74
  await writeFile(file, image.data);
38
75
  paths.push(file);
39
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../../src/core/images/materialize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAmB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AASnE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAA6B;IAE7B,IAAI,GAAuB,CAAC;IAC5B,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,GAAG,GAAG,SAAS,CAAC,CAAC,gEAAgE;IACnF,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvB,SAAS;YACX,CAAC;YACD,GAAG,KAAK,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,IAAI,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChF,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,WAAW,CAAC,qBAAqB,EAAE,gDAAgD,EAAE;YACzF,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../../src/core/images/materialize.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  /** Abort-aware timing, dialog holds, and composer cleanup for queued input (PRD §5.3/§5.9, C-API-56). */
2
+ import type { ScreenTerminal } from "../models/tui-screen.ts";
2
3
  /**
3
4
  * The narrow terminal surface the queued-input helpers drive. `settled` resolves once
4
5
  * every PTY byte received so far has been rendered and observed, and `renderFailed`
@@ -9,6 +10,14 @@ export type InputTerminal = {
9
10
  settled?(): Promise<void>;
10
11
  readonly renderFailed?: boolean;
11
12
  };
13
+ /**
14
+ * A terminal whose received output can be observed before a write. Model-picker keys
15
+ * require it, so no caller can drive the picker without the barrier (C-API-56).
16
+ */
17
+ export type ObservedTerminal = ScreenTerminal & {
18
+ settled(): Promise<void>;
19
+ readonly renderFailed: boolean;
20
+ };
12
21
  export declare function waitForInput(ms: number, signal?: AbortSignal): Promise<void>;
13
22
  /** One bounded attempt to observe received output: sustained output or a render backlog can exceed it. */
14
23
  export declare const observeBudgetMs = 1000;
@@ -33,6 +42,12 @@ export declare function holdWhileUnsafe(terminal: InputTerminal, guard?: {
33
42
  export declare function writeUnsafe(terminal: InputTerminal, guard?: {
34
43
  readonly blocked?: () => boolean;
35
44
  }, signal?: AbortSignal, waitForRender?: boolean): Promise<boolean>;
45
+ /**
46
+ * `view` behind `source`'s received-output barrier, so a picker key written through it is
47
+ * decided on everything received and withheld when that cannot be observed (C-API-56).
48
+ * `renderFailed` stays live: a render can fail after the view is made.
49
+ */
50
+ export declare function behindReceivedOutputBarrier(source: ObservedTerminal, view: ScreenTerminal): ObservedTerminal;
36
51
  export declare function throwIfInputAborted(signal?: AbortSignal): void;
37
52
  export declare function inputAbortError(signal: AbortSignal): Error;
38
53
  /** Raw takeover of awaited turn input reports submission failure, preserving other errors (§5.3). */