@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
@@ -5,15 +5,18 @@ import { checkedInputBytes } from "../../core/control-queue/budget.js";
5
5
  import { applyCodexHighTrust } from "../../core/high-trust.js";
6
6
  import { queuePersonaMessage } from "../../core/persona.js";
7
7
  import { codexReasoningEfforts, validateReasoningEffort } from "../../core/reasoning-effort.js";
8
+ import { assertLaunchDirectory, recheckLaunchDirectoryOnFailure, resolveLaunchDirectory, } from "../../runtime/session/launch-directory.js";
9
+ import { prepareLaunchState } from "../../runtime/session/prepare-state.js";
8
10
  import { withSocketHomeCleanup } from "../../runtime/startup/cleanup.js";
9
11
  import { canonicalStatePath } from "../../state/canonical-path.js";
10
12
  import { safeSessionDir } from "../../state/files.js";
11
13
  import { codexLaunchPosture, withCodexLaunch } from "../../state/launch-posture.js";
12
14
  import { sessionRuntime } from "../../state/runtime-paths.js";
13
- import { removeOwnSocketFile } from "../../state/socket-home.js";
15
+ import { releaseLaunchSocket } from "../../state/socket-home.js";
14
16
  import { withLaunchOwnership } from "../../state/startup-ownership.js";
15
- import { createSessionRecord, defaultStateDir, prepareStateDir, } from "../../state/store.js";
17
+ import { createSessionRecord, defaultStateDir } from "../../state/store.js";
16
18
  import * as preflight from "../preflight.js";
19
+ import { codexHomeReportPath, explainCodexStartFailure } from "../pty.js";
17
20
  import { buildCodexSession } from "./build.js";
18
21
  export { resetCodexSessionSeamsForTests, setCodexHookBridgeFactoryForTests, } from "./bridge.js";
