@with-logic/elwood 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (871) hide show
  1. package/CHANGELOG.md +565 -1
  2. package/CONTRIBUTING.md +3 -0
  3. package/README.md +4 -2
  4. package/dist/bridge/socket-release.d.ts +15 -0
  5. package/dist/bridge/socket-release.d.ts.map +1 -0
  6. package/dist/bridge/socket-release.js +22 -0
  7. package/dist/bridge/socket-release.js.map +1 -0
  8. package/dist/claude/composer/border.d.ts +12 -0
  9. package/dist/claude/composer/border.d.ts.map +1 -0
  10. package/dist/claude/composer/border.js +12 -0
  11. package/dist/claude/composer/border.js.map +1 -0
  12. package/dist/claude/composer/empty-input.d.ts +15 -0
  13. package/dist/claude/composer/empty-input.d.ts.map +1 -1
  14. package/dist/claude/composer/empty-input.js +30 -11
  15. package/dist/claude/composer/empty-input.js.map +1 -1
  16. package/dist/claude/composer/footer.d.ts +26 -2
  17. package/dist/claude/composer/footer.d.ts.map +1 -1
  18. package/dist/claude/composer/footer.js +29 -2
  19. package/dist/claude/composer/footer.js.map +1 -1
  20. package/dist/claude/composer/idle.d.ts +14 -0
  21. package/dist/claude/composer/idle.d.ts.map +1 -0
  22. package/dist/claude/composer/idle.js +17 -0
  23. package/dist/claude/composer/idle.js.map +1 -0
  24. package/dist/claude/composer/last.d.ts +2 -0
  25. package/dist/claude/composer/last.d.ts.map +1 -0
  26. package/dist/claude/composer/last.js +15 -0
  27. package/dist/claude/composer/last.js.map +1 -0
  28. package/dist/claude/composer/staged-input.d.ts.map +1 -1
  29. package/dist/claude/composer/staged-input.js +2 -1
  30. package/dist/claude/composer/staged-input.js.map +1 -1
  31. package/dist/claude/hooks/stop-failure.d.ts +15 -2
  32. package/dist/claude/hooks/stop-failure.d.ts.map +1 -1
  33. package/dist/claude/hooks/stop-failure.js +32 -9
  34. package/dist/claude/hooks/stop-failure.js.map +1 -1
  35. package/dist/claude/login/stages.d.ts.map +1 -1
  36. package/dist/claude/login/stages.js +2 -2
  37. package/dist/claude/login/stages.js.map +1 -1
  38. package/dist/claude/model-picker.d.ts +1 -1
  39. package/dist/claude/model-picker.d.ts.map +1 -1
  40. package/dist/claude/model-picker.js +27 -10
  41. package/dist/claude/model-picker.js.map +1 -1
  42. package/dist/claude/preflight.d.ts +1 -1
  43. package/dist/claude/preflight.d.ts.map +1 -1
  44. package/dist/claude/preflight.js +18 -12
  45. package/dist/claude/preflight.js.map +1 -1
  46. package/dist/claude/questions/navigation.d.ts.map +1 -1
  47. package/dist/claude/questions/navigation.js +1 -2
  48. package/dist/claude/questions/navigation.js.map +1 -1
  49. package/dist/claude/questions/screen.d.ts.map +1 -1
  50. package/dist/claude/questions/screen.js +10 -2
  51. package/dist/claude/questions/screen.js.map +1 -1
  52. package/dist/claude/screen-table.d.ts +8 -5
  53. package/dist/claude/screen-table.d.ts.map +1 -1
  54. package/dist/claude/screen-table.js +20 -12
  55. package/dist/claude/screen-table.js.map +1 -1
  56. package/dist/claude/session/bridge.d.ts +2 -1
  57. package/dist/claude/session/bridge.d.ts.map +1 -1
  58. package/dist/claude/session/bridge.js +3 -1
  59. package/dist/claude/session/bridge.js.map +1 -1
  60. package/dist/claude/session/build.d.ts.map +1 -1
  61. package/dist/claude/session/build.js +13 -11
  62. package/dist/claude/session/build.js.map +1 -1
  63. package/dist/claude/session/cleanup.d.ts +18 -0
  64. package/dist/claude/session/cleanup.d.ts.map +1 -0
  65. package/dist/claude/session/cleanup.js +10 -0
  66. package/dist/claude/session/cleanup.js.map +1 -0
  67. package/dist/claude/session/index.d.ts.map +1 -1
  68. package/dist/claude/session/index.js +27 -13
  69. package/dist/claude/session/index.js.map +1 -1
  70. package/dist/claude/session/instance.d.ts +7 -8
  71. package/dist/claude/session/instance.d.ts.map +1 -1
  72. package/dist/claude/session/instance.js +9 -13
  73. package/dist/claude/session/instance.js.map +1 -1
  74. package/dist/claude/session/resume.d.ts.map +1 -1
  75. package/dist/claude/session/resume.js +14 -5
  76. package/dist/claude/session/resume.js.map +1 -1
  77. package/dist/claude/session/transcript.js +2 -2
  78. package/dist/claude/session/transcript.js.map +1 -1
  79. package/dist/claude/simple.d.ts +1 -1
  80. package/dist/claude/simple.d.ts.map +1 -1
  81. package/dist/claude/simple.js +3 -3
  82. package/dist/claude/simple.js.map +1 -1
  83. package/dist/claude/startup-prompts.d.ts +2 -0
  84. package/dist/claude/startup-prompts.d.ts.map +1 -1
  85. package/dist/claude/startup-prompts.js +5 -1
  86. package/dist/claude/startup-prompts.js.map +1 -1
  87. package/dist/claude/transcript/cursor-io.d.ts +1 -1
  88. package/dist/claude/transcript/cursor-io.d.ts.map +1 -1
  89. package/dist/claude/transcript/cursor-io.js +1 -1
  90. package/dist/claude/transcript/cursor-io.js.map +1 -1
  91. package/dist/claude/transcript/cursor.d.ts +5 -3
  92. package/dist/claude/transcript/cursor.d.ts.map +1 -1
  93. package/dist/claude/transcript/cursor.js +18 -8
  94. package/dist/claude/transcript/cursor.js.map +1 -1
  95. package/dist/claude/transcript/drain-context.d.ts +4 -3
  96. package/dist/claude/transcript/drain-context.d.ts.map +1 -1
  97. package/dist/claude/transcript/drain-context.js.map +1 -1
  98. package/dist/claude/transcript/emit.d.ts +2 -1
  99. package/dist/claude/transcript/emit.d.ts.map +1 -1
  100. package/dist/claude/transcript/emit.js +1 -0
  101. package/dist/claude/transcript/emit.js.map +1 -1
  102. package/dist/claude/transcript/index.d.ts.map +1 -1
  103. package/dist/claude/transcript/index.js +2 -2
  104. package/dist/claude/transcript/index.js.map +1 -1
  105. package/dist/claude/transcript/warnings.d.ts +2 -1
  106. package/dist/claude/transcript/warnings.d.ts.map +1 -1
  107. package/dist/claude/transcript/warnings.js +3 -2
  108. package/dist/claude/transcript/warnings.js.map +1 -1
  109. package/dist/cli/config/effective.d.ts +2 -2
  110. package/dist/cli/config/effective.d.ts.map +1 -1
  111. package/dist/cli/config/effective.js +0 -2
  112. package/dist/cli/config/effective.js.map +1 -1
  113. package/dist/cli/interactive/spawn.d.ts +0 -2
  114. package/dist/cli/interactive/spawn.d.ts.map +1 -1
  115. package/dist/cli/interactive/spawn.js +27 -24
  116. package/dist/cli/interactive/spawn.js.map +1 -1
  117. package/dist/cli/lifecycle/index.d.ts.map +1 -1
  118. package/dist/cli/lifecycle/index.js +5 -3
  119. package/dist/cli/lifecycle/index.js.map +1 -1
  120. package/dist/cli/main-failure.d.ts.map +1 -1
  121. package/dist/cli/main-failure.js +5 -2
  122. package/dist/cli/main-failure.js.map +1 -1
  123. package/dist/cli/models/combined.d.ts.map +1 -1
  124. package/dist/cli/models/combined.js +3 -2
  125. package/dist/cli/models/combined.js.map +1 -1
  126. package/dist/cli/models/render.d.ts.map +1 -1
  127. package/dist/cli/models/render.js +2 -1
  128. package/dist/cli/models/render.js.map +1 -1
  129. package/dist/cli/output/cleanup-error.d.ts +22 -0
  130. package/dist/cli/output/cleanup-error.d.ts.map +1 -0
  131. package/dist/cli/output/cleanup-error.js +67 -0
  132. package/dist/cli/output/cleanup-error.js.map +1 -0
  133. package/dist/cli/output/types.d.ts +6 -2
  134. package/dist/cli/output/types.d.ts.map +1 -1
  135. package/dist/cli/request/agent-detect.d.ts +6 -2
  136. package/dist/cli/request/agent-detect.d.ts.map +1 -1
  137. package/dist/cli/request/agent-detect.js +14 -6
  138. package/dist/cli/request/agent-detect.js.map +1 -1
  139. package/dist/cli/request/finalize.d.ts +1 -1
  140. package/dist/cli/request/finalize.d.ts.map +1 -1
  141. package/dist/cli/request/finalize.js +4 -25
  142. package/dist/cli/request/finalize.js.map +1 -1
  143. package/dist/cli/request/index.d.ts.map +1 -1
  144. package/dist/cli/request/index.js +11 -5
  145. package/dist/cli/request/index.js.map +1 -1
  146. package/dist/cli/request/path-replacement.d.ts +27 -0
  147. package/dist/cli/request/path-replacement.d.ts.map +1 -0
  148. package/dist/cli/request/path-replacement.js +79 -0
  149. package/dist/cli/request/path-replacement.js.map +1 -0
  150. package/dist/cli/request/workspace.d.ts +8 -0
  151. package/dist/cli/request/workspace.d.ts.map +1 -0
  152. package/dist/cli/request/workspace.js +50 -0
  153. package/dist/cli/request/workspace.js.map +1 -0
  154. package/dist/cli/run/output.d.ts.map +1 -1
  155. package/dist/cli/run/output.js +2 -1
  156. package/dist/cli/run/output.js.map +1 -1
  157. package/dist/cli/run/subscribe.d.ts.map +1 -1
  158. package/dist/cli/run/subscribe.js +1 -1
  159. package/dist/cli/run/subscribe.js.map +1 -1
  160. package/dist/cli/session/index.d.ts +4 -4
  161. package/dist/cli/session/index.d.ts.map +1 -1
  162. package/dist/cli/session/index.js +5 -5
  163. package/dist/cli/session/index.js.map +1 -1
  164. package/dist/cli/session/launch.d.ts +2 -2
  165. package/dist/cli/session/launch.d.ts.map +1 -1
  166. package/dist/cli/session/launch.js +12 -3
  167. package/dist/cli/session/launch.js.map +1 -1
  168. package/dist/cli/session/turn-readers.d.ts +14 -0
  169. package/dist/cli/session/turn-readers.d.ts.map +1 -0
  170. package/dist/cli/session/turn-readers.js +13 -0
  171. package/dist/cli/session/turn-readers.js.map +1 -0
  172. package/dist/codex/config/default-model.d.ts +24 -0
  173. package/dist/codex/config/default-model.d.ts.map +1 -0
  174. package/dist/codex/config/default-model.js +133 -0
  175. package/dist/codex/config/default-model.js.map +1 -0
  176. package/dist/codex/config/home.d.ts +35 -0
  177. package/dist/codex/config/home.d.ts.map +1 -0
  178. package/dist/codex/config/home.js +122 -0
  179. package/dist/codex/config/home.js.map +1 -0
  180. package/dist/codex/config/lock.d.ts +17 -11
  181. package/dist/codex/config/lock.d.ts.map +1 -1
  182. package/dist/codex/config/lock.js +102 -11
  183. package/dist/codex/config/lock.js.map +1 -1
  184. package/dist/codex/config/read.d.ts +16 -0
  185. package/dist/codex/config/read.d.ts.map +1 -0
  186. package/dist/codex/config/read.js +75 -0
  187. package/dist/codex/config/read.js.map +1 -0
  188. package/dist/codex/config/restore.d.ts +17 -7
  189. package/dist/codex/config/restore.d.ts.map +1 -1
  190. package/dist/codex/config/restore.js +33 -20
  191. package/dist/codex/config/restore.js.map +1 -1
  192. package/dist/codex/config/transaction.d.ts +6 -4
  193. package/dist/codex/config/transaction.d.ts.map +1 -1
  194. package/dist/codex/config/transaction.js +4 -3
  195. package/dist/codex/config/transaction.js.map +1 -1
  196. package/dist/codex/images/clipboard-copies.d.ts +39 -0
  197. package/dist/codex/images/clipboard-copies.d.ts.map +1 -0
  198. package/dist/codex/images/clipboard-copies.js +91 -0
  199. package/dist/codex/images/clipboard-copies.js.map +1 -0
  200. package/dist/codex/model-picker.d.ts +1 -1
  201. package/dist/codex/model-picker.d.ts.map +1 -1
  202. package/dist/codex/model-picker.js +16 -6
  203. package/dist/codex/model-picker.js.map +1 -1
  204. package/dist/codex/preflight.d.ts +2 -2
  205. package/dist/codex/preflight.d.ts.map +1 -1
  206. package/dist/codex/preflight.js +28 -21
  207. package/dist/codex/preflight.js.map +1 -1
  208. package/dist/codex/pty.d.ts +25 -3
  209. package/dist/codex/pty.d.ts.map +1 -1
  210. package/dist/codex/pty.js +53 -7
  211. package/dist/codex/pty.js.map +1 -1
  212. package/dist/codex/questions/candidates.d.ts.map +1 -1
  213. package/dist/codex/questions/candidates.js +4 -5
  214. package/dist/codex/questions/candidates.js.map +1 -1
  215. package/dist/codex/questions/driver.js +2 -2
  216. package/dist/codex/questions/driver.js.map +1 -1
  217. package/dist/codex/questions/records.d.ts +1 -1
  218. package/dist/codex/questions/records.d.ts.map +1 -1
  219. package/dist/codex/questions/records.js +1 -3
  220. package/dist/codex/questions/records.js.map +1 -1
  221. package/dist/codex/screen/clearance.d.ts +6 -0
  222. package/dist/codex/screen/clearance.d.ts.map +1 -1
  223. package/dist/codex/screen/clearance.js +10 -0
  224. package/dist/codex/screen/clearance.js.map +1 -1
  225. package/dist/codex/screen-table.d.ts.map +1 -1
  226. package/dist/codex/screen-table.js +6 -2
  227. package/dist/codex/screen-table.js.map +1 -1
  228. package/dist/codex/session/bridge.d.ts +1 -0
  229. package/dist/codex/session/bridge.d.ts.map +1 -1
  230. package/dist/codex/session/bridge.js +3 -1
  231. package/dist/codex/session/bridge.js.map +1 -1
  232. package/dist/codex/session/build.d.ts.map +1 -1
  233. package/dist/codex/session/build.js +14 -12
  234. package/dist/codex/session/build.js.map +1 -1
  235. package/dist/codex/session/cleanup.d.ts +2 -2
  236. package/dist/codex/session/cleanup.d.ts.map +1 -1
  237. package/dist/codex/session/cleanup.js +8 -11
  238. package/dist/codex/session/cleanup.js.map +1 -1
  239. package/dist/codex/session/config-switch.d.ts +20 -0
  240. package/dist/codex/session/config-switch.d.ts.map +1 -0
  241. package/dist/codex/session/config-switch.js +42 -0
  242. package/dist/codex/session/config-switch.js.map +1 -0
  243. package/dist/codex/session/hooks.d.ts.map +1 -1
  244. package/dist/codex/session/hooks.js +7 -0
  245. package/dist/codex/session/hooks.js.map +1 -1
  246. package/dist/codex/session/index.d.ts.map +1 -1
  247. package/dist/codex/session/index.js +34 -16
  248. package/dist/codex/session/index.js.map +1 -1
  249. package/dist/codex/session/instance.d.ts +10 -12
  250. package/dist/codex/session/instance.d.ts.map +1 -1
  251. package/dist/codex/session/instance.js +42 -37
  252. package/dist/codex/session/instance.js.map +1 -1
  253. package/dist/codex/session/readiness.d.ts +11 -0
  254. package/dist/codex/session/readiness.d.ts.map +1 -0
  255. package/dist/codex/session/readiness.js +22 -0
  256. package/dist/codex/session/readiness.js.map +1 -0
  257. package/dist/codex/session/resume.d.ts.map +1 -1
  258. package/dist/codex/session/resume.js +9 -4
  259. package/dist/codex/session/resume.js.map +1 -1
  260. package/dist/codex/session/transcript.d.ts.map +1 -1
  261. package/dist/codex/session/transcript.js +12 -1
  262. package/dist/codex/session/transcript.js.map +1 -1
  263. package/dist/codex/session/turn-commit.d.ts +58 -0
  264. package/dist/codex/session/turn-commit.d.ts.map +1 -0
  265. package/dist/codex/session/turn-commit.js +97 -0
  266. package/dist/codex/session/turn-commit.js.map +1 -0
  267. package/dist/codex/session/warnings.d.ts +13 -6
  268. package/dist/codex/session/warnings.d.ts.map +1 -1
  269. package/dist/codex/session/warnings.js +36 -9
  270. package/dist/codex/session/warnings.js.map +1 -1
  271. package/dist/codex/startup-prompts.d.ts +3 -0
  272. package/dist/codex/startup-prompts.d.ts.map +1 -1
  273. package/dist/codex/startup-prompts.js +20 -13
  274. package/dist/codex/startup-prompts.js.map +1 -1
  275. package/dist/codex/startup-warnings.d.ts +2 -0
  276. package/dist/codex/startup-warnings.d.ts.map +1 -1
  277. package/dist/codex/startup-warnings.js +6 -0
  278. package/dist/codex/startup-warnings.js.map +1 -1
  279. package/dist/codex/transcript/payload.d.ts +8 -0
  280. package/dist/codex/transcript/payload.d.ts.map +1 -0
  281. package/dist/codex/transcript/payload.js +11 -0
  282. package/dist/codex/transcript/payload.js.map +1 -0
  283. package/dist/codex/transcript/rejection.d.ts +15 -0
  284. package/dist/codex/transcript/rejection.d.ts.map +1 -0
  285. package/dist/codex/transcript/rejection.js +44 -0
  286. package/dist/codex/transcript/rejection.js.map +1 -0
  287. package/dist/codex/transcript/turn-end.d.ts +8 -0
  288. package/dist/codex/transcript/turn-end.d.ts.map +1 -0
  289. package/dist/codex/transcript/turn-end.js +17 -0
  290. package/dist/codex/transcript/turn-end.js.map +1 -0
  291. package/dist/codex/transcript/watcher.d.ts +5 -2
  292. package/dist/codex/transcript/watcher.d.ts.map +1 -1
  293. package/dist/codex/transcript/watcher.js +11 -6
  294. package/dist/codex/transcript/watcher.js.map +1 -1
  295. package/dist/codex/trust-retry.d.ts +12 -0
  296. package/dist/codex/trust-retry.d.ts.map +1 -0
  297. package/dist/codex/trust-retry.js +12 -0
  298. package/dist/codex/trust-retry.js.map +1 -0
  299. package/dist/codex/update/skip-attempt.d.ts +2 -0
  300. package/dist/codex/update/skip-attempt.d.ts.map +1 -1
  301. package/dist/codex/update/skip-attempt.js +4 -0
  302. package/dist/codex/update/skip-attempt.js.map +1 -1
  303. package/dist/codex/update/tracker.d.ts +2 -0
  304. package/dist/codex/update/tracker.d.ts.map +1 -1
  305. package/dist/codex/update/tracker.js +4 -0
  306. package/dist/codex/update/tracker.js.map +1 -1
  307. package/dist/core/delay.d.ts +3 -2
  308. package/dist/core/delay.d.ts.map +1 -1
  309. package/dist/core/delay.js +3 -2
  310. package/dist/core/delay.js.map +1 -1
  311. package/dist/core/errors.d.ts +33 -4
  312. package/dist/core/errors.d.ts.map +1 -1
  313. package/dist/core/errors.js +51 -7
  314. package/dist/core/errors.js.map +1 -1
  315. package/dist/core/images/materialize.d.ts +13 -4
  316. package/dist/core/images/materialize.d.ts.map +1 -1
  317. package/dist/core/images/materialize.js +48 -11
  318. package/dist/core/images/materialize.js.map +1 -1
  319. package/dist/core/input/abort.d.ts +15 -0
  320. package/dist/core/input/abort.d.ts.map +1 -1
  321. package/dist/core/input/abort.js +18 -2
  322. package/dist/core/input/abort.js.map +1 -1
  323. package/dist/core/input/constants.d.ts +4 -1
  324. package/dist/core/input/constants.d.ts.map +1 -1
  325. package/dist/core/input/constants.js +4 -1
  326. package/dist/core/input/constants.js.map +1 -1
  327. package/dist/core/input/index.d.ts +1 -1
  328. package/dist/core/input/index.d.ts.map +1 -1
  329. package/dist/core/input/index.js +1 -1
  330. package/dist/core/input/index.js.map +1 -1
  331. package/dist/core/models/clearance.d.ts +38 -0
  332. package/dist/core/models/clearance.d.ts.map +1 -0
  333. package/dist/core/models/clearance.js +38 -0
  334. package/dist/core/models/clearance.js.map +1 -0
  335. package/dist/core/models/close-wait.d.ts +17 -0
  336. package/dist/core/models/close-wait.d.ts.map +1 -0
  337. package/dist/core/models/close-wait.js +44 -0
  338. package/dist/core/models/close-wait.js.map +1 -0
  339. package/dist/core/models/dialog-region.d.ts +18 -3
  340. package/dist/core/models/dialog-region.d.ts.map +1 -1
  341. package/dist/core/models/dialog-region.js +29 -40
  342. package/dist/core/models/dialog-region.js.map +1 -1
  343. package/dist/core/models/input.d.ts +10 -1
  344. package/dist/core/models/input.d.ts.map +1 -1
  345. package/dist/core/models/input.js +15 -2
  346. package/dist/core/models/input.js.map +1 -1
  347. package/dist/core/models/intervention.d.ts +2 -2
  348. package/dist/core/models/intervention.d.ts.map +1 -1
  349. package/dist/core/models/intervention.js +6 -3
  350. package/dist/core/models/intervention.js.map +1 -1
  351. package/dist/core/models/own-picker.d.ts +21 -0
  352. package/dist/core/models/own-picker.d.ts.map +1 -0
  353. package/dist/core/models/own-picker.js +21 -0
  354. package/dist/core/models/own-picker.js.map +1 -0
  355. package/dist/core/models/picker.d.ts +34 -4
  356. package/dist/core/models/picker.d.ts.map +1 -1
  357. package/dist/core/models/picker.js +50 -44
  358. package/dist/core/models/picker.js.map +1 -1
  359. package/dist/core/models/row-block.d.ts +66 -0
  360. package/dist/core/models/row-block.d.ts.map +1 -0
  361. package/dist/core/models/row-block.js +87 -0
  362. package/dist/core/models/row-block.js.map +1 -0
  363. package/dist/core/models/rows.d.ts +32 -3
  364. package/dist/core/models/rows.d.ts.map +1 -1
  365. package/dist/core/models/rows.js +48 -20
  366. package/dist/core/models/rows.js.map +1 -1
  367. package/dist/core/models/tui-screen.d.ts +6 -1
  368. package/dist/core/models/tui-screen.d.ts.map +1 -1
  369. package/dist/core/models/tui-screen.js +25 -10
  370. package/dist/core/models/tui-screen.js.map +1 -1
  371. package/dist/core/models/window.d.ts +49 -0
  372. package/dist/core/models/window.d.ts.map +1 -0
  373. package/dist/core/models/window.js +105 -0
  374. package/dist/core/models/window.js.map +1 -0
  375. package/dist/core/path-trust.d.ts +11 -0
  376. package/dist/core/path-trust.d.ts.map +1 -0
  377. package/dist/core/path-trust.js +21 -0
  378. package/dist/core/path-trust.js.map +1 -0
  379. package/dist/core/screen-facts.d.ts +3 -1
  380. package/dist/core/screen-facts.d.ts.map +1 -1
  381. package/dist/core/screen-facts.js +1 -0
  382. package/dist/core/screen-facts.js.map +1 -1
  383. package/dist/core/simple/boundary-signal.d.ts +41 -6
  384. package/dist/core/simple/boundary-signal.d.ts.map +1 -1
  385. package/dist/core/simple/boundary-signal.js +43 -3
  386. package/dist/core/simple/boundary-signal.js.map +1 -1
  387. package/dist/core/simple/close.d.ts +2 -1
  388. package/dist/core/simple/close.d.ts.map +1 -1
  389. package/dist/core/simple/close.js +10 -2
  390. package/dist/core/simple/close.js.map +1 -1
  391. package/dist/core/simple/turn-boundary.d.ts +2 -0
  392. package/dist/core/simple/turn-boundary.d.ts.map +1 -1
  393. package/dist/core/simple/turn-boundary.js +1 -1
  394. package/dist/core/simple/turn-boundary.js.map +1 -1
  395. package/dist/core/simple/turn-types.d.ts +9 -3
  396. package/dist/core/simple/turn-types.d.ts.map +1 -1
  397. package/dist/core/simple/turn-types.js +10 -2
  398. package/dist/core/simple/turn-types.js.map +1 -1
  399. package/dist/core/simple/turn.d.ts +2 -0
  400. package/dist/core/simple/turn.d.ts.map +1 -1
  401. package/dist/core/simple/turn.js +11 -5
  402. package/dist/core/simple/turn.js.map +1 -1
  403. package/dist/core/terminal-options.d.ts +17 -1
  404. package/dist/core/terminal-options.d.ts.map +1 -1
  405. package/dist/core/terminal-options.js +20 -8
  406. package/dist/core/terminal-options.js.map +1 -1
  407. package/dist/core/transcript/cursor-io.d.ts +8 -0
  408. package/dist/core/transcript/cursor-io.d.ts.map +1 -1
  409. package/dist/core/transcript/cursor-io.js +11 -5
  410. package/dist/core/transcript/cursor-io.js.map +1 -1
  411. package/dist/core/transcript/cursor.d.ts +28 -4
  412. package/dist/core/transcript/cursor.d.ts.map +1 -1
  413. package/dist/core/transcript/cursor.js +53 -7
  414. package/dist/core/transcript/cursor.js.map +1 -1
  415. package/dist/core/transcript/drain.d.ts +43 -0
  416. package/dist/core/transcript/drain.d.ts.map +1 -0
  417. package/dist/core/transcript/drain.js +67 -0
  418. package/dist/core/transcript/drain.js.map +1 -0
  419. package/dist/core/trust/abortable.d.ts +12 -0
  420. package/dist/core/trust/abortable.d.ts.map +1 -0
  421. package/dist/core/trust/abortable.js +48 -0
  422. package/dist/core/trust/abortable.js.map +1 -0
  423. package/dist/core/trust/allowlist.d.ts +2 -0
  424. package/dist/core/trust/allowlist.d.ts.map +1 -1
  425. package/dist/core/trust/allowlist.js +4 -1
  426. package/dist/core/trust/allowlist.js.map +1 -1
  427. package/dist/core/trust/blocking.d.ts +11 -0
  428. package/dist/core/trust/blocking.d.ts.map +1 -1
  429. package/dist/core/trust/blocking.js +5 -4
  430. package/dist/core/trust/blocking.js.map +1 -1
  431. package/dist/core/trust/copy.d.ts.map +1 -1
  432. package/dist/core/trust/copy.js +7 -1
  433. package/dist/core/trust/copy.js.map +1 -1
  434. package/dist/core/trust/deadline.d.ts +24 -0
  435. package/dist/core/trust/deadline.d.ts.map +1 -0
  436. package/dist/core/trust/deadline.js +56 -0
  437. package/dist/core/trust/deadline.js.map +1 -0
  438. package/dist/core/trust/dialog.d.ts +11 -2
  439. package/dist/core/trust/dialog.d.ts.map +1 -1
  440. package/dist/core/trust/dialog.js +12 -3
  441. package/dist/core/trust/dialog.js.map +1 -1
  442. package/dist/core/trust/options.d.ts +5 -1
  443. package/dist/core/trust/options.d.ts.map +1 -1
  444. package/dist/core/trust/options.js +8 -2
  445. package/dist/core/trust/options.js.map +1 -1
  446. package/dist/core/trust/prompts.d.ts +3 -0
  447. package/dist/core/trust/prompts.d.ts.map +1 -1
  448. package/dist/core/trust/prompts.js +2 -1
  449. package/dist/core/trust/prompts.js.map +1 -1
  450. package/dist/core/trust/responder.d.ts +10 -5
  451. package/dist/core/trust/responder.d.ts.map +1 -1
  452. package/dist/core/trust/responder.js +37 -33
  453. package/dist/core/trust/responder.js.map +1 -1
  454. package/dist/core/trust/step.d.ts +67 -0
  455. package/dist/core/trust/step.d.ts.map +1 -0
  456. package/dist/core/trust/step.js +45 -0
  457. package/dist/core/trust/step.js.map +1 -0
  458. package/dist/core/trust/types.d.ts +21 -1
  459. package/dist/core/trust/types.d.ts.map +1 -1
  460. package/dist/core/trust/types.js +25 -1
  461. package/dist/core/trust/types.js.map +1 -1
  462. package/dist/core/trust/view.d.ts +2 -0
  463. package/dist/core/trust/view.d.ts.map +1 -1
  464. package/dist/core/trust/view.js +3 -0
  465. package/dist/core/trust/view.js.map +1 -1
  466. package/dist/core/trust/write.d.ts +31 -6
  467. package/dist/core/trust/write.d.ts.map +1 -1
  468. package/dist/core/trust/write.js +95 -80
  469. package/dist/core/trust/write.js.map +1 -1
  470. package/dist/core/turn-state.d.ts +18 -4
  471. package/dist/core/turn-state.d.ts.map +1 -1
  472. package/dist/core/turn-state.js +47 -25
  473. package/dist/core/turn-state.js.map +1 -1
  474. package/dist/core/warnings/images.d.ts +22 -0
  475. package/dist/core/warnings/images.d.ts.map +1 -0
  476. package/dist/core/warnings/images.js +3 -0
  477. package/dist/core/warnings/images.js.map +1 -0
  478. package/dist/core/warnings/index.d.ts +3 -2
  479. package/dist/core/warnings/index.d.ts.map +1 -1
  480. package/dist/core/warnings/lifecycle.d.ts +35 -4
  481. package/dist/core/warnings/lifecycle.d.ts.map +1 -1
  482. package/dist/core/warnings/lifecycle.js +1 -1
  483. package/dist/core/warnings/update.d.ts +8 -4
  484. package/dist/core/warnings/update.d.ts.map +1 -1
  485. package/dist/core/warnings/update.js +21 -6
  486. package/dist/core/warnings/update.js.map +1 -1
  487. package/dist/pty/exit-latch.d.ts +28 -0
  488. package/dist/pty/exit-latch.d.ts.map +1 -0
  489. package/dist/pty/exit-latch.js +50 -0
  490. package/dist/pty/exit-latch.js.map +1 -0
  491. package/dist/runtime/exit-status.d.ts +7 -0
  492. package/dist/runtime/exit-status.d.ts.map +1 -0
  493. package/dist/runtime/exit-status.js +13 -0
  494. package/dist/runtime/exit-status.js.map +1 -0
  495. package/dist/runtime/home-guard/index.d.ts +45 -0
  496. package/dist/runtime/home-guard/index.d.ts.map +1 -0
  497. package/dist/runtime/home-guard/index.js +69 -0
  498. package/dist/runtime/home-guard/index.js.map +1 -0
  499. package/dist/runtime/loop-restore.d.ts +9 -9
  500. package/dist/runtime/loop-restore.d.ts.map +1 -1
  501. package/dist/runtime/loop-restore.js +10 -10
  502. package/dist/runtime/loop-restore.js.map +1 -1
  503. package/dist/runtime/probe/capped-buffer.d.ts +16 -0
  504. package/dist/runtime/probe/capped-buffer.d.ts.map +1 -0
  505. package/dist/runtime/probe/capped-buffer.js +38 -0
  506. package/dist/runtime/probe/capped-buffer.js.map +1 -0
  507. package/dist/runtime/probe/capture.d.ts +55 -0
  508. package/dist/runtime/probe/capture.d.ts.map +1 -0
  509. package/dist/runtime/probe/capture.js +71 -0
  510. package/dist/runtime/probe/capture.js.map +1 -0
  511. package/dist/runtime/{probe-cleanup.d.ts → probe/cleanup.d.ts} +2 -2
  512. package/dist/runtime/probe/cleanup.d.ts.map +1 -0
  513. package/dist/runtime/{probe-cleanup.js → probe/cleanup.js} +3 -3
  514. package/dist/runtime/probe/cleanup.js.map +1 -0
  515. package/dist/runtime/probe/directory-key.d.ts +26 -0
  516. package/dist/runtime/probe/directory-key.d.ts.map +1 -0
  517. package/dist/runtime/probe/directory-key.js +46 -0
  518. package/dist/runtime/probe/directory-key.js.map +1 -0
  519. package/dist/runtime/probe/index.d.ts +25 -0
  520. package/dist/runtime/probe/index.d.ts.map +1 -0
  521. package/dist/runtime/probe/index.js +153 -0
  522. package/dist/runtime/probe/index.js.map +1 -0
  523. package/dist/runtime/probe/lookup.d.ts +12 -0
  524. package/dist/runtime/probe/lookup.d.ts.map +1 -0
  525. package/dist/runtime/probe/lookup.js +29 -0
  526. package/dist/runtime/probe/lookup.js.map +1 -0
  527. package/dist/runtime/probe/named-pipes.d.ts +35 -0
  528. package/dist/runtime/probe/named-pipes.d.ts.map +1 -0
  529. package/dist/runtime/probe/named-pipes.js +167 -0
  530. package/dist/runtime/probe/named-pipes.js.map +1 -0
  531. package/dist/runtime/probe/private-directory.d.ts +14 -0
  532. package/dist/runtime/probe/private-directory.d.ts.map +1 -0
  533. package/dist/runtime/probe/private-directory.js +50 -0
  534. package/dist/runtime/probe/private-directory.js.map +1 -0
  535. package/dist/runtime/probe/results.d.ts +14 -0
  536. package/dist/runtime/probe/results.d.ts.map +1 -0
  537. package/dist/runtime/probe/results.js +38 -0
  538. package/dist/runtime/probe/results.js.map +1 -0
  539. package/dist/runtime/probe/slots.d.ts +17 -0
  540. package/dist/runtime/probe/slots.d.ts.map +1 -0
  541. package/dist/runtime/probe/slots.js +35 -0
  542. package/dist/runtime/probe/slots.js.map +1 -0
  543. package/dist/runtime/probe/start.d.ts +64 -0
  544. package/dist/runtime/probe/start.d.ts.map +1 -0
  545. package/dist/runtime/probe/start.js +80 -0
  546. package/dist/runtime/probe/start.js.map +1 -0
  547. package/dist/runtime/probe-cache.d.ts +19 -0
  548. package/dist/runtime/probe-cache.d.ts.map +1 -0
  549. package/dist/runtime/probe-cache.js +56 -0
  550. package/dist/runtime/probe-cache.js.map +1 -0
  551. package/dist/runtime/readiness/initial-ready.d.ts +31 -5
  552. package/dist/runtime/readiness/initial-ready.d.ts.map +1 -1
  553. package/dist/runtime/readiness/initial-ready.js +64 -18
  554. package/dist/runtime/readiness/initial-ready.js.map +1 -1
  555. package/dist/runtime/seams.d.ts +14 -2
  556. package/dist/runtime/seams.d.ts.map +1 -1
  557. package/dist/runtime/seams.js +2 -2
  558. package/dist/runtime/seams.js.map +1 -1
  559. package/dist/runtime/session/base.d.ts.map +1 -1
  560. package/dist/runtime/session/base.js +6 -5
  561. package/dist/runtime/session/base.js.map +1 -1
  562. package/dist/runtime/session/commands.d.ts +5 -3
  563. package/dist/runtime/session/commands.d.ts.map +1 -1
  564. package/dist/runtime/session/commands.js +5 -2
  565. package/dist/runtime/session/commands.js.map +1 -1
  566. package/dist/runtime/session/frames.d.ts +12 -2
  567. package/dist/runtime/session/frames.d.ts.map +1 -1
  568. package/dist/runtime/session/frames.js +10 -3
  569. package/dist/runtime/session/frames.js.map +1 -1
  570. package/dist/runtime/session/image-attach.js +7 -2
  571. package/dist/runtime/session/image-attach.js.map +1 -1
  572. package/dist/runtime/session/launch-directory.d.ts +33 -0
  573. package/dist/runtime/session/launch-directory.d.ts.map +1 -0
  574. package/dist/runtime/session/launch-directory.js +84 -0
  575. package/dist/runtime/session/launch-directory.js.map +1 -0
  576. package/dist/runtime/session/lifecycle.d.ts +3 -3
  577. package/dist/runtime/session/lifecycle.d.ts.map +1 -1
  578. package/dist/runtime/session/lifecycle.js +1 -5
  579. package/dist/runtime/session/lifecycle.js.map +1 -1
  580. package/dist/runtime/session/loops.d.ts +1 -1
  581. package/dist/runtime/session/loops.d.ts.map +1 -1
  582. package/dist/runtime/session/loops.js +6 -3
  583. package/dist/runtime/session/loops.js.map +1 -1
  584. package/dist/runtime/session/picker-cleanup.d.ts +6 -21
  585. package/dist/runtime/session/picker-cleanup.d.ts.map +1 -1
  586. package/dist/runtime/session/picker-cleanup.js +19 -31
  587. package/dist/runtime/session/picker-cleanup.js.map +1 -1
  588. package/dist/runtime/session/picker-hold.d.ts +24 -0
  589. package/dist/runtime/session/picker-hold.d.ts.map +1 -0
  590. package/dist/runtime/session/picker-hold.js +42 -0
  591. package/dist/runtime/session/picker-hold.js.map +1 -0
  592. package/dist/runtime/session/picker.d.ts +13 -11
  593. package/dist/runtime/session/picker.d.ts.map +1 -1
  594. package/dist/runtime/session/picker.js +46 -24
  595. package/dist/runtime/session/picker.js.map +1 -1
  596. package/dist/runtime/session/prepare-state.d.ts +6 -0
  597. package/dist/runtime/session/prepare-state.d.ts.map +1 -0
  598. package/dist/runtime/session/prepare-state.js +14 -0
  599. package/dist/runtime/session/prepare-state.js.map +1 -0
  600. package/dist/runtime/session/questions.d.ts +2 -2
  601. package/dist/runtime/session/questions.d.ts.map +1 -1
  602. package/dist/runtime/session/questions.js.map +1 -1
  603. package/dist/runtime/session/readiness.d.ts +14 -5
  604. package/dist/runtime/session/readiness.d.ts.map +1 -1
  605. package/dist/runtime/session/readiness.js +22 -6
  606. package/dist/runtime/session/readiness.js.map +1 -1
  607. package/dist/runtime/session/reap.d.ts +11 -7
  608. package/dist/runtime/session/reap.d.ts.map +1 -1
  609. package/dist/runtime/session/reap.js +16 -10
  610. package/dist/runtime/session/reap.js.map +1 -1
  611. package/dist/runtime/session/runtime-cleanup.d.ts +18 -0
  612. package/dist/runtime/session/runtime-cleanup.d.ts.map +1 -0
  613. package/dist/runtime/session/runtime-cleanup.js +18 -0
  614. package/dist/runtime/session/runtime-cleanup.js.map +1 -0
  615. package/dist/runtime/session/session-input.d.ts +32 -0
  616. package/dist/runtime/session/session-input.d.ts.map +1 -0
  617. package/dist/runtime/session/{picker-input.js → session-input.js} +35 -7
  618. package/dist/runtime/session/session-input.js.map +1 -0
  619. package/dist/runtime/session/shutdown-binding.d.ts +12 -1
  620. package/dist/runtime/session/shutdown-binding.d.ts.map +1 -1
  621. package/dist/runtime/session/shutdown-binding.js +33 -1
  622. package/dist/runtime/session/shutdown-binding.js.map +1 -1
  623. package/dist/runtime/session/shutdown-cleanup.d.ts +17 -0
  624. package/dist/runtime/session/shutdown-cleanup.d.ts.map +1 -0
  625. package/dist/runtime/session/shutdown-cleanup.js +49 -0
  626. package/dist/runtime/session/shutdown-cleanup.js.map +1 -0
  627. package/dist/runtime/session/shutdown.d.ts +3 -2
  628. package/dist/runtime/session/shutdown.d.ts.map +1 -1
  629. package/dist/runtime/session/shutdown.js +13 -24
  630. package/dist/runtime/session/shutdown.js.map +1 -1
  631. package/dist/runtime/shell-quote.d.ts +8 -0
  632. package/dist/runtime/shell-quote.d.ts.map +1 -0
  633. package/dist/runtime/shell-quote.js +10 -0
  634. package/dist/runtime/shell-quote.js.map +1 -0
  635. package/dist/runtime/shell.d.ts +36 -12
  636. package/dist/runtime/shell.d.ts.map +1 -1
  637. package/dist/runtime/shell.js +90 -14
  638. package/dist/runtime/shell.js.map +1 -1
  639. package/dist/runtime/shutdown/coalesce.d.ts +15 -0
  640. package/dist/runtime/shutdown/coalesce.d.ts.map +1 -0
  641. package/dist/runtime/shutdown/coalesce.js +42 -0
  642. package/dist/runtime/shutdown/coalesce.js.map +1 -0
  643. package/dist/runtime/shutdown/detached-sweep/failures.d.ts +24 -0
  644. package/dist/runtime/shutdown/detached-sweep/failures.d.ts.map +1 -0
  645. package/dist/runtime/shutdown/detached-sweep/failures.js +32 -0
  646. package/dist/runtime/shutdown/detached-sweep/failures.js.map +1 -0
  647. package/dist/runtime/shutdown/detached-sweep/index.d.ts +55 -0
  648. package/dist/runtime/shutdown/detached-sweep/index.d.ts.map +1 -0
  649. package/dist/runtime/shutdown/detached-sweep/index.js +129 -0
  650. package/dist/runtime/shutdown/detached-sweep/index.js.map +1 -0
  651. package/dist/runtime/shutdown/detached-sweep/kill.d.ts +37 -0
  652. package/dist/runtime/shutdown/detached-sweep/kill.d.ts.map +1 -0
  653. package/dist/runtime/shutdown/detached-sweep/kill.js +87 -0
  654. package/dist/runtime/shutdown/detached-sweep/kill.js.map +1 -0
  655. package/dist/runtime/shutdown/detached-sweep/record.d.ts +67 -0
  656. package/dist/runtime/shutdown/detached-sweep/record.d.ts.map +1 -0
  657. package/dist/runtime/shutdown/detached-sweep/record.js +111 -0
  658. package/dist/runtime/shutdown/detached-sweep/record.js.map +1 -0
  659. package/dist/runtime/shutdown/detached-sweep/rounds.d.ts +78 -0
  660. package/dist/runtime/shutdown/detached-sweep/rounds.d.ts.map +1 -0
  661. package/dist/runtime/shutdown/detached-sweep/rounds.js +116 -0
  662. package/dist/runtime/shutdown/detached-sweep/rounds.js.map +1 -0
  663. package/dist/runtime/shutdown/detached-sweep/survivors.d.ts +40 -0
  664. package/dist/runtime/shutdown/detached-sweep/survivors.d.ts.map +1 -0
  665. package/dist/runtime/shutdown/detached-sweep/survivors.js +112 -0
  666. package/dist/runtime/shutdown/detached-sweep/survivors.js.map +1 -0
  667. package/dist/runtime/shutdown/leader-group.d.ts +29 -0
  668. package/dist/runtime/shutdown/leader-group.d.ts.map +1 -0
  669. package/dist/runtime/shutdown/leader-group.js +35 -0
  670. package/dist/runtime/shutdown/leader-group.js.map +1 -0
  671. package/dist/runtime/shutdown/native-read-admission.d.ts +13 -0
  672. package/dist/runtime/shutdown/native-read-admission.d.ts.map +1 -0
  673. package/dist/runtime/shutdown/native-read-admission.js +64 -0
  674. package/dist/runtime/shutdown/native-read-admission.js.map +1 -0
  675. package/dist/runtime/shutdown/process-table.d.ts +80 -0
  676. package/dist/runtime/shutdown/process-table.d.ts.map +1 -0
  677. package/dist/runtime/shutdown/process-table.js +147 -0
  678. package/dist/runtime/shutdown/process-table.js.map +1 -0
  679. package/dist/runtime/shutdown/process-tree-ops.d.ts +39 -0
  680. package/dist/runtime/shutdown/process-tree-ops.d.ts.map +1 -0
  681. package/dist/runtime/shutdown/process-tree-ops.js +73 -0
  682. package/dist/runtime/shutdown/process-tree-ops.js.map +1 -0
  683. package/dist/runtime/shutdown/read-timeout.d.ts +4 -0
  684. package/dist/runtime/shutdown/read-timeout.d.ts.map +1 -0
  685. package/dist/runtime/shutdown/read-timeout.js +6 -0
  686. package/dist/runtime/shutdown/read-timeout.js.map +1 -0
  687. package/dist/runtime/shutdown/reap-queue.d.ts +10 -0
  688. package/dist/runtime/shutdown/reap-queue.d.ts.map +1 -0
  689. package/dist/runtime/shutdown/reap-queue.js +29 -0
  690. package/dist/runtime/shutdown/reap-queue.js.map +1 -0
  691. package/dist/runtime/shutdown/reap-tree.d.ts +42 -32
  692. package/dist/runtime/shutdown/reap-tree.d.ts.map +1 -1
  693. package/dist/runtime/shutdown/reap-tree.js +78 -71
  694. package/dist/runtime/shutdown/reap-tree.js.map +1 -1
  695. package/dist/runtime/shutdown/shared-daemon.d.ts +59 -0
  696. package/dist/runtime/shutdown/shared-daemon.d.ts.map +1 -0
  697. package/dist/runtime/shutdown/shared-daemon.js +139 -0
  698. package/dist/runtime/shutdown/shared-daemon.js.map +1 -0
  699. package/dist/runtime/shutdown/teardown.d.ts +15 -0
  700. package/dist/runtime/shutdown/teardown.d.ts.map +1 -1
  701. package/dist/runtime/shutdown/teardown.js +19 -6
  702. package/dist/runtime/shutdown/teardown.js.map +1 -1
  703. package/dist/runtime/shutdown/terminate.d.ts +21 -1
  704. package/dist/runtime/shutdown/terminate.d.ts.map +1 -1
  705. package/dist/runtime/shutdown/terminate.js +83 -56
  706. package/dist/runtime/shutdown/terminate.js.map +1 -1
  707. package/dist/runtime/startup/buffer.d.ts +26 -7
  708. package/dist/runtime/startup/buffer.d.ts.map +1 -1
  709. package/dist/runtime/startup/buffer.js +42 -19
  710. package/dist/runtime/startup/buffer.js.map +1 -1
  711. package/dist/runtime/startup/cleanup.d.ts +37 -11
  712. package/dist/runtime/startup/cleanup.d.ts.map +1 -1
  713. package/dist/runtime/startup/cleanup.js +55 -25
  714. package/dist/runtime/startup/cleanup.js.map +1 -1
  715. package/dist/runtime/startup/index.d.ts +13 -1
  716. package/dist/runtime/startup/index.d.ts.map +1 -1
  717. package/dist/runtime/startup/index.js +38 -6
  718. package/dist/runtime/startup/index.js.map +1 -1
  719. package/dist/runtime/stream-marker.d.ts +17 -0
  720. package/dist/runtime/stream-marker.d.ts.map +1 -0
  721. package/dist/runtime/stream-marker.js +35 -0
  722. package/dist/runtime/stream-marker.js.map +1 -0
  723. package/dist/runtime/update/acquire.d.ts +16 -0
  724. package/dist/runtime/update/acquire.d.ts.map +1 -0
  725. package/dist/runtime/update/acquire.js +62 -0
  726. package/dist/runtime/update/acquire.js.map +1 -0
  727. package/dist/runtime/update/completion.d.ts +12 -0
  728. package/dist/runtime/update/completion.d.ts.map +1 -0
  729. package/dist/runtime/update/completion.js +50 -0
  730. package/dist/runtime/update/completion.js.map +1 -0
  731. package/dist/runtime/update/lock.d.ts +1 -1
  732. package/dist/runtime/update/lock.d.ts.map +1 -1
  733. package/dist/runtime/update/lock.js +21 -38
  734. package/dist/runtime/update/lock.js.map +1 -1
  735. package/dist/runtime/update/once.d.ts +16 -13
  736. package/dist/runtime/update/once.d.ts.map +1 -1
  737. package/dist/runtime/update/once.js +41 -31
  738. package/dist/runtime/update/once.js.map +1 -1
  739. package/dist/runtime/update/owner.js +1 -1
  740. package/dist/runtime/update/retained-lease.js +1 -1
  741. package/dist/runtime/update/waiting.d.ts +14 -1
  742. package/dist/runtime/update/waiting.d.ts.map +1 -1
  743. package/dist/runtime/update/waiting.js +20 -12
  744. package/dist/runtime/update/waiting.js.map +1 -1
  745. package/dist/state/canonical-path.d.ts +5 -0
  746. package/dist/state/canonical-path.d.ts.map +1 -1
  747. package/dist/state/canonical-path.js +11 -5
  748. package/dist/state/canonical-path.js.map +1 -1
  749. package/dist/state/directories.d.ts +31 -1
  750. package/dist/state/directories.d.ts.map +1 -1
  751. package/dist/state/directories.js +75 -13
  752. package/dist/state/directories.js.map +1 -1
  753. package/dist/state/files.d.ts +3 -3
  754. package/dist/state/files.d.ts.map +1 -1
  755. package/dist/state/files.js +4 -10
  756. package/dist/state/files.js.map +1 -1
  757. package/dist/state/launch-ownership.d.ts +4 -2
  758. package/dist/state/launch-ownership.d.ts.map +1 -1
  759. package/dist/state/launch-ownership.js +18 -10
  760. package/dist/state/launch-ownership.js.map +1 -1
  761. package/dist/state/launch-publication.d.ts +7 -1
  762. package/dist/state/launch-publication.d.ts.map +1 -1
  763. package/dist/state/launch-publication.js +14 -2
  764. package/dist/state/launch-publication.js.map +1 -1
  765. package/dist/state/loop-store.d.ts +15 -4
  766. package/dist/state/loop-store.d.ts.map +1 -1
  767. package/dist/state/loop-store.js +13 -7
  768. package/dist/state/loop-store.js.map +1 -1
  769. package/dist/state/preparation/created-directories.d.ts +13 -0
  770. package/dist/state/preparation/created-directories.d.ts.map +1 -0
  771. package/dist/state/preparation/created-directories.js +45 -0
  772. package/dist/state/preparation/created-directories.js.map +1 -0
  773. package/dist/state/preparation/ignore-sync.d.ts +9 -0
  774. package/dist/state/preparation/ignore-sync.d.ts.map +1 -0
  775. package/dist/state/preparation/ignore-sync.js +47 -0
  776. package/dist/state/preparation/ignore-sync.js.map +1 -0
  777. package/dist/state/preparation/index.d.ts +25 -0
  778. package/dist/state/preparation/index.d.ts.map +1 -0
  779. package/dist/state/preparation/index.js +31 -0
  780. package/dist/state/preparation/index.js.map +1 -0
  781. package/dist/state/preparation/install-ignore.d.ts +6 -0
  782. package/dist/state/preparation/install-ignore.d.ts.map +1 -0
  783. package/dist/state/preparation/install-ignore.js +87 -0
  784. package/dist/state/preparation/install-ignore.js.map +1 -0
  785. package/dist/state/preparation/rollback-parent.d.ts +3 -0
  786. package/dist/state/preparation/rollback-parent.d.ts.map +1 -0
  787. package/dist/state/preparation/rollback-parent.js +18 -0
  788. package/dist/state/preparation/rollback-parent.js.map +1 -0
  789. package/dist/state/preparation/root-trust.d.ts +3 -0
  790. package/dist/state/preparation/root-trust.d.ts.map +1 -0
  791. package/dist/state/preparation/root-trust.js +70 -0
  792. package/dist/state/preparation/root-trust.js.map +1 -0
  793. package/dist/state/private-session.d.ts +5 -2
  794. package/dist/state/private-session.d.ts.map +1 -1
  795. package/dist/state/private-session.js +21 -9
  796. package/dist/state/private-session.js.map +1 -1
  797. package/dist/state/root.d.ts +25 -0
  798. package/dist/state/root.d.ts.map +1 -0
  799. package/dist/state/root.js +84 -0
  800. package/dist/state/root.js.map +1 -0
  801. package/dist/state/runtime-paths.d.ts +5 -4
  802. package/dist/state/runtime-paths.d.ts.map +1 -1
  803. package/dist/state/runtime-paths.js +5 -4
  804. package/dist/state/runtime-paths.js.map +1 -1
  805. package/dist/state/setup-failure.d.ts +3 -0
  806. package/dist/state/setup-failure.d.ts.map +1 -0
  807. package/dist/state/setup-failure.js +13 -0
  808. package/dist/state/setup-failure.js.map +1 -0
  809. package/dist/state/socket-home.d.ts +17 -12
  810. package/dist/state/socket-home.d.ts.map +1 -1
  811. package/dist/state/socket-home.js +31 -14
  812. package/dist/state/socket-home.js.map +1 -1
  813. package/dist/state/store.d.ts +1 -3
  814. package/dist/state/store.d.ts.map +1 -1
  815. package/dist/state/store.js +3 -18
  816. package/dist/state/store.js.map +1 -1
  817. package/dist/terminal/headless.d.ts +1 -1
  818. package/dist/terminal/headless.d.ts.map +1 -1
  819. package/dist/terminal/headless.js +1 -3
  820. package/dist/terminal/headless.js.map +1 -1
  821. package/docs/cli-behavior.md +1218 -28
  822. package/docs/cli.md +2 -0
  823. package/docs/codex/cli.md +4 -2
  824. package/package.json +4 -4
  825. package/prd/04-architecture.md +32 -0
  826. package/prd/05-api/5.1-starting-claude.md +17 -1
  827. package/prd/05-api/5.2-resuming-claude.md +5 -0
  828. package/prd/05-api/5.3-claude-session-api.md +267 -40
  829. package/prd/05-api/5.4-events.md +77 -10
  830. package/prd/05-api/5.5-starting-codex.md +3 -1
  831. package/prd/05-api/5.6-resuming-codex.md +4 -1
  832. package/prd/05-api/5.7-codex-session-api.md +87 -5
  833. package/prd/05-api/5.8-session-api.md +32 -1
  834. package/prd/06-claude-hook-bridge.md +2 -0
  835. package/prd/07a-codex-hook-bridge.md +5 -0
  836. package/prd/08-state.md +63 -7
  837. package/prd/09-lifecycle.md +126 -35
  838. package/prd/10-errors.md +11 -4
  839. package/prd/12-e2e.md +81 -0
  840. package/prd/12a-cli.md +63 -9
  841. package/prd/14-conformance.md +52 -35
  842. package/prd/16-maintainer-review.md +11 -0
  843. package/dist/claude/model-composer.d.ts +0 -2
  844. package/dist/claude/model-composer.d.ts.map +0 -1
  845. package/dist/claude/model-composer.js +0 -12
  846. package/dist/claude/model-composer.js.map +0 -1
  847. package/dist/claude/transcript/drain.d.ts +0 -33
  848. package/dist/claude/transcript/drain.d.ts.map +0 -1
  849. package/dist/claude/transcript/drain.js +0 -56
  850. package/dist/claude/transcript/drain.js.map +0 -1
  851. package/dist/codex/session/cli-exit.d.ts +0 -24
  852. package/dist/codex/session/cli-exit.d.ts.map +0 -1
  853. package/dist/codex/session/cli-exit.js +0 -43
  854. package/dist/codex/session/cli-exit.js.map +0 -1
  855. package/dist/codex/transcript/drain.d.ts +0 -30
  856. package/dist/codex/transcript/drain.d.ts.map +0 -1
  857. package/dist/codex/transcript/drain.js +0 -48
  858. package/dist/codex/transcript/drain.js.map +0 -1
  859. package/dist/runtime/probe-cleanup.d.ts.map +0 -1
  860. package/dist/runtime/probe-cleanup.js.map +0 -1
  861. package/dist/runtime/probe.d.ts +0 -11
  862. package/dist/runtime/probe.d.ts.map +0 -1
  863. package/dist/runtime/probe.js +0 -113
  864. package/dist/runtime/probe.js.map +0 -1
  865. package/dist/runtime/session/foreign-picker.d.ts +0 -8
  866. package/dist/runtime/session/foreign-picker.d.ts.map +0 -1
  867. package/dist/runtime/session/foreign-picker.js +0 -18
  868. package/dist/runtime/session/foreign-picker.js.map +0 -1
  869. package/dist/runtime/session/picker-input.d.ts +0 -17
  870. package/dist/runtime/session/picker-input.d.ts.map +0 -1
  871. package/dist/runtime/session/picker-input.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-release.js","sourceRoot":"","sources":["../../src/bridge/socket-release.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAI9D,0FAA0F;AAC1F,MAAM,UAAU,qBAAqB,CACnC,OAAsD;IAEtD,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C,OAAO;YACL,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Claude's prompt-box border in a named session (PRD §5.3, C-TRUST-01, C-QUESTION-03).
