@with-logic/elwood 0.1.0 → 0.1.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 (777) hide show
  1. package/CHANGELOG.md +182 -3
  2. package/CONTRIBUTING.md +104 -0
  3. package/LICENSE +1 -1
  4. package/README.md +295 -26
  5. package/SECURITY.md +42 -0
  6. package/dist/claude/command.d.ts +9 -2
  7. package/dist/claude/command.d.ts.map +1 -1
  8. package/dist/claude/command.js +23 -16
  9. package/dist/claude/command.js.map +1 -1
  10. package/dist/claude/model-picker.d.ts.map +1 -1
  11. package/dist/claude/model-picker.js +4 -3
  12. package/dist/claude/model-picker.js.map +1 -1
  13. package/dist/claude/model-switch-confirmation.js +9 -1
  14. package/dist/claude/model-switch-confirmation.js.map +1 -1
  15. package/dist/claude/screen-table.js +1 -1
  16. package/dist/claude/screen-table.js.map +1 -1
  17. package/dist/claude/session/build.d.ts.map +1 -1
  18. package/dist/claude/session/build.js +3 -0
  19. package/dist/claude/session/build.js.map +1 -1
  20. package/dist/claude/session/index.d.ts.map +1 -1
  21. package/dist/claude/session/index.js +5 -2
  22. package/dist/claude/session/index.js.map +1 -1
  23. package/dist/claude/session/resume.d.ts +1 -1
  24. package/dist/claude/session/resume.d.ts.map +1 -1
  25. package/dist/claude/session/resume.js +5 -1
  26. package/dist/claude/session/resume.js.map +1 -1
  27. package/dist/claude/session/start-or-resume.js +1 -0
  28. package/dist/claude/session/start-or-resume.js.map +1 -1
  29. package/dist/claude/simple.d.ts.map +1 -1
  30. package/dist/claude/simple.js +4 -0
  31. package/dist/claude/simple.js.map +1 -1
  32. package/dist/cli/args/index.d.ts +3 -1
  33. package/dist/cli/args/index.d.ts.map +1 -1
  34. package/dist/cli/args/index.js +10 -2
  35. package/dist/cli/args/index.js.map +1 -1
  36. package/dist/cli/args/options.d.ts.map +1 -1
  37. package/dist/cli/args/options.js +2 -0
  38. package/dist/cli/args/options.js.map +1 -1
  39. package/dist/cli/args-commands.d.ts +10 -0
  40. package/dist/cli/args-commands.d.ts.map +1 -0
  41. package/dist/cli/args-commands.js +113 -0
  42. package/dist/cli/args-commands.js.map +1 -0
  43. package/dist/cli/command-types.d.ts +26 -0
  44. package/dist/cli/command-types.d.ts.map +1 -0
  45. package/dist/cli/command-types.js +9 -0
  46. package/dist/cli/command-types.js.map +1 -0
  47. package/dist/cli/config/codec-primitives.d.ts +20 -0
  48. package/dist/cli/config/codec-primitives.d.ts.map +1 -0
  49. package/dist/cli/config/codec-primitives.js +51 -0
  50. package/dist/cli/config/codec-primitives.js.map +1 -0
  51. package/dist/cli/config/codec.d.ts.map +1 -1
  52. package/dist/cli/config/codec.js +4 -46
  53. package/dist/cli/config/codec.js.map +1 -1
  54. package/dist/cli/config/effective.d.ts.map +1 -1
  55. package/dist/cli/config/effective.js +1 -0
  56. package/dist/cli/config/effective.js.map +1 -1
  57. package/dist/cli/config/keys.d.ts +1 -1
  58. package/dist/cli/config/keys.d.ts.map +1 -1
  59. package/dist/cli/config/keys.js +1 -0
  60. package/dist/cli/config/keys.js.map +1 -1
  61. package/dist/cli/entry.d.ts +4 -2
  62. package/dist/cli/entry.d.ts.map +1 -1
  63. package/dist/cli/entry.js +2 -1
  64. package/dist/cli/entry.js.map +1 -1
  65. package/dist/cli/help.d.ts +2 -2
  66. package/dist/cli/help.d.ts.map +1 -1
  67. package/dist/cli/help.js +40 -1
  68. package/dist/cli/help.js.map +1 -1
  69. package/dist/cli/interactive/index.d.ts +26 -0
  70. package/dist/cli/interactive/index.d.ts.map +1 -0
  71. package/dist/cli/interactive/index.js +33 -0
  72. package/dist/cli/interactive/index.js.map +1 -0
  73. package/dist/cli/interactive/launch.d.ts +14 -0
  74. package/dist/cli/interactive/launch.d.ts.map +1 -0
  75. package/dist/cli/interactive/launch.js +66 -0
  76. package/dist/cli/interactive/launch.js.map +1 -0
  77. package/dist/cli/interactive/spawn.d.ts +18 -0
  78. package/dist/cli/interactive/spawn.d.ts.map +1 -0
  79. package/dist/cli/interactive/spawn.js +53 -0
  80. package/dist/cli/interactive/spawn.js.map +1 -0
  81. package/dist/cli/main-failure.d.ts +28 -0
  82. package/dist/cli/main-failure.d.ts.map +1 -0
  83. package/dist/cli/main-failure.js +78 -0
  84. package/dist/cli/main-failure.js.map +1 -0
  85. package/dist/cli/main.d.ts +12 -4
  86. package/dist/cli/main.d.ts.map +1 -1
  87. package/dist/cli/main.js +27 -73
  88. package/dist/cli/main.js.map +1 -1
  89. package/dist/cli/models/index.d.ts +20 -0
  90. package/dist/cli/models/index.d.ts.map +1 -0
  91. package/dist/cli/models/index.js +63 -0
  92. package/dist/cli/models/index.js.map +1 -0
  93. package/dist/cli/models/render.d.ts +9 -0
  94. package/dist/cli/models/render.d.ts.map +1 -0
  95. package/dist/cli/models/render.js +33 -0
  96. package/dist/cli/models/render.js.map +1 -0
  97. package/dist/cli/request/index.d.ts.map +1 -1
  98. package/dist/cli/request/index.js +8 -2
  99. package/dist/cli/request/index.js.map +1 -1
  100. package/dist/cli/request/layers.d.ts +2 -0
  101. package/dist/cli/request/layers.d.ts.map +1 -1
  102. package/dist/cli/request/layers.js +9 -5
  103. package/dist/cli/request/layers.js.map +1 -1
  104. package/dist/cli/request/posture.d.ts +28 -0
  105. package/dist/cli/request/posture.d.ts.map +1 -0
  106. package/dist/cli/request/posture.js +70 -0
  107. package/dist/cli/request/posture.js.map +1 -0
  108. package/dist/cli/request/resolution-types.d.ts +1 -0
  109. package/dist/cli/request/resolution-types.d.ts.map +1 -1
  110. package/dist/cli/request/settings.d.ts +2 -12
  111. package/dist/cli/request/settings.d.ts.map +1 -1
  112. package/dist/cli/request/settings.js +2 -25
  113. package/dist/cli/request/settings.js.map +1 -1
  114. package/dist/cli/request/validation.d.ts +12 -0
  115. package/dist/cli/request/validation.d.ts.map +1 -1
  116. package/dist/cli/request/validation.js +30 -10
  117. package/dist/cli/request/validation.js.map +1 -1
  118. package/dist/cli/request/values.d.ts +1 -0
  119. package/dist/cli/request/values.d.ts.map +1 -1
  120. package/dist/cli/request/values.js +1 -0
  121. package/dist/cli/request/values.js.map +1 -1
  122. package/dist/cli/run/index.d.ts.map +1 -1
  123. package/dist/cli/run/index.js +5 -41
  124. package/dist/cli/run/index.js.map +1 -1
  125. package/dist/cli/run/subscribe.d.ts +19 -0
  126. package/dist/cli/run/subscribe.d.ts.map +1 -0
  127. package/dist/cli/run/subscribe.js +47 -0
  128. package/dist/cli/run/subscribe.js.map +1 -0
  129. package/dist/cli/session/launch.d.ts +3 -0
  130. package/dist/cli/session/launch.d.ts.map +1 -1
  131. package/dist/cli/session/launch.js +11 -0
  132. package/dist/cli/session/launch.js.map +1 -1
  133. package/dist/cli/sessions/index.d.ts +30 -0
  134. package/dist/cli/sessions/index.d.ts.map +1 -0
  135. package/dist/cli/sessions/index.js +61 -0
  136. package/dist/cli/sessions/index.js.map +1 -0
  137. package/dist/cli/sessions/list.d.ts +28 -0
  138. package/dist/cli/sessions/list.d.ts.map +1 -0
  139. package/dist/cli/sessions/list.js +63 -0
  140. package/dist/cli/sessions/list.js.map +1 -0
  141. package/dist/cli/sessions/settings.d.ts +11 -0
  142. package/dist/cli/sessions/settings.d.ts.map +1 -0
  143. package/dist/cli/sessions/settings.js +26 -0
  144. package/dist/cli/sessions/settings.js.map +1 -0
  145. package/dist/cli/table.d.ts +7 -0
  146. package/dist/cli/table.d.ts.map +1 -0
  147. package/dist/cli/table.js +14 -0
  148. package/dist/cli/table.js.map +1 -0
  149. package/dist/cli/types.d.ts +5 -1
  150. package/dist/cli/types.d.ts.map +1 -1
  151. package/dist/cli/types.js.map +1 -1
  152. package/dist/codex/command.d.ts +18 -2
  153. package/dist/codex/command.d.ts.map +1 -1
  154. package/dist/codex/command.js +39 -24
  155. package/dist/codex/command.js.map +1 -1
  156. package/dist/codex/model-picker.d.ts.map +1 -1
  157. package/dist/codex/model-picker.js +3 -2
  158. package/dist/codex/model-picker.js.map +1 -1
  159. package/dist/codex/session/build.d.ts.map +1 -1
  160. package/dist/codex/session/build.js +5 -7
  161. package/dist/codex/session/build.js.map +1 -1
  162. package/dist/codex/session/index.d.ts.map +1 -1
  163. package/dist/codex/session/index.js +5 -2
  164. package/dist/codex/session/index.js.map +1 -1
  165. package/dist/codex/session/resume.d.ts +1 -1
  166. package/dist/codex/session/resume.d.ts.map +1 -1
  167. package/dist/codex/session/resume.js +5 -1
  168. package/dist/codex/session/resume.js.map +1 -1
  169. package/dist/codex/session/start-or-resume.js +1 -0
  170. package/dist/codex/session/start-or-resume.js.map +1 -1
  171. package/dist/codex/session/types.d.ts +3 -0
  172. package/dist/codex/session/types.d.ts.map +1 -1
  173. package/dist/codex/simple.d.ts.map +1 -1
  174. package/dist/codex/simple.js +4 -0
  175. package/dist/codex/simple.js.map +1 -1
  176. package/dist/core/errors.d.ts +1 -1
  177. package/dist/core/errors.d.ts.map +1 -1
  178. package/dist/core/errors.js.map +1 -1
  179. package/dist/core/high-trust.d.ts +41 -0
  180. package/dist/core/high-trust.d.ts.map +1 -0
  181. package/dist/core/high-trust.js +50 -0
  182. package/dist/core/high-trust.js.map +1 -0
  183. package/dist/core/input/index.d.ts.map +1 -1
  184. package/dist/core/input/index.js +15 -3
  185. package/dist/core/input/index.js.map +1 -1
  186. package/dist/core/models/input.d.ts +3 -0
  187. package/dist/core/models/input.d.ts.map +1 -0
  188. package/dist/core/models/input.js +9 -0
  189. package/dist/core/models/input.js.map +1 -0
  190. package/dist/core/models/picker.d.ts +2 -1
  191. package/dist/core/models/picker.d.ts.map +1 -1
  192. package/dist/core/models/picker.js +6 -5
  193. package/dist/core/models/picker.js.map +1 -1
  194. package/dist/core/models/tui-screen.d.ts +1 -1
  195. package/dist/core/models/tui-screen.d.ts.map +1 -1
  196. package/dist/core/models/tui-screen.js +26 -3
  197. package/dist/core/models/tui-screen.js.map +1 -1
  198. package/dist/core/trust/allowlist.d.ts +56 -0
  199. package/dist/core/trust/allowlist.d.ts.map +1 -0
  200. package/dist/core/{trust-prompts.js → trust/allowlist.js} +21 -38
  201. package/dist/core/trust/allowlist.js.map +1 -0
  202. package/dist/core/trust/prompts.d.ts +4 -46
  203. package/dist/core/trust/prompts.d.ts.map +1 -1
  204. package/dist/core/trust/prompts.js +2 -73
  205. package/dist/core/trust/prompts.js.map +1 -1
  206. package/dist/core/trust/responder.d.ts +2 -0
  207. package/dist/core/trust/responder.d.ts.map +1 -1
  208. package/dist/core/trust/responder.js +4 -0
  209. package/dist/core/trust/responder.js.map +1 -1
  210. package/dist/core/types.d.ts +3 -0
  211. package/dist/core/types.d.ts.map +1 -1
  212. package/dist/runtime/launch-arguments.d.ts +12 -0
  213. package/dist/runtime/launch-arguments.d.ts.map +1 -0
  214. package/dist/runtime/launch-arguments.js +15 -0
  215. package/dist/runtime/launch-arguments.js.map +1 -0
  216. package/dist/runtime/session/base.d.ts.map +1 -1
  217. package/dist/runtime/session/base.js +4 -1
  218. package/dist/runtime/session/base.js.map +1 -1
  219. package/dist/runtime/session/commands.d.ts +2 -1
  220. package/dist/runtime/session/commands.d.ts.map +1 -1
  221. package/dist/runtime/session/commands.js +10 -4
  222. package/dist/runtime/session/commands.js.map +1 -1
  223. package/dist/runtime/session/lifecycle.d.ts +3 -4
  224. package/dist/runtime/session/lifecycle.d.ts.map +1 -1
  225. package/dist/runtime/session/lifecycle.js +6 -5
  226. package/dist/runtime/session/lifecycle.js.map +1 -1
  227. package/dist/state/directories.d.ts +4 -0
  228. package/dist/state/directories.d.ts.map +1 -0
  229. package/dist/state/directories.js +41 -0
  230. package/dist/state/directories.js.map +1 -0
  231. package/dist/state/files.d.ts.map +1 -1
  232. package/dist/state/files.js +25 -11
  233. package/dist/state/files.js.map +1 -1
  234. package/dist/state/private-session.d.ts.map +1 -1
  235. package/dist/state/private-session.js +2 -0
  236. package/dist/state/private-session.js.map +1 -1
  237. package/dist/state/store.d.ts.map +1 -1
  238. package/dist/state/store.js +7 -1
  239. package/dist/state/store.js.map +1 -1
  240. package/docs/cli-behavior.md +89 -1
  241. package/docs/cli-output.md +60 -0
  242. package/docs/cli.md +10 -2
  243. package/docs/codex/cli.md +57 -0
  244. package/docs/codex/config.md +47 -0
  245. package/docs/codex/hooks.md +70 -0
  246. package/examples/README.md +56 -0
  247. package/examples/full.ts +113 -0
  248. package/examples/minimal.ts +15 -0
  249. package/examples/stream.ts +39 -0
  250. package/examples/support.ts +71 -0
  251. package/package.json +17 -10
  252. package/prd/01-overview.md +21 -0
  253. package/prd/02-goals.md +47 -0
  254. package/prd/03-terminology.md +32 -0
  255. package/prd/04-architecture.md +121 -0
  256. package/prd/05-api/5.1-starting-claude.md +108 -0
  257. package/prd/05-api/5.2-resuming-claude.md +86 -0
  258. package/prd/05-api/5.3-claude-session-api.md +658 -0
  259. package/prd/05-api/5.4-events.md +145 -0
  260. package/prd/05-api/5.5-starting-codex.md +106 -0
  261. package/prd/05-api/5.6-resuming-codex.md +48 -0
  262. package/prd/05-api/5.7-codex-session-api.md +425 -0
  263. package/prd/05-api/5.8-session-api.md +122 -0
  264. package/prd/05-api/5.9-loops.md +170 -0
  265. package/prd/05-api/README.md +19 -0
  266. package/prd/06-claude-hook-bridge.md +164 -0
  267. package/prd/07-claude-policy.md +15 -0
  268. package/prd/07a-codex-hook-bridge.md +76 -0
  269. package/prd/08-state.md +127 -0
  270. package/prd/09-lifecycle.md +222 -0
  271. package/prd/10-errors.md +55 -0
  272. package/prd/11-test-app.md +53 -0
  273. package/prd/12-e2e.md +23 -0
  274. package/prd/12a-cli.md +375 -0
  275. package/prd/13-latitude.md +12 -0
  276. package/prd/14-conformance.md +333 -0
  277. package/prd/15-open-notes.md +8 -0
  278. package/prd/README.md +45 -0
  279. package/dist/claude/hook-dispatch.d.ts +0 -9
  280. package/dist/claude/hook-dispatch.d.ts.map +0 -1
  281. package/dist/claude/hook-dispatch.js +0 -12
  282. package/dist/claude/hook-dispatch.js.map +0 -1
  283. package/dist/claude/hook-events-extra.d.ts +0 -81
  284. package/dist/claude/hook-events-extra.d.ts.map +0 -1
  285. package/dist/claude/hook-events-extra.js +0 -6
  286. package/dist/claude/hook-events-extra.js.map +0 -1
  287. package/dist/claude/hook-events.d.ts +0 -101
  288. package/dist/claude/hook-events.d.ts.map +0 -1
  289. package/dist/claude/hook-events.js +0 -6
  290. package/dist/claude/hook-events.js.map +0 -1
  291. package/dist/claude/hook-names.d.ts +0 -24
  292. package/dist/claude/hook-names.d.ts.map +0 -1
  293. package/dist/claude/hook-names.js +0 -45
  294. package/dist/claude/hook-names.js.map +0 -1
  295. package/dist/claude/hooks.d.ts +0 -78
  296. package/dist/claude/hooks.d.ts.map +0 -1
  297. package/dist/claude/hooks.js +0 -6
  298. package/dist/claude/hooks.js.map +0 -1
  299. package/dist/claude/session-bridge.d.ts +0 -11
  300. package/dist/claude/session-bridge.d.ts.map +0 -1
  301. package/dist/claude/session-bridge.js +0 -18
  302. package/dist/claude/session-bridge.js.map +0 -1
  303. package/dist/claude/session-build.d.ts +0 -15
  304. package/dist/claude/session-build.d.ts.map +0 -1
  305. package/dist/claude/session-build.js +0 -147
  306. package/dist/claude/session-build.js.map +0 -1
  307. package/dist/claude/session-hook-handler.d.ts +0 -34
  308. package/dist/claude/session-hook-handler.d.ts.map +0 -1
  309. package/dist/claude/session-hook-handler.js +0 -42
  310. package/dist/claude/session-hook-handler.js.map +0 -1
  311. package/dist/claude/session-instance.d.ts +0 -42
  312. package/dist/claude/session-instance.d.ts.map +0 -1
  313. package/dist/claude/session-instance.js +0 -146
  314. package/dist/claude/session-instance.js.map +0 -1
  315. package/dist/claude/session-interface.d.ts +0 -49
  316. package/dist/claude/session-interface.d.ts.map +0 -1
  317. package/dist/claude/session-interface.js +0 -10
  318. package/dist/claude/session-interface.js.map +0 -1
  319. package/dist/claude/session-resume.d.ts +0 -8
  320. package/dist/claude/session-resume.d.ts.map +0 -1
  321. package/dist/claude/session-resume.js +0 -47
  322. package/dist/claude/session-resume.js.map +0 -1
  323. package/dist/claude/session-runtime.d.ts +0 -43
  324. package/dist/claude/session-runtime.d.ts.map +0 -1
  325. package/dist/claude/session-runtime.js +0 -105
  326. package/dist/claude/session-runtime.js.map +0 -1
  327. package/dist/claude/session-transcript.d.ts +0 -62
  328. package/dist/claude/session-transcript.d.ts.map +0 -1
  329. package/dist/claude/session-transcript.js +0 -88
  330. package/dist/claude/session-transcript.js.map +0 -1
  331. package/dist/claude/session.d.ts +0 -18
  332. package/dist/claude/session.d.ts.map +0 -1
  333. package/dist/claude/session.js +0 -58
  334. package/dist/claude/session.js.map +0 -1
  335. package/dist/claude/start-or-resume.d.ts +0 -12
  336. package/dist/claude/start-or-resume.d.ts.map +0 -1
  337. package/dist/claude/start-or-resume.js +0 -32
  338. package/dist/claude/start-or-resume.js.map +0 -1
  339. package/dist/claude/tool-hook-events.d.ts +0 -10
  340. package/dist/claude/tool-hook-events.d.ts.map +0 -1
  341. package/dist/claude/tool-hook-events.js +0 -18
  342. package/dist/claude/tool-hook-events.js.map +0 -1
  343. package/dist/claude/tool-types.d.ts +0 -158
  344. package/dist/claude/tool-types.d.ts.map +0 -1
  345. package/dist/claude/tool-types.js +0 -6
  346. package/dist/claude/tool-types.js.map +0 -1
  347. package/dist/claude/validate-input.d.ts +0 -8
  348. package/dist/claude/validate-input.d.ts.map +0 -1
  349. package/dist/claude/validate-input.js +0 -137
  350. package/dist/claude/validate-input.js.map +0 -1
  351. package/dist/claude/validate-permission-update.d.ts +0 -10
  352. package/dist/claude/validate-permission-update.d.ts.map +0 -1
  353. package/dist/claude/validate-permission-update.js +0 -72
  354. package/dist/claude/validate-permission-update.js.map +0 -1
  355. package/dist/claude/validate-result.d.ts +0 -7
  356. package/dist/claude/validate-result.d.ts.map +0 -1
  357. package/dist/claude/validate-result.js +0 -118
  358. package/dist/claude/validate-result.js.map +0 -1
  359. package/dist/claude/validate-shapes.d.ts +0 -22
  360. package/dist/claude/validate-shapes.d.ts.map +0 -1
  361. package/dist/claude/validate-shapes.js +0 -15
  362. package/dist/claude/validate-shapes.js.map +0 -1
  363. package/dist/claude/validate-tool-update.d.ts +0 -15
  364. package/dist/claude/validate-tool-update.d.ts.map +0 -1
  365. package/dist/claude/validate-tool-update.js +0 -122
  366. package/dist/claude/validate-tool-update.js.map +0 -1
  367. package/dist/cli/agent-detect.d.ts +0 -44
  368. package/dist/cli/agent-detect.d.ts.map +0 -1
  369. package/dist/cli/agent-detect.js +0 -66
  370. package/dist/cli/agent-detect.js.map +0 -1
  371. package/dist/cli/arg-errors.d.ts +0 -6
  372. package/dist/cli/arg-errors.d.ts.map +0 -1
  373. package/dist/cli/arg-errors.js +0 -44
  374. package/dist/cli/arg-errors.js.map +0 -1
  375. package/dist/cli/arg-options.d.ts +0 -26
  376. package/dist/cli/arg-options.d.ts.map +0 -1
  377. package/dist/cli/arg-options.js +0 -50
  378. package/dist/cli/arg-options.js.map +0 -1
  379. package/dist/cli/args.d.ts +0 -7
  380. package/dist/cli/args.d.ts.map +0 -1
  381. package/dist/cli/args.js +0 -70
  382. package/dist/cli/args.js.map +0 -1
  383. package/dist/cli/lifecycle-outcome.d.ts +0 -13
  384. package/dist/cli/lifecycle-outcome.d.ts.map +0 -1
  385. package/dist/cli/lifecycle-outcome.js +0 -20
  386. package/dist/cli/lifecycle-outcome.js.map +0 -1
  387. package/dist/cli/lifecycle.d.ts +0 -61
  388. package/dist/cli/lifecycle.d.ts.map +0 -1
  389. package/dist/cli/lifecycle.js +0 -152
  390. package/dist/cli/lifecycle.js.map +0 -1
  391. package/dist/cli/request-finalize.d.ts +0 -10
  392. package/dist/cli/request-finalize.d.ts.map +0 -1
  393. package/dist/cli/request-finalize.js +0 -135
  394. package/dist/cli/request-finalize.js.map +0 -1
  395. package/dist/cli/request-layers.d.ts +0 -30
  396. package/dist/cli/request-layers.d.ts.map +0 -1
  397. package/dist/cli/request-layers.js +0 -44
  398. package/dist/cli/request-layers.js.map +0 -1
  399. package/dist/cli/request-settings.d.ts +0 -34
  400. package/dist/cli/request-settings.d.ts.map +0 -1
  401. package/dist/cli/request-settings.js +0 -66
  402. package/dist/cli/request-settings.js.map +0 -1
  403. package/dist/cli/request-sources.d.ts +0 -13
  404. package/dist/cli/request-sources.d.ts.map +0 -1
  405. package/dist/cli/request-sources.js +0 -23
  406. package/dist/cli/request-sources.js.map +0 -1
  407. package/dist/cli/request-validation.d.ts +0 -18
  408. package/dist/cli/request-validation.d.ts.map +0 -1
  409. package/dist/cli/request-validation.js +0 -84
  410. package/dist/cli/request-validation.js.map +0 -1
  411. package/dist/cli/request-values.d.ts +0 -33
  412. package/dist/cli/request-values.d.ts.map +0 -1
  413. package/dist/cli/request-values.js +0 -73
  414. package/dist/cli/request-values.js.map +0 -1
  415. package/dist/cli/request.d.ts +0 -12
  416. package/dist/cli/request.d.ts.map +0 -1
  417. package/dist/cli/request.js +0 -103
  418. package/dist/cli/request.js.map +0 -1
  419. package/dist/cli/resolution-types.d.ts +0 -35
  420. package/dist/cli/resolution-types.d.ts.map +0 -1
  421. package/dist/cli/resolution-types.js +0 -6
  422. package/dist/cli/resolution-types.js.map +0 -1
  423. package/dist/cli/run-output-lines.d.ts +0 -14
  424. package/dist/cli/run-output-lines.d.ts.map +0 -1
  425. package/dist/cli/run-output-lines.js +0 -42
  426. package/dist/cli/run-output-lines.js.map +0 -1
  427. package/dist/cli/run-output.d.ts +0 -48
  428. package/dist/cli/run-output.d.ts.map +0 -1
  429. package/dist/cli/run-output.js +0 -150
  430. package/dist/cli/run-output.js.map +0 -1
  431. package/dist/cli/run.d.ts +0 -20
  432. package/dist/cli/run.d.ts.map +0 -1
  433. package/dist/cli/run.js +0 -126
  434. package/dist/cli/run.js.map +0 -1
  435. package/dist/cli/session-launch.d.ts +0 -23
  436. package/dist/cli/session-launch.d.ts.map +0 -1
  437. package/dist/cli/session-launch.js +0 -57
  438. package/dist/cli/session-launch.js.map +0 -1
  439. package/dist/cli/session.d.ts +0 -68
  440. package/dist/cli/session.d.ts.map +0 -1
  441. package/dist/cli/session.js +0 -124
  442. package/dist/cli/session.js.map +0 -1
  443. package/dist/codex/attach-images.d.ts +0 -20
  444. package/dist/codex/attach-images.d.ts.map +0 -1
  445. package/dist/codex/attach-images.js +0 -66
  446. package/dist/codex/attach-images.js.map +0 -1
  447. package/dist/codex/clipboard-lock.d.ts +0 -15
  448. package/dist/codex/clipboard-lock.d.ts.map +0 -1
  449. package/dist/codex/clipboard-lock.js +0 -16
  450. package/dist/codex/clipboard-lock.js.map +0 -1
  451. package/dist/codex/clipboard.d.ts +0 -32
  452. package/dist/codex/clipboard.d.ts.map +0 -1
  453. package/dist/codex/clipboard.js +0 -92
  454. package/dist/codex/clipboard.js.map +0 -1
  455. package/dist/codex/config-lock.d.ts +0 -21
  456. package/dist/codex/config-lock.d.ts.map +0 -1
  457. package/dist/codex/config-lock.js +0 -22
  458. package/dist/codex/config-lock.js.map +0 -1
  459. package/dist/codex/config-restore.d.ts +0 -33
  460. package/dist/codex/config-restore.d.ts.map +0 -1
  461. package/dist/codex/config-restore.js +0 -90
  462. package/dist/codex/config-restore.js.map +0 -1
  463. package/dist/codex/config-transaction.d.ts +0 -26
  464. package/dist/codex/config-transaction.d.ts.map +0 -1
  465. package/dist/codex/config-transaction.js +0 -47
  466. package/dist/codex/config-transaction.js.map +0 -1
  467. package/dist/codex/hook-dispatch.d.ts +0 -9
  468. package/dist/codex/hook-dispatch.d.ts.map +0 -1
  469. package/dist/codex/hook-dispatch.js +0 -14
  470. package/dist/codex/hook-dispatch.js.map +0 -1
  471. package/dist/codex/hook-names.d.ts +0 -19
  472. package/dist/codex/hook-names.d.ts.map +0 -1
  473. package/dist/codex/hook-names.js +0 -17
  474. package/dist/codex/hook-names.js.map +0 -1
  475. package/dist/codex/hooks.d.ts +0 -99
  476. package/dist/codex/hooks.d.ts.map +0 -1
  477. package/dist/codex/hooks.js +0 -6
  478. package/dist/codex/hooks.js.map +0 -1
  479. package/dist/codex/initial-ready.d.ts +0 -19
  480. package/dist/codex/initial-ready.d.ts.map +0 -1
  481. package/dist/codex/initial-ready.js +0 -19
  482. package/dist/codex/initial-ready.js.map +0 -1
  483. package/dist/codex/serialize.d.ts +0 -8
  484. package/dist/codex/serialize.d.ts.map +0 -1
  485. package/dist/codex/serialize.js +0 -48
  486. package/dist/codex/serialize.js.map +0 -1
  487. package/dist/codex/session-bridge.d.ts +0 -14
  488. package/dist/codex/session-bridge.d.ts.map +0 -1
  489. package/dist/codex/session-bridge.js +0 -20
  490. package/dist/codex/session-bridge.js.map +0 -1
  491. package/dist/codex/session-build.d.ts +0 -15
  492. package/dist/codex/session-build.d.ts.map +0 -1
  493. package/dist/codex/session-build.js +0 -144
  494. package/dist/codex/session-build.js.map +0 -1
  495. package/dist/codex/session-cleanup.d.ts +0 -12
  496. package/dist/codex/session-cleanup.d.ts.map +0 -1
  497. package/dist/codex/session-cleanup.js +0 -15
  498. package/dist/codex/session-cleanup.js.map +0 -1
  499. package/dist/codex/session-hooks.d.ts +0 -13
  500. package/dist/codex/session-hooks.d.ts.map +0 -1
  501. package/dist/codex/session-hooks.js +0 -54
  502. package/dist/codex/session-hooks.js.map +0 -1
  503. package/dist/codex/session-instance.d.ts +0 -50
  504. package/dist/codex/session-instance.d.ts.map +0 -1
  505. package/dist/codex/session-instance.js +0 -117
  506. package/dist/codex/session-instance.js.map +0 -1
  507. package/dist/codex/session-resume.d.ts +0 -7
  508. package/dist/codex/session-resume.d.ts.map +0 -1
  509. package/dist/codex/session-resume.js +0 -44
  510. package/dist/codex/session-resume.js.map +0 -1
  511. package/dist/codex/session-runtime.d.ts +0 -7
  512. package/dist/codex/session-runtime.d.ts.map +0 -1
  513. package/dist/codex/session-runtime.js +0 -10
  514. package/dist/codex/session-runtime.js.map +0 -1
  515. package/dist/codex/session-transcript.d.ts +0 -30
  516. package/dist/codex/session-transcript.d.ts.map +0 -1
  517. package/dist/codex/session-transcript.js +0 -53
  518. package/dist/codex/session-transcript.js.map +0 -1
  519. package/dist/codex/session-types.d.ts +0 -87
  520. package/dist/codex/session-types.d.ts.map +0 -1
  521. package/dist/codex/session-types.js +0 -6
  522. package/dist/codex/session-types.js.map +0 -1
  523. package/dist/codex/session-warnings.d.ts +0 -27
  524. package/dist/codex/session-warnings.d.ts.map +0 -1
  525. package/dist/codex/session-warnings.js +0 -54
  526. package/dist/codex/session-warnings.js.map +0 -1
  527. package/dist/codex/session.d.ts +0 -16
  528. package/dist/codex/session.d.ts.map +0 -1
  529. package/dist/codex/session.js +0 -61
  530. package/dist/codex/session.js.map +0 -1
  531. package/dist/codex/start-or-resume.d.ts +0 -12
  532. package/dist/codex/start-or-resume.d.ts.map +0 -1
  533. package/dist/codex/start-or-resume.js +0 -31
  534. package/dist/codex/start-or-resume.js.map +0 -1
  535. package/dist/codex/transcript/cursor-io.d.ts +0 -7
  536. package/dist/codex/transcript/cursor-io.d.ts.map +0 -1
  537. package/dist/codex/transcript/cursor-io.js +0 -7
  538. package/dist/codex/transcript/cursor-io.js.map +0 -1
  539. package/dist/codex/transcript/cursor.d.ts +0 -8
  540. package/dist/codex/transcript/cursor.d.ts.map +0 -1
  541. package/dist/codex/transcript/cursor.js +0 -8
  542. package/dist/codex/transcript/cursor.js.map +0 -1
  543. package/dist/codex/transcript/drops.d.ts +0 -9
  544. package/dist/codex/transcript/drops.d.ts.map +0 -1
  545. package/dist/codex/transcript/drops.js +0 -9
  546. package/dist/codex/transcript/drops.js.map +0 -1
  547. package/dist/codex/transcript.d.ts +0 -12
  548. package/dist/codex/transcript.d.ts.map +0 -1
  549. package/dist/codex/transcript.js +0 -10
  550. package/dist/codex/transcript.js.map +0 -1
  551. package/dist/codex/validate-result.d.ts +0 -7
  552. package/dist/codex/validate-result.d.ts.map +0 -1
  553. package/dist/codex/validate-result.js +0 -84
  554. package/dist/codex/validate-result.js.map +0 -1
  555. package/dist/codex/validate.d.ts +0 -11
  556. package/dist/codex/validate.d.ts.map +0 -1
  557. package/dist/codex/validate.js +0 -88
  558. package/dist/codex/validate.js.map +0 -1
  559. package/dist/core/activity-lifecycle.d.ts +0 -21
  560. package/dist/core/activity-lifecycle.d.ts.map +0 -1
  561. package/dist/core/activity-lifecycle.js +0 -45
  562. package/dist/core/activity-lifecycle.js.map +0 -1
  563. package/dist/core/activity-meta.d.ts +0 -13
  564. package/dist/core/activity-meta.d.ts.map +0 -1
  565. package/dist/core/activity-meta.js +0 -67
  566. package/dist/core/activity-meta.js.map +0 -1
  567. package/dist/core/activity-transcript.d.ts +0 -19
  568. package/dist/core/activity-transcript.d.ts.map +0 -1
  569. package/dist/core/activity-transcript.js +0 -60
  570. package/dist/core/activity-transcript.js.map +0 -1
  571. package/dist/core/activity.d.ts +0 -51
  572. package/dist/core/activity.d.ts.map +0 -1
  573. package/dist/core/activity.js +0 -81
  574. package/dist/core/activity.js.map +0 -1
  575. package/dist/core/control-queue-state.d.ts +0 -29
  576. package/dist/core/control-queue-state.d.ts.map +0 -1
  577. package/dist/core/control-queue-state.js +0 -95
  578. package/dist/core/control-queue-state.js.map +0 -1
  579. package/dist/core/control-queue-traits.d.ts +0 -54
  580. package/dist/core/control-queue-traits.d.ts.map +0 -1
  581. package/dist/core/control-queue-traits.js +0 -118
  582. package/dist/core/control-queue-traits.js.map +0 -1
  583. package/dist/core/control-queue-types.d.ts +0 -45
  584. package/dist/core/control-queue-types.d.ts.map +0 -1
  585. package/dist/core/control-queue-types.js +0 -7
  586. package/dist/core/control-queue-types.js.map +0 -1
  587. package/dist/core/control-queue.d.ts +0 -21
  588. package/dist/core/control-queue.d.ts.map +0 -1
  589. package/dist/core/control-queue.js +0 -98
  590. package/dist/core/control-queue.js.map +0 -1
  591. package/dist/core/list-models.d.ts +0 -44
  592. package/dist/core/list-models.d.ts.map +0 -1
  593. package/dist/core/list-models.js +0 -73
  594. package/dist/core/list-models.js.map +0 -1
  595. package/dist/core/model-picker.d.ts +0 -22
  596. package/dist/core/model-picker.d.ts.map +0 -1
  597. package/dist/core/model-picker.js +0 -58
  598. package/dist/core/model-picker.js.map +0 -1
  599. package/dist/core/model-rows.d.ts +0 -21
  600. package/dist/core/model-rows.d.ts.map +0 -1
  601. package/dist/core/model-rows.js +0 -57
  602. package/dist/core/model-rows.js.map +0 -1
  603. package/dist/core/probe-state.d.ts +0 -21
  604. package/dist/core/probe-state.d.ts.map +0 -1
  605. package/dist/core/probe-state.js +0 -39
  606. package/dist/core/probe-state.js.map +0 -1
  607. package/dist/core/session-input-abort.d.ts +0 -10
  608. package/dist/core/session-input-abort.d.ts.map +0 -1
  609. package/dist/core/session-input-abort.js +0 -44
  610. package/dist/core/session-input-abort.js.map +0 -1
  611. package/dist/core/session-input.d.ts +0 -37
  612. package/dist/core/session-input.d.ts.map +0 -1
  613. package/dist/core/session-input.js +0 -154
  614. package/dist/core/session-input.js.map +0 -1
  615. package/dist/core/session-warnings.d.ts +0 -20
  616. package/dist/core/session-warnings.d.ts.map +0 -1
  617. package/dist/core/session-warnings.js +0 -32
  618. package/dist/core/session-warnings.js.map +0 -1
  619. package/dist/core/simple/loop-controls.d.ts +0 -7
  620. package/dist/core/simple/loop-controls.d.ts.map +0 -1
  621. package/dist/core/simple/loop-controls.js +0 -7
  622. package/dist/core/simple/loop-controls.js.map +0 -1
  623. package/dist/core/startup-automation.d.ts +0 -54
  624. package/dist/core/startup-automation.d.ts.map +0 -1
  625. package/dist/core/startup-automation.js +0 -40
  626. package/dist/core/startup-automation.js.map +0 -1
  627. package/dist/core/startup-frame.d.ts +0 -39
  628. package/dist/core/startup-frame.d.ts.map +0 -1
  629. package/dist/core/startup-frame.js +0 -60
  630. package/dist/core/startup-frame.js.map +0 -1
  631. package/dist/core/startup-write.d.ts +0 -47
  632. package/dist/core/startup-write.d.ts.map +0 -1
  633. package/dist/core/startup-write.js +0 -73
  634. package/dist/core/startup-write.js.map +0 -1
  635. package/dist/core/trust-blocking.d.ts +0 -22
  636. package/dist/core/trust-blocking.d.ts.map +0 -1
  637. package/dist/core/trust-blocking.js +0 -38
  638. package/dist/core/trust-blocking.js.map +0 -1
  639. package/dist/core/trust-prompts.d.ts +0 -135
  640. package/dist/core/trust-prompts.d.ts.map +0 -1
  641. package/dist/core/trust-prompts.js.map +0 -1
  642. package/dist/core/trust-responder.d.ts +0 -48
  643. package/dist/core/trust-responder.d.ts.map +0 -1
  644. package/dist/core/trust-responder.js +0 -119
  645. package/dist/core/trust-responder.js.map +0 -1
  646. package/dist/core/tui-screen.d.ts +0 -21
  647. package/dist/core/tui-screen.d.ts.map +0 -1
  648. package/dist/core/tui-screen.js +0 -56
  649. package/dist/core/tui-screen.js.map +0 -1
  650. package/dist/core/update-warning.d.ts +0 -25
  651. package/dist/core/update-warning.d.ts.map +0 -1
  652. package/dist/core/update-warning.js +0 -33
  653. package/dist/core/update-warning.js.map +0 -1
  654. package/dist/core/warning-lifecycle.d.ts +0 -23
  655. package/dist/core/warning-lifecycle.d.ts.map +0 -1
  656. package/dist/core/warning-lifecycle.js +0 -6
  657. package/dist/core/warning-lifecycle.js.map +0 -1
  658. package/dist/core/warning-reasons.d.ts +0 -62
  659. package/dist/core/warning-reasons.d.ts.map +0 -1
  660. package/dist/core/warning-reasons.js +0 -121
  661. package/dist/core/warning-reasons.js.map +0 -1
  662. package/dist/core/warnings.d.ts +0 -145
  663. package/dist/core/warnings.d.ts.map +0 -1
  664. package/dist/core/warnings.js +0 -12
  665. package/dist/core/warnings.js.map +0 -1
  666. package/dist/runtime/cleanup-latch.d.ts +0 -27
  667. package/dist/runtime/cleanup-latch.d.ts.map +0 -1
  668. package/dist/runtime/cleanup-latch.js +0 -43
  669. package/dist/runtime/cleanup-latch.js.map +0 -1
  670. package/dist/runtime/initial-ready-advance.d.ts +0 -22
  671. package/dist/runtime/initial-ready-advance.d.ts.map +0 -1
  672. package/dist/runtime/initial-ready-advance.js +0 -39
  673. package/dist/runtime/initial-ready-advance.js.map +0 -1
  674. package/dist/runtime/initial-ready-fallback.d.ts +0 -12
  675. package/dist/runtime/initial-ready-fallback.d.ts.map +0 -1
  676. package/dist/runtime/initial-ready-fallback.js +0 -20
  677. package/dist/runtime/initial-ready-fallback.js.map +0 -1
  678. package/dist/runtime/initial-ready.d.ts +0 -49
  679. package/dist/runtime/initial-ready.d.ts.map +0 -1
  680. package/dist/runtime/initial-ready.js +0 -81
  681. package/dist/runtime/initial-ready.js.map +0 -1
  682. package/dist/runtime/reap-tree.d.ts +0 -62
  683. package/dist/runtime/reap-tree.d.ts.map +0 -1
  684. package/dist/runtime/reap-tree.js +0 -108
  685. package/dist/runtime/reap-tree.js.map +0 -1
  686. package/dist/runtime/session-base-types.d.ts +0 -36
  687. package/dist/runtime/session-base-types.d.ts.map +0 -1
  688. package/dist/runtime/session-base-types.js +0 -14
  689. package/dist/runtime/session-base-types.js.map +0 -1
  690. package/dist/runtime/session-base.d.ts +0 -48
  691. package/dist/runtime/session-base.d.ts.map +0 -1
  692. package/dist/runtime/session-base.js +0 -76
  693. package/dist/runtime/session-base.js.map +0 -1
  694. package/dist/runtime/session-commands.d.ts +0 -43
  695. package/dist/runtime/session-commands.d.ts.map +0 -1
  696. package/dist/runtime/session-commands.js +0 -52
  697. package/dist/runtime/session-commands.js.map +0 -1
  698. package/dist/runtime/session-exit.d.ts +0 -16
  699. package/dist/runtime/session-exit.d.ts.map +0 -1
  700. package/dist/runtime/session-exit.js +0 -32
  701. package/dist/runtime/session-exit.js.map +0 -1
  702. package/dist/runtime/session-image-attach.d.ts +0 -45
  703. package/dist/runtime/session-image-attach.d.ts.map +0 -1
  704. package/dist/runtime/session-image-attach.js +0 -82
  705. package/dist/runtime/session-image-attach.js.map +0 -1
  706. package/dist/runtime/session-lifecycle.d.ts +0 -61
  707. package/dist/runtime/session-lifecycle.d.ts.map +0 -1
  708. package/dist/runtime/session-lifecycle.js +0 -164
  709. package/dist/runtime/session-lifecycle.js.map +0 -1
  710. package/dist/runtime/session-loops.d.ts +0 -32
  711. package/dist/runtime/session-loops.d.ts.map +0 -1
  712. package/dist/runtime/session-loops.js +0 -62
  713. package/dist/runtime/session-loops.js.map +0 -1
  714. package/dist/runtime/session-readiness.d.ts +0 -18
  715. package/dist/runtime/session-readiness.d.ts.map +0 -1
  716. package/dist/runtime/session-readiness.js +0 -22
  717. package/dist/runtime/session-readiness.js.map +0 -1
  718. package/dist/runtime/session-reap.d.ts +0 -28
  719. package/dist/runtime/session-reap.d.ts.map +0 -1
  720. package/dist/runtime/session-reap.js +0 -51
  721. package/dist/runtime/session-reap.js.map +0 -1
  722. package/dist/runtime/session-resize.d.ts +0 -20
  723. package/dist/runtime/session-resize.d.ts.map +0 -1
  724. package/dist/runtime/session-resize.js +0 -26
  725. package/dist/runtime/session-resize.js.map +0 -1
  726. package/dist/runtime/session-shutdown-binding.d.ts +0 -30
  727. package/dist/runtime/session-shutdown-binding.d.ts.map +0 -1
  728. package/dist/runtime/session-shutdown-binding.js +0 -37
  729. package/dist/runtime/session-shutdown-binding.js.map +0 -1
  730. package/dist/runtime/session-shutdown.d.ts +0 -60
  731. package/dist/runtime/session-shutdown.d.ts.map +0 -1
  732. package/dist/runtime/session-shutdown.js +0 -140
  733. package/dist/runtime/session-shutdown.js.map +0 -1
  734. package/dist/runtime/session-status-wiring.d.ts +0 -38
  735. package/dist/runtime/session-status-wiring.d.ts.map +0 -1
  736. package/dist/runtime/session-status-wiring.js +0 -41
  737. package/dist/runtime/session-status-wiring.js.map +0 -1
  738. package/dist/runtime/session-status.d.ts +0 -7
  739. package/dist/runtime/session-status.d.ts.map +0 -1
  740. package/dist/runtime/session-status.js +0 -22
  741. package/dist/runtime/session-status.js.map +0 -1
  742. package/dist/runtime/shutdown-coordinator.d.ts +0 -57
  743. package/dist/runtime/shutdown-coordinator.d.ts.map +0 -1
  744. package/dist/runtime/shutdown-coordinator.js +0 -77
  745. package/dist/runtime/shutdown-coordinator.js.map +0 -1
  746. package/dist/runtime/startup-buffer.d.ts +0 -33
  747. package/dist/runtime/startup-buffer.d.ts.map +0 -1
  748. package/dist/runtime/startup-buffer.js +0 -53
  749. package/dist/runtime/startup-buffer.js.map +0 -1
  750. package/dist/runtime/startup-cleanup.d.ts +0 -43
  751. package/dist/runtime/startup-cleanup.d.ts.map +0 -1
  752. package/dist/runtime/startup-cleanup.js +0 -89
  753. package/dist/runtime/startup-cleanup.js.map +0 -1
  754. package/dist/runtime/startup.d.ts +0 -17
  755. package/dist/runtime/startup.d.ts.map +0 -1
  756. package/dist/runtime/startup.js +0 -47
  757. package/dist/runtime/startup.js.map +0 -1
  758. package/dist/runtime/status-emit.d.ts +0 -14
  759. package/dist/runtime/status-emit.d.ts.map +0 -1
  760. package/dist/runtime/status-emit.js +0 -15
  761. package/dist/runtime/status-emit.js.map +0 -1
  762. package/dist/runtime/teardown.d.ts +0 -15
  763. package/dist/runtime/teardown.d.ts.map +0 -1
  764. package/dist/runtime/teardown.js +0 -40
  765. package/dist/runtime/teardown.js.map +0 -1
  766. package/dist/runtime/terminate.d.ts +0 -22
  767. package/dist/runtime/terminate.d.ts.map +0 -1
  768. package/dist/runtime/terminate.js +0 -129
  769. package/dist/runtime/terminate.js.map +0 -1
  770. package/dist/runtime/update-lock.d.ts +0 -19
  771. package/dist/runtime/update-lock.d.ts.map +0 -1
  772. package/dist/runtime/update-lock.js +0 -183
  773. package/dist/runtime/update-lock.js.map +0 -1
  774. package/dist/runtime/update-once.d.ts +0 -40
  775. package/dist/runtime/update-once.d.ts.map +0 -1
  776. package/dist/runtime/update-once.js +0 -88
  777. package/dist/runtime/update-once.js.map +0 -1