19
22
  /**
@@ -34,18 +37,30 @@ export async function startCodexWithId(rawOptions, elwoodSessionId) {
34
37
  // PTY spawn all agree. `highTrust` expands to its concrete posture (or rejects a
35
38
  // conflicting explicit one) HERE, before preflight, so the persisted record and the
36
39
  // launch command both carry the expanded posture (C-API-54).
37
- const options = applyCodexHighTrust({ ...rawOptions, cwd: resolve(rawOptions.cwd) });
40
+ const options = applyCodexHighTrust({
41
+ ...rawOptions,
42
+ cwd: resolveLaunchDirectory("codex", rawOptions.cwd),
43
+ });
38
44
  checkedInputBytes(options.persona ?? "");
39
- const stateDir = canonicalStatePath(options.stateDir ?? defaultStateDir(options.cwd));
40
- const warning = await preflight.preflightCodex(options.strictVersionCheck ?? false, options.autoupdate ?? false);
41
- prepareStateDir(stateDir, { gitignore: options.stateDir === undefined });
42
- const createdRecord = createSessionRecord({
43
- cwd: options.cwd,
44
- id: elwoodSessionId,
45
- adapter: "codex",
45
+ const stateDirPath = resolve(options.stateDir ?? defaultStateDir(options.cwd));
46
+ // Before the default state path, which is under `cwd`, is inspected: a bad `cwd` is the error.
47
+ await assertLaunchDirectory("codex", options.cwd);
48
+ const stateDir = canonicalStatePath(stateDirPath);
49
+ const warning = await recheckLaunchDirectoryOnFailure("codex", options.cwd, () => preflight.preflightCodex(options.strictVersionCheck ?? false, options.autoupdate ?? false, options.cwd));
50
+ const session = await recheckLaunchDirectoryOnFailure("codex", options.cwd, () => {
51
+ prepareLaunchState("codex", stateDir, {
52
+ cwd: options.cwd,
53
+ isImplicitDefaultStateDir: options.stateDir === undefined,
54
+ elwoodSessionId,
55
+ });
56
+ const createdRecord = createSessionRecord({
57
+ cwd: options.cwd,
58
+ id: elwoodSessionId,
59
+ adapter: "codex",
60
+ });
61
+ const record = withCodexLaunch(createdRecord, codexLaunchPosture(options));
62
+ return startCodexFromRecord(record, stateDir, options, false, warning);
46
63
  });
47
- const record = withCodexLaunch(createdRecord, codexLaunchPosture(options));
48
- const session = await startCodexFromRecord(record, stateDir, options, false, warning);
49
64
  return queuePersonaMessage(session, options.persona, session.closing.signal);
50
65
  }
51
66
  export function startCodexFromRecord(record, stateDir, options, resumed, preflightWarning, ownership) {
@@ -56,16 +71,17 @@ export function startCodexFromRecord(record, stateDir, options, resumed, preflig
56
71
  // `sessionRuntime` ensures the session's STABLE out-of-tree home and reserves a FRESH
57
72
  // per-launch socket PATH inside it; the socket is bound later, by `bridge.start()`
58
73
  // (after the state/runtime files are written). Wrap the WHOLE build so ANY failure
59
- // before the session takes ownership removes THIS launch's own socket file — never the
60
- // shared home, which a concurrent launch may own (§9.1). On success ownership transfers
61
- // to the returned session, whose teardown removes the whole home via removeSessionFiles.
74
+ // before the session takes ownership releases THIS launch's own socket file, and the
75
+ // shared home only if no concurrent launch's socket is in it (§8.1, §9.1). On success
76
+ // ownership transfers to the returned session; teardown removes the whole home.
62
77
  return withLaunchOwnership(safeSessionDir(stateDir, record.elwoodSessionId), ownership, (owner, activate) => {
63
78
  const runtime = sessionRuntime({
64
79
  stateDir,
65
80
  elwoodSessionId: record.elwoodSessionId,
66
81
  adapter: "codex",
67
82
  }, owner);
68
- return withSocketHomeCleanup(() => removeOwnSocketFile(runtime.socketPath), () => buildCodexSession({
83
+ const report = codexHomeReportPath(runtime);
84
+ return withSocketHomeCleanup(() => releaseLaunchSocket(runtime.socketPath), () => buildCodexSession({
69
85
  record,
70
86
  stateDir,
71
87
  runtime,
@@ -73,6 +89,8 @@ export function startCodexFromRecord(record, stateDir, options, resumed, preflig
73
89
  resumed,
74
90
  preflightWarning,
75
91
  activate,
92
+ }).catch((error) => {
93
+ throw explainCodexStartFailure(error, report);
76
94
  }));
77
95
  });
78
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codex/session/index.ts"],"names":[],"mappings":"AAAA,6IAA6I;AAE7I,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,UAA6B;IACtD,OAAO,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA6B,EAC7B,eAAuB;IAEvB,qFAAqF;IACrF,uFAAuF;IACvF,uFAAuF;IACvF,uFAAuF;IACvF,iFAAiF;IACjF,oFAAoF;IACpF,6DAA6D;IAC7D,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,iBAAiB,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,cAAc,CAC5C,OAAO,CAAC,kBAAkB,IAAI,KAAK,EACnC,OAAO,CAAC,UAAU,IAAI,KAAK,CAC5B,CAAC;IACF,eAAe,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,mBAAmB,CAAC;QACxC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,EAAE,EAAE,eAAe;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,eAAe,CAAC,aAAa,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACtF,OAAO,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,QAAgB,EAChB,OAA0B,EAC1B,OAAgB,EAChB,gBAA6D,EAC7D,SAA6B;IAE7B,uFAAuF;IACvF,sFAAsF;IACtF,gFAAgF;IAChF,uBAAuB,CACrB,OAAO,CAAC,eAAe,EACvB,qBAAqB,EACrB,gCAAgC,CACjC,CAAC;IACF,sFAAsF;IACtF,mFAAmF;IACnF,mFAAmF;IACnF,uFAAuF;IACvF,wFAAwF;IACxF,yFAAyF;IACzF,OAAO,mBAAmB,CACxB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,EAChD,SAAS,EACT,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,cAAc,CAC5B;YACE,QAAQ;YACR,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,OAAO,EAAE,OAAO;SACjB,EACD,KAAK,CACN,CAAC;QACF,OAAO,qBAAqB,CAC1B,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,EAC7C,GAAG,EAAE,CACH,iBAAiB,CAAC;YAChB,MAAM;YACN,QAAQ;YACR,OAAO;YACP,OAAO;YACP,OAAO;YACP,gBAAgB;YAChB,QAAQ;SACT,CAAC,CACL,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codex/session/index.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import type { ElwoodActivityEvent } from "../../core/activity/index.ts";
6
6
  import type { HookObservation } from "../../core/hook-observation.ts";
7
+ import type { ModelPickerSpec } from "../../core/models/picker.ts";
7
8
  import type { TerminalReplayBuffer } from "../../core/terminal-replay.ts";
8
9
  import type { ElwoodSessionStatus, ElwoodWarningEvent } from "../../core/types.ts";
9
10
  import type { TypedEmitter } from "../../events/emitter.ts";
@@ -15,30 +16,25 @@ import { type SessionRecord } from "../../state/store.ts";
15
16
  import type { ElwoodTerminal } from "../../terminal/headless.ts";
16
17
  import type { CodexTranscriptWatcher } from "../transcript/index.ts";
17
18
  import type { CodexHookBridge } from "./bridge.ts";
19
+ import { CodexTurnCommit } from "./turn-commit.ts";
18
20
  import type { CodexEventHandler, CodexEventMap, CodexEventName, CodexSessionApi } from "./types.ts";
19
21
  export declare class CodexSessionImpl extends AgentSessionBase implements CodexSessionApi {
20
- protected readonly picker: {
21
- isClear: import("../../core/trust/clearance.ts").TrustClearance;
22
- agent: string;
23
- isCandidate: (text: string) => boolean;
24
- isOpen: (text: string) => boolean;
25
- activeDialog: (text: string, authority: import("../../core/models/rows.ts").ModelDialogAuthority) => import("../../core/models/rows.ts").ModelDialogStage | undefined;
26
- parse: (text: string) => import("../../core/models/rows.ts").ParsedModelPicker;
27
- apply: (io: import("../../core/models/picker.ts").ModelPickerIo, timeoutMs: number) => Promise<void>;
28
- };
22
+ protected readonly picker: ModelPickerSpec;
29
23
  private readonly bridge;
30
24
  private readonly emitter;
31
25
  private readonly transcriptWatcher;
32
26
  private onInitialReady;
33
27
  private hookReadyObservation;
34
28
  private readonly cliExit;
35
- constructor(record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, terminal: ElwoodTerminal, bridge: CodexHookBridge, emitter: TypedEmitter<CodexEventMap>, terminalReplay: TerminalReplayBuffer, transcriptWatcher: CodexTranscriptWatcher | undefined, loopDefinitions: readonly PersistedLoopDefinition[]);
29
+ private readonly resolveConfigPath;
30
+ /** Holds `stop`/`teardown` for the turn a `Stop` hook ends to be recorded (C-LIFE-13). */
31
+ readonly turnCommit: CodexTurnCommit;
32
+ constructor(record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, terminal: ElwoodTerminal, bridge: CodexHookBridge, emitter: TypedEmitter<CodexEventMap>, terminalReplay: TerminalReplayBuffer, transcriptWatcher: CodexTranscriptWatcher | undefined, loopDefinitions: readonly PersistedLoopDefinition[], resolveConfigPath: (signal: AbortSignal) => Promise<string>);
36
33
  on<E extends CodexEventName>(event: E, handler: CodexEventHandler<E>): import("../../index.ts").Unsubscribe;
