@with-logic/elwood 0.1.0 → 0.1.1

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 (673) hide show
  1. package/CHANGELOG.md +166 -1
  2. package/LICENSE +1 -1
  3. package/README.md +276 -13
  4. package/dist/claude/command.d.ts +9 -2
  5. package/dist/claude/command.d.ts.map +1 -1
  6. package/dist/claude/command.js +23 -16
  7. package/dist/claude/command.js.map +1 -1
  8. package/dist/claude/session/index.d.ts.map +1 -1
  9. package/dist/claude/session/index.js +5 -2
  10. package/dist/claude/session/index.js.map +1 -1
  11. package/dist/claude/session/resume.d.ts +1 -1
  12. package/dist/claude/session/resume.d.ts.map +1 -1
  13. package/dist/claude/session/resume.js +5 -1
  14. package/dist/claude/session/resume.js.map +1 -1
  15. package/dist/claude/simple.d.ts.map +1 -1
  16. package/dist/claude/simple.js +4 -0
  17. package/dist/claude/simple.js.map +1 -1
  18. package/dist/cli/args/index.d.ts +3 -1
  19. package/dist/cli/args/index.d.ts.map +1 -1
  20. package/dist/cli/args/index.js +10 -2
  21. package/dist/cli/args/index.js.map +1 -1
  22. package/dist/cli/args/options.d.ts.map +1 -1
  23. package/dist/cli/args/options.js +2 -0
  24. package/dist/cli/args/options.js.map +1 -1
  25. package/dist/cli/args-commands.d.ts +10 -0
  26. package/dist/cli/args-commands.d.ts.map +1 -0
  27. package/dist/cli/args-commands.js +113 -0
  28. package/dist/cli/args-commands.js.map +1 -0
  29. package/dist/cli/command-types.d.ts +26 -0
  30. package/dist/cli/command-types.d.ts.map +1 -0
  31. package/dist/cli/command-types.js +9 -0
  32. package/dist/cli/command-types.js.map +1 -0
  33. package/dist/cli/config/codec-primitives.d.ts +20 -0
  34. package/dist/cli/config/codec-primitives.d.ts.map +1 -0
  35. package/dist/cli/config/codec-primitives.js +51 -0
  36. package/dist/cli/config/codec-primitives.js.map +1 -0
  37. package/dist/cli/config/codec.d.ts.map +1 -1
  38. package/dist/cli/config/codec.js +4 -46
  39. package/dist/cli/config/codec.js.map +1 -1
  40. package/dist/cli/config/effective.d.ts.map +1 -1
  41. package/dist/cli/config/effective.js +1 -0
  42. package/dist/cli/config/effective.js.map +1 -1
  43. package/dist/cli/config/keys.d.ts +1 -1
  44. package/dist/cli/config/keys.d.ts.map +1 -1
  45. package/dist/cli/config/keys.js +1 -0
  46. package/dist/cli/config/keys.js.map +1 -1
  47. package/dist/cli/entry.d.ts +4 -2
  48. package/dist/cli/entry.d.ts.map +1 -1
  49. package/dist/cli/entry.js +2 -1
  50. package/dist/cli/entry.js.map +1 -1
  51. package/dist/cli/help.d.ts +2 -2
  52. package/dist/cli/help.d.ts.map +1 -1
  53. package/dist/cli/help.js +40 -1
  54. package/dist/cli/help.js.map +1 -1
  55. package/dist/cli/interactive/index.d.ts +26 -0
  56. package/dist/cli/interactive/index.d.ts.map +1 -0
  57. package/dist/cli/interactive/index.js +33 -0
  58. package/dist/cli/interactive/index.js.map +1 -0
  59. package/dist/cli/interactive/launch.d.ts +14 -0
  60. package/dist/cli/interactive/launch.d.ts.map +1 -0
  61. package/dist/cli/interactive/launch.js +66 -0
  62. package/dist/cli/interactive/launch.js.map +1 -0
  63. package/dist/cli/interactive/spawn.d.ts +18 -0
  64. package/dist/cli/interactive/spawn.d.ts.map +1 -0
  65. package/dist/cli/interactive/spawn.js +32 -0
  66. package/dist/cli/interactive/spawn.js.map +1 -0
  67. package/dist/cli/main-failure.d.ts +28 -0
  68. package/dist/cli/main-failure.d.ts.map +1 -0
  69. package/dist/cli/main-failure.js +78 -0
  70. package/dist/cli/main-failure.js.map +1 -0
  71. package/dist/cli/main.d.ts +12 -4
  72. package/dist/cli/main.d.ts.map +1 -1
  73. package/dist/cli/main.js +27 -73
  74. package/dist/cli/main.js.map +1 -1
  75. package/dist/cli/models/index.d.ts +20 -0
  76. package/dist/cli/models/index.d.ts.map +1 -0
  77. package/dist/cli/models/index.js +60 -0
  78. package/dist/cli/models/index.js.map +1 -0
  79. package/dist/cli/models/render.d.ts +9 -0
  80. package/dist/cli/models/render.d.ts.map +1 -0
  81. package/dist/cli/models/render.js +33 -0
  82. package/dist/cli/models/render.js.map +1 -0
  83. package/dist/cli/request/index.d.ts.map +1 -1
  84. package/dist/cli/request/index.js +8 -2
  85. package/dist/cli/request/index.js.map +1 -1
  86. package/dist/cli/request/posture.d.ts +28 -0
  87. package/dist/cli/request/posture.d.ts.map +1 -0
  88. package/dist/cli/request/posture.js +70 -0
  89. package/dist/cli/request/posture.js.map +1 -0
  90. package/dist/cli/request/resolution-types.d.ts +1 -0
  91. package/dist/cli/request/resolution-types.d.ts.map +1 -1
  92. package/dist/cli/request/settings.d.ts +2 -12
  93. package/dist/cli/request/settings.d.ts.map +1 -1
  94. package/dist/cli/request/settings.js +2 -25
  95. package/dist/cli/request/settings.js.map +1 -1
  96. package/dist/cli/request/validation.d.ts +12 -0
  97. package/dist/cli/request/validation.d.ts.map +1 -1
  98. package/dist/cli/request/validation.js +30 -10
  99. package/dist/cli/request/validation.js.map +1 -1
  100. package/dist/cli/request/values.d.ts +1 -0
  101. package/dist/cli/request/values.d.ts.map +1 -1
  102. package/dist/cli/request/values.js +1 -0
  103. package/dist/cli/request/values.js.map +1 -1
  104. package/dist/cli/run/index.d.ts.map +1 -1
  105. package/dist/cli/run/index.js +5 -41
  106. package/dist/cli/run/index.js.map +1 -1
  107. package/dist/cli/run/subscribe.d.ts +19 -0
  108. package/dist/cli/run/subscribe.d.ts.map +1 -0
  109. package/dist/cli/run/subscribe.js +47 -0
  110. package/dist/cli/run/subscribe.js.map +1 -0
  111. package/dist/cli/session/launch.d.ts +3 -0
  112. package/dist/cli/session/launch.d.ts.map +1 -1
  113. package/dist/cli/session/launch.js +11 -0
  114. package/dist/cli/session/launch.js.map +1 -1
  115. package/dist/cli/sessions/index.d.ts +23 -0
  116. package/dist/cli/sessions/index.d.ts.map +1 -0
  117. package/dist/cli/sessions/index.js +65 -0
  118. package/dist/cli/sessions/index.js.map +1 -0
  119. package/dist/cli/sessions/list.d.ts +28 -0
  120. package/dist/cli/sessions/list.d.ts.map +1 -0
  121. package/dist/cli/sessions/list.js +63 -0
  122. package/dist/cli/sessions/list.js.map +1 -0
  123. package/dist/cli/table.d.ts +7 -0
  124. package/dist/cli/table.d.ts.map +1 -0
  125. package/dist/cli/table.js +14 -0
  126. package/dist/cli/table.js.map +1 -0
  127. package/dist/cli/types.d.ts +5 -1
  128. package/dist/cli/types.d.ts.map +1 -1
  129. package/dist/cli/types.js.map +1 -1
  130. package/dist/codex/command.d.ts +18 -2
  131. package/dist/codex/command.d.ts.map +1 -1
  132. package/dist/codex/command.js +39 -24
  133. package/dist/codex/command.js.map +1 -1
  134. package/dist/codex/session/index.d.ts.map +1 -1
  135. package/dist/codex/session/index.js +5 -2
  136. package/dist/codex/session/index.js.map +1 -1
  137. package/dist/codex/session/resume.d.ts +1 -1
  138. package/dist/codex/session/resume.d.ts.map +1 -1
  139. package/dist/codex/session/resume.js +5 -1
  140. package/dist/codex/session/resume.js.map +1 -1
  141. package/dist/codex/session/types.d.ts +3 -0
  142. package/dist/codex/session/types.d.ts.map +1 -1
  143. package/dist/codex/simple.d.ts.map +1 -1
  144. package/dist/codex/simple.js +4 -0
  145. package/dist/codex/simple.js.map +1 -1
  146. package/dist/core/errors.d.ts +1 -1
  147. package/dist/core/errors.d.ts.map +1 -1
  148. package/dist/core/errors.js.map +1 -1
  149. package/dist/core/high-trust.d.ts +41 -0
  150. package/dist/core/high-trust.d.ts.map +1 -0
  151. package/dist/core/high-trust.js +50 -0
  152. package/dist/core/high-trust.js.map +1 -0
  153. package/dist/core/trust/allowlist.d.ts +56 -0
  154. package/dist/core/trust/allowlist.d.ts.map +1 -0
  155. package/dist/core/{trust-prompts.js → trust/allowlist.js} +21 -38
  156. package/dist/core/trust/allowlist.js.map +1 -0
  157. package/dist/core/trust/prompts.d.ts +4 -46
  158. package/dist/core/trust/prompts.d.ts.map +1 -1
  159. package/dist/core/trust/prompts.js +2 -73
  160. package/dist/core/trust/prompts.js.map +1 -1
  161. package/dist/core/trust/responder.d.ts +2 -0
  162. package/dist/core/trust/responder.d.ts.map +1 -1
  163. package/dist/core/trust/responder.js +4 -0
  164. package/dist/core/trust/responder.js.map +1 -1
  165. package/dist/core/types.d.ts +3 -0
  166. package/dist/core/types.d.ts.map +1 -1
  167. package/dist/runtime/launch-arguments.d.ts +12 -0
  168. package/dist/runtime/launch-arguments.d.ts.map +1 -0
  169. package/dist/runtime/launch-arguments.js +15 -0
  170. package/dist/runtime/launch-arguments.js.map +1 -0
  171. package/docs/cli-behavior.md +88 -0
  172. package/docs/cli-output.md +60 -0
  173. package/docs/cli.md +10 -2
  174. package/package.json +8 -6
  175. package/dist/claude/hook-dispatch.d.ts +0 -9
  176. package/dist/claude/hook-dispatch.d.ts.map +0 -1
  177. package/dist/claude/hook-dispatch.js +0 -12
  178. package/dist/claude/hook-dispatch.js.map +0 -1
  179. package/dist/claude/hook-events-extra.d.ts +0 -81
  180. package/dist/claude/hook-events-extra.d.ts.map +0 -1
  181. package/dist/claude/hook-events-extra.js +0 -6
  182. package/dist/claude/hook-events-extra.js.map +0 -1
  183. package/dist/claude/hook-events.d.ts +0 -101
  184. package/dist/claude/hook-events.d.ts.map +0 -1
  185. package/dist/claude/hook-events.js +0 -6
  186. package/dist/claude/hook-events.js.map +0 -1
  187. package/dist/claude/hook-names.d.ts +0 -24
  188. package/dist/claude/hook-names.d.ts.map +0 -1
  189. package/dist/claude/hook-names.js +0 -45
  190. package/dist/claude/hook-names.js.map +0 -1
  191. package/dist/claude/hooks.d.ts +0 -78
  192. package/dist/claude/hooks.d.ts.map +0 -1
  193. package/dist/claude/hooks.js +0 -6
  194. package/dist/claude/hooks.js.map +0 -1
  195. package/dist/claude/session-bridge.d.ts +0 -11
  196. package/dist/claude/session-bridge.d.ts.map +0 -1
  197. package/dist/claude/session-bridge.js +0 -18
  198. package/dist/claude/session-bridge.js.map +0 -1
  199. package/dist/claude/session-build.d.ts +0 -15
  200. package/dist/claude/session-build.d.ts.map +0 -1
  201. package/dist/claude/session-build.js +0 -147
  202. package/dist/claude/session-build.js.map +0 -1
  203. package/dist/claude/session-hook-handler.d.ts +0 -34
  204. package/dist/claude/session-hook-handler.d.ts.map +0 -1
  205. package/dist/claude/session-hook-handler.js +0 -42
  206. package/dist/claude/session-hook-handler.js.map +0 -1
  207. package/dist/claude/session-instance.d.ts +0 -42
  208. package/dist/claude/session-instance.d.ts.map +0 -1
  209. package/dist/claude/session-instance.js +0 -146
  210. package/dist/claude/session-instance.js.map +0 -1
  211. package/dist/claude/session-interface.d.ts +0 -49
  212. package/dist/claude/session-interface.d.ts.map +0 -1
  213. package/dist/claude/session-interface.js +0 -10
  214. package/dist/claude/session-interface.js.map +0 -1
  215. package/dist/claude/session-resume.d.ts +0 -8
  216. package/dist/claude/session-resume.d.ts.map +0 -1
  217. package/dist/claude/session-resume.js +0 -47
  218. package/dist/claude/session-resume.js.map +0 -1
  219. package/dist/claude/session-runtime.d.ts +0 -43
  220. package/dist/claude/session-runtime.d.ts.map +0 -1
  221. package/dist/claude/session-runtime.js +0 -105
  222. package/dist/claude/session-runtime.js.map +0 -1
  223. package/dist/claude/session-transcript.d.ts +0 -62
  224. package/dist/claude/session-transcript.d.ts.map +0 -1
  225. package/dist/claude/session-transcript.js +0 -88
  226. package/dist/claude/session-transcript.js.map +0 -1
  227. package/dist/claude/session.d.ts +0 -18
  228. package/dist/claude/session.d.ts.map +0 -1
  229. package/dist/claude/session.js +0 -58
  230. package/dist/claude/session.js.map +0 -1
  231. package/dist/claude/start-or-resume.d.ts +0 -12
  232. package/dist/claude/start-or-resume.d.ts.map +0 -1
  233. package/dist/claude/start-or-resume.js +0 -32
  234. package/dist/claude/start-or-resume.js.map +0 -1
  235. package/dist/claude/tool-hook-events.d.ts +0 -10
  236. package/dist/claude/tool-hook-events.d.ts.map +0 -1
  237. package/dist/claude/tool-hook-events.js +0 -18
  238. package/dist/claude/tool-hook-events.js.map +0 -1
  239. package/dist/claude/tool-types.d.ts +0 -158
  240. package/dist/claude/tool-types.d.ts.map +0 -1
  241. package/dist/claude/tool-types.js +0 -6
  242. package/dist/claude/tool-types.js.map +0 -1
  243. package/dist/claude/validate-input.d.ts +0 -8
  244. package/dist/claude/validate-input.d.ts.map +0 -1
  245. package/dist/claude/validate-input.js +0 -137
  246. package/dist/claude/validate-input.js.map +0 -1
  247. package/dist/claude/validate-permission-update.d.ts +0 -10
  248. package/dist/claude/validate-permission-update.d.ts.map +0 -1
  249. package/dist/claude/validate-permission-update.js +0 -72
  250. package/dist/claude/validate-permission-update.js.map +0 -1
  251. package/dist/claude/validate-result.d.ts +0 -7
  252. package/dist/claude/validate-result.d.ts.map +0 -1
  253. package/dist/claude/validate-result.js +0 -118
  254. package/dist/claude/validate-result.js.map +0 -1
  255. package/dist/claude/validate-shapes.d.ts +0 -22
  256. package/dist/claude/validate-shapes.d.ts.map +0 -1
  257. package/dist/claude/validate-shapes.js +0 -15
  258. package/dist/claude/validate-shapes.js.map +0 -1
  259. package/dist/claude/validate-tool-update.d.ts +0 -15
  260. package/dist/claude/validate-tool-update.d.ts.map +0 -1
  261. package/dist/claude/validate-tool-update.js +0 -122
  262. package/dist/claude/validate-tool-update.js.map +0 -1
  263. package/dist/cli/agent-detect.d.ts +0 -44
  264. package/dist/cli/agent-detect.d.ts.map +0 -1
  265. package/dist/cli/agent-detect.js +0 -66
  266. package/dist/cli/agent-detect.js.map +0 -1
  267. package/dist/cli/arg-errors.d.ts +0 -6
  268. package/dist/cli/arg-errors.d.ts.map +0 -1
  269. package/dist/cli/arg-errors.js +0 -44
  270. package/dist/cli/arg-errors.js.map +0 -1
  271. package/dist/cli/arg-options.d.ts +0 -26
  272. package/dist/cli/arg-options.d.ts.map +0 -1
  273. package/dist/cli/arg-options.js +0 -50
  274. package/dist/cli/arg-options.js.map +0 -1
  275. package/dist/cli/args.d.ts +0 -7
  276. package/dist/cli/args.d.ts.map +0 -1
  277. package/dist/cli/args.js +0 -70
  278. package/dist/cli/args.js.map +0 -1
  279. package/dist/cli/lifecycle-outcome.d.ts +0 -13
  280. package/dist/cli/lifecycle-outcome.d.ts.map +0 -1
  281. package/dist/cli/lifecycle-outcome.js +0 -20
  282. package/dist/cli/lifecycle-outcome.js.map +0 -1
  283. package/dist/cli/lifecycle.d.ts +0 -61
  284. package/dist/cli/lifecycle.d.ts.map +0 -1
  285. package/dist/cli/lifecycle.js +0 -152
  286. package/dist/cli/lifecycle.js.map +0 -1
  287. package/dist/cli/request-finalize.d.ts +0 -10
  288. package/dist/cli/request-finalize.d.ts.map +0 -1
  289. package/dist/cli/request-finalize.js +0 -135
  290. package/dist/cli/request-finalize.js.map +0 -1
  291. package/dist/cli/request-layers.d.ts +0 -30
  292. package/dist/cli/request-layers.d.ts.map +0 -1
  293. package/dist/cli/request-layers.js +0 -44
  294. package/dist/cli/request-layers.js.map +0 -1
  295. package/dist/cli/request-settings.d.ts +0 -34
  296. package/dist/cli/request-settings.d.ts.map +0 -1
  297. package/dist/cli/request-settings.js +0 -66
  298. package/dist/cli/request-settings.js.map +0 -1
  299. package/dist/cli/request-sources.d.ts +0 -13
  300. package/dist/cli/request-sources.d.ts.map +0 -1
  301. package/dist/cli/request-sources.js +0 -23
  302. package/dist/cli/request-sources.js.map +0 -1
  303. package/dist/cli/request-validation.d.ts +0 -18
  304. package/dist/cli/request-validation.d.ts.map +0 -1
  305. package/dist/cli/request-validation.js +0 -84
  306. package/dist/cli/request-validation.js.map +0 -1
  307. package/dist/cli/request-values.d.ts +0 -33
  308. package/dist/cli/request-values.d.ts.map +0 -1
  309. package/dist/cli/request-values.js +0 -73
  310. package/dist/cli/request-values.js.map +0 -1
  311. package/dist/cli/request.d.ts +0 -12
  312. package/dist/cli/request.d.ts.map +0 -1
  313. package/dist/cli/request.js +0 -103
  314. package/dist/cli/request.js.map +0 -1
  315. package/dist/cli/resolution-types.d.ts +0 -35
  316. package/dist/cli/resolution-types.d.ts.map +0 -1
  317. package/dist/cli/resolution-types.js +0 -6
  318. package/dist/cli/resolution-types.js.map +0 -1
  319. package/dist/cli/run-output-lines.d.ts +0 -14
  320. package/dist/cli/run-output-lines.d.ts.map +0 -1
  321. package/dist/cli/run-output-lines.js +0 -42
  322. package/dist/cli/run-output-lines.js.map +0 -1
  323. package/dist/cli/run-output.d.ts +0 -48
  324. package/dist/cli/run-output.d.ts.map +0 -1
  325. package/dist/cli/run-output.js +0 -150
  326. package/dist/cli/run-output.js.map +0 -1
  327. package/dist/cli/run.d.ts +0 -20
  328. package/dist/cli/run.d.ts.map +0 -1
  329. package/dist/cli/run.js +0 -126
  330. package/dist/cli/run.js.map +0 -1
  331. package/dist/cli/session-launch.d.ts +0 -23
  332. package/dist/cli/session-launch.d.ts.map +0 -1
  333. package/dist/cli/session-launch.js +0 -57
  334. package/dist/cli/session-launch.js.map +0 -1
  335. package/dist/cli/session.d.ts +0 -68
  336. package/dist/cli/session.d.ts.map +0 -1
  337. package/dist/cli/session.js +0 -124
  338. package/dist/cli/session.js.map +0 -1
  339. package/dist/codex/attach-images.d.ts +0 -20
  340. package/dist/codex/attach-images.d.ts.map +0 -1
  341. package/dist/codex/attach-images.js +0 -66
  342. package/dist/codex/attach-images.js.map +0 -1
  343. package/dist/codex/clipboard-lock.d.ts +0 -15
  344. package/dist/codex/clipboard-lock.d.ts.map +0 -1
  345. package/dist/codex/clipboard-lock.js +0 -16
  346. package/dist/codex/clipboard-lock.js.map +0 -1
  347. package/dist/codex/clipboard.d.ts +0 -32
  348. package/dist/codex/clipboard.d.ts.map +0 -1
  349. package/dist/codex/clipboard.js +0 -92
  350. package/dist/codex/clipboard.js.map +0 -1
  351. package/dist/codex/config-lock.d.ts +0 -21
  352. package/dist/codex/config-lock.d.ts.map +0 -1
  353. package/dist/codex/config-lock.js +0 -22
  354. package/dist/codex/config-lock.js.map +0 -1
  355. package/dist/codex/config-restore.d.ts +0 -33
  356. package/dist/codex/config-restore.d.ts.map +0 -1
  357. package/dist/codex/config-restore.js +0 -90
  358. package/dist/codex/config-restore.js.map +0 -1
  359. package/dist/codex/config-transaction.d.ts +0 -26
  360. package/dist/codex/config-transaction.d.ts.map +0 -1
  361. package/dist/codex/config-transaction.js +0 -47
  362. package/dist/codex/config-transaction.js.map +0 -1
  363. package/dist/codex/hook-dispatch.d.ts +0 -9
  364. package/dist/codex/hook-dispatch.d.ts.map +0 -1
  365. package/dist/codex/hook-dispatch.js +0 -14
  366. package/dist/codex/hook-dispatch.js.map +0 -1
  367. package/dist/codex/hook-names.d.ts +0 -19
  368. package/dist/codex/hook-names.d.ts.map +0 -1
  369. package/dist/codex/hook-names.js +0 -17
  370. package/dist/codex/hook-names.js.map +0 -1
  371. package/dist/codex/hooks.d.ts +0 -99
  372. package/dist/codex/hooks.d.ts.map +0 -1
  373. package/dist/codex/hooks.js +0 -6
  374. package/dist/codex/hooks.js.map +0 -1
  375. package/dist/codex/initial-ready.d.ts +0 -19
  376. package/dist/codex/initial-ready.d.ts.map +0 -1
  377. package/dist/codex/initial-ready.js +0 -19
  378. package/dist/codex/initial-ready.js.map +0 -1
  379. package/dist/codex/serialize.d.ts +0 -8
  380. package/dist/codex/serialize.d.ts.map +0 -1
  381. package/dist/codex/serialize.js +0 -48
  382. package/dist/codex/serialize.js.map +0 -1
  383. package/dist/codex/session-bridge.d.ts +0 -14
  384. package/dist/codex/session-bridge.d.ts.map +0 -1
  385. package/dist/codex/session-bridge.js +0 -20
  386. package/dist/codex/session-bridge.js.map +0 -1
  387. package/dist/codex/session-build.d.ts +0 -15
  388. package/dist/codex/session-build.d.ts.map +0 -1
  389. package/dist/codex/session-build.js +0 -144
  390. package/dist/codex/session-build.js.map +0 -1
  391. package/dist/codex/session-cleanup.d.ts +0 -12
  392. package/dist/codex/session-cleanup.d.ts.map +0 -1
  393. package/dist/codex/session-cleanup.js +0 -15
  394. package/dist/codex/session-cleanup.js.map +0 -1
  395. package/dist/codex/session-hooks.d.ts +0 -13
  396. package/dist/codex/session-hooks.d.ts.map +0 -1
  397. package/dist/codex/session-hooks.js +0 -54
  398. package/dist/codex/session-hooks.js.map +0 -1
  399. package/dist/codex/session-instance.d.ts +0 -50
  400. package/dist/codex/session-instance.d.ts.map +0 -1
  401. package/dist/codex/session-instance.js +0 -117
  402. package/dist/codex/session-instance.js.map +0 -1
  403. package/dist/codex/session-resume.d.ts +0 -7
  404. package/dist/codex/session-resume.d.ts.map +0 -1
  405. package/dist/codex/session-resume.js +0 -44
  406. package/dist/codex/session-resume.js.map +0 -1
  407. package/dist/codex/session-runtime.d.ts +0 -7
  408. package/dist/codex/session-runtime.d.ts.map +0 -1
  409. package/dist/codex/session-runtime.js +0 -10
  410. package/dist/codex/session-runtime.js.map +0 -1
  411. package/dist/codex/session-transcript.d.ts +0 -30
  412. package/dist/codex/session-transcript.d.ts.map +0 -1
  413. package/dist/codex/session-transcript.js +0 -53
  414. package/dist/codex/session-transcript.js.map +0 -1
  415. package/dist/codex/session-types.d.ts +0 -87
  416. package/dist/codex/session-types.d.ts.map +0 -1
  417. package/dist/codex/session-types.js +0 -6
  418. package/dist/codex/session-types.js.map +0 -1
  419. package/dist/codex/session-warnings.d.ts +0 -27
  420. package/dist/codex/session-warnings.d.ts.map +0 -1
  421. package/dist/codex/session-warnings.js +0 -54
  422. package/dist/codex/session-warnings.js.map +0 -1
  423. package/dist/codex/session.d.ts +0 -16
  424. package/dist/codex/session.d.ts.map +0 -1
  425. package/dist/codex/session.js +0 -61
  426. package/dist/codex/session.js.map +0 -1
  427. package/dist/codex/start-or-resume.d.ts +0 -12
  428. package/dist/codex/start-or-resume.d.ts.map +0 -1
  429. package/dist/codex/start-or-resume.js +0 -31
  430. package/dist/codex/start-or-resume.js.map +0 -1
  431. package/dist/codex/transcript/cursor-io.d.ts +0 -7
  432. package/dist/codex/transcript/cursor-io.d.ts.map +0 -1
  433. package/dist/codex/transcript/cursor-io.js +0 -7
  434. package/dist/codex/transcript/cursor-io.js.map +0 -1
  435. package/dist/codex/transcript/cursor.d.ts +0 -8
  436. package/dist/codex/transcript/cursor.d.ts.map +0 -1
  437. package/dist/codex/transcript/cursor.js +0 -8
  438. package/dist/codex/transcript/cursor.js.map +0 -1
  439. package/dist/codex/transcript/drops.d.ts +0 -9
  440. package/dist/codex/transcript/drops.d.ts.map +0 -1
  441. package/dist/codex/transcript/drops.js +0 -9
  442. package/dist/codex/transcript/drops.js.map +0 -1
  443. package/dist/codex/transcript.d.ts +0 -12
  444. package/dist/codex/transcript.d.ts.map +0 -1
  445. package/dist/codex/transcript.js +0 -10
  446. package/dist/codex/transcript.js.map +0 -1
  447. package/dist/codex/validate-result.d.ts +0 -7
  448. package/dist/codex/validate-result.d.ts.map +0 -1
  449. package/dist/codex/validate-result.js +0 -84
  450. package/dist/codex/validate-result.js.map +0 -1
  451. package/dist/codex/validate.d.ts +0 -11
  452. package/dist/codex/validate.d.ts.map +0 -1
  453. package/dist/codex/validate.js +0 -88
  454. package/dist/codex/validate.js.map +0 -1
  455. package/dist/core/activity-lifecycle.d.ts +0 -21
  456. package/dist/core/activity-lifecycle.d.ts.map +0 -1
  457. package/dist/core/activity-lifecycle.js +0 -45
  458. package/dist/core/activity-lifecycle.js.map +0 -1
  459. package/dist/core/activity-meta.d.ts +0 -13
  460. package/dist/core/activity-meta.d.ts.map +0 -1
  461. package/dist/core/activity-meta.js +0 -67
  462. package/dist/core/activity-meta.js.map +0 -1
  463. package/dist/core/activity-transcript.d.ts +0 -19
  464. package/dist/core/activity-transcript.d.ts.map +0 -1
  465. package/dist/core/activity-transcript.js +0 -60
  466. package/dist/core/activity-transcript.js.map +0 -1
  467. package/dist/core/activity.d.ts +0 -51
  468. package/dist/core/activity.d.ts.map +0 -1
  469. package/dist/core/activity.js +0 -81
  470. package/dist/core/activity.js.map +0 -1
  471. package/dist/core/control-queue-state.d.ts +0 -29
  472. package/dist/core/control-queue-state.d.ts.map +0 -1
  473. package/dist/core/control-queue-state.js +0 -95
  474. package/dist/core/control-queue-state.js.map +0 -1
  475. package/dist/core/control-queue-traits.d.ts +0 -54
  476. package/dist/core/control-queue-traits.d.ts.map +0 -1
  477. package/dist/core/control-queue-traits.js +0 -118
  478. package/dist/core/control-queue-traits.js.map +0 -1
  479. package/dist/core/control-queue-types.d.ts +0 -45
  480. package/dist/core/control-queue-types.d.ts.map +0 -1
  481. package/dist/core/control-queue-types.js +0 -7
  482. package/dist/core/control-queue-types.js.map +0 -1
  483. package/dist/core/control-queue.d.ts +0 -21
  484. package/dist/core/control-queue.d.ts.map +0 -1
  485. package/dist/core/control-queue.js +0 -98
  486. package/dist/core/control-queue.js.map +0 -1
  487. package/dist/core/list-models.d.ts +0 -44
  488. package/dist/core/list-models.d.ts.map +0 -1
  489. package/dist/core/list-models.js +0 -73
  490. package/dist/core/list-models.js.map +0 -1
  491. package/dist/core/model-picker.d.ts +0 -22
  492. package/dist/core/model-picker.d.ts.map +0 -1
  493. package/dist/core/model-picker.js +0 -58
  494. package/dist/core/model-picker.js.map +0 -1
  495. package/dist/core/model-rows.d.ts +0 -21
  496. package/dist/core/model-rows.d.ts.map +0 -1
  497. package/dist/core/model-rows.js +0 -57
  498. package/dist/core/model-rows.js.map +0 -1
  499. package/dist/core/probe-state.d.ts +0 -21
  500. package/dist/core/probe-state.d.ts.map +0 -1
  501. package/dist/core/probe-state.js +0 -39
  502. package/dist/core/probe-state.js.map +0 -1
  503. package/dist/core/session-input-abort.d.ts +0 -10
  504. package/dist/core/session-input-abort.d.ts.map +0 -1
  505. package/dist/core/session-input-abort.js +0 -44
  506. package/dist/core/session-input-abort.js.map +0 -1
  507. package/dist/core/session-input.d.ts +0 -37
  508. package/dist/core/session-input.d.ts.map +0 -1
  509. package/dist/core/session-input.js +0 -154
  510. package/dist/core/session-input.js.map +0 -1
  511. package/dist/core/session-warnings.d.ts +0 -20
  512. package/dist/core/session-warnings.d.ts.map +0 -1
  513. package/dist/core/session-warnings.js +0 -32
  514. package/dist/core/session-warnings.js.map +0 -1
  515. package/dist/core/simple/loop-controls.d.ts +0 -7
  516. package/dist/core/simple/loop-controls.d.ts.map +0 -1
  517. package/dist/core/simple/loop-controls.js +0 -7
  518. package/dist/core/simple/loop-controls.js.map +0 -1
  519. package/dist/core/startup-automation.d.ts +0 -54
  520. package/dist/core/startup-automation.d.ts.map +0 -1
  521. package/dist/core/startup-automation.js +0 -40
  522. package/dist/core/startup-automation.js.map +0 -1
  523. package/dist/core/startup-frame.d.ts +0 -39
  524. package/dist/core/startup-frame.d.ts.map +0 -1
  525. package/dist/core/startup-frame.js +0 -60
  526. package/dist/core/startup-frame.js.map +0 -1
  527. package/dist/core/startup-write.d.ts +0 -47
  528. package/dist/core/startup-write.d.ts.map +0 -1
  529. package/dist/core/startup-write.js +0 -73
  530. package/dist/core/startup-write.js.map +0 -1
  531. package/dist/core/trust-blocking.d.ts +0 -22
  532. package/dist/core/trust-blocking.d.ts.map +0 -1
  533. package/dist/core/trust-blocking.js +0 -38
  534. package/dist/core/trust-blocking.js.map +0 -1
  535. package/dist/core/trust-prompts.d.ts +0 -135
  536. package/dist/core/trust-prompts.d.ts.map +0 -1
  537. package/dist/core/trust-prompts.js.map +0 -1
  538. package/dist/core/trust-responder.d.ts +0 -48
  539. package/dist/core/trust-responder.d.ts.map +0 -1
  540. package/dist/core/trust-responder.js +0 -119
  541. package/dist/core/trust-responder.js.map +0 -1
  542. package/dist/core/tui-screen.d.ts +0 -21
  543. package/dist/core/tui-screen.d.ts.map +0 -1
  544. package/dist/core/tui-screen.js +0 -56
  545. package/dist/core/tui-screen.js.map +0 -1
  546. package/dist/core/update-warning.d.ts +0 -25
  547. package/dist/core/update-warning.d.ts.map +0 -1
  548. package/dist/core/update-warning.js +0 -33
  549. package/dist/core/update-warning.js.map +0 -1
  550. package/dist/core/warning-lifecycle.d.ts +0 -23
  551. package/dist/core/warning-lifecycle.d.ts.map +0 -1
  552. package/dist/core/warning-lifecycle.js +0 -6
  553. package/dist/core/warning-lifecycle.js.map +0 -1
  554. package/dist/core/warning-reasons.d.ts +0 -62
  555. package/dist/core/warning-reasons.d.ts.map +0 -1
  556. package/dist/core/warning-reasons.js +0 -121
  557. package/dist/core/warning-reasons.js.map +0 -1
  558. package/dist/core/warnings.d.ts +0 -145
  559. package/dist/core/warnings.d.ts.map +0 -1
  560. package/dist/core/warnings.js +0 -12
  561. package/dist/core/warnings.js.map +0 -1
  562. package/dist/runtime/cleanup-latch.d.ts +0 -27
  563. package/dist/runtime/cleanup-latch.d.ts.map +0 -1
  564. package/dist/runtime/cleanup-latch.js +0 -43
  565. package/dist/runtime/cleanup-latch.js.map +0 -1
  566. package/dist/runtime/initial-ready-advance.d.ts +0 -22
  567. package/dist/runtime/initial-ready-advance.d.ts.map +0 -1
  568. package/dist/runtime/initial-ready-advance.js +0 -39
  569. package/dist/runtime/initial-ready-advance.js.map +0 -1
  570. package/dist/runtime/initial-ready-fallback.d.ts +0 -12
  571. package/dist/runtime/initial-ready-fallback.d.ts.map +0 -1
  572. package/dist/runtime/initial-ready-fallback.js +0 -20
  573. package/dist/runtime/initial-ready-fallback.js.map +0 -1
  574. package/dist/runtime/initial-ready.d.ts +0 -49
  575. package/dist/runtime/initial-ready.d.ts.map +0 -1
  576. package/dist/runtime/initial-ready.js +0 -81
  577. package/dist/runtime/initial-ready.js.map +0 -1
  578. package/dist/runtime/reap-tree.d.ts +0 -62
  579. package/dist/runtime/reap-tree.d.ts.map +0 -1
  580. package/dist/runtime/reap-tree.js +0 -108
  581. package/dist/runtime/reap-tree.js.map +0 -1
  582. package/dist/runtime/session-base-types.d.ts +0 -36
  583. package/dist/runtime/session-base-types.d.ts.map +0 -1
  584. package/dist/runtime/session-base-types.js +0 -14
  585. package/dist/runtime/session-base-types.js.map +0 -1
  586. package/dist/runtime/session-base.d.ts +0 -48
  587. package/dist/runtime/session-base.d.ts.map +0 -1
  588. package/dist/runtime/session-base.js +0 -76
  589. package/dist/runtime/session-base.js.map +0 -1
  590. package/dist/runtime/session-commands.d.ts +0 -43
  591. package/dist/runtime/session-commands.d.ts.map +0 -1
  592. package/dist/runtime/session-commands.js +0 -52
  593. package/dist/runtime/session-commands.js.map +0 -1
  594. package/dist/runtime/session-exit.d.ts +0 -16
  595. package/dist/runtime/session-exit.d.ts.map +0 -1
  596. package/dist/runtime/session-exit.js +0 -32
  597. package/dist/runtime/session-exit.js.map +0 -1
  598. package/dist/runtime/session-image-attach.d.ts +0 -45
  599. package/dist/runtime/session-image-attach.d.ts.map +0 -1
  600. package/dist/runtime/session-image-attach.js +0 -82
  601. package/dist/runtime/session-image-attach.js.map +0 -1
  602. package/dist/runtime/session-lifecycle.d.ts +0 -61
  603. package/dist/runtime/session-lifecycle.d.ts.map +0 -1
  604. package/dist/runtime/session-lifecycle.js +0 -164
  605. package/dist/runtime/session-lifecycle.js.map +0 -1
  606. package/dist/runtime/session-loops.d.ts +0 -32
  607. package/dist/runtime/session-loops.d.ts.map +0 -1
  608. package/dist/runtime/session-loops.js +0 -62
  609. package/dist/runtime/session-loops.js.map +0 -1
  610. package/dist/runtime/session-readiness.d.ts +0 -18
  611. package/dist/runtime/session-readiness.d.ts.map +0 -1
  612. package/dist/runtime/session-readiness.js +0 -22
  613. package/dist/runtime/session-readiness.js.map +0 -1
  614. package/dist/runtime/session-reap.d.ts +0 -28
  615. package/dist/runtime/session-reap.d.ts.map +0 -1
  616. package/dist/runtime/session-reap.js +0 -51
  617. package/dist/runtime/session-reap.js.map +0 -1
  618. package/dist/runtime/session-resize.d.ts +0 -20
  619. package/dist/runtime/session-resize.d.ts.map +0 -1
  620. package/dist/runtime/session-resize.js +0 -26
  621. package/dist/runtime/session-resize.js.map +0 -1
  622. package/dist/runtime/session-shutdown-binding.d.ts +0 -30
  623. package/dist/runtime/session-shutdown-binding.d.ts.map +0 -1
  624. package/dist/runtime/session-shutdown-binding.js +0 -37
  625. package/dist/runtime/session-shutdown-binding.js.map +0 -1
  626. package/dist/runtime/session-shutdown.d.ts +0 -60
  627. package/dist/runtime/session-shutdown.d.ts.map +0 -1
  628. package/dist/runtime/session-shutdown.js +0 -140
  629. package/dist/runtime/session-shutdown.js.map +0 -1
  630. package/dist/runtime/session-status-wiring.d.ts +0 -38
  631. package/dist/runtime/session-status-wiring.d.ts.map +0 -1
  632. package/dist/runtime/session-status-wiring.js +0 -41
  633. package/dist/runtime/session-status-wiring.js.map +0 -1
  634. package/dist/runtime/session-status.d.ts +0 -7
  635. package/dist/runtime/session-status.d.ts.map +0 -1
  636. package/dist/runtime/session-status.js +0 -22
  637. package/dist/runtime/session-status.js.map +0 -1
  638. package/dist/runtime/shutdown-coordinator.d.ts +0 -57
  639. package/dist/runtime/shutdown-coordinator.d.ts.map +0 -1
  640. package/dist/runtime/shutdown-coordinator.js +0 -77
  641. package/dist/runtime/shutdown-coordinator.js.map +0 -1
  642. package/dist/runtime/startup-buffer.d.ts +0 -33
  643. package/dist/runtime/startup-buffer.d.ts.map +0 -1
  644. package/dist/runtime/startup-buffer.js +0 -53
  645. package/dist/runtime/startup-buffer.js.map +0 -1
  646. package/dist/runtime/startup-cleanup.d.ts +0 -43
  647. package/dist/runtime/startup-cleanup.d.ts.map +0 -1
  648. package/dist/runtime/startup-cleanup.js +0 -89
  649. package/dist/runtime/startup-cleanup.js.map +0 -1
  650. package/dist/runtime/startup.d.ts +0 -17
  651. package/dist/runtime/startup.d.ts.map +0 -1
  652. package/dist/runtime/startup.js +0 -47
  653. package/dist/runtime/startup.js.map +0 -1
  654. package/dist/runtime/status-emit.d.ts +0 -14
  655. package/dist/runtime/status-emit.d.ts.map +0 -1
  656. package/dist/runtime/status-emit.js +0 -15
  657. package/dist/runtime/status-emit.js.map +0 -1
  658. package/dist/runtime/teardown.d.ts +0 -15
  659. package/dist/runtime/teardown.d.ts.map +0 -1
  660. package/dist/runtime/teardown.js +0 -40
  661. package/dist/runtime/teardown.js.map +0 -1
  662. package/dist/runtime/terminate.d.ts +0 -22
  663. package/dist/runtime/terminate.d.ts.map +0 -1
  664. package/dist/runtime/terminate.js +0 -129
  665. package/dist/runtime/terminate.js.map +0 -1
  666. package/dist/runtime/update-lock.d.ts +0 -19
  667. package/dist/runtime/update-lock.d.ts.map +0 -1
  668. package/dist/runtime/update-lock.js +0 -183
  669. package/dist/runtime/update-lock.js.map +0 -1
  670. package/dist/runtime/update-once.d.ts +0 -40
  671. package/dist/runtime/update-once.d.ts.map +0 -1
  672. package/dist/runtime/update-once.js +0 -88
  673. package/dist/runtime/update-once.js.map +0 -1
