@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,54 +0,0 @@
1
- /**
2
- * Emits activity for automated startup prompt responses.
3
- * Implements PRD §5.4 and C-API-18.
4
- */
5
- import type { ElwoodActivityEvent, ElwoodAgentKind } from "./activity.ts";
6
- import type { TrustPromptIdFor } from "./trust-prompts.ts";
7
- export type { TrustPromptIdFor } from "./trust-prompts.ts";
8
- /**
9
- * The single source of truth for the non-trust startup-prompt labels, keyed by
10
- * owning agent: the browser-tools onboarding decline is Claude-only (C-CLAUDE-11)
11
- * and the skip-update prompt is Codex-only (C-CODEX-12). Every non-trust union
12
- * and the runtime label set below are DERIVED from this table, so they cannot
13
- * drift from each other or from the §5.4 label contract. Adding an agent's label
14
- * here automatically extends both the type and the validator.
15
- */
16
- declare const nonTrustStartupLabels: {
17
- readonly claude: readonly ["browser_tools"];
18
- readonly codex: readonly ["update"];
19
- };
20
- /**
21
- * The non-trust startup-prompt labels for one agent, derived from the table so
22
- * each impossible pairing (Claude + `update`, Codex + `browser_tools`) stays
23
- * unrepresentable, matching the §5.4 label table exactly.
24
- */
25
- type NonTrustStartupLabel<A extends ElwoodAgentKind> = (typeof nonTrustStartupLabels)[A][number];
26
- /**
27
- * Every startup-prompt label for one agent: its own allowlisted trust ids plus
28
- * its own non-trust prompts. Matches the PRD's exact per-agent label contract
29
- * (§5.4) so a second implementation and this type can never drift.
30
- */
31
- export type StartupPromptLabelFor<A extends ElwoodAgentKind> = TrustPromptIdFor<A> | NonTrustStartupLabel<A>;
32
- /**
33
- * The outcome of handling a startup prompt for agent `A`, discriminated so the
34
- * two states cannot be confused: an `answered` prompt ALWAYS carries the `input`
35
- * sent and is labeled with any of the agent's startup labels, while an
36
- * `option_pending` prompt (recognized allowlisted trust prompt whose affirmative
37
- * option has not rendered yet — a TRANSIENT render delay, C-CLAUDE-14) NEVER
38
- * carries an input and is limited to the agent's TRUST ids (a non-trust prompt
39
- * like `browser_tools`/`update` is never "recognized but option-pending"). Both
40
- * correlate the label to `A`, so an off-agent or impossible label does not compile.
41
- */
42
- export type StartupPromptOutcome<A extends ElwoodAgentKind = ElwoodAgentKind> = {
43
- readonly kind: "answered";
44
- readonly prompt: StartupPromptLabelFor<A>;
45
- readonly input: string;
46
- } | {
47
- readonly kind: "option_pending";
48
- readonly prompt: TrustPromptIdFor<A>;
49
- };
50
- export type StartupActivityEmitter = {
51
- emit(event: "activity", payload: ElwoodActivityEvent): void;
52
- };
53
- export declare function emitStartupPromptActivity<A extends ElwoodAgentKind>(emitter: StartupActivityEmitter, agent: A, elwoodSessionId: string, automation: StartupPromptOutcome<A>): void;
54
- //# sourceMappingURL=startup-automation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"startup-automation.d.ts","sourceRoot":"","sources":["../../src/core/startup-automation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;GAOG;AACH,QAAA,MAAM,qBAAqB;;;CAGoC,CAAC;AAEhE;;;;GAIG;AACH,KAAK,oBAAoB,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjG;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,eAAe,IACvD,gBAAgB,CAAC,CAAC,CAAC,GACnB,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAE5B;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAE9E,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC7D,CAAC;AA2BF,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,eAAe,EACjE,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,CAAC,EACR,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAClC,IAAI,CAEN"}
@@ -1,40 +0,0 @@
1
- /**
2
- * Emits activity for automated startup prompt responses.
3
- * Implements PRD §5.4 and C-API-18.
4
- */
5
- /**
6
- * The single source of truth for the non-trust startup-prompt labels, keyed by
7
- * owning agent: the browser-tools onboarding decline is Claude-only (C-CLAUDE-11)
8
- * and the skip-update prompt is Codex-only (C-CODEX-12). Every non-trust union
9
- * and the runtime label set below are DERIVED from this table, so they cannot
10
- * drift from each other or from the §5.4 label contract. Adding an agent's label
11
- * here automatically extends both the type and the validator.
12
- */
13
- const nonTrustStartupLabels = {
14
- claude: ["browser_tools"],
15
- codex: ["update"],
16
- };
17
- function activityFromStartupPrompt(agent, elwoodSessionId, automation) {
18
- if (automation.kind === "option_pending") {
19
- return {
20
- elwoodSessionId,
21
- agent,
22
- source: "terminal",
23
- kind: "attention",
24
- label: automation.prompt,
25
- text: `Recognized ${agent} ${automation.prompt} prompt; affirmative option not rendered yet, awaiting a later frame.`,
26
- };
27
- }
28
- return {
29
- elwoodSessionId,
30
- agent,
31
- source: "terminal",
32
- kind: "startup_prompt",
33
- label: automation.prompt,
34
- text: `Detected ${agent} ${automation.prompt} prompt; sent ${automation.input}.`,
35
- };
36
- }
37
- export function emitStartupPromptActivity(emitter, agent, elwoodSessionId, automation) {
38
- emitter.emit("activity", activityFromStartupPrompt(agent, elwoodSessionId, automation));
39
- }
40
- //# sourceMappingURL=startup-automation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"startup-automation.js","sourceRoot":"","sources":["../../src/core/startup-automation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAG;IAC5B,MAAM,EAAE,CAAC,eAAe,CAAC;IACzB,KAAK,EAAE,CAAC,QAAQ,CAAC;CAC4C,CAAC;AAoChE,SAAS,yBAAyB,CAChC,KAAQ,EACR,eAAuB,EACvB,UAAmC;IAEnC,IAAI,UAAU,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACzC,OAAO;YACL,eAAe;YACf,KAAK;YACL,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,IAAI,EAAE,cAAc,KAAK,IAAI,UAAU,CAAC,MAAM,uEAAuE;SACtH,CAAC;IACJ,CAAC;IACD,OAAO;QACL,eAAe;QACf,KAAK;QACL,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,UAAU,CAAC,MAAM;QACxB,IAAI,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,MAAM,iBAAiB,UAAU,CAAC,KAAK,GAAG;KACjF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAA+B,EAC/B,KAAQ,EACR,eAAuB,EACvB,UAAmC;IAEnC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1F,CAAC"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Shared startup-frame helpers keeping telemetry off the critical frame path.
3
- * Implements PRD §5.7/§9.1 (C-API-14, C-API-37): a warning is TELEMETRY and must
4
- * never control session progress. On the hot terminal-frame callback a throwing
5
- * `warning`/`activity` listener must not skip the rest of the frame (readiness
6
- * detection, prompt automation, login/attention detection, `terminal:data`), and the
7
- * preflight/version warning must reach a caller that subscribes in the same turn it
8
- * receives the session — so it is delivered on a deferred macrotask AFTER start
9
- * resolves, not on an early startup frame a caller cannot yet observe.
10
- */
11
- import type { ElwoodWarningEvent } from "./types.ts";
12
- /** A session's live warning sink (emits a batch as `warning` + `activity`). */
13
- export type FrameWarningSink = {
14
- readonly emitWarnings: (warnings: readonly ElwoodWarningEvent[]) => void;
15
- };
16
- /**
17
- * Delivers `warnings` through `sink` but CONTAINS a throwing listener so frame
18
- * processing continues. Warnings are live-only: a contained throw drops the warning
19
- * (it is not retried), exactly as a human's terminal does not re-show a flashed banner.
20
- */
21
- export declare function deliverFrameWarnings(sink: FrameWarningSink | undefined, warnings: readonly ElwoodWarningEvent[]): void;
22
- /**
23
- * A buffer-then-live warning sink for the STARTUP region. Warnings emitted BEFORE the
24
- * caller can subscribe (during the pre-return startup gate — MCP/transcript/preflight
25
- * diagnostics) are BUFFERED, then flushed on a deferred macrotask AFTER start resolves,
26
- * so a caller attaching a `warning` listener in the same turn it receives the session
27
- * still observes them (C-API-14) — WITHOUT restoring general late-subscriber replay.
28
- * Once opened, delivery is live pass-through. Every observed startup warning is
29
- * delivered: PRD §5.7/C-API-14 defines no overflow exception, and the buffer drains one
30
- * macrotask after start resolves, so it is inherently short-lived (the finite set of
31
- * startup diagnostics), not an unbounded queue — a silent cap could drop the guaranteed
32
- * `version_unparseable` warning. A macrotask (not a microtask) is required: a microtask
33
- * runs before the caller's post-`await` continuation, so it would fire into no listener.
34
- */
35
- export declare function createStartupWarningGate(sink: FrameWarningSink): {
36
- readonly emitWarnings: (warnings: readonly ElwoodWarningEvent[]) => void;
37
- readonly openAfterReturn: () => void;
38
- };
39
- //# sourceMappingURL=startup-frame.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"startup-frame.d.ts","sourceRoot":"","sources":["../../src/core/startup-frame.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,KAAK,IAAI,CAAC;CAC1E,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACtC,IAAI,CAQN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG;IAChE,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACzE,QAAQ,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;CACtC,CAiBA"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Shared startup-frame helpers keeping telemetry off the critical frame path.
3
- * Implements PRD §5.7/§9.1 (C-API-14, C-API-37): a warning is TELEMETRY and must
4
- * never control session progress. On the hot terminal-frame callback a throwing
5
- * `warning`/`activity` listener must not skip the rest of the frame (readiness
6
- * detection, prompt automation, login/attention detection, `terminal:data`), and the
7
- * preflight/version warning must reach a caller that subscribes in the same turn it
8
- * receives the session — so it is delivered on a deferred macrotask AFTER start
9
- * resolves, not on an early startup frame a caller cannot yet observe.
10
- */
11
- /**
12
- * Delivers `warnings` through `sink` but CONTAINS a throwing listener so frame
13
- * processing continues. Warnings are live-only: a contained throw drops the warning
14
- * (it is not retried), exactly as a human's terminal does not re-show a flashed banner.
15
- */
16
- export function deliverFrameWarnings(sink, warnings) {
17
- if (!sink || warnings.length === 0)
18
- return;
19
- try {
20
- sink.emitWarnings(warnings);
21
- }
22
- catch {
23
- // Telemetry must not wedge the frame: a throwing listener is contained here so
24
- // readiness, prompt automation, login detection, and terminal:data still run.
25
- }
26
- }
27
- /**
28
- * A buffer-then-live warning sink for the STARTUP region. Warnings emitted BEFORE the
29
- * caller can subscribe (during the pre-return startup gate — MCP/transcript/preflight
30
- * diagnostics) are BUFFERED, then flushed on a deferred macrotask AFTER start resolves,
31
- * so a caller attaching a `warning` listener in the same turn it receives the session
32
- * still observes them (C-API-14) — WITHOUT restoring general late-subscriber replay.
33
- * Once opened, delivery is live pass-through. Every observed startup warning is
34
- * delivered: PRD §5.7/C-API-14 defines no overflow exception, and the buffer drains one
35
- * macrotask after start resolves, so it is inherently short-lived (the finite set of
36
- * startup diagnostics), not an unbounded queue — a silent cap could drop the guaranteed
37
- * `version_unparseable` warning. A macrotask (not a microtask) is required: a microtask
38
- * runs before the caller's post-`await` continuation, so it would fire into no listener.
39
- */
40
- export function createStartupWarningGate(sink) {
41
- let open = false;
42
- const buffered = [];
43
- return {
44
- emitWarnings: (warnings) => {
45
- if (open)
46
- return deliverFrameWarnings(sink, warnings);
47
- buffered.push(...warnings);
48
- },
49
- openAfterReturn: () => {
50
- const timer = setTimeout(() => {
51
- open = true; // subsequent startup-frame warnings deliver live from here on
52
- const batch = buffered.splice(0);
53
- if (batch.length > 0)
54
- deliverFrameWarnings(sink, batch);
55
- }, 0);
56
- timer.unref?.();
57
- },
58
- };
59
- }
60
- //# sourceMappingURL=startup-frame.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"startup-frame.js","sourceRoot":"","sources":["../../src/core/startup-frame.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAkC,EAClC,QAAuC;IAEvC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC3C,IAAI,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,+EAA+E;QAC/E,8EAA8E;IAChF,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAsB;IAI7D,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,OAAO;QACL,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;YACzB,IAAI,IAAI;gBAAE,OAAO,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC7B,CAAC;QACD,eAAe,EAAE,GAAG,EAAE;YACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,GAAG,IAAI,CAAC,CAAC,8DAA8D;gBAC3E,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,47 +0,0 @@
1
- /**
2
- * Completion-aware settlement for automated startup-prompt PTY writes.
3
- * Implements PRD §5.1, §5.4, and §5.7: a startup prompt is marked answered (its
4
- * `startup_prompt` activity emitted) ONLY after its `sendInput` write actually
5
- * fulfills. A rejected write leaves the prompt retryable and surfaces a bounded,
6
- * content-free `startup_prompt_write_failed` warning instead of false telemetry
7
- * (C-CLAUDE-16, C-CODEX-17).
8
- */
9
- import type { ElwoodAgentKind } from "./activity.ts";
10
- import type { TrustPromptIdFor } from "./startup-automation.ts";
11
- import { type StartupActivityEmitter, type StartupPromptLabelFor } from "./startup-automation.ts";
12
- import type { ElwoodWarningEvent } from "./warnings.ts";
13
- /**
14
- * A settled startup-prompt automation, discriminated by `outcome.kind` so the
15
- * invalid pairings are unrepresentable: an `answered` outcome ALWAYS carries the
16
- * write-completion `settled` promise (resolves on write success, rejects — after
17
- * the responder un-settles the prompt — on a rejected write), and an
18
- * `option_pending` outcome (no write happened) NEVER carries one. This makes a
19
- * false success ("answered" with no write to await) and a silently lost warning
20
- * (write present on a non-answered outcome) impossible to construct (§5.4, §5.7).
21
- */
22
- export type SettledStartupOutcome<A extends ElwoodAgentKind> = {
23
- readonly outcome: {
24
- readonly kind: "answered";
25
- readonly prompt: StartupPromptLabelFor<A>;
26
- readonly input: string;
27
- };
28
- readonly settled: Promise<void>;
29
- } | {
30
- readonly outcome: {
31
- readonly kind: "option_pending";
32
- readonly prompt: TrustPromptIdFor<A>;
33
- };
34
- readonly settled?: undefined;
35
- };
36
- /** Where a rejected startup-prompt write is reported. */
37
- export type StartupWarningSink = {
38
- emitWarnings(warnings: readonly ElwoodWarningEvent[]): void;
39
- };
40
- /**
41
- * Emit each settled automation's activity at the RIGHT time: an `option_pending`
42
- * or write-less outcome emits immediately; a write-backed `answered` outcome emits
43
- * its `startup_prompt` activity only once the write resolves, and on rejection
44
- * emits a bounded warning instead — never a false "answered" activity.
45
- */
46
- export declare function emitSettledStartupOutcomes<A extends ElwoodAgentKind>(emitter: StartupActivityEmitter, agent: A, elwoodSessionId: string, settledOutcomes: readonly SettledStartupOutcome<NoInfer<A>>[], warnings: StartupWarningSink | undefined): void;
47
- //# sourceMappingURL=startup-write.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"startup-write.d.ts","sourceRoot":"","sources":["../../src/core/startup-write.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAE3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAA4B,MAAM,eAAe,CAAC;AAElF;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,eAAe,IACvD;IACE,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAC1B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;IAC5F,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEN,yDAAyD;AACzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,IAAI,CAAC;CAC7D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,eAAe,EAClE,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,CAAC,EACR,eAAe,EAAE,MAAM,EAIvB,eAAe,EAAE,SAAS,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAC7D,QAAQ,EAAE,kBAAkB,GAAG,SAAS,GACvC,IAAI,CAgCN"}
@@ -1,73 +0,0 @@
1
- /**
2
- * Completion-aware settlement for automated startup-prompt PTY writes.
3
- * Implements PRD §5.1, §5.4, and §5.7: a startup prompt is marked answered (its
4
- * `startup_prompt` activity emitted) ONLY after its `sendInput` write actually
5
- * fulfills. A rejected write leaves the prompt retryable and surfaces a bounded,
6
- * content-free `startup_prompt_write_failed` warning instead of false telemetry
7
- * (C-CLAUDE-16, C-CODEX-17).
8
- */
9
- import { emitStartupPromptActivity, } from "./startup-automation.js";
10
- /**
11
- * Emit each settled automation's activity at the RIGHT time: an `option_pending`
12
- * or write-less outcome emits immediately; a write-backed `answered` outcome emits
13
- * its `startup_prompt` activity only once the write resolves, and on rejection
14
- * emits a bounded warning instead — never a false "answered" activity.
15
- */
16
- export function emitSettledStartupOutcomes(emitter, agent, elwoodSessionId,
17
- // `NoInfer` blocks inference of `A` from the outcomes, so `A` is pinned by the
18
- // `agent` argument alone. Passing Codex outcomes with `agent: "claude"` no
19
- // longer widens `A` to the union and cannot construct a cross-agent warning.
20
- settledOutcomes, warnings) {
21
- for (const settledOutcome of settledOutcomes) {
22
- if (settledOutcome.settled === undefined) {
23
- // An `option_pending` outcome: no write happened, so there is nothing to
24
- // await — emit its attention activity immediately. The discriminated union
25
- // guarantees this branch is only ever `option_pending`. CONTAIN a throwing
26
- // activity listener exactly as the promise-backed branch does: this runs on the
27
- // hot startup frame, so an escaping throw would skip the rest of the frame
28
- // (readiness/blocking observation, `terminal:data`) and could let an already-armed
29
- // readiness deadline drain queued input into an unlatched dialog (C-API-28).
30
- try {
31
- emitStartupPromptActivity(emitter, agent, elwoodSessionId, settledOutcome.outcome);
32
- }
33
- catch {
34
- // Telemetry must not wedge the frame; the activity is dropped (live-only).
35
- }
36
- continue;
37
- }
38
- // An `answered` outcome always carries the write-completion promise: its
39
- // activity is emitted only once the write fulfills, and a rejected write
40
- // surfaces a bounded warning instead of a false "answered" activity.
41
- const { outcome, settled } = settledOutcome;
42
- // A terminal `.catch` OWNS the derived promise: both continuations call public
43
- // event paths that can throw (activity emission rethrows listener failures;
44
- // warning recording can fail), and a floated rejection would be an unhandled
45
- // rejection that can terminate the host during startup. Swallow it here.
46
- settled
47
- .then(() => emitStartupPromptActivity(emitter, agent, elwoodSessionId, outcome), () => warnings?.emitWarnings([writeFailedWarning(agent, elwoodSessionId, outcome)]))
48
- .catch(() => undefined);
49
- }
50
- }
51
- // `agent` and `outcome` are always the SAME concrete `A` here — the caller
52
- // (`emitSettledStartupOutcomes`) already pins `A` via NoInfer, so this internal
53
- // helper needs no extra guard and its correlation is enforced by construction.
54
- function writeFailedWarning(agent, elwoodSessionId, outcome) {
55
- // `outcome.prompt` is already the agent-correlated label, so no cast discards
56
- // the correlation: an off-agent (label, agent) pairing cannot be constructed.
57
- const label = outcome.prompt;
58
- const warning = {
59
- elwoodSessionId,
60
- agent,
61
- source: "terminal",
62
- code: "startup_prompt_write_failed",
63
- severity: "warning",
64
- message: `Startup prompt ${label} could not be answered: PTY write was rejected; leaving it retryable.`,
65
- label,
66
- raw: `startup_prompt_write_failed label=${label}`,
67
- };
68
- // A concrete `StartupPromptWriteFailed<"claude"|"codex">` IS an ElwoodWarningEvent
69
- // member; the widening bridges TS's generic-union assignability gap only (the
70
- // agent/label correlation above is already enforced at construction).
71
- return warning;
72
- }
73
- //# sourceMappingURL=startup-write.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"startup-write.js","sourceRoot":"","sources":["../../src/core/startup-write.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACL,yBAAyB,GAI1B,MAAM,yBAAyB,CAAC;AA+BjC;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAA+B,EAC/B,KAAQ,EACR,eAAuB;AACvB,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,eAA6D,EAC7D,QAAwC;IAExC,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,cAAc,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACzC,yEAAyE;YACzE,2EAA2E;YAC3E,2EAA2E;YAC3E,gFAAgF;YAChF,2EAA2E;YAC3E,mFAAmF;YACnF,6EAA6E;YAC7E,IAAI,CAAC;gBACH,yBAAyB,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;YACrF,CAAC;YAAC,MAAM,CAAC;gBACP,2EAA2E;YAC7E,CAAC;YACD,SAAS;QACX,CAAC;QACD,yEAAyE;QACzE,yEAAyE;QACzE,qEAAqE;QACrE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;QAC5C,+EAA+E;QAC/E,4EAA4E;QAC5E,6EAA6E;QAC7E,yEAAyE;QACzE,OAAO;aACJ,IAAI,CACH,GAAG,EAAE,CAAC,yBAAyB,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EACzE,GAAG,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CACpF;aACA,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,gFAAgF;AAChF,+EAA+E;AAC/E,SAAS,kBAAkB,CACzB,KAAQ,EACR,eAAuB,EACvB,OAAgC;IAEhC,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,OAAO,GAAgC;QAC3C,eAAe;QACf,KAAK;QACL,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,6BAA6B;QACnC,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,kBAAkB,KAAK,uEAAuE;QACvG,KAAK;QACL,GAAG,EAAE,qCAAqC,KAAK,EAAE;KAClD,CAAC;IACF,mFAAmF;IACnF,8EAA8E;IAC9E,sEAAsE;IACtE,OAAO,OAA6B,CAAC;AACvC,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Shared builder for the per-agent trust blocking screen-fact rules.
3
- * Implements PRD §5.1/§5.5 (C-ATTN-03): a trust prompt that stays UNANSWERED
4
- * under the policy classifies as a blocking prompt. Both adapters build these
5
- * rules identically, so the construction — option-aware header recognition,
6
- * stable semantic ids, base-table append — lives here once instead of diverging
7
- * across `claude/screen-table.ts` and `codex/screen-table.ts`.
8
- */
9
- import type { ElwoodAgentKind } from "./activity.ts";
10
- import type { ScreenFactTable } from "./screen-facts.ts";
11
- /**
12
- * `base` plus one `blocking_prompt_visible` rule per trust prompt that stays
13
- * unanswered under `autotrust`. Each rule recognizes the prompt only by its
14
- * HEADER outside the option region (`trustHeaderMatches`, the same recognizer
15
- * the responder uses; the non-option text is computed once per frame and cached
16
- * across the rules), so an unrelated numbered/cursor option containing a trust
17
- * phrase is NOT mistaken for a blocking trust prompt (PRD §5.1). Returns `base`
18
- * unchanged when no trust prompt blocks (e.g. every allowlisted prompt is
19
- * auto-answered).
20
- */
21
- export declare function withTrustBlockingRules(base: ScreenFactTable, agent: ElwoodAgentKind, autotrust: boolean): ScreenFactTable;
22
- //# sourceMappingURL=trust-blocking.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trust-blocking.d.ts","sourceRoot":"","sources":["../../src/core/trust-blocking.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzE;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,OAAO,GACjB,eAAe,CAgBjB"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Shared builder for the per-agent trust blocking screen-fact rules.
3
- * Implements PRD §5.1/§5.5 (C-ATTN-03): a trust prompt that stays UNANSWERED
4
- * under the policy classifies as a blocking prompt. Both adapters build these
5
- * rules identically, so the construction — option-aware header recognition,
6
- * stable semantic ids, base-table append — lives here once instead of diverging
7
- * across `claude/screen-table.ts` and `codex/screen-table.ts`.
8
- */
9
- import { nonOptionText } from "./terminal-options.js";
10
- import { blockingTrustSpecs, trustHeaderMatches } from "./trust-prompts.js";
11
- /**
12
- * `base` plus one `blocking_prompt_visible` rule per trust prompt that stays
13
- * unanswered under `autotrust`. Each rule recognizes the prompt only by its
14
- * HEADER outside the option region (`trustHeaderMatches`, the same recognizer
15
- * the responder uses; the non-option text is computed once per frame and cached
16
- * across the rules), so an unrelated numbered/cursor option containing a trust
17
- * phrase is NOT mistaken for a blocking trust prompt (PRD §5.1). Returns `base`
18
- * unchanged when no trust prompt blocks (e.g. every allowlisted prompt is
19
- * auto-answered).
20
- */
21
- export function withTrustBlockingRules(base, agent, autotrust) {
22
- let cachedFrame;
23
- let cachedHeader = "";
24
- const headerFor = (text) => {
25
- if (text !== cachedFrame) {
26
- cachedFrame = text;
27
- cachedHeader = nonOptionText(text);
28
- }
29
- return cachedHeader;
30
- };
31
- const rules = blockingTrustSpecs(agent, autotrust).map((spec) => ({
32
- id: `${agent}-${spec.id}-prompt`,
33
- fact: "blocking_prompt_visible",
34
- match: (text) => trustHeaderMatches(headerFor(text), spec),
35
- }));
36
- return rules.length === 0 ? base : { ...base, rules: [...base.rules, ...rules] };
37
- }
38
- //# sourceMappingURL=trust-blocking.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trust-blocking.js","sourceRoot":"","sources":["../../src/core/trust-blocking.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAqB,EACrB,KAAsB,EACtB,SAAkB;IAElB,IAAI,WAA+B,CAAC;IACpC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;QACjC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,WAAW,GAAG,IAAI,CAAC;YACnB,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;IACF,MAAM,KAAK,GAAqB,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClF,EAAE,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,EAAE,SAAS;QAChC,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;KAC3D,CAAC,CAAC,CAAC;IACJ,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;AACnF,CAAC"}
@@ -1,135 +0,0 @@
1
- /**
2
- * Allowlist of known adapter startup trust prompts and how to answer them.
3
- * Implements PRD §5.1 and §5.5 (C-CLAUDE-10, C-CODEX-11, C-CLAUDE-14, C-CODEX-15).
4
- *
5
- * This is an EXPLICIT allowlist, not an open-ended matcher: each entry names one
6
- * concrete prompt by its on-screen text and a fixed affirmative outcome. A new
7
- * CLI prompt is trusted only by adding a deliberate entry here — Elwood never
8
- * blanket-answers "any first-run confirmation", which would silently bypass a
9
- * future CLI security gate for third-party code or config.
10
- */
11
- import type { ElwoodAgentKind } from "./activity.ts";
12
- /**
13
- * The fields common to every allowlisted trust prompt. The prompt and its answer
14
- * are BOTH matched within the same current frame: `headerPattern` identifies the
15
- * prompt by its HEADER wording, and `accept` matches the exact affirmative option
16
- * label in that same prompt. This prevents a stale phrase from one frame pairing
17
- * with a "Yes" from a different, current dialog (which could auto-confirm an
18
- * unrelated security gate). `headerPattern` is a HEADER matcher, not a
19
- * whole-frame matcher: it is only safe when tested against the frame's non-option
20
- * lines (via `trustHeaderMatches`), never applied raw to the full frame.
21
- */
22
- type TrustPromptBase = {
23
- /**
24
- * Identifies the prompt by its HEADER wording. MUST be tested only against the
25
- * frame's non-option lines (see `trustHeaderMatches`) — applying it raw to the
26
- * full frame would let an option-only trust phrase spoof recognition.
27
- * Verified against the CLI versions below.
28
- */
29
- readonly headerPattern: RegExp;
30
- /** Matches the exact affirmative option label for THIS prompt (per-prompt, not generic). */
31
- readonly accept: RegExp;
32
- };
33
- /**
34
- * When an allowlisted prompt is answered. `"autotrust"` prompts are answered ONLY
35
- * under the caller's full-trust posture; `"always"` prompts are answered
36
- * regardless of it (Elwood's own hook bridge, never third-party code).
37
- */
38
- export type TrustAnswerPolicy = "always" | "autotrust";
39
- /**
40
- * One allowlisted trust prompt, as an agent+id-DISCRIMINATED union so that (a) a
41
- * typo in `id` cannot compile into a public startup label, and (b)
42
- * `answerPolicy: "always"` — answered regardless of `autotrust` — is permitted
43
- * ONLY on Codex `hook_trust`, Elwood's OWN integration (the hook bridge) that the
44
- * session requires to work. Every third-party trust prompt (skills, plugins, MCP
45
- * servers, folder trust) is `answerPolicy: "autotrust"`, staying gated on the
46
- * caller's full-trust posture, so the invalid "third-party prompt answered
47
- * always" state is unrepresentable.
48
- */
49
- export type TrustPromptSpec = ({
50
- readonly agent: "claude";
51
- readonly id: ClaudeTrustPromptId;
52
- readonly answerPolicy: "autotrust";
53
- } & TrustPromptBase) | ({
54
- readonly agent: "codex";
55
- readonly id: "workspace_trust";
56
- readonly answerPolicy: "autotrust";
57
- } & TrustPromptBase) | ({
58
- readonly agent: "codex";
59
- readonly id: "hook_trust";
60
- /** Answered regardless of `autotrust`: Elwood's own hook bridge (never third-party code). */
61
- readonly answerPolicy: "always";
62
- } & TrustPromptBase);
63
- /** The Claude trust-prompt ids: folder trust plus the CLI's first-run skill/plugin/MCP gates. */
64
- type ClaudeTrustPromptId = "workspace_trust" | "skill_trust" | "plugin_trust" | "mcp_trust";
65
- /**
66
- * The allowlist. Wording verified against claude 2.1.205–2.1.252 and codex-cli 0.142.5.
67
- * `workspace`/`directory` trust are the folder-trust gates; `skill`, `plugin`,
68
- * and `mcp` cover the CLI's first-run trust prompts for loading third-party
69
- * skills, plugins, and MCP servers under a full-trust launch.
70
- */
71
- export declare const trustPromptAllowlist: readonly [{
72
- readonly id: "workspace_trust";
73
- readonly agent: "claude";
74
- readonly headerPattern: RegExp;
75
- readonly accept: RegExp;
76
- readonly answerPolicy: "autotrust";
77
- }, {
78
- readonly id: "skill_trust";
79
- readonly agent: "claude";
80
- readonly headerPattern: RegExp;
81
- readonly accept: RegExp;
82
- readonly answerPolicy: "autotrust";
83
- }, {
84
- readonly id: "plugin_trust";
85
- readonly agent: "claude";
86
- readonly headerPattern: RegExp;
87
- readonly accept: RegExp;
88
- readonly answerPolicy: "autotrust";
89
- }, {
90
- readonly id: "mcp_trust";
91
- readonly agent: "claude";
92
- readonly headerPattern: RegExp;
93
- readonly accept: RegExp;
94
- readonly answerPolicy: "autotrust";
95
- }, {
96
- readonly id: "workspace_trust";
97
- readonly agent: "codex";
98
- readonly headerPattern: RegExp;
99
- readonly accept: RegExp;
100
- readonly answerPolicy: "autotrust";
101
- }, {
102
- readonly id: "hook_trust";
103
- readonly agent: "codex";
104
- readonly headerPattern: RegExp;
105
- readonly accept: RegExp;
106
- readonly answerPolicy: "always";
107
- }];
108
- /**
109
- * True when `spec`'s HEADER wording appears in `header` — the frame's NON-option
110
- * text as produced by `nonOptionText`. This is the ONE shared, option-aware
111
- * recognizer: the responder, the cursor navigator, and the screen-fact blocking
112
- * rules all go through it (each computes `nonOptionText` once per frame and
113
- * tests every spec against that), so a numbered or cursor-selectable option whose
114
- * label merely contains a trust phrase is never recognized as a prompt. Matching
115
- * joined non-option lines also keeps wrapped headers matchable (§5.1).
116
- */
117
- export declare function trustHeaderMatches(header: string, spec: TrustPromptBase): boolean;
118
- /** `trustHeaderMatches` over a raw frame, for callers that test a single spec. */
119
- export declare function trustPromptHeaderVisible(frame: string, spec: TrustPromptBase): boolean;
120
- /**
121
- * The stable public `startup_prompt` trust labels (§5.4), derived from the
122
- * allowlist so the two can never drift: deleting, adding, or renaming an entry
123
- * updates this union automatically. Because `TrustPromptSpec` fixes each agent's
124
- * ids to a closed literal union, a typo in an entry's `id` fails to compile
125
- * against `satisfies` rather than silently widening this derived label union.
126
- */
127
- export type TrustPromptId = (typeof trustPromptAllowlist)[number]["id"];
128
- /** The trust label ids for one specific agent (e.g. Codex automation cannot use a Claude-only id). */
129
- export type TrustPromptIdFor<A extends ElwoodAgentKind> = Extract<(typeof trustPromptAllowlist)[number], {
130
- readonly agent: A;
131
- }>["id"];
132
- /** Specs for one agent that stay UNANSWERED under the effective policy (block on the human). */
133
- export declare function blockingTrustSpecs(agent: ElwoodAgentKind, autotrust: boolean): readonly TrustPromptSpec[];
134
- export {};
135
- //# sourceMappingURL=trust-prompts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trust-prompts.d.ts","sourceRoot":"","sources":["../../src/core/trust-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD;;;;;;;;;GASG;AACH,KAAK,eAAe,GAAG;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GACvB,CAAC;IACC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,mBAAmB,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;CACpC,GAAG,eAAe,CAAC,GACpB,CAAC;IACC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;CACpC,GAAG,eAAe,CAAC,GACpB,CAAC;IACC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,6FAA6F;IAC7F,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;CACjC,GAAG,eAAe,CAAC,CAAC;AAEzB,iGAAiG;AACjG,KAAK,mBAAmB,GAAG,iBAAiB,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC;AAW5F;;;;;GAKG;AAKH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDc,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAEjF;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAEtF;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAExE,sGAAsG;AACtG,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,eAAe,IAAI,OAAO,CAC/D,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,EACrC;IAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CACtB,CAAC,IAAI,CAAC,CAAC;AAER,gGAAgG;AAChG,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,OAAO,GACjB,SAAS,eAAe,EAAE,CAM5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"trust-prompts.js","sourceRoot":"","sources":["../../src/core/trust-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AA8DtD,oFAAoF;AACpF,MAAM,UAAU,GAAG,qDAAqD,CAAC;AACzE,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,UAAU,sCAAsC,EAAE,GAAG,CAAC,CAAC;AACxF,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,UAAU,mCAAmC,EAAE,GAAG,CAAC,CAAC;AACxF,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,IAAI,UAAU,mCAAmC,EAAE,GAAG,CAAC,CAAC;AAE5F;;;;;GAKG;AACH,8EAA8E;AAC9E,gFAAgF;AAChF,4EAA4E;AAC5E,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC;QACE,2EAA2E;QAC3E,0EAA0E;QAC1E,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,QAAQ;QACf,aAAa,EAAE,4DAA4D;QAC3E,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,WAAW;KAC1B;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,QAAQ;QACf,aAAa,EAAE,0EAA0E;QACzF,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,WAAW;KAC1B;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,QAAQ;QACf,aAAa,EAAE,mEAAmE;QAClF,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,WAAW;KAC1B;IACD;QACE,2EAA2E;QAC3E,2EAA2E;QAC3E,0DAA0D;QAC1D,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,QAAQ;QACf,aAAa,EAAE,4DAA4D;QAC3E,MAAM,EAAE,YAAY;QACpB,YAAY,EAAE,WAAW;KAC1B;IACD;QACE,wEAAwE;QACxE,4DAA4D;QAC5D,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,OAAO;QACd,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,WAAW;KAC1B;IACD,+EAA+E;IAC/E,iFAAiF;IACjF;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,OAAO;QACd,aAAa,EAAE,oBAAoB;QACnC,0EAA0E;QAC1E,2EAA2E;QAC3E,MAAM,EAAE,gBAAgB;QACxB,YAAY,EAAE,QAAQ;KACvB;CAC4C,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,IAAqB;IACtE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,wBAAwB,CAAC,KAAa,EAAE,IAAqB;IAC3E,OAAO,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAiBD,gGAAgG;AAChG,MAAM,UAAU,kBAAkB,CAChC,KAAsB,EACtB,SAAkB;IAElB,OAAO,oBAAoB,CAAC,MAAM;IAChC,8EAA8E;IAC9E,gFAAgF;IAChF,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,SAAS,CAC/E,CAAC;AACJ,CAAC"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Detects and answers the allowlisted family of adapter startup trust prompts.
3
- * Implements PRD §5.1 and §9.1 (C-CLAUDE-10, C-CODEX-11, C-CLAUDE-14, C-CODEX-15).
4
- *
5
- * Policy (PRD §5.1): an agent must NEVER be left waiting on a trust gate.
6
- * Under the caller's full-trust posture, when an allowlisted trust prompt is
7
- * visible in the current frame, Elwood selects its affirmative option and sends
8
- * it — always say yes. Elwood only auto-answers ALLOWLISTED prompts (an
9
- * off-allowlist confirmation is left to the human), and never re-answers the same
10
- * prompt; those are the only limits.
11
- */
12
- import type { ElwoodAgentKind } from "./activity.ts";
13
- import { type TrustPromptIdFor } from "./trust-prompts.ts";
14
- /** An answered trust prompt; `prompt` is narrowed to the responder's agent. */
15
- export type TrustPromptAutomation<A extends ElwoodAgentKind = ElwoodAgentKind> = {
16
- readonly prompt: TrustPromptIdFor<A>;
17
- readonly input: string;
18
- };
19
- /**
20
- * The completion of an answered trust write: a `void | Promise<void>` write is
21
- * normalized to a promise that resolves on success and rejects once the prompt
22
- * has been un-settled (kept retryable) on a rejected write.
23
- */
24
- export type TrustWriteResult = void | Promise<void>;
25
- /**
26
- * The outcome of handling a frame: an answered prompt, a recognized prompt whose
27
- * affirmative option has not rendered yet (a TRANSIENT render delay — under the
28
- * say-yes policy a later frame carrying the option is still answered, so this is
29
- * never a terminal wedge), or nothing.
30
- */
31
- export type TrustPromptResult<A extends ElwoodAgentKind = ElwoodAgentKind> = {
32
- readonly kind: "answered";
33
- readonly automation: TrustPromptAutomation<A>;
34
- readonly settled: Promise<void>;
35
- } | {
36
- readonly kind: "option_pending";
37
- readonly prompt: TrustPromptIdFor<A>;
38
- } | undefined;
39
- export declare class TrustPromptResponder<A extends ElwoodAgentKind> {
40
- private readonly autotrust;
41
- private readonly specs;
42
- private readonly settled;
43
- private readonly reportedPending;
44
- constructor(agent: A, autotrust?: boolean);
45
- /** `frame` MUST be the CURRENT rendered screen, not an accumulated buffer. */
46
- handle(frame: string, write: (input: string) => TrustWriteResult, readFrame?: () => string): TrustPromptResult<A>;
47
- }
48
- //# sourceMappingURL=trust-responder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trust-responder.d.ts","sourceRoot":"","sources":["../../src/core/trust-responder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAQrD,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,oBAAoB,CAAC;AAQ5B,+EAA+E;AAC/E,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI;IAC/E,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IACrE;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAG9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;CAAE,GACzE,SAAS,CAAC;AAEd,qBAAa,oBAAoB,CAAC,CAAC,SAAS,eAAe;IAGzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAI1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;gBAEtD,KAAK,EAAE,CAAC,EAAE,SAAS,UAAQ;IAKvC,8EAA8E;IAC9E,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,gBAAgB,EAC1C,SAAS,CAAC,EAAE,MAAM,MAAM,GACvB,iBAAiB,CAAC,CAAC,CAAC;CA0CxB"}