37
34
  setModel(id: string, options?: {
38
35
  readonly timeoutMs?: number;
39
36
  }): Promise<void>;
40
37
  private waitForCliExit;
41
- private restoreCodexDefault;
42
38
  off<E extends CodexEventName>(event: E, handler: CodexEventHandler<E>): void;
43
39
  completeInitialReady(): void;
44
40
  waitForStatus(match: (status: ElwoodSessionStatus) => boolean, timeoutMs?: number): Promise<"running" | "ready" | "blocked" | "exited" | "stopped" | "killed" | "torn_down" | "starting">;
@@ -57,8 +53,10 @@ export declare class CodexSessionImpl extends AgentSessionBase implements CodexS
57
53
  * boot-time composer placeholder that would swallow it (C-API-28). */
58
54
  markInitialReadyFromHook(observation: HookObservation): void;
59
55
  observeTranscript(path?: string | null): void;
56
+ stop(): Promise<void>;
57
+ teardown(): Promise<void>;
60
58
  /** One bounded per-pass scan of the committed transcript (an unblocked `Stop`, §7A.3). */
61
- scanTranscript(): void;
59
+ readonly scanTranscript: () => void;
62
60
  emitWarnings(warnings: readonly ElwoodWarningEvent[]): void;
63
61
  protected stopRuntime(): Promise<void>;
64
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../../src/codex/session/instance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../../src/codex/session/instance.ts"],"names":[],"mappings":"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"}
@@ -2,43 +2,57 @@
2
2
  * In-memory Codex session object exposed to callers.
3
3
  * Implements PRD §5.7, §7A, §8, and §9.
4
4
  */
5
- import { isPickerIntervention } from "../../core/models/intervention.js";
6
5
  import { sessionWaitForActivity, sessionWaitForStatus } from "../../core/session-wait.js";