@@ -1,144 +0,0 @@
1
- /** Builds a live CodexSessionApi from a record + runtime. Implements PRD §5.5, §5.6, §5.7, §7A, §8, §9. */
2
- import * as activity from "../core/activity.js";
3
- import { AttentionWatcher } from "../core/attention.js";
4
- import { defaultTerminalSize } from "../core/defaults.js";
5
- import { causeDetails, elwoodError } from "../core/errors.js";
6
- import { observeRenderedFrame } from "../core/rendered-observers.js";
7
- import { createStartupWarningGate, deliverFrameWarnings } from "../core/startup-frame.js";
8
- import { emitSettledStartupOutcomes } from "../core/startup-write.js";
9
- import { TerminalReplayBuffer } from "../core/terminal-replay.js";
10
- import { TurnStateWatcher } from "../core/turn-state.js";
11
- import { TypedEmitter } from "../events/emitter.js";
12
- import { loadRuntimeLoopDefinitions as loadLoops } from "../runtime/loop-restore.js";
13
- import { finishSessionExit } from "../runtime/session-exit.js";
14
- import { createReadinessGate } from "../runtime/session-readiness.js";
15
- import { assertStartupThenRelease, createStartupBuffer } from "../runtime/startup-buffer.js";
16
- import { cleanupStartupResources, guardStartupRegion } from "../runtime/startup-cleanup.js";
17
- import { secureMkdir } from "../state/files.js";
18
- import { writeSessionRecord } from "../state/store.js";
19
- import { attachPtyTerminal } from "../terminal/headless.js";
20
- import { spawnCodexPty } from "./pty.js";
21
- import { codexScreenFactTableForTrustPolicy } from "./screen-table.js";
22
- import { currentCodexHookBridgeFactory } from "./session-bridge.js";
23
- import { dispatchHook, registerInitialHooks } from "./session-hooks.js";
24
- import { CodexSessionImpl } from "./session-instance.js";
25
- import { writeCodexRuntimeFiles } from "./session-runtime.js";
26
- import * as sessionTranscript from "./session-transcript.js";
27
- import { CodexStartupPromptResponder } from "./startup-prompts.js";
28
- export async function buildCodexSession(input) {
29
- const { record, stateDir, runtime, options, resumed, preflightWarning } = input;
30
- secureMkdir(runtime.sessionDir);
31
- writeSessionRecord(record, runtime.sessionDir);
32
- const loopDefinitions = resumed ? loadLoops(stateDir, record.elwoodSessionId) : [];
33
- writeCodexRuntimeFiles(runtime);
34
- const emitter = new TypedEmitter();
35
- registerInitialHooks(emitter, options.hooks);
36
- let session;
37
- // ALL startup-region warnings — MCP/prompt-write (frame path) AND transcript
38
- // drop/read-error diagnostics — route through ONE gate that buffers anything emitted
39
- // before startCodex resolves and flushes it on a deferred macrotask after return, so
40
- // every source stays observable without late-subscriber replay (C-API-14).
41
- const warnGate = createStartupWarningGate({
42
- emitWarnings: (w) => deliverFrameWarnings(session, w),
43
- });
44
- const wired = sessionTranscript.createCodexTranscriptWatcher(record.elwoodSessionId, emitter, () => warnGate);
45
- const { watcher: transcriptWatcher, flushPendingWarnings, finishSafely } = wired;
46
- const bridge = currentCodexHookBridgeFactory()(runtime.socketPath, runtime.bridgeToken, record.elwoodSessionId, async (hook) => dispatchHook(hook, emitter, options, record, session), (event) => {
47
- const hookError = { elwoodSessionId: record.elwoodSessionId, ...event };
48
- emitter.emit("hookError", hookError);
49
- emitter.emit("activity", activity.activityFromHookError("codex", hookError));
50
- });
51
- try {
52
- await bridge.start();
53
- }
54
- catch (error) {
55
- // Best-effort shut down a partially-started bridge so its listener/socket is not
56
- // leaked; contained so the original bridge-start error is the one that rejects.
57
- await bridge.stop().catch(() => undefined);
58
- throw elwoodError("hook_bridge_failed", "Could not start Elwood hook bridge.", {
59
- ...causeDetails(error),
60
- socketPath: runtime.socketPath,
61
- });
62
- }
63
- const pty = await spawnCodexPty(record, runtime.bridgeScriptPath, options).catch(async (error) => {
64
- await cleanupStartupResources({ bridge });
65
- throw error;
66
- });
67
- const startupOutput = createStartupBuffer();
68
- let startupExit;
69
- const terminalReplay = new TerminalReplayBuffer(record.elwoodSessionId);
70
- terminalReplay.captureStartupAttention(emitter);
71
- const { ready, observeReadinessFrame } = createReadinessGate(() => {
72
- turnWatcher.arm(resumed); // resume arms in settling mode (no phantom replay turn)
73
- session?.completeInitialReady(); // shared anti-starvation ready boundary (C-API-42)
74
- }, resumed);
75
- const autotrust = options.autotrust ?? false;
76
- const observers = {
77
- turn: new TurnStateWatcher(),
78
- attention: new AttentionWatcher(),
79
- table: codexScreenFactTableForTrustPolicy(autotrust),
80
- agent: "codex",
81
- elwoodSessionId: record.elwoodSessionId,
82
- emitActivity: (event) => emitter.emit("activity", event),
83
- };
84
- const turnWatcher = observers.turn;
85
- const promptResponder = new CodexStartupPromptResponder(record.elwoodSessionId, autotrust);
86
- const terminal = attachPtyTerminal(options.initialSize ?? defaultTerminalSize, pty, (data, renderedTerminal) => {
87
- startupOutput.push(data);
88
- terminalReplay.push(data);
89
- // One snapshot per render: reused for prompt automation, readiness, detection.
90
- const frame = { text: renderedTerminal.snapshot().text, title: renderedTerminal.title };
91
- // The write RETURNS its completion: the responder settles only after it fulfills;
92
- // a rejected write retries + warns (C-CODEX-17). Warning delivery is CONTAINED on
93
- // the frame path so a throwing listener never skips readiness or terminal:data.
94
- const result = promptResponder.handle(frame.text, (i) => renderedTerminal.sendInput(i), () => renderedTerminal.snapshot().text);
95
- warnGate.emitWarnings(result.warnings);
96
- emitSettledStartupOutcomes(emitter, "codex", record.elwoodSessionId, result.outcomes, {
97
- emitWarnings: (w) => warnGate.emitWarnings(w),
98
- });
99
- ready.armDeadline(); // hook/deadline readiness; resume composer also marks (C-API-28)
100
- const reading = observeRenderedFrame(observers, frame, session);
101
- observeReadinessFrame(reading.facts); // blocking gate + resume-composer mark
102
- emitter.emit("terminal:data", { elwoodSessionId: record.elwoodSessionId, data });
103
- });
104
- session = new CodexSessionImpl(record, stateDir, runtime, pty, terminal, bridge, emitter, terminalReplay, transcriptWatcher, loopDefinitions);
105
- const id = record.elwoodSessionId;
106
- const activeSession = session;
107
- const beforeCleanup = () => activeSession.pauseLoopsForStartupCleanup(ready.cancel);
108
- // ONE guarded region for every live-resource step after the session exists (readiness
109
- // wiring/replay, exit registration, startup assertion/evidence): a failure in ANY tears
110
- // down the now-live PTY/bridge/terminal/watchers before rethrowing (§9.1/§9.4). Mirrors Claude.
111
- await guardStartupRegion(async () => {
112
- activeSession.startLoops();
113
- flushPendingWarnings(); // inside the guard: a throwing sink tears down, not leaks (§5.4/§9.4)
114
- // The `SessionStart` hook releases the first queued message (C-API-28).
115
- activeSession.setInitialReadyHook(() => ready.mark());
116
- ready.replay();
117
- // C-LIFE-10: the FINAL flush runs behind finishSafely's boundary, so a throwing
118
- // final-flush listener can't skip terminal:exit; submitExit always reaps last.
119
- pty.onExit((exit) => {
120
- startupExit = exit;
121
- ready.cancel();
122
- const emitExit = () => {
123
- emitter.emit("terminal:exit", { elwoodSessionId: id, ...exit });
124
- emitter.emit("activity", activity.activityFromTerminalExit("codex", id, exit.exitCode));
125
- };
126
- finishSessionExit(() => finishSafely(emitExit), () => activeSession.submitExit());
127
- });
128
- // Release the startup buffer once the check settles (no lingering transcript, §9.4).
129
- await assertStartupThenRelease("codex", startupOutput, () => startupExit);
130
- activeSession.submitEvidence("startup_usable");
131
- }, { before: beforeCleanup, pty, bridge, terminal, after: () => transcriptWatcher.stop() });
132
- // Buffer the preflight/version warning through the same gate, then open it: buffered
133
- // startup warnings (MCP/transcript) AND the preflight all flush on one deferred
134
- // macrotask after return, so a caller subscribing synchronously observes them all.
135
- if (preflightWarning !== undefined)
136
- warnGate.emitWarnings([preflightEvent(id, preflightWarning)]);
137
- warnGate.openAfterReturn();
138
- terminalReplay.releaseStartupAttentionAfterReturn();
139
- return session;
140
- }
141
- function preflightEvent(elwoodSessionId, warning) {
142
- return { elwoodSessionId, ...warning };
143
- }
144
- //# sourceMappingURL=session-build.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-build.js","sourceRoot":"","sources":["../../src/codex/session-build.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Codex session runtime cleanup helpers.
3
- * Implements PRD §9.3.
4
- */
5
- import type { ElwoodTerminal } from "../terminal/headless.ts";
6
- import type { CodexTranscriptWatcher } from "./transcript.ts";
7
- type CodexRuntimeBridge = {
8
- readonly stop: () => Promise<void>;
9
- };
10
- export declare function stopCodexRuntime(bridge: CodexRuntimeBridge, transcriptWatcher: CodexTranscriptWatcher | undefined, terminal: ElwoodTerminal): Promise<void>;
11
- export {};
12
- //# sourceMappingURL=session-cleanup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-cleanup.d.ts","sourceRoot":"","sources":["../../src/codex/session-cleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,sBAAsB,GAAG,SAAS,EACrD,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Codex session runtime cleanup helpers.
3
- * Implements PRD §9.3.
4
- */
5
- import { runCleanupSteps } from "../runtime/teardown.js";
6
- export function stopCodexRuntime(bridge, transcriptWatcher, terminal) {
7
- // Every step runs even if an earlier one throws, so a failing bridge stop still
8
- // finishes the transcript watcher and disposes the terminal (no leak; PRD §9.4).
9
- return runCleanupSteps([
10
- () => bridge.stop(),
11
- () => transcriptWatcher?.finish(),
12
- () => terminal.dispose(),
13
- ]);
14
- }
15
- //# sourceMappingURL=session-cleanup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-cleanup.js","sourceRoot":"","sources":["../../src/codex/session-cleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,MAAM,UAAU,gBAAgB,CAC9B,MAA0B,EAC1B,iBAAqD,EACrD,QAAwB;IAExB,gFAAgF;IAChF,iFAAiF;IACjF,OAAO,eAAe,CAAC;QACrB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;QACnB,GAAG,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE;QACjC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;KACzB,CAAC,CAAC;AACL,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Registers and dispatches Codex hook handlers on a session emitter.
3
- * Implements PRD §5.7, §7A.2 (tool-keyed `PreToolUse` handlers; the `unknown`
4
- * handler receives only `mcp__*` / `unknown:*` tools), and §7A.3 (an unblocked
5
- * `Stop` reads the committed turn with a bounded per-pass scan before readiness).
6
- */
7
- import type { TypedEmitter } from "../events/emitter.ts";
8
- import type { SessionRecord } from "../state/store.ts";
9
- import type { CodexSessionImpl } from "./session-instance.ts";
10
- import type { CodexEventMap, StartCodexOptions } from "./session-types.ts";
11
- export declare function registerInitialHooks(emitter: TypedEmitter<CodexEventMap>, handlers: StartCodexOptions["hooks"]): void;
12
- export declare function dispatchHook(input: unknown, emitter: TypedEmitter<CodexEventMap>, options: StartCodexOptions, record: SessionRecord, session?: CodexSessionImpl): Promise<import("../bridge/types.ts").BridgeProcessResult>;
13
- //# sourceMappingURL=session-hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-hooks.d.ts","sourceRoot":"","sources":["../../src/codex/session-hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAEV,aAAa,EAEb,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAG5B,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,EACpC,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,GACnC,IAAI,CAKN;AAiBD,wBAAsB,YAAY,CAChC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,EACpC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,gBAAgB,6DAmC3B"}
@@ -1,54 +0,0 @@
1
- /**
2
- * Registers and dispatches Codex hook handlers on a session emitter.
3
- * Implements PRD §5.7, §7A.2 (tool-keyed `PreToolUse` handlers; the `unknown`
4
- * handler receives only `mcp__*` / `unknown:*` tools), and §7A.3 (an unblocked
5
- * `Stop` reads the committed turn with a bounded per-pass scan before readiness).
6
- */
7
- import * as activity from "../core/activity.js";
8
- import { isRecord } from "../core/predicates.js";
9
- import { isCodexBlock, requestCodexHook } from "./hook-dispatch.js";
10
- import { serializeCodexHookResult } from "./serialize.js";
11
- import { isKnownCommandTool, normalizeCodexHookEvent } from "./validate.js";
12
- export function registerInitialHooks(emitter, handlers) {
13
- if (!handlers)
14
- return;
15
- for (const [name, handler] of Object.entries(handlers)) {
16
- emitter.listen(`hook:${name}`, hookHandler(name, handler));
17
- }
18
- }
19
- function hookHandler(name, handler) {
20
- if (typeof handler === "function")
21
- return handler;
22
- if (name !== "PreToolUse" || !isRecord(handler))
23
- return () => undefined;
24
- return ((event) => {
25
- const toolName = isRecord(event) && typeof event["tool_name"] === "string" ? event["tool_name"] : "";
26
- // The `unknown` handler is typed for `mcp__*` / `unknown:*` tools only, so a known
27
- // command tool with no per-tool handler resolves to no decision rather than being
28
- // routed into a handler whose parameter type it does not satisfy (§7A.2).
29
- const toolHandler = handler[toolName] ?? (isKnownCommandTool(toolName) ? undefined : handler["unknown"]);
30
- return typeof toolHandler === "function" ? toolHandler(event) : undefined;
31
- });
32
- }
33
- export async function dispatchHook(input, emitter, options, record, session) {
34
- const event = normalizeCodexHookEvent(input);
35
- session?.observeTranscript(event.transcript_path);
36
- if (event.hook_event_name === "SessionStart") {
37
- session?.rememberCodexSessionId(event.session_id);
38
- // Codex's authoritative pre-input readiness signal: release the first queued
39
- // message here, not on the boot-time composer placeholder (C-API-28).
40
- session?.markInitialReadyFromHook();
41
- }
42
- emitter.emit("hook", event);
43
- emitter.emit("activity", activity.activityFromCodexHook(record.elwoodSessionId, event));
44
- const outcome = await requestCodexHook(emitter, event, options.hookTimeoutMs ?? 25_000, record.elwoodSessionId);
45
- emitter.emit("activity", activity.activityFromHookResult("codex", record.elwoodSessionId, event.hook_event_name, outcome.result, outcome.failedOpen));
46
- if (event.hook_event_name === "Stop" && !isCodexBlock(outcome.result)) {
47
- // A bounded per-pass scan (like Claude's): the terminal drain budget is reserved
48
- // for finish(), so hundreds of turns never exhaust it into false backlog drops.
49
- session?.scanTranscript();
50
- session?.submitEvidence("hook_turn_ended");
51
- }
52
- return serializeCodexHookResult(event.hook_event_name, outcome.result);
53
- }
54
- //# sourceMappingURL=session-hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-hooks.js","sourceRoot":"","sources":["../../src/codex/session-hooks.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- /**
2
- * In-memory Codex session object exposed to callers.
3
- * Implements PRD §5.7, §7A, §8, and §9.
4
- */
5
- import type { ElwoodActivityEvent } from "../core/activity.ts";
6
- import type { TerminalReplayBuffer } from "../core/terminal-replay.ts";
7
- import type { ElwoodSessionStatus, ElwoodWarningEvent } from "../core/types.ts";
8
- import type { TypedEmitter } from "../events/emitter.ts";
9
- import type { PtyProcess } from "../pty/types.ts";
10
- import { AgentSessionBase } from "../runtime/session-base.ts";
11
- import type { PersistedLoopDefinition } from "../state/loop-store.ts";
12
- import type { SessionRuntime } from "../state/runtime-paths.ts";
13
- import { type SessionRecord } from "../state/store.ts";
14
- import type { ElwoodTerminal } from "../terminal/headless.ts";
15
- import type { CodexHookBridge } from "./session-bridge.ts";
16
- import type { CodexEventHandler, CodexEventMap, CodexEventName, CodexSessionApi } from "./session-types.ts";
17
- import type { CodexTranscriptWatcher } from "./transcript.ts";
18
- export declare class CodexSessionImpl extends AgentSessionBase implements CodexSessionApi {
19
- protected readonly picker: import("../core/model-picker.ts").ModelPickerSpec;
20
- private readonly bridge;
21
- private readonly emitter;
22
- private readonly transcriptWatcher;
23
- private onInitialReady;
24
- constructor(record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, terminal: ElwoodTerminal, bridge: CodexHookBridge, emitter: TypedEmitter<CodexEventMap>, terminalReplay: TerminalReplayBuffer, transcriptWatcher: CodexTranscriptWatcher | undefined, loopDefinitions: readonly PersistedLoopDefinition[]);
25
- on<E extends CodexEventName>(event: E, handler: CodexEventHandler<E>): import("../index.ts").Unsubscribe;
26
- setModel(id: string, options?: {
27
- readonly timeoutMs?: number;
28
- }): Promise<void>;
29
- private restoreCodexDefault;
30
- off<E extends CodexEventName>(event: E, handler: CodexEventHandler<E>): void;
31
- completeInitialReady(): void;
32
- waitForStatus(match: (status: ElwoodSessionStatus) => boolean, timeoutMs?: number): Promise<"starting" | "running" | "ready" | "blocked" | "exited" | "stopped" | "killed" | "torn_down">;
33
- waitForActivity(match: (event: ElwoodActivityEvent) => boolean, timeoutMs?: number): Promise<ElwoodActivityEvent>;
34
- protected stagedPaste(screen: string, prompt: string): boolean;
35
- protected attachImages: (paths: readonly string[], signal: AbortSignal) => Promise<void>;
36
- rememberCodexSessionId(sessionId: string): void;
37
- /** Registers the readiness trigger fired by the `SessionStart` hook — Codex's
38
- * authoritative "initialized and accepting input" signal (C-API-28). */
39
- setInitialReadyHook(fire: () => void): void;
40
- /** Fires initial readiness from the `SessionStart` hook so the first queued
41
- * message is released only once Codex is actually accepting input, not on the
42
- * boot-time composer placeholder that would swallow it (C-API-28). */
43
- markInitialReadyFromHook(): void;
44
- observeTranscript(path?: string | null): void;
45
- /** One bounded per-pass scan of the committed transcript (an unblocked `Stop`, §7A.3). */
46
- scanTranscript(): void;
47
- emitWarnings(warnings: readonly ElwoodWarningEvent[]): void;
48
- protected stopRuntime(): Promise<void>;
49
- }
50
- //# sourceMappingURL=session-instance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-instance.d.ts","sourceRoot":"","sources":["../../src/codex/session-instance.ts"],"names":[],"mappings":"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"}
@@ -1,117 +0,0 @@
1
- /**
2
- * In-memory Codex session object exposed to callers.
3
- * Implements PRD §5.7, §7A, §8, and §9.
4
- */
5
- import { sessionWaitForActivity, sessionWaitForStatus } from "../core/session-wait.js";
6
- import { emitSessionWarnings } from "../core/session-warnings.js";
7
- import { AgentSessionBase } from "../runtime/session-base.js";
8
- import { updateSessionResumeId } from "../state/store.js";
9
- import { attachCodexImages } from "./attach-images.js";
10
- import { restoreCodexConfig, snapshotCodexConfig } from "./config-restore.js";
11
- import { runCodexModelSwitch } from "./config-transaction.js";
12
- import { codexModelPicker } from "./model-picker.js";
13
- import { stopCodexRuntime } from "./session-cleanup.js";
14
- import { clipboardRestoreFailedWarning, codexRestoreFailedWarning, codexRestoreSkippedWarning, } from "./session-warnings.js";
15
- export class CodexSessionImpl extends AgentSessionBase {
16
- picker = codexModelPicker;
17
- bridge;
18
- emitter;
19
- transcriptWatcher;
20
- onInitialReady;
21
- constructor(record, stateDir, runtime, pty, terminal, bridge, emitter, terminalReplay, transcriptWatcher, loopDefinitions) {
22
- super("codex", record, stateDir, runtime, pty, terminal, emitter, terminalReplay, loopDefinitions);
23
- this.bridge = bridge;
24
- this.emitter = emitter;
25
- this.transcriptWatcher = transcriptWatcher;
26
- }
27
- on(event, handler) {
28
- // REGISTER before replaying buffered `terminal:data` (mirrors Claude): a throwing replay
29
- // handler must still be subscribed for FUTURE data. Replay is synchronous, so nothing interleaves.
30
- const unsubscribe = this.emitter.on(event, handler);
31
- this.replayFor(event, handler);
32
- return unsubscribe;
33
- }
34
- // The Codex CLI persists picker selections into user config.toml; restore
35
- // the user's prior default after the switch (C-CODEX-14). The live session
36
- // keeps the switched model because Codex reads its config at launch.
37
- //
38
- // The whole transaction runs under a PROCESS-WIDE config lock (see
39
- // config-transaction.ts) so two sessions switching at once cannot interleave
40
- // snapshot/restore on the shared file and persist the wrong model, and the
41
- // restore still fires when the picker automation rejects AFTER Codex wrote
42
- // config.toml — otherwise a late `waitForScreen` timeout would leave the
43
- // user's global default changed (C-CODEX-14).
44
- setModel(id, options) {
45
- return runCodexModelSwitch({
46
- snapshot: snapshotCodexConfig,
47
- apply: () => super.setModel(id, options),
48
- restore: (snapshot) => this.restoreCodexDefault(snapshot),
49
- onRestoreError: (error) => this.emitWarnings([codexRestoreFailedWarning(this.elwoodSessionId, error)]),
50
- });
51
- }
52
- restoreCodexDefault(snapshot) {
53
- const outcome = restoreCodexConfig(snapshot);
54
- if (outcome === "restored" || outcome === "unchanged")
55
- return;
56
- this.emitWarnings([codexRestoreSkippedWarning(this.elwoodSessionId, outcome)]);
57
- }
58
- off(event, handler) {
59
- this.emitter.off(event, handler);
60
- }
61
- // One-shot initial-ready transition via the shared anti-starvation boundary: a
62
- // failed persist/listener releases the queue directly and warns (C-API-42). Codex
63
- // has no narrow-bootstrap resize to restore, so this is just the base advance.
64
- completeInitialReady() {
65
- this.advanceInitialReady();
66
- }
67
- waitForStatus(match, timeoutMs) {
68
- return sessionWaitForStatus(this, match, timeoutMs);
69
- }
70
- waitForActivity(match, timeoutMs) {
71
- return sessionWaitForActivity(this, match, timeoutMs);
72
- }
73
- // Codex has no staged chip; the composer still shows the paste's last line.
74
- stagedPaste(screen, prompt) {
75
- const lastLine = prompt.trim().split("\n").at(-1)?.trim();
76
- return lastLine !== undefined && lastLine.length > 0 && screen.includes(lastLine);
77
- }
78
- // Codex ingests an interactive image only from the OS clipboard; the Ctrl+V is
79
- // held while a dialog is on screen so it never confirms one (C-API-46/37).
80
- attachImages = (paths, signal) => attachCodexImages(this.terminal, paths, signal, () => this.status === "blocked", () => this.emitWarnings([clipboardRestoreFailedWarning(this.elwoodSessionId)]));
81
- rememberCodexSessionId(sessionId) {
82
- if (this.record.codex.resumeId)
83
- return;
84
- this.persist(updateSessionResumeId(this.record, "codex", sessionId));
85
- }
86
- /** Registers the readiness trigger fired by the `SessionStart` hook — Codex's
87
- * authoritative "initialized and accepting input" signal (C-API-28). */
88
- setInitialReadyHook(fire) {
89
- this.onInitialReady = fire;
90
- }
91
- /** Fires initial readiness from the `SessionStart` hook so the first queued
92
- * message is released only once Codex is actually accepting input, not on the
93
- * boot-time composer placeholder that would swallow it (C-API-28). */
94
- markInitialReadyFromHook() {
95
- this.onInitialReady?.();
96
- }
97
- observeTranscript(path) {
98
- if (path)
99
- this.transcriptWatcher?.observe(path);
100
- }
101
- /** One bounded per-pass scan of the committed transcript (an unblocked `Stop`, §7A.3). */
102
- scanTranscript() {
103
- this.transcriptWatcher?.scan();
104
- }
105
- emitWarnings(warnings) {
106
- // No cast: each callback is the emitter's own `emit` bound to a correlated
107
- // event name, so a map/payload drift is a compile error here.
108
- emitSessionWarnings(warnings, {
109
- warning: (event) => this.emitter.emit("warning", event),
110
- activity: (event) => this.emitter.emit("activity", event),
111
- });
112
- }
113
- async stopRuntime() {
114
- await stopCodexRuntime(this.bridge, this.transcriptWatcher, this.terminal);
115
- }
116
- }
117
- //# sourceMappingURL=session-instance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-instance.js","sourceRoot":"","sources":["../../src/codex/session-instance.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Codex session resume entry point built on the shared start path.
3
- * Implements PRD §5.6, §9.3, and C-API-16.
4
- */
5
- import type { CodexSessionApi, ResumeCodexOptions } from "./session-types.ts";
6
- export declare function resumeCodex(options: ResumeCodexOptions): Promise<CodexSessionApi>;
7
- //# sourceMappingURL=session-resume.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-resume.d.ts","sourceRoot":"","sources":["../../src/codex/session-resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwCvF"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Codex session resume entry point built on the shared start path.
3
- * Implements PRD §5.6, §9.3, and C-API-16.
4
- */
5
- import { resolve } from "node:path";
6
- import { elwoodError } from "../core/errors.js";
7
- import { codexLaunchPosture, effectivePosture, withCodexLaunch } from "../state/launch-posture.js";
8
- import { defaultStateDir, readSessionRecord } from "../state/store.js";
9
- import * as preflight from "./preflight.js";
10
- import { startCodexFromRecord } from "./session.js";
11
- export async function resumeCodex(options) {
12
- // Resolve stateDir to ABSOLUTE ONCE, before any read/await, so a `process.chdir()`
13
- // between the record read and the runtime-file writes can't split them (§8.1).
14
- const stateDir = resolve(options.stateDir ?? defaultStateDir(options.cwd ?? process.cwd()));
15
- const record = readSessionRecord(stateDir, options.elwoodSessionId);
16
- if (record.adapter !== "codex")
17
- throw elwoodError("adapter_mismatch", "Cannot resume a non-Codex session as Codex.");
18
- if (!record.codex.resumeId)
19
- throw elwoodError("resume_unavailable", "Cannot resume Codex without a Codex session id.");
20
- const warning = await preflight.preflightCodex(options.strictVersionCheck ?? false, options.autoupdate ?? false);
21
- // Resume defaults to the posture this session launched with; explicit options
22
- // override field by field, and the effective posture is re-persisted (C-API-32,
23
- // C-STATE-13). Terminal size is not persisted: it falls back to options.initialSize.
24
- const launch = effectivePosture(record.codex.launch, codexLaunchPosture(options));
25
- const resumedRecord = withCodexLaunch(record, launch);
26
- return await startCodexFromRecord(resumedRecord, stateDir, {
27
- cwd: options.cwd ?? record.cwd,
28
- stateDir,
29
- ...(options.hooks === undefined ? {} : { hooks: options.hooks }),
30
- ...(options.initialSize === undefined ? {} : { initialSize: options.initialSize }),
31
- ...(options.hookTimeoutMs === undefined ? {} : { hookTimeoutMs: options.hookTimeoutMs }),
32
- ...(options.autotrust === undefined ? {} : { autotrust: options.autotrust }),
33
- // Reasoning effort is NOT persisted posture — re-supply it per resume (C-CODEX-21).
34
- ...(options.reasoningEffort === undefined
35
- ? {}
36
- : { reasoningEffort: options.reasoningEffort }),
37
- ...launch,
38
- ...(options.strictVersionCheck === undefined
39
- ? {}
40
- : { strictVersionCheck: options.strictVersionCheck }),
41
- }, true, // resumed: mark ready on the first composer marker, not the 10s deadline
42
- warning);
43
- }
44
- //# sourceMappingURL=session-resume.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-resume.js","sourceRoot":"","sources":["../../src/codex/session-resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,mFAAmF;IACnF,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5F,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,OAAO,GAAG,MAAM,SAAS,CAAC,cAAc,CAC5C,OAAO,CAAC,kBAAkB,IAAI,KAAK,EACnC,OAAO,CAAC,UAAU,IAAI,KAAK,CAC5B,CAAC;IACF,8EAA8E;IAC9E,gFAAgF;IAChF,qFAAqF;IACrF,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,MAAM,oBAAoB,CAC/B,aAAa,EACb,QAAQ,EACR;QACE,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG;QAC9B,QAAQ;QACR,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAClF,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QACxF,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5E,oFAAoF;QACpF,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;QACjD,GAAG,MAAM;QACT,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC;KACxD,EACD,IAAI,EAAE,yEAAyE;IAC/E,OAAO,CACR,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Writes the per-session runtime files (the hook bridge script) for Codex sessions.
3
- * Implements PRD §7A and §8.2.
4
- */
5
- import type { SessionRuntime } from "../state/runtime-paths.ts";
6
- export declare function writeCodexRuntimeFiles(runtime: SessionRuntime): void;
7
- //# sourceMappingURL=session-runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-runtime.d.ts","sourceRoot":"","sources":["../../src/codex/session-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAKpE"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Writes the per-session runtime files (the hook bridge script) for Codex sessions.
3
- * Implements PRD §7A and §8.2.
4
- */
5
- import { bridgeScriptSource } from "../bridge/script.js";
6
- import { writePrivateFileAtomic } from "../state/files.js";
7
- export function writeCodexRuntimeFiles(runtime) {
8
- writePrivateFileAtomic(runtime.bridgeScriptPath, bridgeScriptSource(runtime.socketPath, runtime.bridgeToken));
9
- }
10
- //# sourceMappingURL=session-runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-runtime.js","sourceRoot":"","sources":["../../src/codex/session-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,MAAM,UAAU,sBAAsB,CAAC,OAAuB;IAC5D,sBAAsB,CACpB,OAAO,CAAC,gBAAgB,EACxB,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAC5D,CAAC;AACJ,CAAC"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Wires the bounded Codex transcript watcher to the session's warning sink.
3
- * The watcher is constructed BEFORE the session object, so a drop/read-error
4
- * notice observed early is BUFFERED and flushed through `emitWarnings` (which
5
- * emits it as a live `warning` + `activity`) once the sink exists — never dropped.
6
- * The caller MUST invoke `flushPendingWarnings` right after building the session so
7
- * a single early notice with no follow-up is not stranded. Warnings are live-only
8
- * (never persisted, counted, or replayed). Mirrors Claude's wiring. PRD §5.4/§5.7.
9
- */
10
- import { type TranscriptWarningSink } from "../core/transcript/warning-router.ts";
11
- import type { TypedEmitter } from "../events/emitter.ts";
12
- import type { CodexEventMap } from "./session-types.ts";
13
- import { CodexTranscriptWatcher } from "./transcript.ts";
14
- /** A watcher plus the hook to flush any diagnostics buffered before the sink existed. */
15
- type WiredCodexTranscriptWatcher = {
16
- readonly watcher: CodexTranscriptWatcher;
17
- readonly flushPendingWarnings: () => void;
18
- /** Drive `watcher.finish()` behind an error boundary, then run `afterFlush` in a
19
- * `finally` so a throwing final-flush listener never skips terminal:exit (C-LIFE-10). */
20
- readonly finishSafely: (afterFlush?: () => void) => void;
21
- };
22
- /**
23
- * Builds the transcript watcher, routing content-free drop/read-error notices to
24
- * the session's warning sink. Notices seen before `getSink()` resolves are held in
25
- * `pending`; both `route` and the returned `flushPendingWarnings` drain them, so a
26
- * lone early notice still surfaces once the caller flushes post-construction.
27
- */
28
- export declare function createCodexTranscriptWatcher(elwoodSessionId: string, emitter: TypedEmitter<CodexEventMap>, getSink: () => TranscriptWarningSink | undefined): WiredCodexTranscriptWatcher;
29
- export {};
30
- //# sourceMappingURL=session-transcript.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-transcript.d.ts","sourceRoot":"","sources":["../../src/codex/session-transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,sBAAsB,EAIvB,MAAM,iBAAiB,CAAC;AAEzB,yFAAyF;AACzF,KAAK,2BAA2B,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC;IAC1C;6FACyF;IACzF,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,CAkC7B"}