@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,10 +0,0 @@
1
- /**
2
- * Runtime validation for Claude `updatedPermissions` (PermissionUpdate[]).
3
- *
4
- * Implements PRD §6.4: a `PermissionRequest` result may return
5
- * `updatedPermissions`, which is serialized to Claude. Each entry must match one
6
- * of the documented PermissionUpdate variants (see permissions.ts) rather than
7
- * merely being an array, so a malformed entry cannot slip through.
8
- */
9
- export declare function isPermissionUpdateArray(value: unknown): boolean;
10
- //# sourceMappingURL=validate-permission-update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-permission-update.d.ts","sourceRoot":"","sources":["../../src/claude/validate-permission-update.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuCH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE/D"}
@@ -1,72 +0,0 @@
1
- /**
2
- * Runtime validation for Claude `updatedPermissions` (PermissionUpdate[]).
3
- *
4
- * Implements PRD §6.4: a `PermissionRequest` result may return
5
- * `updatedPermissions`, which is serialized to Claude. Each entry must match one
6
- * of the documented PermissionUpdate variants (see permissions.ts) rather than
7
- * merely being an array, so a malformed entry cannot slip through.
8
- */
9
- import { isOneOf, isRecord, optionalString } from "../core/predicates.js";
10
- import { claudeHookPermissionModes } from "./hook-names.js";
11
- const destinations = ["session", "localSettings", "projectSettings", "userSettings"];
12
- const ruleBehaviors = ["allow", "deny", "ask"];
13
- const updateTypes = [
14
- "addRules",
15
- "replaceRules",
16
- "removeRules",
17
- "setMode",
18
- "addDirectories",
19
- "removeDirectories",
20
- ];
21
- // Bidirectional exactness guards (see Exact above). Each stops compiling the moment
22
- // its allowlist and the public union disagree.
23
- const _destinationsExact = destinations[0];
24
- const _behaviorsExact = ruleBehaviors[0];
25
- const _typesExact = updateTypes[0];
26
- void _destinationsExact;
27
- void _behaviorsExact;
28
- void _typesExact;
29
- export function isPermissionUpdateArray(value) {
30
- return Array.isArray(value) && value.every(isPermissionUpdate);
31
- }
32
- function isPermissionUpdate(value) {
33
- if (!isRecord(value))
34
- return false;
35
- if (!isOneOf(value["destination"], destinations))
36
- return false;
37
- const type = value["type"];
38
- if (type === "addRules" || type === "replaceRules" || type === "removeRules") {
39
- return isRulesUpdate(value);
40
- }
41
- if (type === "setMode")
42
- return isSetModeUpdate(value);
43
- if (type === "addDirectories" || type === "removeDirectories")
44
- return isDirectoriesUpdate(value);
45
- return false;
46
- }
47
- function isRulesUpdate(value) {
48
- return (keysAllowed(value, ["type", "rules", "behavior", "destination"]) &&
49
- isOneOf(value["behavior"], ruleBehaviors) &&
50
- Array.isArray(value["rules"]) &&
51
- value["rules"].every(isPermissionRule));
52
- }
53
- function isSetModeUpdate(value) {
54
- return (keysAllowed(value, ["type", "mode", "destination"]) &&
55
- isOneOf(value["mode"], claudeHookPermissionModes));
56
- }
57
- function isDirectoriesUpdate(value) {
58
- return (keysAllowed(value, ["type", "directories", "destination"]) &&
59
- Array.isArray(value["directories"]) &&
60
- value["directories"].every((entry) => typeof entry === "string"));
61
- }
62
- function isPermissionRule(value) {
63
- if (!isRecord(value))
64
- return false;
65
- return (keysAllowed(value, ["toolName", "ruleContent"]) &&
66
- typeof value["toolName"] === "string" &&
67
- optionalString(value["ruleContent"]));
68
- }
69
- function keysAllowed(value, allowed) {
70
- return Object.keys(value).every((key) => allowed.includes(key));
71
- }
72
- //# sourceMappingURL=validate-permission-update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-permission-update.js","sourceRoot":"","sources":["../../src/claude/validate-permission-update.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Runtime validation for Claude hook handler results.
3
- * Implements PRD §6.4.
4
- */
5
- import type { ClaudeHookEvent, ClaudeHookEventName, ClaudeHookResult } from "./hooks.ts";
6
- export declare function isClaudeHookResult(event: ClaudeHookEventName | ClaudeHookEvent, value: unknown): value is ClaudeHookResult;
7
- //# sourceMappingURL=validate-result.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-result.d.ts","sourceRoot":"","sources":["../../src/claude/validate-result.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkBzF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,mBAAmB,GAAG,eAAe,EAC5C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,gBAAgB,CAuB3B"}
@@ -1,118 +0,0 @@
1
- /**
2
- * Runtime validation for Claude hook handler results.
3
- * Implements PRD §6.4.
4
- */
5
- import { isOneOf, isRecord, optionalBoolean, optionalString, optionalStringArray, } from "../core/predicates.js";
6
- import { isPermissionUpdateArray } from "./validate-permission-update.js";
7
- import { isClaudeToolInputUpdate } from "./validate-tool-update.js";
8
- const contextResultEvents = new Set(["SessionStart", "Setup", "SubagentStart"]);
9
- const blockResultEvents = new Set([
10
- "UserPromptSubmit",
11
- "UserPromptExpansion",
12
- "PostToolUse",
13
- "PostToolUseFailure",
14
- "PostToolBatch",
15
- "Stop",
16
- "SubagentStop",
17
- "ConfigChange",
18
- "PreCompact",
19
- ]);
20
- const continueFalseEvents = new Set(["TeammateIdle", "TaskCreated", "TaskCompleted"]);
21
- export function isClaudeHookResult(event, value) {
22
- const eventName = typeof event === "string" ? event : event.hook_event_name;
23
- const toolName = typeof event === "string" || !("tool_name" in event) || typeof event.tool_name !== "string"
24
- ? undefined
25
- : event.tool_name;
26
- if (value === undefined)
27
- return true;
28
- if (!isRecord(value))
29
- return false;
30
- if ("permissionDecision" in value)
31
- return isPreToolUseResult(eventName, value, toolName);
32
- if (eventName === "PreToolUse" && "additionalContext" in value) {
33
- return isPreToolUseResult(eventName, value, toolName);
34
- }
35
- if ("behavior" in value)
36
- return isPermissionRequestResult(eventName, value, toolName);
37
- if ("retry" in value)
38
- return eventName === "PermissionDenied" && value["retry"] === true;
39
- if ("worktreePath" in value) {
40
- return eventName === "WorktreeCreate" && typeof value["worktreePath"] === "string";
41
- }
42
- if ("action" in value)
43
- return isElicitationResult(eventName, value);
44
- if ("decision" in value)
45
- return isBlockResult(eventName, value);
46
- if ("continue" in value)
47
- return isContinueFalseResult(eventName, value);
48
- if (eventName === "PostToolUse")
49
- return isPostToolUseResult(value);
50
- if (!contextResultEvents.has(eventName))
51
- return false;
52
- return isContextResult(value);
53
- }
54
- function isPreToolUseResult(eventName, value, toolName) {
55
- if (eventName !== "PreToolUse")
56
- return false;
57
- if (!("permissionDecision" in value)) {
58
- return keysAre(value, ["additionalContext"]) && typeof value["additionalContext"] === "string";
59
- }
60
- return (keysAre(value, [
61
- "permissionDecision",
62
- "permissionDecisionReason",
63
- "updatedInput",
64
- "additionalContext",
65
- ]) &&
66
- isOneOf(value["permissionDecision"], ["allow", "deny", "ask", "defer"]) &&
67
- optionalString(value["permissionDecisionReason"]) &&
68
- optionalString(value["additionalContext"]) &&
69
- isClaudeToolInputUpdate(toolName, value["updatedInput"]));
70
- }
71
- function isPermissionRequestResult(eventName, value, toolName) {
72
- return (eventName === "PermissionRequest" &&
73
- keysAre(value, ["behavior", "updatedInput", "updatedPermissions", "message", "interrupt"]) &&
74
- isOneOf(value["behavior"], ["allow", "deny"]) &&
75
- optionalString(value["message"]) &&
76
- optionalBoolean(value["interrupt"]) &&
77
- optionalPermissionUpdates(value["updatedPermissions"]) &&
78
- isClaudeToolInputUpdate(toolName, value["updatedInput"]));
79
- }
80
- function optionalPermissionUpdates(value) {
81
- return value === undefined || isPermissionUpdateArray(value);
82
- }
83
- function isElicitationResult(eventName, value) {
84
- return ((eventName === "Elicitation" || eventName === "ElicitationResult") &&
85
- keysAre(value, ["action", "content"]) &&
86
- isOneOf(value["action"], ["accept", "decline", "cancel"]) &&
87
- // `content` is an OPTIONAL non-array record; a string/array/null must fail
88
- // rather than be serialized as if valid (matches ElicitationResult.content).
89
- (value["content"] === undefined || isRecord(value["content"])));
90
- }
91
- function isBlockResult(eventName, value) {
92
- return (blockResultEvents.has(eventName) &&
93
- keysAre(value, ["decision", "reason", "additionalContext"]) &&
94
- value["decision"] === "block" &&
95
- typeof value["reason"] === "string" &&
96
- optionalString(value["additionalContext"]));
97
- }
98
- function isContinueFalseResult(eventName, value) {
99
- return (continueFalseEvents.has(eventName) &&
100
- keysAre(value, ["continue", "stopReason"]) &&
101
- value["continue"] === false &&
102
- optionalString(value["stopReason"]));
103
- }
104
- function keysAre(value, allowed) {
105
- return Object.keys(value).every((key) => allowed.includes(key));
106
- }
107
- // Every field is optional, so `{}` is a valid (no-op) result, as it is for context events.
108
- function isPostToolUseResult(value) {
109
- return (keysAre(value, ["additionalContext", "updatedToolOutput", "updatedMCPToolOutput"]) &&
110
- optionalString(value["additionalContext"]));
111
- }
112
- function isContextResult(value) {
113
- return (keysAre(value, ["additionalContext", "initialUserMessage", "watchPaths"]) &&
114
- optionalString(value["additionalContext"]) &&
115
- optionalString(value["initialUserMessage"]) &&
116
- optionalStringArray(value["watchPaths"]));
117
- }
118
- //# sourceMappingURL=validate-result.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-result.js","sourceRoot":"","sources":["../../src/claude/validate-result.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Field-shape validation tables for Claude hook payloads, built on the shared
3
- * trust-boundary predicates in core/predicates.ts.
4
- * Implements PRD §6.4: value TYPES, not merely key names, are validated.
5
- */
6
- export { isRecord, optionalBoolean, optionalNumber, optionalString, optionalStringArray, } from "../core/predicates.ts";
7
- export type FieldCheck = (value: unknown) => boolean;
8
- /**
9
- * A validator table COUPLED to a public tool input `T`: exactly one field check per
10
- * key of `T` (required, so adding a field to the public type forces a matching check
11
- * and can't silently pass validation). Declare each table `satisfies FieldChecks<T>`.
12
- */
13
- export type FieldChecks<T> = {
14
- readonly [K in keyof Required<T>]-?: FieldCheck;
15
- };
16
- /**
17
- * Validates a partial record: every present key must be one of `checks` and its
18
- * value must pass that field's check. Absent keys pass (partial rewrites and
19
- * optional fields), unknown keys fail.
20
- */
21
- export declare function partial(value: Readonly<Record<string, unknown>>, checks: Readonly<Record<string, FieldCheck>>): boolean;
22
- //# sourceMappingURL=validate-shapes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-shapes.d.ts","sourceRoot":"","sources":["../../src/claude/validate-shapes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU;CAAE,CAAC;AAEjF;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAC3C,OAAO,CAIT"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Field-shape validation tables for Claude hook payloads, built on the shared
3
- * trust-boundary predicates in core/predicates.ts.
4
- * Implements PRD §6.4: value TYPES, not merely key names, are validated.
5
- */
6
- export { isRecord, optionalBoolean, optionalNumber, optionalString, optionalStringArray, } from "../core/predicates.js";
7
- /**
8
- * Validates a partial record: every present key must be one of `checks` and its
9
- * value must pass that field's check. Absent keys pass (partial rewrites and
10
- * optional fields), unknown keys fail.
11
- */
12
- export function partial(value, checks) {
13
- return Object.keys(value).every((key) => Object.hasOwn(checks, key) && checks[key](value[key]));
14
- }
15
- //# sourceMappingURL=validate-shapes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-shapes.js","sourceRoot":"","sources":["../../src/claude/validate-shapes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAW/B;;;;GAIG;AACH,MAAM,UAAU,OAAO,CACrB,KAAwC,EACxC,MAA4C;IAE5C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAC7B,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAK,MAAM,CAAC,GAAG,CAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAC/E,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Runtime validation for Claude tool input rewrite payloads.
3
- *
4
- * Implements PRD §6.4: a returned `updatedInput` MUST be validated against the
5
- * actual tool input shape for known built-in tools before it is serialized to
6
- * Claude. `updatedInput` is a partial rewrite, so every documented field is
7
- * optional, but each present field must match the tool's documented value TYPE
8
- * (not merely be a permitted key). Unknown/MCP tools accept any record.
9
- *
10
- * Each per-tool table is `satisfies FieldChecks<Input>`, so adding a field to the
11
- * public tool input type forces a matching check here (a missing key fails to
12
- * compile) — the validator can no longer silently drift from the shape it guards.
13
- */
14
- export declare function isClaudeToolInputUpdate(toolName: string | undefined, value: unknown): boolean;
15
- //# sourceMappingURL=validate-tool-update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-tool-update.d.ts","sourceRoot":"","sources":["../../src/claude/validate-tool-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA0BH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAM7F"}
@@ -1,122 +0,0 @@
1
- /**
2
- * Runtime validation for Claude tool input rewrite payloads.
3
- *
4
- * Implements PRD §6.4: a returned `updatedInput` MUST be validated against the
5
- * actual tool input shape for known built-in tools before it is serialized to
6
- * Claude. `updatedInput` is a partial rewrite, so every documented field is
7
- * optional, but each present field must match the tool's documented value TYPE
8
- * (not merely be a permitted key). Unknown/MCP tools accept any record.
9
- *
10
- * Each per-tool table is `satisfies FieldChecks<Input>`, so adding a field to the
11
- * public tool input type forces a matching check here (a missing key fails to
12
- * compile) — the validator can no longer silently drift from the shape it guards.
13
- */
14
- import { isRecord, optionalBoolean, optionalNumber, optionalString, optionalStringArray, partial, } from "./validate-shapes.js";
15
- export function isClaudeToolInputUpdate(toolName, value) {
16
- if (value === undefined)
17
- return true;
18
- if (!isRecord(value))
19
- return false;
20
- // An unknown/MCP tool (or absent name) has no table, so it accepts any record.
21
- const checks = toolChecks[toolName ?? ""];
22
- return checks === undefined ? true : partial(value, checks);
23
- }
24
- const agentChecks = {
25
- prompt: optionalString,
26
- description: optionalString,
27
- subagent_type: optionalString,
28
- model: optionalString,
29
- };
30
- const askUserQuestionChecks = {
31
- questions: optionalQuestions,
32
- answers: optionalAnswers,
33
- };
34
- // Shared by the Bash AND PowerShell tools (same documented BashInput shape).
35
- const shellChecks = {
36
- command: optionalString,
37
- description: optionalString,
38
- timeout: optionalNumber,
39
- run_in_background: optionalBoolean,
40
- };
41
- const editChecks = {
42
- file_path: optionalString,
43
- old_string: optionalString,
44
- new_string: optionalString,
45
- replace_all: optionalBoolean,
46
- };
47
- const exitPlanModeChecks = {
48
- allowedPrompts: optionalStringArray,
49
- plan: optionalString,
50
- planFilePath: optionalString,
51
- };
52
- const globChecks = {
53
- pattern: optionalString,
54
- path: optionalString,
55
- };
56
- const grepChecks = {
57
- pattern: optionalString,
58
- path: optionalString,
59
- glob: optionalString,
60
- output_mode: optionalOutputMode,
61
- "-i": optionalBoolean,
62
- multiline: optionalBoolean,
63
- };
64
- const readChecks = {
65
- file_path: optionalString,
66
- offset: optionalNumber,
67
- limit: optionalNumber,
68
- };
69
- const webFetchChecks = {
70
- url: optionalString,
71
- prompt: optionalString,
72
- };
73
- const webSearchChecks = {
74
- query: optionalString,
75
- allowed_domains: optionalStringArray,
76
- blocked_domains: optionalStringArray,
77
- };
78
- const writeChecks = {
79
- file_path: optionalString,
80
- content: optionalString,
81
- };
82
- /** Maps each known built-in tool name to its field-check table; others accept any record. */
83
- const toolChecks = {
84
- Agent: agentChecks,
85
- AskUserQuestion: askUserQuestionChecks,
86
- Bash: shellChecks,
87
- PowerShell: shellChecks,
88
- Edit: editChecks,
89
- ExitPlanMode: exitPlanModeChecks,
90
- Glob: globChecks,
91
- Grep: grepChecks,
92
- Read: readChecks,
93
- WebFetch: webFetchChecks,
94
- WebSearch: webSearchChecks,
95
- Write: writeChecks,
96
- };
97
- function optionalOutputMode(value) {
98
- return (value === undefined ||
99
- value === "content" ||
100
- value === "files_with_matches" ||
101
- value === "count");
102
- }
103
- function optionalQuestions(value) {
104
- return value === undefined || (Array.isArray(value) && value.every(isQuestion));
105
- }
106
- function isQuestion(value) {
107
- if (!isRecord(value))
108
- return false;
109
- return (typeof value["question"] === "string" &&
110
- typeof value["header"] === "string" &&
111
- Array.isArray(value["options"]) &&
112
- value["options"].every(isQuestionOption) &&
113
- optionalBoolean(value["multiSelect"]));
114
- }
115
- function isQuestionOption(value) {
116
- return (isRecord(value) && typeof value["label"] === "string" && optionalString(value["description"]));
117
- }
118
- function optionalAnswers(value) {
119
- return (value === undefined ||
120
- (isRecord(value) && Object.values(value).every((entry) => typeof entry === "string")));
121
- }
122
- //# sourceMappingURL=validate-tool-update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-tool-update.js","sourceRoot":"","sources":["../../src/claude/validate-tool-update.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Selects the CLI agent, auto-detecting one when no flag, environment variable,
3
- * or config key chooses it. Implements PRD §12A.1/§12A.4 and C-CLI-03/C-CLI-21:
4
- * probe `claude` and `codex` concurrently and keep the first, in that order,
5
- * whose command resolves in the user's login shell — the same resolution the
6
- * agent PTY launch uses (§4.2) — without running either agent. A probe that
7
- * cannot run at all is reported as such, not as "no agent installed".
8
- */
9
- import { type SourcedValue } from "./request-sources.ts";
10
- import { type CliAgent } from "./types.ts";
11
- /** Detection order: the first agent whose command resolves wins. */
12
- export declare const agentDetectionOrder: readonly ["claude", "codex"];
13
- /** Provenance reported for an auto-detected agent (`config effective`, JSON, verbose). */
14
- export declare const autoDetectedSource = "auto-detected";
15
- export type AgentDetector = () => Promise<CliAgent>;
16
- type AgentProbe = (agent: CliAgent) => Promise<boolean>;
17
- export declare const noAgentFoundMessage: string;
18
- /**
19
- * True when the login shell resolves `agent` as a command. Uses the same
20
- * interactive login shell as the agent PTY so PATH resolution is identical, but
21
- * asks only `command -v`, so the agent itself never starts (C-CLI-14). A probe
22
- * that could not run at all (missing or broken shell, probe timeout) is a
23
- * distinct failure: it says nothing about which agents are installed.
24
- */
25
- export declare function loginShellResolves(agent: CliAgent, shell?: string): Promise<boolean>;
26
- /**
27
- * Probes every agent concurrently and returns the first in detection order that
28
- * `probe` reports available; `no_agent_found` when none is.
29
- */
30
- export declare function detectAvailableAgent(probe?: AgentProbe): Promise<CliAgent>;
31
- type AgentSelection = {
32
- readonly flag: string | undefined;
33
- readonly env: CliAgent | undefined;
34
- readonly config: SourcedValue<CliAgent>;
35
- readonly resuming: boolean;
36
- };
37
- /**
38
- * Flag > env > config precedence for the agent (C-CLI-14). Without a choice, a
39
- * new session auto-detects; a resume keeps a placeholder that
40
- * `finalizeRunRequest` replaces with the stored adapter, so resume never probes.
41
- */
42
- export declare function selectAgent(selection: AgentSelection, detect: AgentDetector): Promise<SourcedValue<string>>;
43
- export {};
44
- //# sourceMappingURL=agent-detect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-detect.d.ts","sourceRoot":"","sources":["../../src/cli/agent-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAW,KAAK,YAAY,EAAW,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,YAAY,CAAC;AAE/D,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,8BAA6D,CAAC;AAE9F,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB,QAIgB,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,QAAQ,EACf,KAAK,GAAE,MAAoB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAOlB;AAWD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,GAAE,UAA+B,GACrC,OAAO,CAAC,QAAQ,CAAC,CAKnB;AAED,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAU/B"}
@@ -1,66 +0,0 @@
1
- /**
2
- * Selects the CLI agent, auto-detecting one when no flag, environment variable,
3
- * or config key chooses it. Implements PRD §12A.1/§12A.4 and C-CLI-03/C-CLI-21:
4
- * probe `claude` and `codex` concurrently and keep the first, in that order,
5
- * whose command resolves in the user's login shell — the same resolution the
6
- * agent PTY launch uses (§4.2) — without running either agent. A probe that
7
- * cannot run at all is reported as such, not as "no agent installed".
8
- */
9
- import { currentCommandRunner } from "../runtime/seams.js";
10
- import { probeShellCommand, shellQuote, userShell } from "../runtime/shell.js";
11
- import { layered, sourced } from "./request-sources.js";
12
- import { CliValidationError } from "./types.js";
13
- /** Detection order: the first agent whose command resolves wins. */
14
- export const agentDetectionOrder = ["claude", "codex"];
15
- /** Provenance reported for an auto-detected agent (`config effective`, JSON, verbose). */
16
- export const autoDetectedSource = "auto-detected";
17
- export const noAgentFoundMessage = "No agent was found: neither `claude` nor `codex` resolves in your login shell. " +
18
- "Install Claude Code (npm install -g @anthropic-ai/claude-code) or Codex " +
19
- "(npm install -g @openai/codex), or select one with --agent, ELWOOD_AGENT, " +
20
- "or `elwood config set agent <claude|codex>`.";
21
- /**
22
- * True when the login shell resolves `agent` as a command. Uses the same
23
- * interactive login shell as the agent PTY so PATH resolution is identical, but
24
- * asks only `command -v`, so the agent itself never starts (C-CLI-14). A probe
25
- * that could not run at all (missing or broken shell, probe timeout) is a
26
- * distinct failure: it says nothing about which agents are installed.
27
- */
28
- export async function loginShellResolves(agent, shell = userShell()) {
29
- const command = probeShellCommand(`command -v ${shellQuote(agent)}`);
30
- const result = await currentCommandRunner()(shell, command);
31
- if (result.error !== undefined) {
32
- throw new CliValidationError("no_agent_found", probeFailedMessage(shell, result.error));
33
- }
34
- return result.status === 0;
35
- }
36
- function probeFailedMessage(shell, error) {
37
- const reason = error.code === undefined ? "did not run" : `failed with ${error.code}`;
38
- return (`No agent was found because the probe itself failed: login shell ${JSON.stringify(shell)} ` +
39
- `${reason} while checking for \`claude\` and \`codex\`. Fix the shell, or select an agent ` +
40
- "with --agent, ELWOOD_AGENT, or `elwood config set agent <claude|codex>`.");
41
- }
42
- /**
43
- * Probes every agent concurrently and returns the first in detection order that
44
- * `probe` reports available; `no_agent_found` when none is.
45
- */
46
- export async function detectAvailableAgent(probe = loginShellResolves) {
47
- const available = await Promise.all(agentDetectionOrder.map((agent) => probe(agent)));
48
- const found = agentDetectionOrder.find((_agent, index) => available[index] === true);
49
- if (found === undefined)
50
- throw new CliValidationError("no_agent_found", noAgentFoundMessage);
51
- return found;
52
- }
53
- /**
54
- * Flag > env > config precedence for the agent (C-CLI-14). Without a choice, a
55
- * new session auto-detects; a resume keeps a placeholder that
56
- * `finalizeRunRequest` replaces with the stored adapter, so resume never probes.
57
- */
58
- export async function selectAgent(selection, detect) {
59
- const chosen = layered(sourced(selection.flag, "--agent"), sourced(selection.env, "ELWOOD_AGENT"), selection.config, sourced(undefined, autoDetectedSource));
60
- if (chosen.value !== undefined)
61
- return chosen;
62
- if (selection.resuming)
63
- return sourced("codex", "stored session");
64
- return sourced(await detect(), autoDetectedSource);
65
- }
66
- //# sourceMappingURL=agent-detect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-detect.js","sourceRoot":"","sources":["../../src/cli/agent-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAqB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAiB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/D,oEAAoE;AACpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAwC,CAAC;AAE9F,0FAA0F;AAC1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAKlD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,iFAAiF;IACjF,0EAA0E;IAC1E,4EAA4E;IAC5E,8CAA8C,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAe,EACf,QAAgB,SAAS,EAAE;IAE3B,MAAM,OAAO,GAAG,iBAAiB,CAAC,cAAc,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAA6C;IACtF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC;IACtF,OAAO,CACL,mEAAmE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;QAC3F,GAAG,MAAM,kFAAkF;QAC3F,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAoB,kBAAkB;IAEtC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACrF,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IAC7F,OAAO,KAAK,CAAC;AACf,CAAC;AASD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAyB,EACzB,MAAqB;IAErB,MAAM,MAAM,GAAG,OAAO,CACpB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,EAClC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,EACtC,SAAS,CAAC,MAAM,EAChB,OAAO,CAAS,SAAS,EAAE,kBAAkB,CAAC,CAC/C,CAAC;IACF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,MAAM,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACrD,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Converts Node argument-parser failures into concise, actionable CLI diagnostics.
3
- * Implements PRD §12A.5 and C-CLI-20.
4
- */
5
- export declare function argumentErrorMessage(error: unknown): string;
6
- //# sourceMappingURL=arg-errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arg-errors.d.ts","sourceRoot":"","sources":["../../src/cli/arg-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAS3D"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Converts Node argument-parser failures into concise, actionable CLI diagnostics.
3
- * Implements PRD §12A.5 and C-CLI-20.
4
- */
5
- import { longOptions } from "./arg-options.js";
6
- export function argumentErrorMessage(error) {
7
- if (!(error instanceof Error))
8
- return "Could not parse command-line arguments.";
9
- const code = error.code;
10
- const match = code === "ERR_PARSE_ARGS_UNKNOWN_OPTION" ? unknownOption(error.message) : undefined;
11
- if (match === undefined)
12
- return error.message;
13
- const suggestion = nearestOption(match);
14
- return suggestion === undefined
15
- ? `Unknown option '${match}'.`
16
- : `Unknown option '${match}'. Did you mean '${suggestion}'?`;
17
- }
18
- function unknownOption(message) {
19
- return /Unknown option '([^']+)'/u.exec(message)?.[1];
20
- }
21
- function nearestOption(input) {
22
- if (!input.startsWith("--"))
23
- return undefined;
24
- const ranked = longOptions
25
- .map((option) => ({ option, distance: editDistance(input, option) }))
26
- .sort((left, right) => left.distance - right.distance);
27
- const best = ranked[0];
28
- if (best === undefined || best.distance > 2 || ranked[1]?.distance === best.distance)
29
- return undefined;
30
- return best.option;
31
- }
32
- function editDistance(left, right) {
33
- let row = Array.from({ length: right.length + 1 }, (_, index) => index);
34
- for (let leftIndex = 1; leftIndex <= left.length; leftIndex += 1) {
35
- const next = [leftIndex];
36
- for (let rightIndex = 1; rightIndex <= right.length; rightIndex += 1) {
37
- const substitution = row[rightIndex - 1] + (left[leftIndex - 1] === right[rightIndex - 1] ? 0 : 1);
38
- next[rightIndex] = Math.min(row[rightIndex] + 1, next[rightIndex - 1] + 1, substitution);
39
- }
40
- row = next;
41
- }
42
- return row[right.length];
43
- }
44
- //# sourceMappingURL=arg-errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arg-errors.js","sourceRoot":"","sources":["../../src/cli/arg-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,yCAAyC,CAAC;IAChF,MAAM,IAAI,GAAI,KAA6C,CAAC,IAAI,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,KAAK,+BAA+B,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,mBAAmB,KAAK,IAAI;QAC9B,CAAC,CAAC,mBAAmB,KAAK,oBAAoB,UAAU,IAAI,CAAC;AACjE,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,MAAM,GAAG,WAAW;SACvB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;SACpE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAClF,OAAO,SAAS,CAAC;IACnB,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACxE,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,YAAY,GAChB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAE,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAE,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;QAC7F,CAAC;QACD,GAAG,GAAG,IAAI,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;AAC5B,CAAC"}