7
6
  import { registerNativeTurnReader } from "../../core/simple/submission-context.js";
8
7
  import { emitSessionWarnings } from "../../core/warnings/session.js";
8
+ import { PtyExitLatch } from "../../pty/exit-latch.js";
9
9
  import { AgentSessionBase } from "../../runtime/session/base.js";
10
10
  import { updateSessionResumeId } from "../../state/store.js";
11
11
  import { codexTurnIdentity } from "../accepted-turn.js";
12
- import { restoreCodexConfig, snapshotCodexConfig } from "../config/restore.js";
13
- import { runCodexModelSwitch } from "../config/transaction.js";
12
+ import { withCodexDefault } from "../config/default-model.js";
14
13
  import { attachCodexImages } from "../images/attach.js";
15
14
  import { codexModelPicker } from "../model-picker.js";
16
15
  import { codexSessionQuestions } from "../questions/session.js";
17
16
  import { liveCodexClearance } from "../screen/live-clearance.js";
18
17
  import { createCodexRecoveryComposer } from "../screen/staged-input.js";
18
+ import { confirmCodexRejection } from "../transcript/rejection.js";
19
19
  import { stopCodexRuntime } from "./cleanup.js";
20
- import { CliExitBarrier } from "./cli-exit.js";
20
+ import { switchCodexModel } from "./config-switch.js";
21
21
  import { observeCodexInitialReady } from "./initial-ready.js";
