@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
@@ -1 +1 @@
1
- {"version":3,"file":"reap-tree.js","sourceRoot":"","sources":["../../../src/runtime/shutdown/reap-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAQjD;;;;;;;;;;;;;GAaG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC;AACpE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,MAA0B,YAAY;IACxF,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO;IAC1C,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,aAAa,GAAuB;IACxC,SAAS,CAAC,IAAY;QACpB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,4EAA4E;AAC5E,gFAAgF;AAChF,+EAA+E;AAC/E,IAAI,YAAY,GAAuB,aAAa,CAAC;AAErD,MAAM,UAAU,sBAAsB,CAAC,MAA0B;IAC/D,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,YAAY,GAAG,aAAa,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,OAAO;QAAE,MAAM,KAAK,CAAC;AAChD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;IACP,SAAS,CAAS;IAClB,GAAG,CAAqB;IACjC,IAAI,GAAG,KAAK,CAAC;IAErB,YAAY,SAAiB,EAAE,MAA0B,YAAY;QACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"reap-tree.js","sourceRoot":"","sources":["../../../src/runtime/shutdown/reap-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAuB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAEhB,gBAAgB,EAChB,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAI/B;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;IACP,SAAS,CAAS;IAClB,GAAG,CAAiB;IAC7B,IAAI,GAAG,KAAK,CAAC;IACb,aAAa,GAAG,CAAC,CAAC;IAC1B,wFAAwF;IAChF,eAAe,GAAG,KAAK,CAAC;IACf,kBAAkB,GAAG,IAAI,wBAAwB,EAAE,CAAC;IACrE,uFAAuF;IAC/E,eAAe,CAA2B;IAElD,YAAY,SAAiB,EAAE,MAAsB,oBAAoB,EAAE;QACzE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,uFAAuF;QACvF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;YAAE,OAAO;QACxE,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,sFAAsF;IACtF,eAAe,CAAC,IAAgB;QAC9B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,kCAAkC,EAAE,CAAC;YAC1C,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QACD,IAAI,EAAE,CAAC;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACH,kCAAkC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,eAAe,CAAC;IACrE,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAAC,YAA2B;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO;QAC/C,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE;gBACrD,6EAA6E;gBAC7E,IAAI,IAAI,CAAC,eAAe;oBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC5D,OAAO,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE;oBACjF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC9B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO;YAClC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;YAC/B,MAAM,OAAO,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Finds the processes of Codex's managed app-server daemon install in a process-table
3
+ * read: the one thing under a session the detached walk never follows or kills (PRD §5.3
4
+ * and §9.4, C-LIFE-10). Codex 0.158 and later can start, for its `CODEX_HOME`, an
5
+ * app-server daemon and its updater loop from the copy of the CLI it installs under
6
+ * `$CODEX_HOME/packages/app-server-daemon/`, each in a session of its own and a child of
7
+ * the TUI that started it until that TUI exits: the shape of a hook. But every Codex on
8
+ * that home talks to the daemon, the user's own included, so neither process nor anything
9
+ * it started is the session's to end (docs/cli-behavior.md). The walk sees only the
10
+ * `shared` mark set here, and the groups `groupIdsToResume` names.
11
+ *
12
+ * Codex starts both by their full paths, which macOS `ps` shows as `comm` (`argv[0]`).
13
+ * Each `ps` the host spawns while a session ends costs about as much as its table read,
14
+ * so `comm` is read only for the processes the caller's walk can reach that could be
15
+ * one, each by a `ps` of its own (given several pids, `ps` reads every process): one of
16
+ * `roots` or a descendant, named `codex` (`ucomm`), leading its own group, and a child of
17
+ * a process named `codex` or of PID 1. A walk with none under its roots spawns no `ps`.
18
+ * At most `PATH_READS_AT_ONCE` run at once, and none starts past the read's deadline: the
19
+ * read then fails, as one that timed out does.
20
+ *
21
+ * Every test here is on what `ps` reports, which a process can set for itself, so one that
22
+ * imitates the daemon is spared as one. That gives a descendant nothing it lacks: one whose
23
+ * parent exits before the walk is out of its reach already (PRD §5.3).
24
+ */
25
+ import { type ProcessEntry, type PsRunner } from "./process-table.ts";
26
+ /**
27
+ * The most path reads, each a `ps` of its own, that one table read runs at once. A real
28
+ * session shows at most two candidates, the daemon and its updater, so both are read in
29
+ * one round, with room to spare; past that, each further `ps` at once costs a loaded host
30
+ * about another table read just as a fleet's shutdown loads it most (docs/cli-behavior.md).
31
+ */
32
+ export declare const PATH_READS_AT_ONCE = 4;
33
+ /**
34
+ * Where a walk's reads mark the daemon install: among `roots` and their descendants. The
35
+ * walk passes the set it adds each group it stops to, so a process it stopped is read
36
+ * itself even after its parent's exit leaves it under PID 1. `known` holds each process a
37
+ * read found to be one, by pid, parent, and group, so no later read of the walk probes it
38
+ * again. Only those are remembered, so a stale entry can only spare a process, never
39
+ * expose one, and a process that `exec`s the daemon is found: until a read finds it, a
40
+ * candidate is read again on every read.
41
+ */
42
+ export type DaemonScope = {
43
+ readonly roots: ReadonlySet<number>;
44
+ readonly known: Set<string>;
45
+ };
46
+ /** A fresh scope for one walk from `roots`, which it reads as they stand at each read. */
47
+ export declare function daemonScope(roots: ReadonlySet<number>): DaemonScope;
48
+ /**
49
+ * The shared table read, with each process of Codex's daemon install in `scope` marked
50
+ * `shared`, all within `timeoutMs`. Without a scope, nothing is marked.
51
+ */
52
+ export declare function listProcessTableMarkingDaemon(timeoutMs: number, scope?: DaemonScope, list?: (timeoutMs: number) => Promise<readonly ProcessEntry[]>, run?: PsRunner): Promise<readonly ProcessEntry[]>;
53
+ /**
54
+ * The groups `table` shows holding a process marked `shared`, or a process that read did
55
+ * not show stopped with the shape of one: it could still `exec` the daemon, as a stopped
56
+ * process cannot. A walk resumes, rather than kills, any of these it stopped.
57
+ */
58
+ export declare function groupIdsToResume(table: readonly ProcessEntry[]): ReadonlySet<number>;
59
+ //# sourceMappingURL=shared-daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-daemon.d.ts","sourceRoot":"","sources":["../../../src/runtime/shutdown/shared-daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,QAAQ,EAGd,MAAM,oBAAoB,CAAC;AAO5B;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAE/F,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAEnE;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,WAAoC,EAC3C,IAAI,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,YAAY,EAAE,CAA0B,EACtF,GAAG,GAAE,QAAkB,GACtB,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAKlC;AAyBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAMpF"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Finds the processes of Codex's managed app-server daemon install in a process-table
3
+ * read: the one thing under a session the detached walk never follows or kills (PRD §5.3
4
+ * and §9.4, C-LIFE-10). Codex 0.158 and later can start, for its `CODEX_HOME`, an
5
+ * app-server daemon and its updater loop from the copy of the CLI it installs under
6
+ * `$CODEX_HOME/packages/app-server-daemon/`, each in a session of its own and a child of
7
+ * the TUI that started it until that TUI exits: the shape of a hook. But every Codex on
8
+ * that home talks to the daemon, the user's own included, so neither process nor anything
9
+ * it started is the session's to end (docs/cli-behavior.md). The walk sees only the
10
+ * `shared` mark set here, and the groups `groupIdsToResume` names.
11
+ *
12
+ * Codex starts both by their full paths, which macOS `ps` shows as `comm` (`argv[0]`).
13
+ * Each `ps` the host spawns while a session ends costs about as much as its table read,
14
+ * so `comm` is read only for the processes the caller's walk can reach that could be
15
+ * one, each by a `ps` of its own (given several pids, `ps` reads every process): one of
16
+ * `roots` or a descendant, named `codex` (`ucomm`), leading its own group, and a child of
17
+ * a process named `codex` or of PID 1. A walk with none under its roots spawns no `ps`.
18
+ * At most `PATH_READS_AT_ONCE` run at once, and none starts past the read's deadline: the
19
+ * read then fails, as one that timed out does.
20
+ *
21
+ * Every test here is on what `ps` reports, which a process can set for itself, so one that
22
+ * imitates the daemon is spared as one. That gives a descendant nothing it lacks: one whose
23
+ * parent exits before the walk is out of its reach already (PRD §5.3).
24
+ */
25
+ import { childrenByParent, listProcessTableShared, PS_PATH, psRunOptions, runFile, } from "./process-table.js";
26
+ import { processReadTimeout } from "./read-timeout.js";
27
+ /** The directory Codex installs its daemon's copy of the CLI in, inside `CODEX_HOME`. */
28
+ const DAEMON_INSTALL_DIR = "/packages/app-server-daemon/";
29
+ /** The short name of the Codex binary, the TUI's and the daemon's alike. */
30
+ const CODEX = "codex";
31
+ /**
32
+ * The most path reads, each a `ps` of its own, that one table read runs at once. A real
33
+ * session shows at most two candidates, the daemon and its updater, so both are read in
34
+ * one round, with room to spare; past that, each further `ps` at once costs a loaded host
35
+ * about another table read just as a fleet's shutdown loads it most (docs/cli-behavior.md).
36
+ */
37
+ export const PATH_READS_AT_ONCE = 4;
38
+ /** A fresh scope for one walk from `roots`, which it reads as they stand at each read. */
39
+ export function daemonScope(roots) {
40
+ return { roots, known: new Set() };
41
+ }
42
+ /**
43
+ * The shared table read, with each process of Codex's daemon install in `scope` marked
44
+ * `shared`, all within `timeoutMs`. Without a scope, nothing is marked.
45
+ */
46
+ export async function listProcessTableMarkingDaemon(timeoutMs, scope = daemonScope(new Set()), list = listProcessTableShared, run = runFile) {
47
+ const deadline = performance.now() + timeoutMs;
48
+ const table = await list(timeoutMs);
49
+ if (scope.roots.size === 0)
50
+ return table;
51
+ return markShared(table, scope, (pid) => pathOf(pid, run, deadline));
52
+ }
53
+ /** `table`, each install process in `scope` marked; one exited by its read is none. */
54
+ async function markShared(table, { roots, known }, readPath) {
55
+ // A root a read missed is taken for a `codex`, as the TUI was: only a path read confirms.
56
+ const names = new Map([...[...roots].map((root) => [root, CODEX]), ...nameMap(table)]);
57
+ const candidates = reachable(table, roots).filter((row) => couldBeFromInstall(row, names));
58
+ const key = (row) => `${row.pid} ${row.ppid} ${row.pgid}`;
59
+ const unknown = candidates.filter((row) => !known.has(key(row)));
60
+ const probe = async (row) => ({ row, path: await readPath(row.pid) });
61
+ for (let next = 0; next < unknown.length; next += PATH_READS_AT_ONCE) {
62
+ const reads = unknown.slice(next, next + PATH_READS_AT_ONCE).map(probe);
63
+ for (const { row, path } of await Promise.all(reads)) {
64
+ if (path.includes(DAEMON_INSTALL_DIR))
65
+ known.add(key(row));
66
+ }
67
+ }
68
+ const found = new Set(candidates.filter((row) => known.has(key(row))).map((row) => row.pid));
69
+ if (found.size === 0)
70
+ return table;
71
+ return table.map((row) => (found.has(row.pid) ? { ...row, shared: true } : row));
72
+ }
73
+ /**
74
+ * The groups `table` shows holding a process marked `shared`, or a process that read did
75
+ * not show stopped with the shape of one: it could still `exec` the daemon, as a stopped
76
+ * process cannot. A walk resumes, rather than kills, any of these it stopped.
77
+ */
78
+ export function groupIdsToResume(table) {
79
+ const names = nameMap(table);
80
+ const rows = table.filter((row) => row.shared || (!row.stopped && couldBeFromInstall(row, names)));
81
+ return new Set(rows.map((row) => row.pgid));
82
+ }
83
+ /** Each process's short name, by pid, as `couldBeFromInstall` takes them. */
84
+ function nameMap(table) {
85
+ return new Map(table.map((row) => [row.pid, row.name]));
86
+ }
87
+ /**
88
+ * Whether `row` has the shape of the daemon or its updater in a table read; only its path
89
+ * can confirm it.
90
+ */
91
+ function couldBeFromInstall(row, names) {
92
+ const live = !row.zombie;
93
+ const runsCodex = row.name === CODEX;
94
+ const leadsOwnGroup = row.pgid === row.pid;
95
+ const parentIsCodexOrInit = row.ppid === 1 || names.get(row.ppid) === CODEX;
96
+ return live && runsCodex && leadsOwnGroup && parentIsCodexOrInit;
97
+ }
98
+ /**
99
+ * The rows of `roots` and of every process descending from one, by parent pid. A root
100
+ * missing from the read still parents its children, as in `detachedDescendantGroups`.
101
+ */
102
+ function reachable(table, roots) {
103
+ const children = childrenByParent(table);
104
+ const found = new Map();
105
+ const pending = table.filter((row) => roots.has(row.pid) || roots.has(row.ppid));
106
+ for (let row = pending.pop(); row !== undefined; row = pending.pop()) {
107
+ if (found.has(row.pid))
108
+ continue;
109
+ found.set(row.pid, row);
110
+ pending.push(...(children.get(row.pid) ?? []));
111
+ }
112
+ return [...found.values()];
113
+ }
114
+ /**
115
+ * The `comm` of `pid`, or `""` once it has exited. Past `deadline`, it fails as a table
116
+ * read that timed out does (`ETIMEDOUT`), whether it never started or ran out of time.
117
+ */
118
+ function pathOf(pid, run, deadline) {
119
+ const remainingMs = Math.ceil(deadline - performance.now());
120
+ if (remainingMs <= 0)
121
+ return Promise.reject(timedOut("before its path reads"));
122
+ return run(PS_PATH, ["-o", "comm=", "-p", String(pid)], psRunOptions(remainingMs)).then((result) => result.stdout.trim(), (error) => {
123
+ if (isTargetPidMissing(error))
124
+ return "";
125
+ if (performance.now() >= deadline)
126
+ throw timedOut("in a path read");
127
+ throw error;
128
+ });
129
+ }
130
+ function timedOut(where) {
131
+ return processReadTimeout(`process table read timed out ${where}`);
132
+ }
133
+ /** `ps -p` found no such process: it exits 1 and prints nothing. */
134
+ function isTargetPidMissing(error) {
135
+ if (typeof error !== "object" || error === null)
136
+ return false;
137
+ return "code" in error && error.code === 1 && "stdout" in error && error.stdout === "";
138
+ }
139
+ //# sourceMappingURL=shared-daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-daemon.js","sourceRoot":"","sources":["../../../src/runtime/shutdown/shared-daemon.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,21 @@
3
3
  * §8.4 teardown (typed `teardown_failed`, §10) and `runCleanupSteps` is the §9.4
4
4
  * runtime-cleanup primitive every exit path shares (its caller wraps the failure).
5
5
  */
6
+ import { type ElwoodErrorName } from "../../core/errors.ts";
7
+ /** One failed teardown step: its message, plus its code and details when it was typed. */
8
+ export type TeardownFailure = {
9
+ readonly message: string;
10
+ } | {
11
+ readonly message: string;
12
+ readonly code: ElwoodErrorName;
13
+ readonly details: Readonly<Record<string, unknown>>;
14
+ };
15
+ /**
16
+ * Runs every teardown step, then rejects with `teardown_failed` if any failed. Its
17
+ * `details.causes` lists each failure's message, and `details.failures` keeps each
18
+ * typed failure's code and details too, so a reap failure's errno or process group
19
+ * survives teardown (§10).
20
+ */
6
21
  export declare function runTeardownSteps(steps: readonly (() => Promise<void> | void)[]): Promise<void>;
7
22
  /**
8
23
  * Runs every runtime-cleanup step even if one rejects, so a failing bridge stop still
@@ -1 +1 @@
1
- {"version":3,"file":"teardown.d.ts","sourceRoot":"","sources":["../../../src/runtime/shutdown/teardown.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,SAAS,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CAGf"}
1
+ {"version":3,"file":"teardown.d.ts","sourceRoot":"","sources":["../../../src/runtime/shutdown/teardown.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAe,KAAK,eAAe,EAAwB,MAAM,sBAAsB,CAAC;AAE/F,0FAA0F;AAC1F,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5B;IACE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrD,CAAC;AAiBN;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CAQf;AAQD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,SAAS,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -3,8 +3,8 @@
3
3
  * §8.4 teardown (typed `teardown_failed`, §10) and `runCleanupSteps` is the §9.4
4
4
  * runtime-cleanup primitive every exit path shares (its caller wraps the failure).
5
5
  */
6
- import { elwoodError } from "../../core/errors.js";
7
- /** Runs every step even if earlier ones reject, returning the collected failure messages. */
6
+ import { ElwoodError, elwoodError, toError } from "../../core/errors.js";
7
+ /** Runs every step even if earlier ones reject, returning what each failed step threw. */
8
8
  async function attemptAllSteps(steps) {
9
9
  const failures = [];
10
10
  for (const step of steps) {
@@ -12,19 +12,32 @@ async function attemptAllSteps(steps) {
12
12
  await step();
13
13
  }
14
14
  catch (error) {
15
- failures.push(error instanceof Error ? error.message : String(error));
15
+ failures.push(error);
16
16
  }
17
17
  }
18
18
  return failures;
19
19
  }
20
+ /**
21
+ * Runs every teardown step, then rejects with `teardown_failed` if any failed. Its
22
+ * `details.causes` lists each failure's message, and `details.failures` keeps each
23
+ * typed failure's code and details too, so a reap failure's errno or process group
24
+ * survives teardown (§10).
25
+ */
20
26
  export async function runTeardownSteps(steps) {
21
- const failures = await attemptAllSteps(steps);
27
+ const failures = (await attemptAllSteps(steps)).map(teardownFailure);
22
28
  if (failures.length > 0) {
23
29
  throw elwoodError("teardown_failed", "Could not fully tear down Elwood session.", {
24
- causes: failures,
30
+ causes: failures.map((failure) => failure.message),
31
+ failures,
25
32
  });
26
33
  }
27
34
  }
35
+ function teardownFailure(error) {
36
+ const { message } = toError(error);
37
+ if (!(error instanceof ElwoodError))
38
+ return { message };
39
+ return { message, code: error.code, details: error.details };
40
+ }
28
41
  /**
29
42
  * Runs every runtime-cleanup step even if one rejects, so a failing bridge stop still
30
43
  * disposes the terminal and finishes the transcript watcher — no resource is leaked
@@ -33,7 +46,7 @@ export async function runTeardownSteps(steps) {
33
46
  * typed error (`termination_failed`/`teardown_failed`) so no new public code appears.
34
47
  */
35
48
  export async function runCleanupSteps(steps) {
36
- const failures = await attemptAllSteps(steps);
49
+ const failures = (await attemptAllSteps(steps)).map((error) => toError(error).message);
37
50
  if (failures.length > 0)
38
51
  throw new Error(`Runtime cleanup failed: ${failures.join("; ")}`);
39
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../../src/runtime/shutdown/teardown.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,6FAA6F;AAC7F,KAAK,UAAU,eAAe,CAC5B,KAA8C;IAE9C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAA8C;IAE9C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,CAAC,iBAAiB,EAAE,2CAA2C,EAAE;YAChF,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAA8C;IAE9C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../../src/runtime/shutdown/teardown.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAwB,WAAW,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAW/F,0FAA0F;AAC1F,KAAK,UAAU,eAAe,CAC5B,KAA8C;IAE9C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAA8C;IAE9C,MAAM,QAAQ,GAAG,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACrE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,CAAC,iBAAiB,EAAE,2CAA2C,EAAE;YAChF,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YAClD,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAA8C;IAE9C,MAAM,QAAQ,GAAG,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;IACvF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7F,CAAC"}
@@ -8,6 +8,7 @@ type TerminationTimeouts = {
8
8
  readonly gracefulMs: number;
9
9
  readonly forceMs: number;
10
10
  };
11
+ type TerminationReaper = Pick<SessionReaper, "reap" | "sweepDetached" | "signalLeaderPty">;
11
12
  /**
12
13
  * Signal the PTY, wait for exit, and reap the leader's process group. The reap is
13
14
  * ATTEMPTED on EVERY exit path — normal exit, timeout, or a throwing PTY operation
@@ -16,7 +17,26 @@ type TerminationTimeouts = {
16
17
  * typed `termination_failed` (never swallowed) and the reaper stays unlatched so a
17
18
  * later `teardown()` RETRIES it. A successful reap latches, so a later reuse is a
18
19
  * harmless no-op (see SessionReaper) (C-LIFE-10).
20
+ *
21
+ * Before the SIGKILL — the initial signal, or the escalation after an ignored
22
+ * SIGTERM — the detached-descendant sweep runs while the leader is still alive and
23
+ * still the parent of its `setsid()` hooks. A leader that exits on SIGTERM is not
24
+ * swept: the CLI's own graceful shutdown ends its hooks. One exit latch spans every
25
+ * phase, and once it has seen the exit, nothing more is sent to the leader's pid,
26
+ * which may already belong to another process: an exit during the sweep's table reads
27
+ * cancels the SIGKILL. A sweep failure is reported like a reap failure, after the
28
+ * leader is still killed and reaped unless its whole group was confirmed gone. That
29
+ * terminal fact cancels all later PTY and group signals without clearing old failures.
19
30
  */
20
- export declare function terminatePty(pty: PtyProcess, signal: "SIGTERM" | "SIGKILL", reaper: Pick<SessionReaper, "reap">, timeouts?: TerminationTimeouts): Promise<void>;
31
+ export declare function terminatePty(pty: PtyProcess, signal: "SIGTERM" | "SIGKILL", reaper: TerminationReaper, timeouts?: TerminationTimeouts): Promise<void>;
32
+ /**
33
+ * `unconfirmedProcessGroupIds`: the process-group ids a sweep failure names, if any: the
34
+ * groups it could not confirm reaped, the leader's own included when its group was not
35
+ * confirmed stopped. Like `processGroupId` they are diagnostic only; an id may already
36
+ * belong to another group.
37
+ */
38
+ export declare function unconfirmedGroupsDetail(error: Error): {
39
+ readonly unconfirmedProcessGroupIds?: number[];
40
+ };
21
41
  export {};
22
42
  //# sourceMappingURL=terminate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminate.d.ts","sourceRoot":"","sources":["../../../src/runtime/shutdown/terminate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,KAAK,mBAAmB,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAKrF;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EACnC,QAAQ,GAAE,mBAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAsCf"}
1
+ {"version":3,"file":"terminate.d.ts","sourceRoot":"","sources":["../../../src/runtime/shutdown/terminate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAA0B,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE5E,KAAK,mBAAmB,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AACrF,KAAK,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,GAAG,iBAAiB,CAAC,CAAC;AAS3F;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,MAAM,EAAE,iBAAiB,EACzB,QAAQ,GAAE,mBAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAkDf;AAgFD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG;IACrD,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;CAChD,CAKA"}
@@ -2,10 +2,15 @@
2
2
  * Shared PTY termination helper for graceful stop and force kill.
3
3
  * Implements PRD §5.3 and §9.4.
4
4
  */
5
- import { causeDetails, ElwoodError, elwoodError, errnoCode } from "../../core/errors.js";
5
+ import { causeDetails, elwoodError, errnoCode, toError, } from "../../core/errors.js";
6
+ import { PtyExitLatch } from "../../pty/exit-latch.js";
6
7
  const defaultTimeouts = { gracefulMs: 5_000, forceMs: 1_000 };
7
8
  const POST_EXIT_REAP_RETRIES = 4;
8
9
  const POST_EXIT_REAP_RETRY_MS = 25;
10
+ const leaderGroupGoneForOutcome = {
11
+ "signal-sent": false,
12
+ "leader-group-gone": true,
13
+ };
9
14
  /**
10
15
  * Signal the PTY, wait for exit, and reap the leader's process group. The reap is
11
16
  * ATTEMPTED on EVERY exit path — normal exit, timeout, or a throwing PTY operation
@@ -14,26 +19,52 @@ const POST_EXIT_REAP_RETRY_MS = 25;
14
19
  * typed `termination_failed` (never swallowed) and the reaper stays unlatched so a
15
20
  * later `teardown()` RETRIES it. A successful reap latches, so a later reuse is a
16
21
  * harmless no-op (see SessionReaper) (C-LIFE-10).
22
+ *
23
+ * Before the SIGKILL — the initial signal, or the escalation after an ignored
24
+ * SIGTERM — the detached-descendant sweep runs while the leader is still alive and
25
+ * still the parent of its `setsid()` hooks. A leader that exits on SIGTERM is not
26
+ * swept: the CLI's own graceful shutdown ends its hooks. One exit latch spans every
27
+ * phase, and once it has seen the exit, nothing more is sent to the leader's pid,
28
+ * which may already belong to another process: an exit during the sweep's table reads
29
+ * cancels the SIGKILL. A sweep failure is reported like a reap failure, after the
30
+ * leader is still killed and reaped unless its whole group was confirmed gone. That
31
+ * terminal fact cancels all later PTY and group signals without clearing old failures.
17
32
  */
18
33
  export async function terminatePty(pty, signal, reaper, timeouts = defaultTimeouts) {
19
34
  let terminationError;
35
+ let sweepError;
20
36
  let observedExit = false;
37
+ let exit;
21
38
  try {
22
- const timeoutMs = signal === "SIGTERM" ? timeouts.gracefulMs : timeouts.forceMs;
23
- const exited = await waitForExitAfterSignal(pty, signal, timeoutMs);
24
- // On a SIGTERM timeout, escalate to SIGKILL. The reported signal is the one
25
- // whose wait actually failed, so an operator is sent to the right phase.
26
- const escalated = !exited && signal === "SIGTERM"
27
- ? await waitForExitAfterSignal(pty, "SIGKILL", timeouts.forceMs)
28
- : exited;
29
- observedExit = escalated;
30
- if (!escalated) {
31
- const failedSignal = signal === "SIGTERM" ? "SIGKILL" : signal;
32
- terminationError = elwoodError("termination_failed", `PTY did not exit after ${failedSignal}.`);
39
+ const latch = new PtyExitLatch(pty);
40
+ exit = latch;
41
+ if (signal === "SIGTERM") {
42
+ const outcome = reaper.signalLeaderPty(() => pty.kill("SIGTERM"));
43
+ observedExit =
44
+ leaderGroupGoneForOutcome[outcome] || (await latch.within(timeouts.gracefulMs));
45
+ }
46
+ if (!observedExit) {
47
+ sweepError = await reaper.sweepDetached(() => latch.exited).then(() => undefined, toError);
48
+ const leaderGroupGone = !latch.exited &&
49
+ leaderGroupGoneForOutcome[reaper.signalLeaderPty(() => pty.kill("SIGKILL"))];
50
+ observedExit = leaderGroupGone || (await latch.within(timeouts.forceMs));
51
+ if (!observedExit) {
52
+ terminationError = elwoodError("termination_failed", "PTY did not exit after SIGKILL.");
53
+ }
33
54
  }
34
55
  }
35
56
  catch (error) {
36
- terminationError = error;
57
+ terminationError =
58
+ "processGroupIds" in toError(error) ? sweepOnlyFailed(error) : ptyOperationFailed(error);
59
+ }
60
+ finally {
61
+ exit?.dispose();
62
+ }
63
+ if (sweepError !== undefined) {
64
+ terminationError =
65
+ terminationError === undefined
66
+ ? sweepOnlyFailed(sweepError)
67
+ : withCause(terminationError, "sweepError", sweepError);
37
68
  }
38
69
  // Reap on every path — even if the wait timed out or a PTY call threw — so a
39
70
  // termination_failed outcome never leaks the descendant tree (C-LIFE-10). The
@@ -49,7 +80,7 @@ export async function terminatePty(pty, signal, reaper, timeouts = defaultTimeou
49
80
  catch (reapError) {
50
81
  if (terminationError === undefined)
51
82
  throw reapOnlyFailed(reapError);
52
- throw bothFailed(terminationError, reapError);
83
+ throw withCause(terminationError, "reapError", reapError);
53
84
  }
54
85
  if (terminationError !== undefined)
55
86
  throw terminationError;
@@ -70,28 +101,30 @@ async function reapAfterTermination(reaper, observedExit) {
70
101
  }
71
102
  }
72
103
  /**
73
- * Builds one error preserving BOTH the termination and the reap failure causes.
74
- * The reap cause is carried on a dedicated `.reapError` string property (NOT the
75
- * standard `.cause`, which the termination error may already use for its own root
76
- * cause): an ElwoodError gets it in `details.reapError`; any other Error gets it as
77
- * a `.reapError` property added in place, preserving the original identity/stack.
78
- * Either way neither cause is dropped, whether termination failed with a typed
79
- * ElwoodError or a plain PTY Error (C-LIFE-10). Callers/tests read `.reapError`.
104
+ * Builds one error preserving BOTH the termination failure and a secondary cause:
105
+ * the reap failure (`reapError`, with its errno in `reapErrno`) or the
106
+ * detached-descendant sweep failure (`sweepError`). The secondary cause is carried in
107
+ * `details` under its own keys (NOT `details.cause`/`errno`, which the termination
108
+ * error may already use for its own root cause), so neither cause is dropped
109
+ * (C-LIFE-10).
80
110
  */
81
- function bothFailed(terminationError, reapError) {
82
- const reap = reapError instanceof Error ? reapError.message : String(reapError);
83
- if (terminationError instanceof ElwoodError) {
84
- return elwoodError(terminationError.code, terminationError.message, {
85
- ...terminationError.details,
86
- reapError: reap,
87
- });
88
- }
89
- // Any other termination error reaching here is always an Error (ElwoodError is
90
- // handled above; a thrown PTY value was normalized to Error in
91
- // waitForExitAfterSignal). Preserve the reap cause on it without losing the
92
- // original identity/stack.
93
- terminationError.reapError = reap;
94
- return terminationError;
111
+ function withCause(terminationError, key, secondary) {
112
+ const reapErrno = key === "reapError" ? errnoCode(secondary) : undefined;
113
+ return elwoodError(terminationError.code, terminationError.message, {
114
+ ...terminationError.details,
115
+ [key]: toError(secondary).message,
116
+ ...(reapErrno === undefined ? {} : { reapErrno }),
117
+ ...(key === "sweepError" ? unconfirmedGroupsDetail(toError(secondary)) : {}),
118
+ });
119
+ }
120
+ /**
121
+ * Wraps a throwing PTY operation (`kill` or `onExit`) as the documented typed
122
+ * `termination_failed`, keeping the underlying message and errno/syscall/path in
123
+ * details, so `stop()`/`kill()` never reject with a raw system error whose own
124
+ * `code` (e.g. `ESRCH`) masquerades as an Elwood error name (PRD §10, C-ERR-01).
125
+ */
126
+ function ptyOperationFailed(error) {
127
+ return elwoodError("termination_failed", `Could not terminate the PTY: ${toError(error).message}`, { ...causeDetails(error), ...unconfirmedGroupsDetail(toError(error)) });
95
128
  }
96
129
  /**
97
130
  * Wraps a reap-only failure (PTY termination SUCCEEDED, the group reap FAILED) as
@@ -104,26 +137,20 @@ function reapOnlyFailed(reapError) {
104
137
  ...causeDetails(reapError),
105
138
  });
106
139
  }
107
- function waitForExitAfterSignal(pty, signal, timeoutMs) {
108
- return new Promise((resolve, reject) => {
109
- let unsubscribe;
110
- const timer = setTimeout(() => {
111
- unsubscribe?.();
112
- resolve(false);
113
- }, timeoutMs);
114
- try {
115
- unsubscribe = pty.onExit(() => {
116
- clearTimeout(timer);
117
- unsubscribe?.();
118
- resolve(true);
119
- });
120
- pty.kill(signal);
121
- }
122
- catch (error) {
123
- clearTimeout(timer);
124
- unsubscribe?.();
125
- reject(error instanceof Error ? error : new Error(String(error)));
126
- }
127
- });
140
+ /** The same typed wrapping when only the detached-descendant sweep failed. */
141
+ function sweepOnlyFailed(sweepError) {
142
+ return elwoodError("termination_failed", "PTY exited but its detached descendants could not be confirmed reaped.", { ...causeDetails(sweepError), ...unconfirmedGroupsDetail(toError(sweepError)) });
143
+ }
144
+ /**
145
+ * `unconfirmedProcessGroupIds`: the process-group ids a sweep failure names, if any: the
146
+ * groups it could not confirm reaped, the leader's own included when its group was not
147
+ * confirmed stopped. Like `processGroupId` they are diagnostic only; an id may already
148
+ * belong to another group.
149
+ */
150
+ export function unconfirmedGroupsDetail(error) {
151
+ const { processGroupIds } = error;
152
+ return processGroupIds !== undefined && processGroupIds.length > 0
153
+ ? { unconfirmedProcessGroupIds: [...processGroupIds] }
154
+ : {};
128
155
  }
129
156
  //# sourceMappingURL=terminate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/runtime/shutdown/terminate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/runtime/shutdown/terminate.ts"],"names":[],"mappings":"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"}