@@ -1,147 +0,0 @@
1
- /** Builds a live ClaudeSessionApi from a record + runtime. Implements PRD §5, §6, §8, §9. */
2
- import { defaultTerminalSize } from "../core/defaults.js";
3
- import { causeDetails, elwoodError } from "../core/errors.js";
4
- import { observeRenderedFrame } from "../core/rendered-observers.js";
5
- import { createStartupWarningGate, deliverFrameWarnings } from "../core/startup-frame.js";
6
- import { emitSettledStartupOutcomes } from "../core/startup-write.js";
7
- import { TerminalReplayBuffer } from "../core/terminal-replay.js";
8
- import { TypedEmitter } from "../events/emitter.js";
9
- import { loadRuntimeLoopDefinitions as loadLoops } from "../runtime/loop-restore.js";
10
- import { createReadinessGate } from "../runtime/session-readiness.js";
11
- import { assertStartupThenRelease, createStartupBuffer } from "../runtime/startup-buffer.js";
12
- import { cleanupStartupResources, guardStartupRegion } from "../runtime/startup-cleanup.js";
13
- import { secureMkdir } from "../state/files.js";
14
- import { writeSessionRecord } from "../state/store.js";
15
- import { attachPtyTerminal } from "../terminal/headless.js";
16
- import { preflightEvent } from "./preflight.js";
17
- import { currentClaudeHookBridgeFactory } from "./session-bridge.js";
18
- import { buildClaudeHookErrorHandler, buildClaudeHookHandler } from "./session-hook-handler.js";
19
- import { ClaudeSessionImpl } from "./session-instance.js";
20
- import { buildClaudeObservers, handleClaudeExit, registerInitialHooks, spawnClaudePty, writeRuntimeFiles, } from "./session-runtime.js";
21
- import { createTranscriptWatcher, observeTranscript } from "./session-transcript.js";
22
- import { ClaudeStartupPromptResponder } from "./startup-prompts.js";
23
- import { CLAUDE_STARTUP_MIN_COLS } from "./startup-size.js";
24
- export async function buildClaudeSession(input) {
25
- const { record, stateDir, runtime, options, resumed, preflightWarning } = input;
26
- secureMkdir(runtime.sessionDir);
27
- writeSessionRecord(record, runtime.sessionDir);
28
- const loopDefinitions = resumed ? loadLoops(stateDir, record.elwoodSessionId) : [];
29
- writeRuntimeFiles(runtime, options);
30
- const emitter = new TypedEmitter();
31
- registerInitialHooks(emitter, options.hooks);
32
- let session;
33
- // ALL startup-region warnings — startup-prompt (frame path) AND transcript
34
- // drop/read-error diagnostics — route through ONE gate that buffers anything emitted
35
- // before startClaude resolves and flushes it on a deferred macrotask after return,
36
- // so every source stays observable without late-subscriber replay (C-API-14).
37
- const warnGate = createStartupWarningGate({
38
- emitWarnings: (w) => deliverFrameWarnings(session, w),
39
- });
40
- const wired = createTranscriptWatcher(record.elwoodSessionId, emitter, () => warnGate);
41
- const { watcher: transcriptWatcher, flushPendingWarnings, finishSafely } = wired;
42
- // Initial readiness is hook-backed (`InstructionsLoaded` fires `mark`); the first
43
- // frame arms a starvation deadline so a missing/failed hook cannot starve the queue,
44
- // and on resume the first composer frame also marks ready (PRD §5.3, C-API-28).
45
- const autotrust = options.autotrust ?? false;
46
- // Observers are built BEFORE the readiness gate so its callback never closes
47
- // over a binding declared later in this function.
48
- const observers = buildClaudeObservers(record.elwoodSessionId, autotrust, emitter);
49
- const turnWatcher = observers.turn;
50
- const { ready, observeReadinessFrame } = createReadinessGate(() => {
51
- turnWatcher.arm(resumed); // resume arms in settling mode (no phantom replay turn)
52
- // completeInitialReady advances readiness in a finally, isolating restore/warning
53
- // failures internally, so its promise never rejects (not awaited).
54
- void session?.completeInitialReady();
55
- }, resumed);
56
- const bridge = currentClaudeHookBridgeFactory()(runtime.socketPath, runtime.bridgeToken, record.elwoodSessionId, buildClaudeHookHandler({
57
- record,
58
- options,
59
- emitter,
60
- transcriptWatcher,
61
- ready,
62
- getSession: () => session,
63
- getTurnWatcher: () => turnWatcher,
64
- observeHookTranscript: (event) => observeTranscript(transcriptWatcher, event),
65
- }), buildClaudeHookErrorHandler(record, emitter));
66
- try {
67
- await bridge.start();
68
- }
69
- catch (error) {
70
- // Best-effort shut down a partially-started bridge so its listener/socket is not
71
- // leaked; contained so the original bridge-start error is the one that rejects.
72
- await bridge.stop().catch(() => undefined);
73
- throw elwoodError("hook_bridge_failed", "Could not start Elwood hook bridge.", {
74
- ...causeDetails(error),
75
- socketPath: runtime.socketPath,
76
- });
77
- }
78
- const requestedSize = options.initialSize ?? defaultTerminalSize;
79
- const startupSize = {
80
- ...requestedSize,
81
- cols: Math.max(requestedSize.cols, CLAUDE_STARTUP_MIN_COLS),
82
- };
83
- let pty;
84
- try {
85
- pty = spawnClaudePty(record, runtime.settingsPath, { ...options, initialSize: startupSize });
86
- }
87
- catch (error) {
88
- await cleanupStartupResources({ bridge });
89
- throw error;
90
- }
91
- const startupOutput = createStartupBuffer();
92
- let startupExit;
93
- const terminalReplay = new TerminalReplayBuffer(record.elwoodSessionId);
94
- terminalReplay.captureStartupAttention(emitter);
95
- const promptResponder = new ClaudeStartupPromptResponder(autotrust);
96
- let latestRenderedText = "";
97
- const terminal = attachPtyTerminal(startupSize, pty, (data, renderedTerminal) => {
98
- startupOutput.push(data);
99
- terminalReplay.push(data);
100
- latestRenderedText = renderedTerminal.snapshot().text;
101
- const frame = { text: latestRenderedText, title: renderedTerminal.title };
102
- // The write RETURNS its `sendInput` completion (no longer swallowed): the
103
- // responder settles the prompt and its `startup_prompt` activity only after
104
- // the write fulfills, and a rejected write stays retryable + warns (C-CLAUDE-16).
105
- const autos = promptResponder.handle(frame.text, (input) => renderedTerminal.sendInput(input), () => latestRenderedText);
106
- // Warning delivery is CONTAINED on the frame path: a throwing `warning`/`activity`
107
- // listener must never skip readiness, login detection, or terminal:data (§5.7).
108
- emitSettledStartupOutcomes(emitter, "claude", record.elwoodSessionId, autos, {
109
- emitWarnings: (warnings) => warnGate.emitWarnings(warnings),
110
- });
111
- // Hook-backed readiness + deadline fallback; on resume the first composer also marks ready (C-API-28).
112
- ready.armDeadline();
113
- const reading = observeRenderedFrame(observers, frame, session);
114
- observeReadinessFrame(reading.facts); // blocking gate + resume-composer mark
115
- // Surface a mid-session login-expiry banner once (C-CLAUDE-18); no-op pre-readiness.
116
- session?.noteLoginExpiry(frame.text);
117
- emitter.emit("terminal:data", { elwoodSessionId: record.elwoodSessionId, data });
118
- });
119
- session = new ClaudeSessionImpl(record, stateDir, runtime, pty, terminal, bridge, emitter, terminalReplay, requestedSize, loopDefinitions);
120
- const active = session;
121
- const beforeCleanup = () => active.pauseLoopsForStartupCleanup(ready.cancel);
122
- // Guard every live-resource step after session creation: a failure in any of them
123
- // tears down the now-live PTY, bridge, terminal, and watcher first (PRD §9.1, §9.4).
124
- await guardStartupRegion(async () => {
125
- active.startLoops();
126
- flushPendingWarnings(); // sink now exists: flush any early-buffered diagnostic (§5.7)
127
- // A hook or deadline that fired before the session existed submitted nothing
128
- // (evidence is `session?.`-guarded); replay it now the session can consume it.
129
- ready.replay();
130
- pty.onExit((exit) => {
131
- startupExit = exit;
132
- ready.cancel(); // No queued message can release after exit; drop the pending deadline.
133
- handleClaudeExit(emitter, record.elwoodSessionId, exit, finishSafely, () => active.submitExit());
134
- });
135
- // Release the startup buffer once the check settles (§9.4).
136
- await assertStartupThenRelease("claude", startupOutput, () => startupExit);
137
- active.submitEvidence("startup_usable");
138
- }, { before: beforeCleanup, pty, bridge, terminal, after: () => transcriptWatcher.stop() });
139
- // Open buffered startup warnings after return so synchronous subscribers see them (C-API-14).
140
- if (preflightWarning !== undefined) {
141
- warnGate.emitWarnings([preflightEvent(record.elwoodSessionId, preflightWarning)]);
142
- }
143
- warnGate.openAfterReturn();
144
- terminalReplay.releaseStartupAttentionAfterReturn();
145
- return session;
146
- }
147
- //# sourceMappingURL=session-build.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-build.js","sourceRoot":"","sources":["../../src/claude/session-build.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- /**
2
- * The Claude hook-bridge message and error handlers that `session-build.ts` hands
3
- * to the bridge factory. Implements PRD §5.3, §5.4, §6, and §8:
4
- * normalize each hook, emit its `hook`/`activity` events, run the caller's hook
5
- * with a bounded timeout, and drive readiness/turn state — initial readiness on
6
- * `InstructionsLoaded` (C-API-28), turn-end on an unblocked `Stop` (C-CLAUDE-15).
7
- */
8
- import type { BridgeProcessResult } from "../bridge/types.ts";
9
- import type { TurnStateWatcher } from "../core/turn-state.ts";
10
- import type { ClaudeEventMap, HookErrorEvent, StartClaudeOptions } from "../core/types.ts";
11
- import type { TypedEmitter } from "../events/emitter.ts";
12
- import type { InitialReady } from "../runtime/initial-ready.ts";
13
- import type { SessionRecord } from "../state/store.ts";
14
- import type { ClaudeHookEvent } from "./hooks.ts";
15
- import type { ClaudeSessionImpl } from "./session-instance.ts";
16
- /** The live pieces the Claude hook handler drives; `session`/`turnWatcher` are read
17
- * lazily because both are assigned after the bridge is constructed. */
18
- export type ClaudeHookHandlerDeps = {
19
- readonly record: SessionRecord;
20
- readonly options: StartClaudeOptions;
21
- readonly emitter: TypedEmitter<ClaudeEventMap>;
22
- readonly transcriptWatcher: {
23
- readonly scan: () => void;
24
- };
25
- readonly ready: InitialReady;
26
- readonly getSession: () => ClaudeSessionImpl | undefined;
27
- readonly getTurnWatcher: () => TurnStateWatcher;
28
- readonly observeHookTranscript: (event: ClaudeHookEvent) => void;
29
- };
30
- /** Builds the async hook-message handler passed to the Claude hook bridge factory. */
31
- export declare function buildClaudeHookHandler(deps: ClaudeHookHandlerDeps): (input: unknown) => Promise<BridgeProcessResult>;
32
- /** Builds the hook-error handler passed to the Claude hook bridge factory. */
33
- export declare function buildClaudeHookErrorHandler(record: SessionRecord, emitter: TypedEmitter<ClaudeEventMap>): (event: Omit<HookErrorEvent, "elwoodSessionId">) => void;
34
- //# sourceMappingURL=session-hook-handler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-hook-handler.d.ts","sourceRoot":"","sources":["../../src/claude/session-hook-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D;uEACuE;AACvE,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,iBAAiB,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,cAAc,EAAE,MAAM,gBAAgB,CAAC;IAChD,QAAQ,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CAClE,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,qBAAqB,GAC1B,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAiClD;AAED,8EAA8E;AAC9E,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,GACpC,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,KAAK,IAAI,CAM1D"}
@@ -1,42 +0,0 @@
1
- /**
2
- * The Claude hook-bridge message and error handlers that `session-build.ts` hands
3
- * to the bridge factory. Implements PRD §5.3, §5.4, §6, and §8:
4
- * normalize each hook, emit its `hook`/`activity` events, run the caller's hook
5
- * with a bounded timeout, and drive readiness/turn state — initial readiness on
6
- * `InstructionsLoaded` (C-API-28), turn-end on an unblocked `Stop` (C-CLAUDE-15).
7
- */
8
- import * as activity from "../core/activity.js";
9
- import { isBlock, requestHook } from "./hook-dispatch.js";
10
- import { normalizeClaudeHookEvent } from "./normalize.js";
11
- import { serializeHookResult } from "./serialize.js";
12
- /** Builds the async hook-message handler passed to the Claude hook bridge factory. */
13
- export function buildClaudeHookHandler(deps) {
14
- const { record, options, emitter, transcriptWatcher, ready } = deps;
15
- return async (input) => {
16
- const event = normalizeClaudeHookEvent(input);
17
- if (event.hook_event_name === "SessionStart")
18
- deps.getSession()?.rememberClaudeSessionId(event.session_id);
19
- deps.observeHookTranscript(event);
20
- emitter.emit("hook", event);
21
- emitter.emit("activity", activity.activityFromClaudeHook(record.elwoodSessionId, event));
22
- const outcome = await requestHook(emitter, event, options.hookTimeoutMs ?? 25_000, record.elwoodSessionId);
23
- emitter.emit("activity", activity.activityFromHookResult("claude", record.elwoodSessionId, event.hook_event_name, outcome.result, outcome.failedOpen));
24
- if (event.hook_event_name === "InstructionsLoaded")
25
- ready.mark();
26
- if (event.hook_event_name === "Stop" && !isBlock(outcome.result)) {
27
- transcriptWatcher.scan(); // Committed turn is on disk; read it now (C-CLAUDE-15).
28
- deps.getTurnWatcher().arm();
29
- deps.getSession()?.submitEvidence("hook_turn_ended");
30
- }
31
- return serializeHookResult(event.hook_event_name, outcome.result);
32
- };
33
- }
34
- /** Builds the hook-error handler passed to the Claude hook bridge factory. */
35
- export function buildClaudeHookErrorHandler(record, emitter) {
36
- return (event) => {
37
- const hookError = { elwoodSessionId: record.elwoodSessionId, ...event };
38
- emitter.emit("hookError", hookError);
39
- emitter.emit("activity", activity.activityFromHookError("claude", hookError));
40
- };
41
- }
42
- //# sourceMappingURL=session-hook-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-hook-handler.js","sourceRoot":"","sources":["../../src/claude/session-hook-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAMhD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAgBrD,sFAAsF;AACtF,MAAM,UAAU,sBAAsB,CACpC,IAA2B;IAE3B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACpE,OAAO,KAAK,EAAE,KAAc,EAAgC,EAAE;QAC5D,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,eAAe,KAAK,cAAc;YAC1C,IAAI,CAAC,UAAU,EAAE,EAAE,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;QACzF,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,OAAO,EACP,KAAK,EACL,OAAO,CAAC,aAAa,IAAI,MAAM,EAC/B,MAAM,CAAC,eAAe,CACvB,CAAC;QACF,OAAO,CAAC,IAAI,CACV,UAAU,EACV,QAAQ,CAAC,sBAAsB,CAC7B,QAAQ,EACR,MAAM,CAAC,eAAe,EACtB,KAAK,CAAC,eAAe,EACrB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,UAAU,CACnB,CACF,CAAC;QACF,IAAI,KAAK,CAAC,eAAe,KAAK,oBAAoB;YAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACjE,IAAI,KAAK,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,wDAAwD;YAClF,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,2BAA2B,CACzC,MAAqB,EACrB,OAAqC;IAErC,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,SAAS,GAAG,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,KAAK,EAAE,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC;AACJ,CAAC"}
@@ -1,42 +0,0 @@
1
- /** In-memory Claude session object exposed to callers. Implements PRD §4.1, §5, §6, §7, §8. */
2
- import type { ElwoodActivityEvent } from "../core/activity.ts";
3
- import type { TerminalReplayBuffer } from "../core/terminal-replay.ts";
4
- import type { ClaudeEventMap, ElwoodEventHandler, ElwoodEventName, ElwoodSessionStatus, ElwoodWarningEvent, TerminalSize } from "../core/types.ts";
5
- import type { TypedEmitter } from "../events/emitter.ts";
6
- import type { PtyProcess } from "../pty/types.ts";
7
- import { AgentSessionBase } from "../runtime/session-base.ts";
8
- import type { PersistedLoopDefinition } from "../state/loop-store.ts";
9
- import type { SessionRuntime } from "../state/runtime-paths.ts";
10
- import { type SessionRecord } from "../state/store.ts";
11
- import type { ElwoodTerminal } from "../terminal/headless.ts";
12
- import type { ClaudeLoginOptions } from "./login/types.ts";
13
- import type { ClaudeSessionApi } from "./session-interface.ts";
14
- export type HookBridge = {
15
- readonly start: () => Promise<void>;
16
- readonly stop: () => Promise<void>;
17
- };
18
- export declare class ClaudeSessionImpl extends AgentSessionBase implements ClaudeSessionApi {
19
- protected readonly picker: import("../core/model-picker.ts").ModelPickerSpec;
20
- private readonly bridge;
21
- private readonly emitter;
22
- private requestedSize;
23
- private awaitingInitialReady;
24
- private initialReadyDone;
25
- private readonly loginExpiredWatcher;
26
- constructor(record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, terminal: ElwoodTerminal, bridge: HookBridge, emitter: TypedEmitter<ClaudeEventMap>, terminalReplay: TerminalReplayBuffer, requestedSize: TerminalSize, loopDefinitions: readonly PersistedLoopDefinition[]);
27
- on<E extends ElwoodEventName>(event: E, handler: ElwoodEventHandler<E>): import("../index.ts").Unsubscribe;
28
- off<E extends ElwoodEventName>(event: E, handler: ElwoodEventHandler<E>): void;
29
- waitForStatus(match: (status: ElwoodSessionStatus) => boolean, timeoutMs?: number): Promise<"starting" | "running" | "ready" | "blocked" | "exited" | "stopped" | "killed" | "torn_down">;
30
- waitForActivity(match: (event: ElwoodActivityEvent) => boolean, timeoutMs?: number): Promise<ElwoodActivityEvent>;
31
- protected stagedPaste(screen: string): boolean;
32
- protected attachImages: (paths: readonly string[], signal: AbortSignal) => Promise<void>;
33
- resize(size: TerminalSize): Promise<void>;
34
- completeInitialReady(): Promise<void>;
35
- private restoreRequestedSize;
36
- rememberClaudeSessionId(sessionId: string): void;
37
- emitWarnings(warnings: readonly ElwoodWarningEvent[]): void;
38
- noteLoginExpiry(screenText: string): void;
39
- login(options: ClaudeLoginOptions): Promise<void>;
40
- protected stopRuntime(): Promise<void>;
41
- }
42
- //# sourceMappingURL=session-instance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-instance.d.ts","sourceRoot":"","sources":["../../src/claude/session-instance.ts"],"names":[],"mappings":"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"}
@@ -1,146 +0,0 @@
1
- import { sessionWaitForActivity, sessionWaitForStatus } from "../core/session-wait.js";
2
- import { emitSessionWarnings } from "../core/session-warnings.js";
3
- import { terminalStatuses } from "../core/status-categories.js";
4
- import { AgentSessionBase } from "../runtime/session-base.js";
5
- import { runCleanupSteps } from "../runtime/teardown.js";
6
- import { updateSessionResumeId } from "../state/store.js";
7
- import { attachClaudeImages } from "./attach-images.js";
8
- import { runSessionLogin } from "./login/session-login.js";
9
- import { LoginExpiredWatcher, loginExpiredWarning } from "./login-expired.js";
10
- import { claudeModelPicker } from "./model-picker.js";
11
- import { resizeRestoreFailedWarning } from "./resize-restore.js";
12
- import { CLAUDE_STARTUP_MIN_COLS } from "./startup-size.js";
13
- export class ClaudeSessionImpl extends AgentSessionBase {
14
- picker = claudeModelPicker;
15
- bridge;
16
- emitter;
17
- requestedSize;
18
- // Only a session requested BELOW the 100-column startup floor bootstraps wide and
19
- // defers its restore to readiness (C-API-36); a 100+ session resizes immediately.
20
- awaitingInitialReady;
21
- // Whether the one-shot initial-ready transition has already run (idempotent).
22
- initialReadyDone = false;
23
- // Edge-detects a mid-session login-expiry banner so it warns once per occurrence.
24
- loginExpiredWatcher = new LoginExpiredWatcher();
25
- constructor(record, stateDir, runtime, pty, terminal, bridge, emitter, terminalReplay, requestedSize, loopDefinitions) {
26
- super("claude", record, stateDir, runtime, pty, terminal, emitter, terminalReplay, loopDefinitions);
27
- this.bridge = bridge;
28
- this.emitter = emitter;
29
- this.requestedSize = requestedSize;
30
- this.awaitingInitialReady = requestedSize.cols < CLAUDE_STARTUP_MIN_COLS;
31
- }
32
- on(event, handler) {
33
- // REGISTER before replaying buffered `terminal:data`: a throwing replay handler must still be
34
- // subscribed for FUTURE data (otherwise startup telemetry silently disappears). Replay is of
35
- // already-buffered past data and runs synchronously, so no live event interleaves.
36
- const unsubscribe = this.emitter.on(event, handler);
37
- this.replayFor(event, handler);
38
- return unsubscribe;
39
- }
40
- off(event, handler) {
41
- this.emitter.off(event, handler);
42
- }
43
- waitForStatus(match, timeoutMs) {
44
- return sessionWaitForStatus(this, match, timeoutMs);
45
- }
46
- waitForActivity(match, timeoutMs) {
47
- return sessionWaitForActivity(this, match, timeoutMs);
48
- }
49
- // Captured staged chip: "❯ [Pasted text #1 +15 lines]" (claude 2.1.201).
50
- stagedPaste(screen) {
51
- return /\[Pasted text/.test(screen);
52
- }
53
- // Claude reads a pasted absolute path; the paste is held while a dialog shows (C-API-45/37).
54
- attachImages = (paths, signal) => attachClaudeImages(this.terminal, paths, signal, () => this.status === "blocked");
55
- // A narrow session holds the PHYSICAL resize until readiness; it just records the
56
- // requested geometry now and restores it at the initial-ready transition. A wide
57
- // session (100+ cols) never deferred; it resizes now.
58
- resize(size) {
59
- if (!(this.awaitingInitialReady && !terminalStatuses.has(this.status))) {
60
- this.requestedSize = size;
61
- return super.resize(size);
62
- }
63
- // Non-terminal here: capture the requested geometry to restore at readiness
64
- // without disturbing the live bootstrap width (C-API-25/39).
65
- this.requestedSize = size;
66
- return Promise.resolve();
67
- }
68
- // Restore deferred geometry (narrow only) then advance readiness — which MUST run even
69
- // if the restore/warning throws, or queued messages starve (C-API-39/36). Idempotent.
70
- completeInitialReady() {
71
- if (this.initialReadyDone)
72
- return Promise.resolve();
73
- this.initialReadyDone = true;
74
- const wasNarrowBootstrap = this.awaitingInitialReady;
75
- this.awaitingInitialReady = false;
76
- try {
77
- if (wasNarrowBootstrap)
78
- this.restoreRequestedSize();
79
- }
80
- finally {
81
- this.advanceInitialReady();
82
- }
83
- return Promise.resolve();
84
- }
85
- // Apply the deferred physical geometry, so only a genuine native resize failure
86
- // reports as staying at bootstrap width (C-API-39).
87
- restoreRequestedSize() {
88
- try {
89
- this.restoreHeldSize(this.requestedSize);
90
- }
91
- catch (error) {
92
- // Isolated so a throwing warning/activity listener cannot skip readiness.
93
- try {
94
- this.emitWarnings([
95
- resizeRestoreFailedWarning(this.elwoodSessionId, this.requestedSize, error),
96
- ]);
97
- }
98
- catch {
99
- // A warning-sink/listener failure must never block readiness release.
100
- }
101
- }
102
- }
103
- rememberClaudeSessionId(sessionId) {
104
- if (this.record.claude.resumeId)
105
- return;
106
- this.persist(updateSessionResumeId(this.record, "claude", sessionId));
107
- }
108
- emitWarnings(warnings) {
109
- emitSessionWarnings(warnings, {
110
- warning: (event) => this.emitter.emit("warning", event),
111
- activity: (event) => this.emitter.emit("activity", event),
112
- });
113
- }
114
- // Surface a mid-session login-expiry banner once (C-CLAUDE-18): gated on prior
115
- // readiness (startup handles it fatally), edge-detected. FULLY non-throwing — runs
116
- // in the frame callback's detached continuation, so a listener failure can't become
117
- // an unhandled rejection or skip `terminal:data`. COMMIT the edge BEFORE the live
118
- // fan-out: warnings are live-only (fire exactly once), and emitWarnings delivers to
119
- // every listener before rethrowing a listener error — committing after would treat
120
- // a throwing listener as non-delivery and re-fire the SAME incident to the listeners
121
- // that already received it (a duplicate). A throwing listener is contained here.
122
- noteLoginExpiry(screenText) {
123
- if (!(this.everReady && this.loginExpiredWatcher.peek(screenText)))
124
- return;
125
- this.loginExpiredWatcher.commit();
126
- try {
127
- this.emitWarnings([loginExpiredWarning(this.elwoodSessionId)]);
128
- }
129
- catch {
130
- // Live-only: a throwing listener is contained and the warning is dropped, not
131
- // re-fired — the edge is already committed so a persistent banner warns once.
132
- }
133
- }
134
- // Drive `/login` re-auth as an exclusive, abort-aware queue transaction (C-API-43).
135
- login(options) {
136
- const onReady = (handler) => this.emitter.on("status", (e) => e.status === "ready" && handler());
137
- const blocked = () => this.status === "blocked";
138
- const deps = { controlQueue: this.controlQueue, terminal: this.terminal, blocked, onReady };
139
- return this.inSession(() => runSessionLogin(deps, options));
140
- }
141
- stopRuntime() {
142
- // Dispose the terminal even if the bridge stop rejects — no first-failure leak (§9.4).
143
- return runCleanupSteps([() => this.bridge.stop(), () => this.terminal.dispose()]);
144
- }
145
- }
146
- //# sourceMappingURL=session-instance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-instance.js","sourceRoot":"","sources":["../../src/claude/session-instance.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- /**
2
- * The Claude-typed live-session surface (`ClaudeSessionApi`): the shape the PTY-backed
3
- * session object satisfies. It is the PUBLIC low-level interface returned by the eager
4
- * `startClaude`/`resumeClaude` factories and exposed through `ClaudeSession.session`;
5
- * `src/index.ts` exports it and the CHANGELOG documents it as the supported low-level type.
6
- * Most callers should prefer the ergonomic `ClaudeSession` class (src/claude/simple.ts),
7
- * which wraps and delegates to this. Implements PRD §5 public API.
8
- */
9
- import type { ElwoodActivityEvent } from "../core/activity.ts";
10
- import type { SendOptions } from "../core/images/types.ts";
11
- import type { LoopControls } from "../core/loops/loop-controls.ts";
12
- import type { AgentModelOption } from "../core/model-rows.ts";
13
- import type { ActivityMatch, ElwoodEventHandler, ElwoodEventName, ElwoodSessionStatus, ElwoodStatusDecision, StatusMatch, TerminalSize, Unsubscribe } from "../core/types.ts";
14
- import type { ElwoodTerminal } from "../terminal/headless.ts";
15
- import type { ClaudeLoginOptions } from "./login/types.ts";
16
- export interface ClaudeSessionApi extends LoopControls {
17
- readonly elwoodSessionId: string;
18
- readonly cwd: string;
19
- readonly status: ElwoodSessionStatus;
20
- readonly terminal: ElwoodTerminal;
21
- statusDecisions(): readonly ElwoodStatusDecision[];
22
- waitForStatus(match: StatusMatch, timeoutMs?: number): Promise<ElwoodSessionStatus>;
23
- waitForActivity(match: ActivityMatch, timeoutMs?: number): Promise<ElwoodActivityEvent>;
24
- on<E extends ElwoodEventName>(event: E, handler: ElwoodEventHandler<E>): Unsubscribe;
25
- off<E extends ElwoodEventName>(event: E, handler: ElwoodEventHandler<E>): void;
26
- sendPrompt(prompt: string, options?: SendOptions): Promise<void>;
27
- sendMessage(message: string, options?: SendOptions): Promise<void>;
28
- sendGuidance(message: string, options?: SendOptions): Promise<void>;
29
- sendKeys(input: string | Uint8Array): Promise<void>;
30
- resize(size: TerminalSize): Promise<void>;
31
- interrupt(options?: {
32
- readonly timeoutMs?: number;
33
- }): Promise<void>;
34
- compact(options?: {
35
- readonly timeoutMs?: number;
36
- }): Promise<void>;
37
- listModels(options?: {
38
- readonly timeoutMs?: number;
39
- }): Promise<readonly AgentModelOption[]>;
40
- setModel(id: string, options?: {
41
- readonly timeoutMs?: number;
42
- }): Promise<void>;
43
- /** Drive the interactive `/login` re-authentication flow to recover a lapsed login (C-API-43). */
44
- login(options: ClaudeLoginOptions): Promise<void>;
45
- stop(): Promise<void>;
46
- kill(): Promise<void>;
47
- teardown(): Promise<void>;
48
- }
49
- //# sourceMappingURL=session-interface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-interface.d.ts","sourceRoot":"","sources":["../../src/claude/session-interface.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * The Claude-typed live-session surface (`ClaudeSessionApi`): the shape the PTY-backed
3
- * session object satisfies. It is the PUBLIC low-level interface returned by the eager
4
- * `startClaude`/`resumeClaude` factories and exposed through `ClaudeSession.session`;
5
- * `src/index.ts` exports it and the CHANGELOG documents it as the supported low-level type.
6
- * Most callers should prefer the ergonomic `ClaudeSession` class (src/claude/simple.ts),
7
- * which wraps and delegates to this. Implements PRD §5 public API.
8
- */
9
- export {};
10
- //# sourceMappingURL=session-interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-interface.js","sourceRoot":"","sources":["../../src/claude/session-interface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Claude session resume entry point built on the shared start path.
3
- * Implements PRD §5.2, §9.3, and C-API-16.
4
- */
5
- import type { ResumeClaudeOptions } from "../core/types.ts";
6
- import type { ClaudeSessionApi } from "./session-interface.ts";
7
- export declare function resumeClaude(options: ResumeClaudeOptions): Promise<ClaudeSessionApi>;
8
- //# sourceMappingURL=session-resume.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-resume.d.ts","sourceRoot":"","sources":["../../src/claude/session-resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAS5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2C1F"}
@@ -1,47 +0,0 @@
1
- /**
2
- * Claude session resume entry point built on the shared start path.
3
- * Implements PRD §5.2, §9.3, and C-API-16.
4
- */
5
- import { resolve } from "node:path";
6
- import { elwoodError } from "../core/errors.js";
7
- import { claudeLaunchPosture, effectivePosture, withClaudeLaunch, } from "../state/launch-posture.js";
8
- import { defaultStateDir, readSessionRecord } from "../state/store.js";
9
- import { preflightClaude } from "./preflight.js";
10
- import { startClaudeFromRecord } from "./session.js";
11
- export async function resumeClaude(options) {
12
- // Resolve stateDir to ABSOLUTE ONCE, before any read or `await`: a relative path
13
- // re-resolved after a `process.chdir()` between the record read and the runtime-file
14
- // writes would read one session and write another's files (PRD §8.1). (C-STATE)
15
- const stateDir = resolve(options.stateDir ?? defaultStateDir(options.cwd ?? process.cwd()));
16
- const record = readSessionRecord(stateDir, options.elwoodSessionId);
17
- if (record.adapter !== "claude") {
18
- throw elwoodError("adapter_mismatch", "Cannot resume a non-Claude session as Claude.");
19
- }
20
- if (!record.claude.resumeId) {
21
- throw elwoodError("resume_unavailable", "Cannot resume Claude without a Claude session id.");
22
- }
23
- const warning = await preflightClaude(options.strictVersionCheck ?? false, options.autoupdate ?? false);
24
- // Resume defaults to the posture this session launched with; explicit options
25
- // override field by field, and the effective posture is re-persisted (C-API-32,
26
- // C-STATE-13). Terminal size is not persisted: it falls back to options.initialSize.
27
- const launch = effectivePosture(record.claude.launch, claudeLaunchPosture(options));
28
- const resumedRecord = withClaudeLaunch(record, launch);
29
- return await startClaudeFromRecord(resumedRecord, stateDir, {
30
- cwd: options.cwd ?? record.cwd,
31
- stateDir,
32
- ...(options.hooks === undefined ? {} : { hooks: options.hooks }),
33
- ...(options.initialSize === undefined ? {} : { initialSize: options.initialSize }),
34
- ...(options.hookTimeoutMs === undefined ? {} : { hookTimeoutMs: options.hookTimeoutMs }),
35
- ...(options.autotrust === undefined ? {} : { autotrust: options.autotrust }),
36
- // Reasoning effort is NOT persisted posture — re-supply it per resume (C-CLAUDE-20).
37
- ...(options.reasoningEffort === undefined
38
- ? {}
39
- : { reasoningEffort: options.reasoningEffort }),
40
- ...launch,
41
- ...(options.strictVersionCheck === undefined
42
- ? {}
43
- : { strictVersionCheck: options.strictVersionCheck }),
44
- }, true, // resumed: mark ready on the first composer marker, symmetric with Codex
45
- warning);
46
- }
47
- //# sourceMappingURL=session-resume.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-resume.js","sourceRoot":"","sources":["../../src/claude/session-resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGrD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,iFAAiF;IACjF,qFAAqF;IACrF,gFAAgF;IAChF,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,QAAQ,EAAE,CAAC;QAChC,MAAM,WAAW,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,WAAW,CAAC,oBAAoB,EAAE,mDAAmD,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,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,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IACpF,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO,MAAM,qBAAqB,CAChC,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,qFAAqF;QACrF,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"}