22
- import { clipboardRestoreFailedWarning, codexRestoreFailedWarning, codexRestoreSkippedWarning, } from "./warnings.js";
22
+ import { CodexTurnCommit } from "./turn-commit.js";
23
+ import { clipboardRestoreFailedWarning } from "./warnings.js";
24
+ /** How long a setModel interrupted by close waits for the CLI to exit before restoring. */
25
+ const cliExitWaitMs = 5_000;
23
26
  export class CodexSessionImpl extends AgentSessionBase {
27
+ // The default and the setModel restore use the config of THIS session's Codex (C-CODEX-24).
24
28
  picker = {
25
29
  ...codexModelPicker,
26
30
  isClear: liveCodexClearance(() => this.terminal),
31
+ withDefaults: (options, signal) => withCodexDefault(options, signal, this.resolveConfigPath),
27
32
  };
28
33
  bridge;
29
34
  emitter;
30
35
  transcriptWatcher;
31
36
  onInitialReady;
32
37
  hookReadyObservation;
33
- cliExit;
34
- constructor(record, stateDir, runtime, pty, terminal, bridge, emitter, terminalReplay, transcriptWatcher, loopDefinitions) {
38
+ // The PTY's own exit. Session status cannot stand in for it: shutdown records stopped,
39
+ // killed, and torn_down even when its signal did not take.
40
+ cliExit = new PtyExitLatch(this.pty);
41
+ resolveConfigPath;
42
+ /** Holds `stop`/`teardown` for the turn a `Stop` hook ends to be recorded (C-LIFE-13). */
43
+ turnCommit;
44
+ constructor(record, stateDir, runtime, pty, terminal, bridge, emitter, terminalReplay, transcriptWatcher, loopDefinitions, resolveConfigPath) {
35
45
  super("codex", record, stateDir, runtime, pty, terminal, emitter, terminalReplay, loopDefinitions);
36
46
  registerNativeTurnReader(this, codexTurnIdentity);
37
47
  this.configureQuestions((registry) => codexSessionQuestions(registry, this.elwoodSessionId, emitter));
38
48
  this.bridge = bridge;
39
49
  this.emitter = emitter;
40
50
  this.transcriptWatcher = transcriptWatcher;
41
- this.cliExit = new CliExitBarrier(pty);
51
+ this.turnCommit = new CodexTurnCommit(() => transcriptWatcher?.poll(), this.cliExit, this);
52
+ this.resolveConfigPath = resolveConfigPath;
53
+ // Codex fires no `Stop` for a turn it rejects; its failed `task_complete` ends it (C-API-60).
54
+ emitter.on("codex:transcript", ({ item }) => confirmCodexRejection(this, item));
55
+ emitter.on("codex:transcript", (event) => this.turnCommit.observe(event.item));
42
56
  }
43
57
  on(event, handler) {
44
58
  // REGISTER before replaying buffered `terminal:data` (mirrors Claude): a throwing replay
@@ -47,41 +61,24 @@ export class CodexSessionImpl extends AgentSessionBase {
47
61
  this.replayFor(event, handler);
48
62
  return unsubscribe;
49
63
  }
50
- // Restore the user's config default after picker changes; the live CLI retains
51
- // its selection. The process-wide transaction lock prevents interleaved snapshots
52
- // and restores even when automation rejects after Codex writes (C-CODEX-14).
53
64
  setModel(id, options) {
54
65
  // The queue slot is claimed FIRST (by `super.setModel`), and the config transaction
55
66
  // runs inside it via `around`. Reversing that let a following `sendMessage` dispatch
56
67
  // while this call was still waiting for another session's lock, sending under the old
57
68
  // model — a FIFO violation the slot exists to prevent.
58
- return super.setModel(id, options, (flow, signal) => runCodexModelSwitch({
59
- snapshot: snapshotCodexConfig,
60
- apply: flow,
69
+ const session = {
70
+ elwoodSessionId: this.elwoodSessionId,
71
+ resolveConfigPath: this.resolveConfigPath,
61
72
  waitForCliExit: () => this.waitForCliExit(),
62
- // The picker deadline includes this lock wait. Once acquired, the transaction
63
- // owns config.toml until its abort handling and restore finish.
64
- cancel: { signal, error: () => signal.reason },
65
- restore: (snapshot) => this.restoreCodexDefault(snapshot, signal.reason),
66
- onRestoreError: (error) => this.emitWarnings([codexRestoreFailedWarning(this.elwoodSessionId, error)]),
67
- }));
68
- }
69
- // A closing session rejects the picker at once, while the dying CLI can still persist
70
- // the selection it had confirmed, so the restore waits on the PTY's own exit.
73
+ emitWarnings: (warnings) => this.emitWarnings(warnings),
74
+ };
75
+ return super.setModel(id, options, (flow, signal) => switchCodexModel(session, flow, signal));
76
+ }
77
+ // A closing session's dying CLI can still persist a confirmed selection: await its exit.
71
78
  waitForCliExit() {
72
79
  if (!this.closing.signal.aborted)
73
80
  return undefined;
74
- return this.cliExit.wait();
75
- }
76
- restoreCodexDefault(snapshot, reason) {
77
- const outcome = isPickerIntervention(reason)
78
- ? snapshotCodexConfig() === snapshot
79
- ? "unchanged"
80
- : "interrupted"
81
- : restoreCodexConfig(snapshot);
82
- if (outcome === "restored" || outcome === "unchanged")
83
- return;
84
- this.emitWarnings([codexRestoreSkippedWarning(this.elwoodSessionId, outcome)]);
81
+ return this.cliExit.within(cliExitWaitMs, { unref: true }); // never holds the host open
85
82
  }
86
83
  off(event, handler) {
87
84
  this.emitter.off(event, handler);
@@ -128,10 +125,18 @@ export class CodexSessionImpl extends AgentSessionBase {
128
125
  if (path)
129
126
  this.transcriptWatcher?.observe(path);
130
127
  }
131
- /** One bounded per-pass scan of the committed transcript (an unblocked `Stop`, §7A.3). */
132
- scanTranscript() {
133
- this.transcriptWatcher?.scan();
128
+ stop() {
129
+ this.closing.abort();
130
+ this.loops.pause();
131
+ return this.turnCommit.beforeShutdown(() => super.stop());
134
132
  }
133
+ teardown() {
134
+ this.closing.abort();
135
+ this.loops.prepareClear();
136
+ return this.turnCommit.beforeShutdown(() => super.teardown());
137
+ }
138
+ /** One bounded per-pass scan of the committed transcript (an unblocked `Stop`, §7A.3). */
139
+ scanTranscript = () => this.transcriptWatcher?.scan();
135
140
  emitWarnings(warnings) {
136
141
  // No cast: each callback is the emitter's own `emit` bound to a correlated
137
142
  // event name, so a map/payload drift is a compile error here.
@@ -1 +1 @@
1
- {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../../src/codex/session/instance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../../src/codex/session/instance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Codex's initial-readiness gate: its deadline needs the configured composer (the model
3
+ * footer), and a release by the backstop without one is reported as a content-free
4
+ * `initial_ready_backstop` warning (PRD §5.3, §5.7, C-API-28).
5
+ */
6
+ import type { InitialReadyBackstopWarning } from "../../core/warnings/lifecycle.ts";
7
+ import { type ReadinessGate } from "../../runtime/session/readiness.ts";
8
+ export declare function createCodexReadinessGate(onReady: () => void, resumed: boolean, elwoodSessionId: string, warnings: {
9
+ emitWarnings(warnings: readonly InitialReadyBackstopWarning[]): void;
10
+ }): ReadinessGate;
11
+ //# sourceMappingURL=readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../../src/codex/session/readiness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAEpF,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAG7F,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,IAAI,EACnB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE;IAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,2BAA2B,EAAE,GAAG,IAAI,CAAA;CAAE,GACjF,aAAa,CAKf"}
@@ -0,0 +1,22 @@
1
+ import { initialBackstopMs } from "../../runtime/readiness/initial-ready.js";
2
+ import { createReadinessGate } from "../../runtime/session/readiness.js";
3
+ import { codexComposerConfigured } from "../screen/clearance.js";
4
+ export function createCodexReadinessGate(onReady, resumed, elwoodSessionId, warnings) {
5
+ return createReadinessGate(onReady, resumed, {
6
+ configured: codexComposerConfigured,
7
+ onBackstopRelease: () => warnings.emitWarnings([backstopWarning(elwoodSessionId)]),
8
+ });
9
+ }
10
+ /** Live-only and content-free: it names the missing evidence, never the screen. */
11
+ function backstopWarning(elwoodSessionId) {
12
+ return {
13
+ elwoodSessionId,
14
+ agent: "codex",
15
+ source: "lifecycle",
16
+ code: "initial_ready_backstop",
17
+ severity: "warning",
18
+ message: `No configured Codex composer was recognized within ${initialBackstopMs / 1_000} seconds of the first frame; readiness was released without it.`,
19
+ raw: "initial_ready_backstop",
20
+ };
21
+ }
22
+ //# sourceMappingURL=readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../src/codex/session/readiness.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAsB,MAAM,oCAAoC,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,UAAU,wBAAwB,CACtC,OAAmB,EACnB,OAAgB,EAChB,eAAuB,EACvB,QAAkF;IAElF,OAAO,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;QAC3C,UAAU,EAAE,uBAAuB;QACnC,iBAAiB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;KACnF,CAAC,CAAC;AACL,CAAC;AAED,mFAAmF;AACnF,SAAS,eAAe,CAAC,eAAuB;IAC9C,OAAO;QACL,eAAe;QACf,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,sDAAsD,iBAAiB,GAAG,KAAK,iEAAiE;QACzJ,GAAG,EAAE,wBAAwB;KAC9B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/codex/session/resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAsB,WAAW,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqD1F"}
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/codex/session/resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAsB,WAAW,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CA8D1F"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { elwoodError } from "../../core/errors.js";
6
6
  import { applyCodexHighTrust } from "../../core/high-trust.js";
7
+ import { assertLaunchDirectory, recheckLaunchDirectoryOnFailure, } from "../../runtime/session/launch-directory.js";
7
8
  import { canonicalStatePath } from "../../state/canonical-path.js";
8
9
  import { reserveLaunchOwnership } from "../../state/launch-ownership.js";
9
10
  import { codexLaunchPosture, effectivePosture, withCodexLaunch, } from "../../state/launch-posture.js";
@@ -22,16 +23,20 @@ export async function resumeCodex(rawOptions) {
22
23
  throw elwoodError("adapter_mismatch", "Cannot resume a non-Codex session as Codex.");
23
24
  if (!record.codex.resumeId)
24
25
  throw elwoodError("resume_unavailable", "Cannot resume Codex without a Codex session id.");
26
+ // Reserved before the first `await`: a teardown already running must see this successor
27
+ // before it decides which shared state to remove (C-API-20).
25
28
  const ownership = reserveLaunchOwnership(sessionDir(stateDir, record.elwoodSessionId));
26
29
  try {
27
- const warning = await preflight.preflightCodex(options.strictVersionCheck ?? false, options.autoupdate ?? false);
30
+ // Codex relaunches where the session started (`--cd`); `cwd` only locates the state.
31
+ await assertLaunchDirectory("codex", record.cwd);
32
+ const warning = await recheckLaunchDirectoryOnFailure("codex", record.cwd, () => preflight.preflightCodex(options.strictVersionCheck ?? false, options.autoupdate ?? false, record.cwd));
28
33
  // Resume defaults to the posture this session launched with; explicit options
29
34
  // override field by field, and the effective posture is re-persisted (C-API-32,
30
35
  // C-STATE-13). Terminal size is not persisted: it falls back to options.initialSize.
31
36
  const launch = effectivePosture(record.codex.launch, codexLaunchPosture(options));
32
37
  const resumedRecord = withCodexLaunch(record, launch);
33
- const session = await startCodexFromRecord(resumedRecord, stateDir, {
34
- cwd: options.cwd ?? record.cwd,
38
+ const session = await recheckLaunchDirectoryOnFailure("codex", record.cwd, () => startCodexFromRecord(resumedRecord, stateDir, {
39
+ cwd: record.cwd, // where Codex relaunches; `options.cwd` only located the state
35
40
  stateDir,
36
41
  ...(options.hooks === undefined ? {} : { hooks: options.hooks }),
37
42
  ...(options.initialSize === undefined ? {} : { initialSize: options.initialSize }),
@@ -46,7 +51,7 @@ export async function resumeCodex(rawOptions) {
46
51
  ? {}
47
52
  : { strictVersionCheck: options.strictVersionCheck }),
48
53
  }, true, // resumed: mark ready on the first composer marker, not the 10s deadline
49
- warning, ownership);
54
+ warning, ownership));
50
55
  return session;
51
56
  }
52
57
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/codex/session/resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAA8B;IAC9D,iFAAiF;IACjF,sEAAsE;IACtE,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAChD,mFAAmF;IACnF,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,kBAAkB,CACjC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAClE,CAAC;IACF,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO;QAC5B,MAAM,WAAW,CAAC,kBAAkB,EAAE,6CAA6C,CAAC,CAAC;IACvF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;QACxB,MAAM,WAAW,CAAC,oBAAoB,EAAE,iDAAiD,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACvF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,cAAc,CAC5C,OAAO,CAAC,kBAAkB,IAAI,KAAK,EACnC,OAAO,CAAC,UAAU,IAAI,KAAK,CAC5B,CAAC;QACF,8EAA8E;QAC9E,gFAAgF;QAChF,qFAAqF;QACrF,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;QAClF,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CACxC,aAAa,EACb,QAAQ,EACR;YACE,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG;YAC9B,QAAQ;YACR,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAClF,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;YACxF,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC5E,oFAAoF;YACpF,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;YACjD,GAAG,MAAM;YACT,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC;SACxD,EACD,IAAI,EAAE,yEAAyE;QAC/E,OAAO,EACP,SAAS,CACV,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/codex/session/resume.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../../src/codex/session/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,sBAAsB,EAIvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,yFAAyF;AACzF,KAAK,2BAA2B,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC;IAC1C;2FACuF;IACvF,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,EACpC,OAAO,EAAE,MAAM,qBAAqB,GAAG,SAAS,GAC/C,2BAA2B,CA8E7B"}
1
+ {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../../src/codex/session/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EACL,sBAAsB,EAIvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,yFAAyF;AACzF,KAAK,2BAA2B,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC;IAC1C;2FACuF;IACvF,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,EACpC,OAAO,EAAE,MAAM,qBAAqB,GAAG,SAAS,GAC/C,2BAA2B,CAsF7B"}
@@ -9,7 +9,9 @@
9
9
  */
10
10
  import * as activity from "../../core/activity/index.js";
11
11
  import { createTranscriptWarningRouter, } from "../../core/transcript/warning-router.js";
12
+ import { CodexClipboardCopies } from "../images/clipboard-copies.js";
12
13
  import { CodexTranscriptWatcher, codexDropWarning, codexPollStoppedWarning, codexReadErrorWarning, } from "../transcript/index.js";
14
+ import { imageCopyRemovalFailedWarning } from "./warnings.js";
13
15
  /**
14
16
  * Builds the transcript watcher, routing content-free drop/read-error notices to
15
17
  * the session's warning sink. Notices seen before `getSink()` resolves are held in
@@ -58,7 +60,9 @@ export function createCodexTranscriptWatcher(elwoodSessionId, emitter, getSink)
58
60
  }));
59
61
  }
60
62
  }
63
+ const clipboardCopies = new CodexClipboardCopies();
61
64
  const watcher = new CodexTranscriptWatcher(elwoodSessionId, (event) => duringDelivery(() => {
65
+ clipboardCopies.observe(event.item);
62
66
  deliver("codex:transcript", event);
63
67
  deliver("activity", activity.activityFromCodexTranscript(event));
64
68
  }), {
@@ -88,7 +92,14 @@ export function createCodexTranscriptWatcher(elwoodSessionId, emitter, getSink)
88
92
  catch { } // a diagnostic-listener bug must not block lifecycle completion
89
93
  }
90
94
  finally {
91
- afterFlush();
95
+ // The CLI has exited and the flush has read its last records: remove the image
96
+ // copies they named, and report one that stays, before finishing the exit (C-API-46).
97
+ clipboardCopies.removeAll((failure) => {
98
+ // `route` contains a throwing listener, so the exit always finishes.
99
+ if (failure !== undefined)
100
+ route(imageCopyRemovalFailedWarning(elwoodSessionId, failure));
101
+ afterFlush();
102
+ });
92
103
  }
93
104
  };
94
105
  return { watcher, duringDelivery, flushPendingWarnings, finishSafely };
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../src/codex/session/transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../src/codex/session/transcript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Gives Codex a bounded time to record the turn its `Stop` hook ended before a graceful
3
+ * shutdown signals it. Implements PRD §5.7 (shutting down after a Codex turn) and C-LIFE-13.
4
+ *
5
+ * Codex runs the `Stop` hook before it records the turn's completion in its transcript,
6
+ * and Elwood reports `ready` from that hook. Codex 0.164.0 signaled after the hook returns
7
+ * but before that record is written exits without it, and the resumed conversation then
8
+ * ends in "Conversation interrupted" (docs/cli-behavior.md, "Resume lifecycle"). The wait
9
+ * also ends when the CLI exits or after `turnCommitWaitMs`; shutdown then proceeds, and a
10
+ * turn Codex has still not recorded can be lost, which the session is warned of.
11
+ */
12
+ import type { ElwoodWarningEvent } from "../../core/types.ts";
13
+ import type { PtyExitLatch } from "../../pty/exit-latch.ts";
14
+ /** The longest `stop`/`teardown` wait for the record before signaling anyway. */
15
+ export declare const turnCommitWaitMs = 2000;
16
+ /** The session a wait the bound ended is reported to, as `turn_commit_wait_expired`. */
17
+ type ExpiryReport = {
18
+ readonly elwoodSessionId: string;
19
+ emitWarnings(warnings: readonly ElwoodWarningEvent[]): void;
20
+ };
21
+ export declare class CodexTurnCommit {
22
+ private pending;
23
+ private readonly poll;
24
+ private readonly cliExit;
25
+ private readonly session;
26
+ /**
27
+ * `poll` reads newly committed transcript items into `observe` and contains its own
28
+ * failures. `cliExit` is the session's shared latch on the CLI's exit; `session` is
29
+ * warned when the bound ends the wait.
30
+ */
31
+ constructor(poll: () => void, cliExit: Pick<PtyExitLatch, "within">, session: ExpiryReport);
32
+ /**
33
+ * A `Stop` hook for `turnId` arrived. Registered before any observer of that hook runs,
34
+ * since an observer may shut the session down at once.
35
+ */
36
+ expect(turnId: string): void;
37
+ /** Ends the wait for `turnId`: its end was recorded, or its `Stop` was blocked. */
38
+ release(turnId: string): void;
39
+ /**
40
+ * Reads one committed transcript item. Only a turn-end record carrying the pending
41
+ * turn's id releases the wait: every captured end record carries one, and a record
42
+ * without it could be an older turn's backlog.
43
+ */
44
+ observe(item: unknown): void;
45
+ /**
46
+ * Runs `shutdown` once the pending turn is recorded, its `Stop` is blocked, the CLI
47
+ * exits, or `turnCommitWaitMs` passes, re-reading the transcript meanwhile. With no
48
+ * turn pending, `shutdown` starts in the same tick. A turn not recorded within the
49
+ * bound is reported to the session once and not waited for again. Callers close
50
+ * queued input and loops first: only the signal waits for the record.
51
+ */
52
+ beforeShutdown(shutdown: () => Promise<void>): Promise<void>;
53
+ private waitFor;
54
+ /** A throwing listener of the warning must not keep Codex running. */
55
+ private reportExpired;
56
+ }
57
+ export {};
58
+ //# sourceMappingURL=turn-commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-commit.d.ts","sourceRoot":"","sources":["../../../src/codex/session/turn-commit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AAatC,wFAAwF;AACxF,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,IAAI,CAAC;CAC7D,CAAC;AAEF,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC;;;;OAIG;gBACS,IAAI,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY;IAM1F;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,mFAAmF;IACnF,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO7B;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAM5B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5D,OAAO,CAAC,OAAO;IAWf,sEAAsE;IACtE,OAAO,CAAC,aAAa;CAMtB"}