3
+ *
4
+ * `claude --name` (Elwood's `name` option) insets the session's label near the right end
5
+ * of the prompt box's border: `──── Question Asker ─`. It sits on the composer's top rule
6
+ * while the composer is shown, and on the border under a questionnaire's footer while a
7
+ * dialog replaces the composer. The other rules stay plain.
8
+ */
9
+ /** The inset label after a rule's dashes (` Question Asker ─`), as a single-line fragment. */
10
+ export declare const claudeNamedLabel: string;
11
+ export declare const claudeNamedBorder: RegExp;
12
+ //# sourceMappingURL=border.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"border.d.ts","sourceRoot":"","sources":["../../../src/claude/composer/border.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,QAA6B,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAA2D,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Claude's prompt-box border in a named session (PRD §5.3, C-TRUST-01, C-QUESTION-03).
3
+ *
4
+ * `claude --name` (Elwood's `name` option) insets the session's label near the right end
5
+ * of the prompt box's border: `──── Question Asker ─`. It sits on the composer's top rule
6
+ * while the composer is shown, and on the border under a questionnaire's footer while a
7
+ * dialog replaces the composer. The other rules stay plain.
8
+ */
9
+ /** The inset label after a rule's dashes (` Question Asker ─`), as a single-line fragment. */
10
+ export const claudeNamedLabel = String.raw ` \S[^\n]* [─━]`;
11
+ export const claudeNamedBorder = new RegExp(String.raw `^[─━]{3,}${claudeNamedLabel}\s*$`);
12
+ //# sourceMappingURL=border.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"border.js","sourceRoot":"","sources":["../../../src/claude/composer/border.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8FAA8F;AAC9F,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA,gBAAgB,CAAC;AAC3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,YAAY,gBAAgB,MAAM,CAAC,CAAC"}
@@ -1,4 +1,19 @@
1
1
  import type { ElwoodTerminal } from "../../terminal/headless.ts";
2
2
  export declare function claudeEmptyInputFrame(terminal: ElwoodTerminal): import("../../index.ts").TerminalSnapshot | undefined;
3
+ /**
4
+ * Whether viewport `rows` show Claude's live, empty composer (PRD §5.3, §5.4; C-API-56).
5
+ *
6
+ * `cursorRow` is the viewport index of the terminal cursor's row. That row must be the empty
7
+ * `❯` composer, with the composer's top rule (plain, or labelled by a named session) at
8
+ * `cursorRow - 1` and a plain bottom rule at `cursorRow + 1`.
9
+ *
10
+ * The footer is the row directly under the bottom rule, `cursorRow + 2`: a permission-mode
11
+ * footer (`claudeComposerFooter`) or, when the caller passes `stagedFooter`, one of its
12
+ * staged-input hint rows. That row is the composer's chrome. Without it, the row must be
13
+ * blank or absent and the version banner must be visible somewhere in `rows`; a footer
14
+ * further down never counts. Every non-blank row after it must be a footer item on its own
15
+ * row (`claudeFooterOverflow`: a token count or effort level), the login-renewal notice, or
16
+ * a `stagedFooter` row.
17
+ */
3
18
  export declare function claudeEmptyInputRows(rows: readonly string[], cursorRow: number, stagedFooter?: RegExp): boolean;
4
19
  //# sourceMappingURL=empty-input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"empty-input.d.ts","sourceRoot":"","sources":["../../../src/claude/composer/empty-input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAWjE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,yDAE7D;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAmBT"}
1
+ {"version":3,"file":"empty-input.d.ts","sourceRoot":"","sources":["../../../src/claude/composer/empty-input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAOjE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,yDAE7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAuBT"}
@@ -2,27 +2,46 @@
2
2
  import { emptyInputFrame } from "../../core/input/empty-frame.js";
3
3
  import { loginRenewalNotice } from "../login/notice.js";
4
4
  import { claudeComposerRow } from "../screen-table.js";
5
- import { claudeManualModeFooter } from "./footer.js";
5
+ import { claudeNamedBorder } from "./border.js";
6
+ import { claudeComposerFooter, claudeFooterOverflow } from "./footer.js";
6
7
  const rule = /^[─━]{3,}\s*$/;
7
- const mode = /^\s*(?:-- INSERT -- )?(?:⏵⏵ (?:bypass permissions|don['’]t ask|auto mode) on \(shift\+tab to cycle\)|⏸ manual mode on)(?: · ← for agents)?(?: +[\d,.]+[kKmM]? tokens)?\s*$/;
8
- // Separate effort footer captured below collapsed text in Claude 2.1.281.
9
- const effort = /^\s*◐ medium · \/effort\s*$/;
10
8
  export function claudeEmptyInputFrame(terminal) {
11
9
  return emptyInputFrame(terminal, claudeEmptyInputRows);
12
10
  }
11
+ /**
12
+ * Whether viewport `rows` show Claude's live, empty composer (PRD §5.3, §5.4; C-API-56).
13
+ *
14
+ * `cursorRow` is the viewport index of the terminal cursor's row. That row must be the empty
15
+ * `❯` composer, with the composer's top rule (plain, or labelled by a named session) at
16
+ * `cursorRow - 1` and a plain bottom rule at `cursorRow + 1`.
17
+ *
18
+ * The footer is the row directly under the bottom rule, `cursorRow + 2`: a permission-mode
19
+ * footer (`claudeComposerFooter`) or, when the caller passes `stagedFooter`, one of its
20
+ * staged-input hint rows. That row is the composer's chrome. Without it, the row must be
21
+ * blank or absent and the version banner must be visible somewhere in `rows`; a footer
22
+ * further down never counts. Every non-blank row after it must be a footer item on its own
23
+ * row (`claudeFooterOverflow`: a token count or effort level), the login-renewal notice, or
24
+ * a `stagedFooter` row.
25
+ */
13
26
  export function claudeEmptyInputRows(rows, cursorRow, stagedFooter) {
14
27
  const composer = rows[cursorRow];
15
28
  if (!(composer?.startsWith("❯") && claudeComposerRow.test(composer)))
16
29
  return false;
17
- if (!(rule.test(rows[cursorRow - 1] ?? "") && rule.test(rows[cursorRow + 1] ?? "")))
30
+ // A named session labels only the top rule; the rule below the composer stays plain.
31
+ const topRule = rows[cursorRow - 1] ?? "";
32
+ const hasComposerTopRule = rule.test(topRule) || claudeNamedBorder.test(topRule);
33
+ const hasPlainBottomRule = rule.test(rows[cursorRow + 1] ?? "");
34
+ if (!(hasComposerTopRule && hasPlainBottomRule))
18
35
  return false;
19
- const below = rows.slice(cursorRow + 2).filter((row) => row.trim() !== "");
20
- return ((rows.some((row) => /Claude Code v[\d.]+/.test(row)) ||
21
- below.some((row) => mode.test(row) || claudeManualModeFooter.test(row) || stagedFooter?.test(row))) &&
22
- below.every((row) => mode.test(row) ||
23
- claudeManualModeFooter.test(row) ||
36
+ const footer = rows[cursorRow + 2] ?? "";
37
+ const footed = claudeComposerFooter.test(footer) || stagedFooter?.test(footer) === true;
38
+ const bannered = footer.trim() === "" && rows.some((row) => /Claude Code v[\d.]+/.test(row));
39
+ return ((footed || bannered) &&
40
+ rows
41
+ .slice(cursorRow + 3)
42
+ .every((row) => row.trim() === "" ||
43
+ claudeFooterOverflow.test(row) ||
24
44
  loginRenewalNotice.test(row) ||
25
- effort.test(row) ||
26
45
  stagedFooter?.test(row)));
27
46
  }
28
47
  //# sourceMappingURL=empty-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"empty-input.js","sourceRoot":"","sources":["../../../src/claude/composer/empty-input.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,IAAI,GAAG,eAAe,CAAC;AAC7B,MAAM,IAAI,GACR,4KAA4K,CAAC;AAC/K,0EAA0E;AAC1E,MAAM,MAAM,GAAG,6BAA6B,CAAC;AAE7C,MAAM,UAAU,qBAAqB,CAAC,QAAwB;IAC5D,OAAO,eAAe,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAuB,EACvB,SAAiB,EACjB,YAAqB;IAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAClG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,OAAO,CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CACR,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CACvF,CAAC;QACJ,KAAK,CAAC,KAAK,CACT,CAAC,GAAG,EAAE,EAAE,CACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACd,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;YAChC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAChB,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAC1B,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"empty-input.js","sourceRoot":"","sources":["../../../src/claude/composer/empty-input.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,IAAI,GAAG,eAAe,CAAC;AAC7B,MAAM,UAAU,qBAAqB,CAAC,QAAwB;IAC5D,OAAO,eAAe,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAuB,EACvB,SAAiB,EACjB,YAAqB;IAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,qFAAqF;IACrF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACxF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7F,OAAO,CACL,CAAC,MAAM,IAAI,QAAQ,CAAC;QACpB,IAAI;aACD,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;aACpB,KAAK,CACJ,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;YACjB,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9B,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5B,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAC1B,CACJ,CAAC;AACJ,CAAC"}
@@ -1,3 +1,27 @@
1
- /** Captured native Claude manual-mode composer footer (PRD §5.3, C-API-56). */
2
- export declare const claudeManualModeFooter: RegExp;
1
+ /**
2
+ * Claude's native composer footer: the row directly beneath the composer's bottom rule
3
+ * (PRD §5.3, §5.4; C-TRUST-01, C-API-55, C-API-56).
4
+ *
5
+ * Captured on Claude Code 2.1.310 for every `--permission-mode` (see
6
+ * `tests/fixtures/claude-2.1.310/mode-footers/`), on top of the 2.1.278 to 2.1.305 rows:
7
+ *
8
+ * -- INSERT -- ⏵⏵ bypass permissions on (shift+tab to cycle) · ← for agents 0 tokens
9
+ * ⏸ manual mode on · ? for shortcuts · ← for agents ● high · /effort
10
+ *
11
+ * Vim's `-- INSERT --` shows only in vim insert mode. Manual mode has no cycle hint.
12
+ * Claude hides `← for agents` after the session has been open a while (it was gone 27 s
13
+ * after launch in the captures). The right edge holds the token count when `verbose` is on,
14
+ * otherwise the effort level, and can be empty. The version banner scrolls away in a long
15
+ * session, so this row is what proves an idle composer.
16
+ */
17
+ /**
18
+ * A token count as Claude prints it: 2.1.310 formats with compact notation, lowercased
19
+ * (`0`, `999`, `1.0k`, `12.3k`, `2.1m`); the grouped and uppercase forms stay accepted.
20
+ */
21
+ export declare const claudeTokenCount: string;
22
+ /** One footer row, as a single-line fragment with no anchors. */
23
+ export declare const claudeComposerFooterRow: string;
24
+ export declare const claudeComposerFooter: RegExp;
25
+ /** A footer item on its own row: effort below a token count, or the count when narrow. */
26
+ export declare const claudeFooterOverflow: RegExp;
3
27
  //# sourceMappingURL=footer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../../src/claude/composer/footer.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,QAAsD,CAAC"}
1
+ {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../../src/claude/composer/footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAoC,CAAC;AAGlE,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,QAAyG,CAAC;AAC9I,eAAO,MAAM,oBAAoB,QAA6C,CAAC;AAE/E,0FAA0F;AAC1F,eAAO,MAAM,oBAAoB,QAEhC,CAAC"}
@@ -1,3 +1,30 @@
1
- /** Captured native Claude manual-mode composer footer (PRD §5.3, C-API-56). */
2
- export const claudeManualModeFooter = /^\s*⏸ manual mode on(?: · \? for shortcuts)?\s*$/m;
1
+ /**
2
+ * Claude's native composer footer: the row directly beneath the composer's bottom rule
3
+ * (PRD §5.3, §5.4; C-TRUST-01, C-API-55, C-API-56).
4
+ *
5
+ * Captured on Claude Code 2.1.310 for every `--permission-mode` (see
6
+ * `tests/fixtures/claude-2.1.310/mode-footers/`), on top of the 2.1.278 to 2.1.305 rows:
7
+ *
8
+ * -- INSERT -- ⏵⏵ bypass permissions on (shift+tab to cycle) · ← for agents 0 tokens
9
+ * ⏸ manual mode on · ? for shortcuts · ← for agents ● high · /effort
10
+ *
11
+ * Vim's `-- INSERT --` shows only in vim insert mode. Manual mode has no cycle hint.
12
+ * Claude hides `← for agents` after the session has been open a while (it was gone 27 s
13
+ * after launch in the captures). The right edge holds the token count when `verbose` is on,
14
+ * otherwise the effort level, and can be empty. The version banner scrolls away in a long
15
+ * session, so this row is what proves an idle composer.
16
+ */
17
+ const mode = "(?:⏸ (?:manual|plan) mode|⏵⏵ (?:accept edits|auto mode|don['’]t ask|bypass permissions)) on";
18
+ const hints = String.raw `(?: \(shift\+tab to cycle\))?(?: · \? for shortcuts)?(?: · ← for agents)?`;
19
+ /**
20
+ * A token count as Claude prints it: 2.1.310 formats with compact notation, lowercased
21
+ * (`0`, `999`, `1.0k`, `12.3k`, `2.1m`); the grouped and uppercase forms stay accepted.
22
+ */
23
+ export const claudeTokenCount = String.raw `[\d,.]+[kKmM]? tokens`;
24
+ const effortLevel = String.raw `[○◐●◉◈] (?:low|medium|high|xhigh|max) · \/effort`;
25
+ /** One footer row, as a single-line fragment with no anchors. */
26
+ export const claudeComposerFooterRow = String.raw `[ \t]*(?:-- INSERT -- )?${mode}${hints}(?: +(?:${claudeTokenCount}|${effortLevel}))?[ \t]*`;
27
+ export const claudeComposerFooter = new RegExp(`^${claudeComposerFooterRow}$`);
28
+ /** A footer item on its own row: effort below a token count, or the count when narrow. */
29
+ export const claudeFooterOverflow = new RegExp(String.raw `^\s*(?:${claudeTokenCount}|${effortLevel})\s*$`);
3
30
  //# sourceMappingURL=footer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../src/claude/composer/footer.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,mDAAmD,CAAC"}
1
+ {"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../src/claude/composer/footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,IAAI,GACR,6FAA6F,CAAC;AAChG,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA,2EAA2E,CAAC;AACpG;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA,uBAAuB,CAAC;AAClE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAA,kDAAkD,CAAC;AAEjF,iEAAiE;AACjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA,2BAA2B,IAAI,GAAG,KAAK,WAAW,gBAAgB,IAAI,WAAW,WAAW,CAAC;AAC9I,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,IAAI,uBAAuB,GAAG,CAAC,CAAC;AAE/E,0FAA0F;AAC1F,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAC5C,MAAM,CAAC,GAAG,CAAA,UAAU,gBAAgB,IAAI,WAAW,OAAO,CAC3D,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Claude's live idle composer, by either verified path (PRD §5.3, §5.4; C-ATTN-02,
3
+ * C-TRUST-01, C-API-56). It is what proves a session's blocking dialog or startup trust
4
+ * gate is gone. The whole-frame path rejects any earlier caret row, and Claude keeps the
5
+ * conversation's own carets in its transcript: each submitted prompt is echoed as
6
+ * `❯ <prompt>`, a resumed session repaints them, and `/model` stays as `❯ /model` after
7
+ * the picker closes. So a frame whose transcript still shows one is proved idle by the
8
+ * last composer, its enclosing rules, and its native footer instead. Both paths read the
9
+ * same completed render and its visible input cursor, which is checked once for both.
10
+ */
11
+ import type { TrustClearance } from "../../core/trust/clearance.ts";
12
+ import type { ElwoodTerminal } from "../../terminal/headless.ts";
13
+ export declare function liveClaudeIdleComposer(readTerminal: () => ElwoodTerminal): TrustClearance;
14
+ //# sourceMappingURL=idle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle.d.ts","sourceRoot":"","sources":["../../../src/claude/composer/idle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,cAAc,GAAG,cAAc,CAMzF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Claude's live idle composer, by either verified path (PRD §5.3, §5.4; C-ATTN-02,
3
+ * C-TRUST-01, C-API-56). It is what proves a session's blocking dialog or startup trust
4
+ * gate is gone. The whole-frame path rejects any earlier caret row, and Claude keeps the
5
+ * conversation's own carets in its transcript: each submitted prompt is echoed as
6
+ * `❯ <prompt>`, a resumed session repaints them, and `/model` stays as `❯ /model` after
7
+ * the picker closes. So a frame whose transcript still shows one is proved idle by the
8
+ * last composer, its enclosing rules, and its native footer instead. Both paths read the
9
+ * same completed render and its visible input cursor, which is checked once for both.
10
+ */
11
+ import { claudeTrustClearance, liveClaudeClearance } from "../screen-table.js";
12
+ import { claudeLastComposerClearance } from "./last.js";
13
+ export function liveClaudeIdleComposer(readTerminal) {
14
+ // One check of the live render and cursor, then either text path.
15
+ return liveClaudeClearance(readTerminal, (text) => claudeTrustClearance(text) || claudeLastComposerClearance(text));
16
+ }
17
+ //# sourceMappingURL=idle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle.js","sourceRoot":"","sources":["../../../src/claude/composer/idle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,UAAU,sBAAsB,CAAC,YAAkC;IACvE,kEAAkE;IAClE,OAAO,mBAAmB,CACxB,YAAY,EACZ,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAC1E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function claudeLastComposerClearance(frame: string): boolean;
2
+ //# sourceMappingURL=last.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"last.d.ts","sourceRoot":"","sources":["../../../src/claude/composer/last.ts"],"names":[],"mappings":"AAQA,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKlE"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Claude's last composer as proof of an idle screen (PRD §5.3, §5.4; C-API-55, C-ATTN-02).
3
+ * Earlier carets stay in Claude's transcript: each submitted prompt is echoed as
4
+ * `❯ <prompt>`, and `/model` stays as `❯ /model` after the picker closes. Only the last
5
+ * composer, its enclosing rules, and its own native footer establish clearance.
6
+ */
7
+ import { claudeTrustClearance } from "../screen-table.js";
8
+ export function claudeLastComposerClearance(frame) {
9
+ if (/esc to interrupt/i.test(frame))
10
+ return false;
11
+ const rows = frame.split("\n");
12
+ const composer = rows.findLastIndex((row) => /^\s*❯/.test(row));
13
+ return composer > 0 && claudeTrustClearance(rows.slice(composer - 1).join("\n"));
14
+ }
15
+ //# sourceMappingURL=last.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"last.js","sourceRoot":"","sources":["../../../src/claude/composer/last.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,QAAQ,GAAG,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"staged-input.d.ts","sourceRoot":"","sources":["../../../src/claude/composer/staged-input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAUjE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAKnE;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,cAAc;;;EAKpE"}
1
+ {"version":3,"file":"staged-input.d.ts","sourceRoot":"","sources":["../../../src/claude/composer/staged-input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAYjE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAKnE;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,cAAc;;;EAKpE"}
@@ -2,8 +2,9 @@
2
2
  import { readStagedComposer } from "../../core/input/staged-composer.js";
3
3
  import { claudeScreenFactTable } from "../screen-table.js";
4
4
  import { claudeEmptyInputFrame, claudeEmptyInputRows } from "./empty-input.js";
5
+ import { claudeTokenCount } from "./footer.js";
5
6
  // Captured Claude 2.1.281 staged-only hints; these do not establish empty input.
6
- const stagedFooter = /^\s*(?:paste again to expand(?: +[\d,.]+[kKmM]? tokens)?|Ctrl\+Y to paste deleted text|ctrl\+g to edit in Nvim)\s*$/;
7
+ const stagedFooter = new RegExp(String.raw `^\s*(?:paste again to expand(?: +${claudeTokenCount})?|Ctrl\+Y to paste deleted text|ctrl\+g to edit in Nvim)\s*$`);
7
8
  const matchesEmptyInputWithStagedFooter = (rows, viewportCursorRow) => claudeEmptyInputRows(rows, viewportCursorRow, stagedFooter);
8
9
  export function claudeInputStaged(terminal) {
9
10
  return /\[Pasted text|\[Image #\d+\]/.test(readStagedComposer(terminal, matchesEmptyInputWithStagedFooter, claudeScreenFactTable, "❯ ") ??
@@ -1 +1 @@
1
- {"version":3,"file":"staged-input.js","sourceRoot":"","sources":["../../../src/claude/composer/staged-input.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,iFAAiF;AACjF,MAAM,YAAY,GAChB,qHAAqH,CAAC;AACxH,MAAM,iCAAiC,GAAG,CAAC,IAAuB,EAAE,iBAAyB,EAAE,EAAE,CAC/F,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAE9D,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACxD,OAAO,8BAA8B,CAAC,IAAI,CACxC,kBAAkB,CAAC,QAAQ,EAAE,iCAAiC,EAAE,qBAAqB,EAAE,IAAI,CAAC;QAC1F,EAAE,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAwB;IACnE,OAAO;QACL,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QACtD,UAAU,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC;KAClD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"staged-input.js","sourceRoot":"","sources":["../../../src/claude/composer/staged-input.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,iFAAiF;AACjF,MAAM,YAAY,GAAG,IAAI,MAAM,CAC7B,MAAM,CAAC,GAAG,CAAA,oCAAoC,gBAAgB,+DAA+D,CAC9H,CAAC;AACF,MAAM,iCAAiC,GAAG,CAAC,IAAuB,EAAE,iBAAyB,EAAE,EAAE,CAC/F,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAE9D,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACxD,OAAO,8BAA8B,CAAC,IAAI,CACxC,kBAAkB,CAAC,QAAQ,EAAE,iCAAiC,EAAE,qBAAqB,EAAE,IAAI,CAAC;QAC1F,EAAE,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAwB;IACnE,OAAO;QACL,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QACtD,UAAU,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC;KAClD,CAAC;AACJ,CAAC"}
@@ -1,10 +1,23 @@
1
- /** Bounded diagnostics for Claude rejection hooks, implementing PRD §6.1 / C-HOOK-20. */
1
+ /**
2
+ * Bounded diagnostics for Claude rejection hooks, implementing PRD §6.1 / C-HOOK-20, and
3
+ * Claude's turn-boundary reader, which turns `StopFailure` into a rejection (PRD §5.8, C-API-59).
4
+ */
5
+ import { type BoundarySignalReader } from "../../core/simple/turn-types.ts";
2
6
  /** Accepts the structural diagnostic fields so internal adapters share one selector. */
3
7
  export declare function stopFailureDiagnostic(event: {
4
8
  readonly error?: unknown;
5
9
  readonly error_details?: unknown;
6
10
  }): {
7
11
  readonly message: string;
8
- readonly info?: string;
12
+ readonly agentError?: string;
9
13
  };
14
+ /**
15
+ * Claude fires `StopFailure` INSTEAD of `Stop` when it rejects a turn (an unknown model, an API
16
+ * error). It is a boundary that carries no completeness text plus the rejection; `Stop` and every
17
+ * other hook keep the default reading. Its `last_assistant_message` is Claude's own error text,
18
+ * so it is deliberately not the diagnostic (§6.1). Claude 2.1.310 names the submission with the
19
+ * same `prompt_id` on `UserPromptSubmit` and `StopFailure`; a rejection naming another
20
+ * submission belongs to an earlier turn whose hook arrived late (C-API-59).
21
+ */
22
+ export declare const claudeBoundarySignal: BoundarySignalReader;
10
23
  //# sourceMappingURL=stop-failure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stop-failure.d.ts","sourceRoot":"","sources":["../../../src/claude/hooks/stop-failure.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAIzF,wFAAwF;AACxF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CASvD"}
1
+ {"version":3,"file":"stop-failure.d.ts","sourceRoot":"","sources":["../../../src/claude/hooks/stop-failure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,oBAAoB,EAG1B,MAAM,iCAAiC,CAAC;AAEzC,wFAAwF;AACxF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAS7D;AASD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,oBASlC,CAAC"}
@@ -1,18 +1,41 @@
1
- /** Bounded diagnostics for Claude rejection hooks, implementing PRD §6.1 / C-HOOK-20. */
2
- const maxDiagnosticLength = 2_000;
1
+ /**
2
+ * Bounded diagnostics for Claude rejection hooks, implementing PRD §6.1 / C-HOOK-20, and
3
+ * Claude's turn-boundary reader, which turns `StopFailure` into a rejection (PRD §5.8, C-API-59).
4
+ */
5
+ import { boundedDiagnostic } from "../../core/simple/boundary-signal.js";
6
+ import { defaultBoundarySignal, } from "../../core/simple/turn-types.js";
3
7
  /** Accepts the structural diagnostic fields so internal adapters share one selector. */
4
8
  export function stopFailureDiagnostic(event) {
5
- const error = diagnosticField(event.error);
6
- const details = diagnosticField(event.error_details);
9
+ const error = boundedDiagnostic(event.error);
10
+ const details = boundedDiagnostic(event.error_details);
7
11
  return {
8
12
  message: details ??
9
13
  (error === undefined ? "Claude rejected the turn." : `Claude rejected the turn: ${error}`),
10
- ...(error === undefined ? {} : { info: error }),
14
+ ...(error === undefined ? {} : { agentError: error }),
11
15
  };
12
16
  }
13
- function diagnosticField(value) {
14
- if (typeof value !== "string" || value.trim().length === 0)
15
- return undefined;
16
- return value.length <= maxDiagnosticLength ? value : `${value.slice(0, maxDiagnosticLength)}…`;
17
+ /**
18
+ * Claude fires `StopFailure` INSTEAD of `Stop` when it rejects a turn (an unknown model, an API
19
+ * error). It is a boundary that carries no completeness text plus the rejection; `Stop` and every
20
+ * other hook keep the default reading. Its `last_assistant_message` is Claude's own error text,
21
+ * so it is deliberately not the diagnostic (§6.1). Claude 2.1.310 names the submission with the
22
+ * same `prompt_id` on `UserPromptSubmit` and `StopFailure`; a rejection naming another
23
+ * submission belongs to an earlier turn whose hook arrived late (C-API-59).
24
+ */
25
+ export const claudeBoundarySignal = (event) => {
26
+ if (event.hook_event_name !== "StopFailure")
27
+ return defaultBoundarySignal(event);
28
+ const { message, agentError } = stopFailureDiagnostic(event);
29
+ const rejected = promptId(event);
30
+ const belongsTo = (acceptedBy) => {
31
+ const own = promptId(acceptedBy);
32
+ return rejected === undefined || own === undefined || own === rejected;
33
+ };
34
+ return { text: "", failure: { message, agentError, belongsTo } };
35
+ };
36
+ function promptId(event) {
37
+ return typeof event.prompt_id === "string" && event.prompt_id !== ""
38
+ ? event.prompt_id
39
+ : undefined;
17
40
  }
18
41
  //# sourceMappingURL=stop-failure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stop-failure.js","sourceRoot":"","sources":["../../../src/claude/hooks/stop-failure.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC,wFAAwF;AACxF,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACrD,OAAO;QACL,OAAO,EACL,OAAO;YACP,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,6BAA6B,KAAK,EAAE,CAAC;QAC5F,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7E,OAAO,KAAK,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC;AACjG,CAAC"}
1
+ {"version":3,"file":"stop-failure.js","sourceRoot":"","sources":["../../../src/claude/hooks/stop-failure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAEL,qBAAqB,GAEtB,MAAM,iCAAiC,CAAC;AAEzC,wFAAwF;AACxF,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvD,OAAO;QACL,OAAO,EACL,OAAO;YACP,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,6BAA6B,KAAK,EAAE,CAAC;QAC5F,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAyB,CAAC,KAAyB,EAAE,EAAE;IACtF,IAAI,KAAK,CAAC,eAAe,KAAK,aAAa;QAAE,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACjF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,CAAC,UAA8B,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,QAAQ,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,CAAC;IACzE,CAAC,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,CAAC;AACnE,CAAC,CAAC;AAEF,SAAS,QAAQ,CAAC,KAAyB;IACzC,OAAO,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,EAAE;QAClE,CAAC,CAAC,KAAK,CAAC,SAAS;QACjB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../../../src/claude/login/stages.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAU3C,OAAO,KAAK,EAAqB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAwBxE,mFAAmF;AACnF,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAyBf"}
1
+ {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../../../src/claude/login/stages.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAU3C,OAAO,KAAK,EAAqB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAuBxE,mFAAmF;AACnF,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAyBf"}
@@ -6,6 +6,7 @@
6
6
  * are validated before they are reported or written.
7
7
  */
8
8
  import { elwoodError } from "../../core/errors.js";
9
+ import { arrowDown } from "../../core/input/constants.js";
9
10
  import { abortError, holdWhileBlocked, pollDelay, raceSettle } from "./abort.js";
10
11
  import { activeRegion, authUrlVisible, extractAuthUrl, loginFailed, loginSucceeded, methodPickerVisible, pasteCodePrompt, } from "./screens.js";
11
12
  import { isSafeAuthCode, safeAuthUrl } from "./validate.js";
@@ -16,7 +17,6 @@ const loginMethodRow = {
16
17
  console: 1,
17
18
  third_party: 2,
18
19
  };
19
- const cursorDown = "\u001b[B";
20
20
  const enter = "\r";
21
21
  /** True once the flow has clearly moved past the method picker (or ended). */
22
22
  function pastPicker(text) {
@@ -32,7 +32,7 @@ export async function selectMethodIfShown(io, options, signal) {
32
32
  return;
33
33
  const rows = loginMethodRow[options.method ?? "claudeai"];
34
34
  for (let i = 0; i < rows; i += 1)
35
- await write(io, cursorDown, signal);
35
+ await write(io, arrowDown, signal);
36
36
  await write(io, enter, signal);
37
37
  }
38
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"stages.js","sourceRoot":"","sources":["../../../src/claude/login/stages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stages.js","sourceRoot":"","sources":["../../../src/claude/login/stages.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,6 @@
2
2
  * Claude /model picker automation spec.
3
3
  * Implements PRD §5.3, C-API-23, and C-API-24.
4
4
  */
5
- import type { ModelPickerSpec } from "../core/models/picker.ts";
5
+ import { type ModelPickerSpec } from "../core/models/picker.ts";
6
6
  export declare const claudeModelPicker: ModelPickerSpec;
7
7
  //# sourceMappingURL=model-picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-picker.d.ts","sourceRoot":"","sources":["../../src/claude/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAqBhE,eAAO,MAAM,iBAAiB,EAAE,eA6D/B,CAAC"}
1
+ {"version":3,"file":"model-picker.d.ts","sourceRoot":"","sources":["../../src/claude/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAoCrF,eAAO,MAAM,iBAAiB,EAAE,eAyD/B,CAAC"}
@@ -2,19 +2,36 @@
2
2
  * Claude /model picker automation spec.
3
3
  * Implements PRD §5.3, C-API-23, and C-API-24.
4
4
  */
5
+ import { arrowDown, arrowUp } from "../core/input/constants.js";
5
6
  import { sendPickerInput } from "../core/models/input.js";
6
- import { bottomDialogCandidate, bottomDialogRow, claudeModelPickerHeader, ownOperation, parseClaudeModelPicker, } from "../core/models/rows.js";
7
+ import { isOwnCompletePicker } from "../core/models/picker.js";
8
+ import { bottomDialogCandidate, bottomDialogRow, claudeModelPickerHeader, parseClaudeModelPicker, } from "../core/models/rows.js";
7
9
  import { waitForScreen } from "../core/models/tui-screen.js";
8
- import { claudeModelComposerClearance } from "./model-composer.js";
10
+ import { claudeLastComposerClearance } from "./composer/last.js";
9
11
  import { isClaudeIdleComposer, isClaudeSwitchConfirmation, isClaudeSwitchShell, parseClaudeSwitchConfirmation, } from "./model-switch-confirmation.js";
10
12
  const enterKey = "\r";
11
- const arrowDown = "\u001b[B";
12
- const arrowUp = "\u001b[A";
13
+ /**
14
+ * Claude's picker closes with `Esc to cancel`, windows a list longer than ten rows, and
15
+ * paints a radio-style effort row between its rows and that footer. The effort row follows
16
+ * the HIGHLIGHTED model (2.1.310): ○ low, ◐ medium, ● high, ◉ xhigh, ◈ max, or
17
+ * `○ Effort not supported for Haiku 4.5`. It is matched by its own copy because `●` is also
18
+ * a reply bullet, which the region grammar otherwise rejects as transcript.
19
+ */
20
+ const pickerGrammar = {
21
+ header: claudeModelPickerHeader,
22
+ footer: /\besc to cancel\b/i,
23
+ controlRow: /^\s*[○◐●◉◈] (?:\S.* ←\/→ to adjust|Effort not supported for \S.*?)\s*$/,
24
+ // `↑ 3.` marks the window's first row while rows are hidden above it, `↓ 10.` its last
25
+ // while rows are hidden below, with `… +3 models` (`… +1 model`) directly under it. The
26
+ // cursor glyph replaces either marker on its own row.
27
+ scroll: { above: /^\s*↑/, below: /^\s*↓/, overflow: /^\s*…\s*\+(?<hidden>\d+) models?\s*$/ },
28
+ };
13
29
  export const claudeModelPicker = {
14
30
  agent: "claude",
15
- isClear: claudeModelComposerClearance,
16
- isCandidate: (text) => bottomDialogCandidate(text, claudeModelPickerHeader) || isClaudeSwitchShell(text),
17
- isOpen: (text) => claudeModelPickerHeader.test(text),
31
+ isClear: claudeLastComposerClearance,
32
+ isCandidate: (text) => bottomDialogCandidate(text, pickerGrammar) || isClaudeSwitchShell(text),
33
+ hasPickerHeader: (text) => claudeModelPickerHeader.test(text),
34
+ isCallerDialog: (text) => parseClaudeSwitchConfirmation(text)?.isCacheWarning === false,
18
35
  // A PreModelSwitch hook confirmation shares the warning's shell but is the caller's.
19
36
  activeDialog: (text, authority) => {
20
37
  // Nothing on screen is our dialog unless we opened one; the grammar below only has to
@@ -29,16 +46,16 @@ export const claudeModelPicker = {
29
46
  // The title without its options yet: hold input on it, but never write to it.
30
47
  if (isClaudeSwitchShell(text))
31
48
  return "painting";
32
- return bottomDialogRow(text, claudeModelPickerHeader) < 0 ? undefined : "picker";
49
+ return bottomDialogRow(text, pickerGrammar) < 0 ? undefined : "picker";
33
50
  },
34
- parse: parseClaudeModelPicker,
51
+ parse: (text) => parseClaudeModelPicker(text, pickerGrammar.scroll),
35
52
  // "s" applies for this session only. Enter or a number key would save the
36
53
  // selection as the user's default for new sessions, which §4.5 forbids.
37
54
  apply: async (io, timeoutMs) => {
38
55
  // The `s` key applies a model, so it is revalidated against the OPERATION'S OWN picker
39
56
  // rather than a bare header: transcript or agent output can print `Select model`, and
40
57
  // this key would then select whatever that screen is showing (C-API-24).
41
- await sendPickerInput(io, "s", (text) => claudeModelPicker.activeDialog(text, ownOperation) === "picker");
58
+ await sendPickerInput(io, "s", isOwnCompletePicker(claudeModelPicker));
42
59
  const next = await waitForScreen(io.terminal, (text) => cacheConfirmationWithCursor(text) || switchSettled(text), timeoutMs, "claude model switch confirmation or idle composer", io.signal);
43
60
  const confirmation = parseClaudeSwitchConfirmation(next);
44
61
  if (confirmation?.isCacheWarning === true) {
@@ -1 +1 @@
1
- {"version":3,"file":"model-picker.js","sourceRoot":"","sources":["../../src/claude/model-picker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-picker.js","sourceRoot":"","sources":["../../src/claude/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAwB,MAAM,0BAA0B,CAAC;AACrF,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EAEvB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,gCAAgC,CAAC;AAExC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAEtB;;;;;;GAMG;AACH,MAAM,aAAa,GAAkB;IACnC,MAAM,EAAE,uBAAuB;IAC/B,MAAM,EAAE,oBAAoB;IAC5B,UAAU,EAAE,wEAAwE;IACpF,uFAAuF;IACvF,wFAAwF;IACxF,sDAAsD;IACtD,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,sCAAsC,EAAE;CAC7F,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,2BAA2B;IACpC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC;IAC9F,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7D,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,KAAK;IACvF,qFAAqF;IACrF,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAChC,sFAAsF;QACtF,kFAAkF;QAClF,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QACxC,8EAA8E;QAC9E,+DAA+D;QAC/D,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,8EAA8E;QAC9E,IAAI,mBAAmB,CAAC,IAAI,CAAC;YAAE,OAAO,UAAU,CAAC;QACjD,OAAO,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzE,CAAC;IACD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IACnE,0EAA0E;IAC1E,wEAAwE;IACxE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;QAC7B,uFAAuF;QACvF,sFAAsF;QACtF,yEAAyE;QACzE,MAAM,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,MAAM,aAAa,CAC9B,EAAE,CAAC,QAAQ,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,EAClE,SAAS,EACT,mDAAmD,EACnD,EAAE,CAAC,MAAM,CACV,CAAC;QACF,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,YAAY,EAAE,cAAc,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC;YACzE,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5C,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC;gBAClD,MAAM,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE,IAAI,CAAC,CAAC;YACpE,MAAM,aAAa,CACjB,EAAE,CAAC,QAAQ,EACX,4BAA4B,EAC5B,SAAS,EACT,+CAA+C,EAC/C,EAAE,CAAC,MAAM,CACV,CAAC;YACF,MAAM,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,aAAa,CACjB,EAAE,CAAC,QAAQ,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EACpE,SAAS,EACT,yCAAyC,EACzC,EAAE,CAAC,MAAM,CACV,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAY;IAC/C,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,YAAY,EAAE,cAAc,KAAK,IAAI,IAAI,YAAY,CAAC,aAAa,IAAI,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAY;IAChD,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,CACL,YAAY,EAAE,cAAc,KAAK,IAAI;QACrC,YAAY,CAAC,aAAa,KAAK,YAAY,CAAC,gBAAgB,CAC7D,CAAC;AACJ,CAAC"}
@@ -8,7 +8,7 @@ export declare const minimumClaudeVersion = "2.1.144";
8
8
  export type ClaudePreflightWarning = DistributiveOmit<Extract<ElwoodWarningEvent, {
9
9
  readonly code: "version_unparseable" | "agent_update_failed";
10
10
  }>, "elwoodSessionId">;
11
- export declare function preflightClaude(strictVersionCheck: boolean, autoupdate?: boolean): Promise<ClaudePreflightWarning | undefined>;
11
+ export declare function preflightClaude(strictVersionCheck: boolean, autoupdate?: boolean, cwd?: string): Promise<ClaudePreflightWarning | undefined>;
12
12
  type WithSessionId<W> = W extends unknown ? W & {
13
13
  readonly elwoodSessionId: string;
14
14
  } : never;
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/claude/preflight.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAOvF,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD,OAAO,CAAC,kBAAkB,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,CAAA;CAAE,CAAC,EAC7F,iBAAiB,CAClB,CAAC;AAEF,wBAAsB,eAAe,CACnC,kBAAkB,EAAE,OAAO,EAC3B,UAAU,UAAQ,GACjB,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAsC7C;AA6CD,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG;IAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC;AAE7F,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,sBAAsB,GAC9B,aAAa,CAAC,sBAAsB,CAAC,CAEvC"}
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/claude/preflight.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAOvF,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD,OAAO,CAAC,kBAAkB,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,CAAA;CAAE,CAAC,EAC7F,iBAAiB,CAClB,CAAC;AAEF,wBAAsB,eAAe,CACnC,kBAAkB,EAAE,OAAO,EAC3B,UAAU,UAAQ,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAwC7C;AA0DD,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG;IAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC;AAE7F,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,sBAAsB,GAC9B,aAAa,CAAC,sBAAsB,CAAC,CAEvC"}