@with-logic/elwood 0.2.0 → 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.
- package/CHANGELOG.md +571 -1
- package/CONTRIBUTING.md +3 -0
- package/README.md +6 -2
- package/dist/bridge/socket-release.d.ts +15 -0
- package/dist/bridge/socket-release.d.ts.map +1 -0
- package/dist/bridge/socket-release.js +22 -0
- package/dist/bridge/socket-release.js.map +1 -0
- package/dist/claude/composer/border.d.ts +12 -0
- package/dist/claude/composer/border.d.ts.map +1 -0
- package/dist/claude/composer/border.js +12 -0
- package/dist/claude/composer/border.js.map +1 -0
- package/dist/claude/composer/empty-input.d.ts +15 -0
- package/dist/claude/composer/empty-input.d.ts.map +1 -1
- package/dist/claude/composer/empty-input.js +30 -11
- package/dist/claude/composer/empty-input.js.map +1 -1
- package/dist/claude/composer/footer.d.ts +26 -2
- package/dist/claude/composer/footer.d.ts.map +1 -1
- package/dist/claude/composer/footer.js +29 -2
- package/dist/claude/composer/footer.js.map +1 -1
- package/dist/claude/composer/idle.d.ts +14 -0
- package/dist/claude/composer/idle.d.ts.map +1 -0
- package/dist/claude/composer/idle.js +17 -0
- package/dist/claude/composer/idle.js.map +1 -0
- package/dist/claude/composer/last.d.ts +2 -0
- package/dist/claude/composer/last.d.ts.map +1 -0
- package/dist/claude/composer/last.js +15 -0
- package/dist/claude/composer/last.js.map +1 -0
- package/dist/claude/composer/staged-input.d.ts.map +1 -1
- package/dist/claude/composer/staged-input.js +2 -1
- package/dist/claude/composer/staged-input.js.map +1 -1
- package/dist/claude/hooks/stop-failure.d.ts +15 -2
- package/dist/claude/hooks/stop-failure.d.ts.map +1 -1
- package/dist/claude/hooks/stop-failure.js +32 -9
- package/dist/claude/hooks/stop-failure.js.map +1 -1
- package/dist/claude/login/stages.d.ts.map +1 -1
- package/dist/claude/login/stages.js +2 -2
- package/dist/claude/login/stages.js.map +1 -1
- package/dist/claude/model-picker.d.ts +1 -1
- package/dist/claude/model-picker.d.ts.map +1 -1
- package/dist/claude/model-picker.js +27 -10
- package/dist/claude/model-picker.js.map +1 -1
- package/dist/claude/preflight.d.ts +1 -1
- package/dist/claude/preflight.d.ts.map +1 -1
- package/dist/claude/preflight.js +18 -12
- package/dist/claude/preflight.js.map +1 -1
- package/dist/claude/questions/navigation.d.ts.map +1 -1
- package/dist/claude/questions/navigation.js +1 -2
- package/dist/claude/questions/navigation.js.map +1 -1
- package/dist/claude/questions/screen.d.ts.map +1 -1
- package/dist/claude/questions/screen.js +10 -2
- package/dist/claude/questions/screen.js.map +1 -1
- package/dist/claude/screen-table.d.ts +8 -5
- package/dist/claude/screen-table.d.ts.map +1 -1
- package/dist/claude/screen-table.js +20 -12
- package/dist/claude/screen-table.js.map +1 -1
- package/dist/claude/session/bridge.d.ts +2 -1
- package/dist/claude/session/bridge.d.ts.map +1 -1
- package/dist/claude/session/bridge.js +3 -1
- package/dist/claude/session/bridge.js.map +1 -1
- package/dist/claude/session/build.d.ts.map +1 -1
- package/dist/claude/session/build.js +13 -11
- package/dist/claude/session/build.js.map +1 -1
- package/dist/claude/session/cleanup.d.ts +18 -0
- package/dist/claude/session/cleanup.d.ts.map +1 -0
- package/dist/claude/session/cleanup.js +10 -0
- package/dist/claude/session/cleanup.js.map +1 -0
- package/dist/claude/session/index.d.ts.map +1 -1
- package/dist/claude/session/index.js +27 -13
- package/dist/claude/session/index.js.map +1 -1
- package/dist/claude/session/instance.d.ts +7 -8
- package/dist/claude/session/instance.d.ts.map +1 -1
- package/dist/claude/session/instance.js +9 -13
- package/dist/claude/session/instance.js.map +1 -1
- package/dist/claude/session/resume.d.ts.map +1 -1
- package/dist/claude/session/resume.js +14 -5
- package/dist/claude/session/resume.js.map +1 -1
- package/dist/claude/session/transcript.js +2 -2
- package/dist/claude/session/transcript.js.map +1 -1
- package/dist/claude/simple.d.ts +1 -1
- package/dist/claude/simple.d.ts.map +1 -1
- package/dist/claude/simple.js +3 -3
- package/dist/claude/simple.js.map +1 -1
- package/dist/claude/startup-prompts.d.ts +2 -0
- package/dist/claude/startup-prompts.d.ts.map +1 -1
- package/dist/claude/startup-prompts.js +5 -1
- package/dist/claude/startup-prompts.js.map +1 -1
- package/dist/claude/transcript/cursor-io.d.ts +1 -1
- package/dist/claude/transcript/cursor-io.d.ts.map +1 -1
- package/dist/claude/transcript/cursor-io.js +1 -1
- package/dist/claude/transcript/cursor-io.js.map +1 -1
- package/dist/claude/transcript/cursor.d.ts +5 -3
- package/dist/claude/transcript/cursor.d.ts.map +1 -1
- package/dist/claude/transcript/cursor.js +18 -8
- package/dist/claude/transcript/cursor.js.map +1 -1
- package/dist/claude/transcript/drain-context.d.ts +4 -3
- package/dist/claude/transcript/drain-context.d.ts.map +1 -1
- package/dist/claude/transcript/drain-context.js.map +1 -1
- package/dist/claude/transcript/emit.d.ts +2 -1
- package/dist/claude/transcript/emit.d.ts.map +1 -1
- package/dist/claude/transcript/emit.js +1 -0
- package/dist/claude/transcript/emit.js.map +1 -1
- package/dist/claude/transcript/index.d.ts.map +1 -1
- package/dist/claude/transcript/index.js +2 -2
- package/dist/claude/transcript/index.js.map +1 -1
- package/dist/claude/transcript/warnings.d.ts +2 -1
- package/dist/claude/transcript/warnings.d.ts.map +1 -1
- package/dist/claude/transcript/warnings.js +3 -2
- package/dist/claude/transcript/warnings.js.map +1 -1
- package/dist/cli/config/effective.d.ts +2 -2
- package/dist/cli/config/effective.d.ts.map +1 -1
- package/dist/cli/config/effective.js +0 -2
- package/dist/cli/config/effective.js.map +1 -1
- package/dist/cli/interactive/spawn.d.ts +0 -2
- package/dist/cli/interactive/spawn.d.ts.map +1 -1
- package/dist/cli/interactive/spawn.js +27 -24
- package/dist/cli/interactive/spawn.js.map +1 -1
- package/dist/cli/lifecycle/index.d.ts.map +1 -1
- package/dist/cli/lifecycle/index.js +5 -3
- package/dist/cli/lifecycle/index.js.map +1 -1
- package/dist/cli/main-failure.d.ts.map +1 -1
- package/dist/cli/main-failure.js +5 -2
- package/dist/cli/main-failure.js.map +1 -1
- package/dist/cli/models/combined.d.ts.map +1 -1
- package/dist/cli/models/combined.js +3 -2
- package/dist/cli/models/combined.js.map +1 -1
- package/dist/cli/models/render.d.ts.map +1 -1
- package/dist/cli/models/render.js +2 -1
- package/dist/cli/models/render.js.map +1 -1
- package/dist/cli/output/cleanup-error.d.ts +22 -0
- package/dist/cli/output/cleanup-error.d.ts.map +1 -0
- package/dist/cli/output/cleanup-error.js +67 -0
- package/dist/cli/output/cleanup-error.js.map +1 -0
- package/dist/cli/output/types.d.ts +6 -2
- package/dist/cli/output/types.d.ts.map +1 -1
- package/dist/cli/request/agent-detect.d.ts +6 -2
- package/dist/cli/request/agent-detect.d.ts.map +1 -1
- package/dist/cli/request/agent-detect.js +14 -6
- package/dist/cli/request/agent-detect.js.map +1 -1
- package/dist/cli/request/finalize.d.ts +1 -1
- package/dist/cli/request/finalize.d.ts.map +1 -1
- package/dist/cli/request/finalize.js +4 -25
- package/dist/cli/request/finalize.js.map +1 -1
- package/dist/cli/request/index.d.ts.map +1 -1
- package/dist/cli/request/index.js +11 -5
- package/dist/cli/request/index.js.map +1 -1
- package/dist/cli/request/path-replacement.d.ts +27 -0
- package/dist/cli/request/path-replacement.d.ts.map +1 -0
- package/dist/cli/request/path-replacement.js +79 -0
- package/dist/cli/request/path-replacement.js.map +1 -0
- package/dist/cli/request/workspace.d.ts +8 -0
- package/dist/cli/request/workspace.d.ts.map +1 -0
- package/dist/cli/request/workspace.js +50 -0
- package/dist/cli/request/workspace.js.map +1 -0
- package/dist/cli/run/output.d.ts.map +1 -1
- package/dist/cli/run/output.js +2 -1
- package/dist/cli/run/output.js.map +1 -1
- package/dist/cli/run/subscribe.d.ts.map +1 -1
- package/dist/cli/run/subscribe.js +1 -1
- package/dist/cli/run/subscribe.js.map +1 -1
- package/dist/cli/session/index.d.ts +4 -4
- package/dist/cli/session/index.d.ts.map +1 -1
- package/dist/cli/session/index.js +5 -5
- package/dist/cli/session/index.js.map +1 -1
- package/dist/cli/session/launch.d.ts +2 -2
- package/dist/cli/session/launch.d.ts.map +1 -1
- package/dist/cli/session/launch.js +12 -3
- package/dist/cli/session/launch.js.map +1 -1
- package/dist/cli/session/turn-readers.d.ts +14 -0
- package/dist/cli/session/turn-readers.d.ts.map +1 -0
- package/dist/cli/session/turn-readers.js +13 -0
- package/dist/cli/session/turn-readers.js.map +1 -0
- package/dist/codex/config/default-model.d.ts +24 -0
- package/dist/codex/config/default-model.d.ts.map +1 -0
- package/dist/codex/config/default-model.js +133 -0
- package/dist/codex/config/default-model.js.map +1 -0
- package/dist/codex/config/home.d.ts +35 -0
- package/dist/codex/config/home.d.ts.map +1 -0
- package/dist/codex/config/home.js +122 -0
- package/dist/codex/config/home.js.map +1 -0
- package/dist/codex/config/lock.d.ts +17 -11
- package/dist/codex/config/lock.d.ts.map +1 -1
- package/dist/codex/config/lock.js +102 -11
- package/dist/codex/config/lock.js.map +1 -1
- package/dist/codex/config/read.d.ts +16 -0
- package/dist/codex/config/read.d.ts.map +1 -0
- package/dist/codex/config/read.js +75 -0
- package/dist/codex/config/read.js.map +1 -0
- package/dist/codex/config/restore.d.ts +17 -7
- package/dist/codex/config/restore.d.ts.map +1 -1
- package/dist/codex/config/restore.js +33 -20
- package/dist/codex/config/restore.js.map +1 -1
- package/dist/codex/config/transaction.d.ts +6 -4
- package/dist/codex/config/transaction.d.ts.map +1 -1
- package/dist/codex/config/transaction.js +4 -3
- package/dist/codex/config/transaction.js.map +1 -1
- package/dist/codex/images/clipboard-copies.d.ts +39 -0
- package/dist/codex/images/clipboard-copies.d.ts.map +1 -0
- package/dist/codex/images/clipboard-copies.js +91 -0
- package/dist/codex/images/clipboard-copies.js.map +1 -0
- package/dist/codex/model-picker.d.ts +1 -1
- package/dist/codex/model-picker.d.ts.map +1 -1
- package/dist/codex/model-picker.js +16 -6
- package/dist/codex/model-picker.js.map +1 -1
- package/dist/codex/preflight.d.ts +2 -2
- package/dist/codex/preflight.d.ts.map +1 -1
- package/dist/codex/preflight.js +28 -21
- package/dist/codex/preflight.js.map +1 -1
- package/dist/codex/pty.d.ts +25 -3
- package/dist/codex/pty.d.ts.map +1 -1
- package/dist/codex/pty.js +53 -7
- package/dist/codex/pty.js.map +1 -1
- package/dist/codex/questions/candidates.d.ts.map +1 -1
- package/dist/codex/questions/candidates.js +4 -5
- package/dist/codex/questions/candidates.js.map +1 -1
- package/dist/codex/questions/driver.js +2 -2
- package/dist/codex/questions/driver.js.map +1 -1
- package/dist/codex/questions/records.d.ts +1 -1
- package/dist/codex/questions/records.d.ts.map +1 -1
- package/dist/codex/questions/records.js +1 -3
- package/dist/codex/questions/records.js.map +1 -1
- package/dist/codex/screen/clearance.d.ts +6 -0
- package/dist/codex/screen/clearance.d.ts.map +1 -1
- package/dist/codex/screen/clearance.js +10 -0
- package/dist/codex/screen/clearance.js.map +1 -1
- package/dist/codex/screen-table.d.ts.map +1 -1
- package/dist/codex/screen-table.js +6 -2
- package/dist/codex/screen-table.js.map +1 -1
- package/dist/codex/session/bridge.d.ts +1 -0
- package/dist/codex/session/bridge.d.ts.map +1 -1
- package/dist/codex/session/bridge.js +3 -1
- package/dist/codex/session/bridge.js.map +1 -1
- package/dist/codex/session/build.d.ts.map +1 -1
- package/dist/codex/session/build.js +14 -12
- package/dist/codex/session/build.js.map +1 -1
- package/dist/codex/session/cleanup.d.ts +2 -2
- package/dist/codex/session/cleanup.d.ts.map +1 -1
- package/dist/codex/session/cleanup.js +8 -11
- package/dist/codex/session/cleanup.js.map +1 -1
- package/dist/codex/session/config-switch.d.ts +20 -0
- package/dist/codex/session/config-switch.d.ts.map +1 -0
- package/dist/codex/session/config-switch.js +42 -0
- package/dist/codex/session/config-switch.js.map +1 -0
- package/dist/codex/session/hooks.d.ts.map +1 -1
- package/dist/codex/session/hooks.js +7 -0
- package/dist/codex/session/hooks.js.map +1 -1
- package/dist/codex/session/index.d.ts.map +1 -1
- package/dist/codex/session/index.js +34 -16
- package/dist/codex/session/index.js.map +1 -1
- package/dist/codex/session/instance.d.ts +10 -12
- package/dist/codex/session/instance.d.ts.map +1 -1
- package/dist/codex/session/instance.js +42 -37
- package/dist/codex/session/instance.js.map +1 -1
- package/dist/codex/session/readiness.d.ts +11 -0
- package/dist/codex/session/readiness.d.ts.map +1 -0
- package/dist/codex/session/readiness.js +22 -0
- package/dist/codex/session/readiness.js.map +1 -0
- package/dist/codex/session/resume.d.ts.map +1 -1
- package/dist/codex/session/resume.js +9 -4
- package/dist/codex/session/resume.js.map +1 -1
- package/dist/codex/session/transcript.d.ts.map +1 -1
- package/dist/codex/session/transcript.js +12 -1
- package/dist/codex/session/transcript.js.map +1 -1
- package/dist/codex/session/turn-commit.d.ts +58 -0
- package/dist/codex/session/turn-commit.d.ts.map +1 -0
- package/dist/codex/session/turn-commit.js +97 -0
- package/dist/codex/session/turn-commit.js.map +1 -0
- package/dist/codex/session/warnings.d.ts +13 -6
- package/dist/codex/session/warnings.d.ts.map +1 -1
- package/dist/codex/session/warnings.js +36 -9
- package/dist/codex/session/warnings.js.map +1 -1
- package/dist/codex/startup-prompts.d.ts +3 -0
- package/dist/codex/startup-prompts.d.ts.map +1 -1
- package/dist/codex/startup-prompts.js +20 -13
- package/dist/codex/startup-prompts.js.map +1 -1
- package/dist/codex/startup-warnings.d.ts +2 -0
- package/dist/codex/startup-warnings.d.ts.map +1 -1
- package/dist/codex/startup-warnings.js +6 -0
- package/dist/codex/startup-warnings.js.map +1 -1
- package/dist/codex/transcript/payload.d.ts +8 -0
- package/dist/codex/transcript/payload.d.ts.map +1 -0
- package/dist/codex/transcript/payload.js +11 -0
- package/dist/codex/transcript/payload.js.map +1 -0
- package/dist/codex/transcript/rejection.d.ts +15 -0
- package/dist/codex/transcript/rejection.d.ts.map +1 -0
- package/dist/codex/transcript/rejection.js +44 -0
- package/dist/codex/transcript/rejection.js.map +1 -0
- package/dist/codex/transcript/turn-end.d.ts +8 -0
- package/dist/codex/transcript/turn-end.d.ts.map +1 -0
- package/dist/codex/transcript/turn-end.js +17 -0
- package/dist/codex/transcript/turn-end.js.map +1 -0
- package/dist/codex/transcript/watcher.d.ts +5 -2
- package/dist/codex/transcript/watcher.d.ts.map +1 -1
- package/dist/codex/transcript/watcher.js +11 -6
- package/dist/codex/transcript/watcher.js.map +1 -1
- package/dist/codex/trust-retry.d.ts +12 -0
- package/dist/codex/trust-retry.d.ts.map +1 -0
- package/dist/codex/trust-retry.js +12 -0
- package/dist/codex/trust-retry.js.map +1 -0
- package/dist/codex/update/skip-attempt.d.ts +2 -0
- package/dist/codex/update/skip-attempt.d.ts.map +1 -1
- package/dist/codex/update/skip-attempt.js +4 -0
- package/dist/codex/update/skip-attempt.js.map +1 -1
- package/dist/codex/update/tracker.d.ts +2 -0
- package/dist/codex/update/tracker.d.ts.map +1 -1
- package/dist/codex/update/tracker.js +4 -0
- package/dist/codex/update/tracker.js.map +1 -1
- package/dist/core/delay.d.ts +3 -2
- package/dist/core/delay.d.ts.map +1 -1
- package/dist/core/delay.js +3 -2
- package/dist/core/delay.js.map +1 -1
- package/dist/core/errors.d.ts +33 -4
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +51 -7
- package/dist/core/errors.js.map +1 -1
- package/dist/core/images/materialize.d.ts +13 -4
- package/dist/core/images/materialize.d.ts.map +1 -1
- package/dist/core/images/materialize.js +48 -11
- package/dist/core/images/materialize.js.map +1 -1
- package/dist/core/input/abort.d.ts +15 -0
- package/dist/core/input/abort.d.ts.map +1 -1
- package/dist/core/input/abort.js +18 -2
- package/dist/core/input/abort.js.map +1 -1
- package/dist/core/input/constants.d.ts +4 -1
- package/dist/core/input/constants.d.ts.map +1 -1
- package/dist/core/input/constants.js +4 -1
- package/dist/core/input/constants.js.map +1 -1
- package/dist/core/input/index.d.ts +1 -1
- package/dist/core/input/index.d.ts.map +1 -1
- package/dist/core/input/index.js +1 -1
- package/dist/core/input/index.js.map +1 -1
- package/dist/core/models/clearance.d.ts +38 -0
- package/dist/core/models/clearance.d.ts.map +1 -0
- package/dist/core/models/clearance.js +38 -0
- package/dist/core/models/clearance.js.map +1 -0
- package/dist/core/models/close-wait.d.ts +17 -0
- package/dist/core/models/close-wait.d.ts.map +1 -0
- package/dist/core/models/close-wait.js +44 -0
- package/dist/core/models/close-wait.js.map +1 -0
- package/dist/core/models/dialog-region.d.ts +18 -3
- package/dist/core/models/dialog-region.d.ts.map +1 -1
- package/dist/core/models/dialog-region.js +29 -40
- package/dist/core/models/dialog-region.js.map +1 -1
- package/dist/core/models/input.d.ts +10 -1
- package/dist/core/models/input.d.ts.map +1 -1
- package/dist/core/models/input.js +15 -2
- package/dist/core/models/input.js.map +1 -1
- package/dist/core/models/intervention.d.ts +2 -2
- package/dist/core/models/intervention.d.ts.map +1 -1
- package/dist/core/models/intervention.js +6 -3
- package/dist/core/models/intervention.js.map +1 -1
- package/dist/core/models/own-picker.d.ts +21 -0
- package/dist/core/models/own-picker.d.ts.map +1 -0
- package/dist/core/models/own-picker.js +21 -0
- package/dist/core/models/own-picker.js.map +1 -0
- package/dist/core/models/picker.d.ts +34 -4
- package/dist/core/models/picker.d.ts.map +1 -1
- package/dist/core/models/picker.js +50 -44
- package/dist/core/models/picker.js.map +1 -1
- package/dist/core/models/row-block.d.ts +66 -0
- package/dist/core/models/row-block.d.ts.map +1 -0
- package/dist/core/models/row-block.js +87 -0
- package/dist/core/models/row-block.js.map +1 -0
- package/dist/core/models/rows.d.ts +32 -3
- package/dist/core/models/rows.d.ts.map +1 -1
- package/dist/core/models/rows.js +48 -20
- package/dist/core/models/rows.js.map +1 -1
- package/dist/core/models/tui-screen.d.ts +6 -1
- package/dist/core/models/tui-screen.d.ts.map +1 -1
- package/dist/core/models/tui-screen.js +25 -10
- package/dist/core/models/tui-screen.js.map +1 -1
- package/dist/core/models/window.d.ts +49 -0
- package/dist/core/models/window.d.ts.map +1 -0
- package/dist/core/models/window.js +105 -0
- package/dist/core/models/window.js.map +1 -0
- package/dist/core/path-trust.d.ts +11 -0
- package/dist/core/path-trust.d.ts.map +1 -0
- package/dist/core/path-trust.js +21 -0
- package/dist/core/path-trust.js.map +1 -0
- package/dist/core/screen-facts.d.ts +3 -1
- package/dist/core/screen-facts.d.ts.map +1 -1
- package/dist/core/screen-facts.js +1 -0
- package/dist/core/screen-facts.js.map +1 -1
- package/dist/core/simple/boundary-signal.d.ts +41 -6
- package/dist/core/simple/boundary-signal.d.ts.map +1 -1
- package/dist/core/simple/boundary-signal.js +43 -3
- package/dist/core/simple/boundary-signal.js.map +1 -1
- package/dist/core/simple/close.d.ts +2 -1
- package/dist/core/simple/close.d.ts.map +1 -1
- package/dist/core/simple/close.js +10 -2
- package/dist/core/simple/close.js.map +1 -1
- package/dist/core/simple/turn-boundary.d.ts +2 -0
- package/dist/core/simple/turn-boundary.d.ts.map +1 -1
- package/dist/core/simple/turn-boundary.js +1 -1
- package/dist/core/simple/turn-boundary.js.map +1 -1
- package/dist/core/simple/turn-types.d.ts +9 -3
- package/dist/core/simple/turn-types.d.ts.map +1 -1
- package/dist/core/simple/turn-types.js +10 -2
- package/dist/core/simple/turn-types.js.map +1 -1
- package/dist/core/simple/turn.d.ts +2 -0
- package/dist/core/simple/turn.d.ts.map +1 -1
- package/dist/core/simple/turn.js +11 -5
- package/dist/core/simple/turn.js.map +1 -1
- package/dist/core/terminal-options.d.ts +17 -1
- package/dist/core/terminal-options.d.ts.map +1 -1
- package/dist/core/terminal-options.js +20 -8
- package/dist/core/terminal-options.js.map +1 -1
- package/dist/core/transcript/cursor-io.d.ts +8 -0
- package/dist/core/transcript/cursor-io.d.ts.map +1 -1
- package/dist/core/transcript/cursor-io.js +11 -5
- package/dist/core/transcript/cursor-io.js.map +1 -1
- package/dist/core/transcript/cursor.d.ts +28 -4
- package/dist/core/transcript/cursor.d.ts.map +1 -1
- package/dist/core/transcript/cursor.js +53 -7
- package/dist/core/transcript/cursor.js.map +1 -1
- package/dist/core/transcript/drain.d.ts +43 -0
- package/dist/core/transcript/drain.d.ts.map +1 -0
- package/dist/core/transcript/drain.js +67 -0
- package/dist/core/transcript/drain.js.map +1 -0
- package/dist/core/trust/abortable.d.ts +12 -0
- package/dist/core/trust/abortable.d.ts.map +1 -0
- package/dist/core/trust/abortable.js +48 -0
- package/dist/core/trust/abortable.js.map +1 -0
- package/dist/core/trust/allowlist.d.ts +2 -0
- package/dist/core/trust/allowlist.d.ts.map +1 -1
- package/dist/core/trust/allowlist.js +4 -1
- package/dist/core/trust/allowlist.js.map +1 -1
- package/dist/core/trust/blocking.d.ts +11 -0
- package/dist/core/trust/blocking.d.ts.map +1 -1
- package/dist/core/trust/blocking.js +5 -4
- package/dist/core/trust/blocking.js.map +1 -1
- package/dist/core/trust/copy.d.ts.map +1 -1
- package/dist/core/trust/copy.js +7 -1
- package/dist/core/trust/copy.js.map +1 -1
- package/dist/core/trust/deadline.d.ts +24 -0
- package/dist/core/trust/deadline.d.ts.map +1 -0
- package/dist/core/trust/deadline.js +56 -0
- package/dist/core/trust/deadline.js.map +1 -0
- package/dist/core/trust/dialog.d.ts +11 -2
- package/dist/core/trust/dialog.d.ts.map +1 -1
- package/dist/core/trust/dialog.js +12 -3
- package/dist/core/trust/dialog.js.map +1 -1
- package/dist/core/trust/options.d.ts +5 -1
- package/dist/core/trust/options.d.ts.map +1 -1
- package/dist/core/trust/options.js +8 -2
- package/dist/core/trust/options.js.map +1 -1
- package/dist/core/trust/prompts.d.ts +3 -0
- package/dist/core/trust/prompts.d.ts.map +1 -1
- package/dist/core/trust/prompts.js +2 -1
- package/dist/core/trust/prompts.js.map +1 -1
- package/dist/core/trust/responder.d.ts +10 -5
- package/dist/core/trust/responder.d.ts.map +1 -1
- package/dist/core/trust/responder.js +37 -33
- package/dist/core/trust/responder.js.map +1 -1
- package/dist/core/trust/step.d.ts +67 -0
- package/dist/core/trust/step.d.ts.map +1 -0
- package/dist/core/trust/step.js +45 -0
- package/dist/core/trust/step.js.map +1 -0
- package/dist/core/trust/types.d.ts +21 -1
- package/dist/core/trust/types.d.ts.map +1 -1
- package/dist/core/trust/types.js +25 -1
- package/dist/core/trust/types.js.map +1 -1
- package/dist/core/trust/view.d.ts +2 -0
- package/dist/core/trust/view.d.ts.map +1 -1
- package/dist/core/trust/view.js +3 -0
- package/dist/core/trust/view.js.map +1 -1
- package/dist/core/trust/write.d.ts +31 -6
- package/dist/core/trust/write.d.ts.map +1 -1
- package/dist/core/trust/write.js +95 -80
- package/dist/core/trust/write.js.map +1 -1
- package/dist/core/turn-state.d.ts +18 -4
- package/dist/core/turn-state.d.ts.map +1 -1
- package/dist/core/turn-state.js +47 -25
- package/dist/core/turn-state.js.map +1 -1
- package/dist/core/warnings/images.d.ts +22 -0
- package/dist/core/warnings/images.d.ts.map +1 -0
- package/dist/core/warnings/images.js +3 -0
- package/dist/core/warnings/images.js.map +1 -0
- package/dist/core/warnings/index.d.ts +3 -2
- package/dist/core/warnings/index.d.ts.map +1 -1
- package/dist/core/warnings/lifecycle.d.ts +35 -4
- package/dist/core/warnings/lifecycle.d.ts.map +1 -1
- package/dist/core/warnings/lifecycle.js +1 -1
- package/dist/core/warnings/update.d.ts +8 -4
- package/dist/core/warnings/update.d.ts.map +1 -1
- package/dist/core/warnings/update.js +21 -6
- package/dist/core/warnings/update.js.map +1 -1
- package/dist/pty/exit-latch.d.ts +28 -0
- package/dist/pty/exit-latch.d.ts.map +1 -0
- package/dist/pty/exit-latch.js +50 -0
- package/dist/pty/exit-latch.js.map +1 -0
- package/dist/runtime/exit-status.d.ts +7 -0
- package/dist/runtime/exit-status.d.ts.map +1 -0
- package/dist/runtime/exit-status.js +13 -0
- package/dist/runtime/exit-status.js.map +1 -0
- package/dist/runtime/home-guard/index.d.ts +45 -0
- package/dist/runtime/home-guard/index.d.ts.map +1 -0
- package/dist/runtime/home-guard/index.js +69 -0
- package/dist/runtime/home-guard/index.js.map +1 -0
- package/dist/runtime/loop-restore.d.ts +9 -9
- package/dist/runtime/loop-restore.d.ts.map +1 -1
- package/dist/runtime/loop-restore.js +10 -10
- package/dist/runtime/loop-restore.js.map +1 -1
- package/dist/runtime/probe/capped-buffer.d.ts +16 -0
- package/dist/runtime/probe/capped-buffer.d.ts.map +1 -0
- package/dist/runtime/probe/capped-buffer.js +38 -0
- package/dist/runtime/probe/capped-buffer.js.map +1 -0
- package/dist/runtime/probe/capture.d.ts +55 -0
- package/dist/runtime/probe/capture.d.ts.map +1 -0
- package/dist/runtime/probe/capture.js +71 -0
- package/dist/runtime/probe/capture.js.map +1 -0
- package/dist/runtime/{probe-cleanup.d.ts → probe/cleanup.d.ts} +2 -2
- package/dist/runtime/probe/cleanup.d.ts.map +1 -0
- package/dist/runtime/{probe-cleanup.js → probe/cleanup.js} +3 -3
- package/dist/runtime/probe/cleanup.js.map +1 -0
- package/dist/runtime/probe/directory-key.d.ts +26 -0
- package/dist/runtime/probe/directory-key.d.ts.map +1 -0
- package/dist/runtime/probe/directory-key.js +46 -0
- package/dist/runtime/probe/directory-key.js.map +1 -0
- package/dist/runtime/probe/index.d.ts +25 -0
- package/dist/runtime/probe/index.d.ts.map +1 -0
- package/dist/runtime/probe/index.js +153 -0
- package/dist/runtime/probe/index.js.map +1 -0
- package/dist/runtime/probe/lookup.d.ts +12 -0
- package/dist/runtime/probe/lookup.d.ts.map +1 -0
- package/dist/runtime/probe/lookup.js +29 -0
- package/dist/runtime/probe/lookup.js.map +1 -0
- package/dist/runtime/probe/named-pipes.d.ts +35 -0
- package/dist/runtime/probe/named-pipes.d.ts.map +1 -0
- package/dist/runtime/probe/named-pipes.js +167 -0
- package/dist/runtime/probe/named-pipes.js.map +1 -0
- package/dist/runtime/probe/private-directory.d.ts +14 -0
- package/dist/runtime/probe/private-directory.d.ts.map +1 -0
- package/dist/runtime/probe/private-directory.js +50 -0
- package/dist/runtime/probe/private-directory.js.map +1 -0
- package/dist/runtime/probe/results.d.ts +14 -0
- package/dist/runtime/probe/results.d.ts.map +1 -0
- package/dist/runtime/probe/results.js +38 -0
- package/dist/runtime/probe/results.js.map +1 -0
- package/dist/runtime/probe/slots.d.ts +17 -0
- package/dist/runtime/probe/slots.d.ts.map +1 -0
- package/dist/runtime/probe/slots.js +35 -0
- package/dist/runtime/probe/slots.js.map +1 -0
- package/dist/runtime/probe/start.d.ts +64 -0
- package/dist/runtime/probe/start.d.ts.map +1 -0
- package/dist/runtime/probe/start.js +80 -0
- package/dist/runtime/probe/start.js.map +1 -0
- package/dist/runtime/probe-cache.d.ts +19 -0
- package/dist/runtime/probe-cache.d.ts.map +1 -0
- package/dist/runtime/probe-cache.js +56 -0
- package/dist/runtime/probe-cache.js.map +1 -0
- package/dist/runtime/readiness/initial-ready.d.ts +31 -5
- package/dist/runtime/readiness/initial-ready.d.ts.map +1 -1
- package/dist/runtime/readiness/initial-ready.js +64 -18
- package/dist/runtime/readiness/initial-ready.js.map +1 -1
- package/dist/runtime/seams.d.ts +14 -2
- package/dist/runtime/seams.d.ts.map +1 -1
- package/dist/runtime/seams.js +2 -2
- package/dist/runtime/seams.js.map +1 -1
- package/dist/runtime/session/base.d.ts.map +1 -1
- package/dist/runtime/session/base.js +9 -6
- package/dist/runtime/session/base.js.map +1 -1
- package/dist/runtime/session/commands.d.ts +6 -4
- package/dist/runtime/session/commands.d.ts.map +1 -1
- package/dist/runtime/session/commands.js +5 -2
- package/dist/runtime/session/commands.js.map +1 -1
- package/dist/runtime/session/frames.d.ts +12 -2
- package/dist/runtime/session/frames.d.ts.map +1 -1
- package/dist/runtime/session/frames.js +10 -3
- package/dist/runtime/session/frames.js.map +1 -1
- package/dist/runtime/session/image-attach.js +7 -2
- package/dist/runtime/session/image-attach.js.map +1 -1
- package/dist/runtime/session/launch-directory.d.ts +33 -0
- package/dist/runtime/session/launch-directory.d.ts.map +1 -0
- package/dist/runtime/session/launch-directory.js +84 -0
- package/dist/runtime/session/launch-directory.js.map +1 -0
- package/dist/runtime/session/lifecycle.d.ts +3 -3
- package/dist/runtime/session/lifecycle.d.ts.map +1 -1
- package/dist/runtime/session/lifecycle.js +1 -5
- package/dist/runtime/session/lifecycle.js.map +1 -1
- package/dist/runtime/session/loops.d.ts +1 -1
- package/dist/runtime/session/loops.d.ts.map +1 -1
- package/dist/runtime/session/loops.js +6 -3
- package/dist/runtime/session/loops.js.map +1 -1
- package/dist/runtime/session/picker-cleanup.d.ts +6 -21
- package/dist/runtime/session/picker-cleanup.d.ts.map +1 -1
- package/dist/runtime/session/picker-cleanup.js +19 -31
- package/dist/runtime/session/picker-cleanup.js.map +1 -1
- package/dist/runtime/session/picker-hold.d.ts +24 -0
- package/dist/runtime/session/picker-hold.d.ts.map +1 -0
- package/dist/runtime/session/picker-hold.js +42 -0
- package/dist/runtime/session/picker-hold.js.map +1 -0
- package/dist/runtime/session/picker.d.ts +15 -13
- package/dist/runtime/session/picker.d.ts.map +1 -1
- package/dist/runtime/session/picker.js +49 -27
- package/dist/runtime/session/picker.js.map +1 -1
- package/dist/runtime/session/prepare-state.d.ts +6 -0
- package/dist/runtime/session/prepare-state.d.ts.map +1 -0
- package/dist/runtime/session/prepare-state.js +14 -0
- package/dist/runtime/session/prepare-state.js.map +1 -0
- package/dist/runtime/session/questions.d.ts +2 -2
- package/dist/runtime/session/questions.d.ts.map +1 -1
- package/dist/runtime/session/questions.js.map +1 -1
- package/dist/runtime/session/readiness.d.ts +14 -5
- package/dist/runtime/session/readiness.d.ts.map +1 -1
- package/dist/runtime/session/readiness.js +22 -6
- package/dist/runtime/session/readiness.js.map +1 -1
- package/dist/runtime/session/reap.d.ts +11 -7
- package/dist/runtime/session/reap.d.ts.map +1 -1
- package/dist/runtime/session/reap.js +16 -10
- package/dist/runtime/session/reap.js.map +1 -1
- package/dist/runtime/session/runtime-cleanup.d.ts +18 -0
- package/dist/runtime/session/runtime-cleanup.d.ts.map +1 -0
- package/dist/runtime/session/runtime-cleanup.js +18 -0
- package/dist/runtime/session/runtime-cleanup.js.map +1 -0
- package/dist/runtime/session/session-input.d.ts +32 -0
- package/dist/runtime/session/session-input.d.ts.map +1 -0
- package/dist/runtime/session/{picker-input.js → session-input.js} +35 -7
- package/dist/runtime/session/session-input.js.map +1 -0
- package/dist/runtime/session/shutdown-binding.d.ts +12 -1
- package/dist/runtime/session/shutdown-binding.d.ts.map +1 -1
- package/dist/runtime/session/shutdown-binding.js +33 -1
- package/dist/runtime/session/shutdown-binding.js.map +1 -1
- package/dist/runtime/session/shutdown-cleanup.d.ts +17 -0
- package/dist/runtime/session/shutdown-cleanup.d.ts.map +1 -0
- package/dist/runtime/session/shutdown-cleanup.js +49 -0
- package/dist/runtime/session/shutdown-cleanup.js.map +1 -0
- package/dist/runtime/session/shutdown.d.ts +3 -2
- package/dist/runtime/session/shutdown.d.ts.map +1 -1
- package/dist/runtime/session/shutdown.js +13 -24
- package/dist/runtime/session/shutdown.js.map +1 -1
- package/dist/runtime/shell-quote.d.ts +8 -0
- package/dist/runtime/shell-quote.d.ts.map +1 -0
- package/dist/runtime/shell-quote.js +10 -0
- package/dist/runtime/shell-quote.js.map +1 -0
- package/dist/runtime/shell.d.ts +36 -12
- package/dist/runtime/shell.d.ts.map +1 -1
- package/dist/runtime/shell.js +90 -14
- package/dist/runtime/shell.js.map +1 -1
- package/dist/runtime/shutdown/coalesce.d.ts +15 -0
- package/dist/runtime/shutdown/coalesce.d.ts.map +1 -0
- package/dist/runtime/shutdown/coalesce.js +42 -0
- package/dist/runtime/shutdown/coalesce.js.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/failures.d.ts +24 -0
- package/dist/runtime/shutdown/detached-sweep/failures.d.ts.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/failures.js +32 -0
- package/dist/runtime/shutdown/detached-sweep/failures.js.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/index.d.ts +55 -0
- package/dist/runtime/shutdown/detached-sweep/index.d.ts.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/index.js +129 -0
- package/dist/runtime/shutdown/detached-sweep/index.js.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/kill.d.ts +37 -0
- package/dist/runtime/shutdown/detached-sweep/kill.d.ts.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/kill.js +87 -0
- package/dist/runtime/shutdown/detached-sweep/kill.js.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/record.d.ts +67 -0
- package/dist/runtime/shutdown/detached-sweep/record.d.ts.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/record.js +111 -0
- package/dist/runtime/shutdown/detached-sweep/record.js.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/rounds.d.ts +78 -0
- package/dist/runtime/shutdown/detached-sweep/rounds.d.ts.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/rounds.js +116 -0
- package/dist/runtime/shutdown/detached-sweep/rounds.js.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/survivors.d.ts +40 -0
- package/dist/runtime/shutdown/detached-sweep/survivors.d.ts.map +1 -0
- package/dist/runtime/shutdown/detached-sweep/survivors.js +112 -0
- package/dist/runtime/shutdown/detached-sweep/survivors.js.map +1 -0
- package/dist/runtime/shutdown/leader-group.d.ts +29 -0
- package/dist/runtime/shutdown/leader-group.d.ts.map +1 -0
- package/dist/runtime/shutdown/leader-group.js +35 -0
- package/dist/runtime/shutdown/leader-group.js.map +1 -0
- package/dist/runtime/shutdown/native-read-admission.d.ts +13 -0
- package/dist/runtime/shutdown/native-read-admission.d.ts.map +1 -0
- package/dist/runtime/shutdown/native-read-admission.js +64 -0
- package/dist/runtime/shutdown/native-read-admission.js.map +1 -0
- package/dist/runtime/shutdown/process-table.d.ts +80 -0
- package/dist/runtime/shutdown/process-table.d.ts.map +1 -0
- package/dist/runtime/shutdown/process-table.js +147 -0
- package/dist/runtime/shutdown/process-table.js.map +1 -0
- package/dist/runtime/shutdown/process-tree-ops.d.ts +39 -0
- package/dist/runtime/shutdown/process-tree-ops.d.ts.map +1 -0
- package/dist/runtime/shutdown/process-tree-ops.js +73 -0
- package/dist/runtime/shutdown/process-tree-ops.js.map +1 -0
- package/dist/runtime/shutdown/read-timeout.d.ts +4 -0
- package/dist/runtime/shutdown/read-timeout.d.ts.map +1 -0
- package/dist/runtime/shutdown/read-timeout.js +6 -0
- package/dist/runtime/shutdown/read-timeout.js.map +1 -0
- package/dist/runtime/shutdown/reap-queue.d.ts +10 -0
- package/dist/runtime/shutdown/reap-queue.d.ts.map +1 -0
- package/dist/runtime/shutdown/reap-queue.js +29 -0
- package/dist/runtime/shutdown/reap-queue.js.map +1 -0
- package/dist/runtime/shutdown/reap-tree.d.ts +42 -32
- package/dist/runtime/shutdown/reap-tree.d.ts.map +1 -1
- package/dist/runtime/shutdown/reap-tree.js +78 -71
- package/dist/runtime/shutdown/reap-tree.js.map +1 -1
- package/dist/runtime/shutdown/shared-daemon.d.ts +59 -0
- package/dist/runtime/shutdown/shared-daemon.d.ts.map +1 -0
- package/dist/runtime/shutdown/shared-daemon.js +139 -0
- package/dist/runtime/shutdown/shared-daemon.js.map +1 -0
- package/dist/runtime/shutdown/teardown.d.ts +15 -0
- package/dist/runtime/shutdown/teardown.d.ts.map +1 -1
- package/dist/runtime/shutdown/teardown.js +19 -6
- package/dist/runtime/shutdown/teardown.js.map +1 -1
- package/dist/runtime/shutdown/terminate.d.ts +21 -1
- package/dist/runtime/shutdown/terminate.d.ts.map +1 -1
- package/dist/runtime/shutdown/terminate.js +83 -56
- package/dist/runtime/shutdown/terminate.js.map +1 -1
- package/dist/runtime/startup/buffer.d.ts +26 -7
- package/dist/runtime/startup/buffer.d.ts.map +1 -1
- package/dist/runtime/startup/buffer.js +42 -19
- package/dist/runtime/startup/buffer.js.map +1 -1
- package/dist/runtime/startup/cleanup.d.ts +37 -11
- package/dist/runtime/startup/cleanup.d.ts.map +1 -1
- package/dist/runtime/startup/cleanup.js +55 -25
- package/dist/runtime/startup/cleanup.js.map +1 -1
- package/dist/runtime/startup/index.d.ts +13 -1
- package/dist/runtime/startup/index.d.ts.map +1 -1
- package/dist/runtime/startup/index.js +38 -6
- package/dist/runtime/startup/index.js.map +1 -1
- package/dist/runtime/stream-marker.d.ts +17 -0
- package/dist/runtime/stream-marker.d.ts.map +1 -0
- package/dist/runtime/stream-marker.js +35 -0
- package/dist/runtime/stream-marker.js.map +1 -0
- package/dist/runtime/update/acquire.d.ts +16 -0
- package/dist/runtime/update/acquire.d.ts.map +1 -0
- package/dist/runtime/update/acquire.js +62 -0
- package/dist/runtime/update/acquire.js.map +1 -0
- package/dist/runtime/update/completion.d.ts +12 -0
- package/dist/runtime/update/completion.d.ts.map +1 -0
- package/dist/runtime/update/completion.js +50 -0
- package/dist/runtime/update/completion.js.map +1 -0
- package/dist/runtime/update/lock.d.ts +1 -1
- package/dist/runtime/update/lock.d.ts.map +1 -1
- package/dist/runtime/update/lock.js +21 -38
- package/dist/runtime/update/lock.js.map +1 -1
- package/dist/runtime/update/once.d.ts +16 -13
- package/dist/runtime/update/once.d.ts.map +1 -1
- package/dist/runtime/update/once.js +41 -31
- package/dist/runtime/update/once.js.map +1 -1
- package/dist/runtime/update/owner.js +1 -1
- package/dist/runtime/update/retained-lease.js +1 -1
- package/dist/runtime/update/waiting.d.ts +14 -1
- package/dist/runtime/update/waiting.d.ts.map +1 -1
- package/dist/runtime/update/waiting.js +20 -12
- package/dist/runtime/update/waiting.js.map +1 -1
- package/dist/state/canonical-path.d.ts +5 -0
- package/dist/state/canonical-path.d.ts.map +1 -1
- package/dist/state/canonical-path.js +11 -5
- package/dist/state/canonical-path.js.map +1 -1
- package/dist/state/directories.d.ts +31 -1
- package/dist/state/directories.d.ts.map +1 -1
- package/dist/state/directories.js +75 -13
- package/dist/state/directories.js.map +1 -1
- package/dist/state/files.d.ts +3 -3
- package/dist/state/files.d.ts.map +1 -1
- package/dist/state/files.js +4 -10
- package/dist/state/files.js.map +1 -1
- package/dist/state/launch-ownership.d.ts +4 -2
- package/dist/state/launch-ownership.d.ts.map +1 -1
- package/dist/state/launch-ownership.js +18 -10
- package/dist/state/launch-ownership.js.map +1 -1
- package/dist/state/launch-publication.d.ts +7 -1
- package/dist/state/launch-publication.d.ts.map +1 -1
- package/dist/state/launch-publication.js +14 -2
- package/dist/state/launch-publication.js.map +1 -1
- package/dist/state/loop-store.d.ts +15 -4
- package/dist/state/loop-store.d.ts.map +1 -1
- package/dist/state/loop-store.js +13 -7
- package/dist/state/loop-store.js.map +1 -1
- package/dist/state/preparation/created-directories.d.ts +13 -0
- package/dist/state/preparation/created-directories.d.ts.map +1 -0
- package/dist/state/preparation/created-directories.js +45 -0
- package/dist/state/preparation/created-directories.js.map +1 -0
- package/dist/state/preparation/ignore-sync.d.ts +9 -0
- package/dist/state/preparation/ignore-sync.d.ts.map +1 -0
- package/dist/state/preparation/ignore-sync.js +47 -0
- package/dist/state/preparation/ignore-sync.js.map +1 -0
- package/dist/state/preparation/index.d.ts +25 -0
- package/dist/state/preparation/index.d.ts.map +1 -0
- package/dist/state/preparation/index.js +31 -0
- package/dist/state/preparation/index.js.map +1 -0
- package/dist/state/preparation/install-ignore.d.ts +6 -0
- package/dist/state/preparation/install-ignore.d.ts.map +1 -0
- package/dist/state/preparation/install-ignore.js +87 -0
- package/dist/state/preparation/install-ignore.js.map +1 -0
- package/dist/state/preparation/rollback-parent.d.ts +3 -0
- package/dist/state/preparation/rollback-parent.d.ts.map +1 -0
- package/dist/state/preparation/rollback-parent.js +18 -0
- package/dist/state/preparation/rollback-parent.js.map +1 -0
- package/dist/state/preparation/root-trust.d.ts +3 -0
- package/dist/state/preparation/root-trust.d.ts.map +1 -0
- package/dist/state/preparation/root-trust.js +70 -0
- package/dist/state/preparation/root-trust.js.map +1 -0
- package/dist/state/private-session.d.ts +5 -2
- package/dist/state/private-session.d.ts.map +1 -1
- package/dist/state/private-session.js +21 -9
- package/dist/state/private-session.js.map +1 -1
- package/dist/state/root.d.ts +25 -0
- package/dist/state/root.d.ts.map +1 -0
- package/dist/state/root.js +84 -0
- package/dist/state/root.js.map +1 -0
- package/dist/state/runtime-paths.d.ts +5 -4
- package/dist/state/runtime-paths.d.ts.map +1 -1
- package/dist/state/runtime-paths.js +5 -4
- package/dist/state/runtime-paths.js.map +1 -1
- package/dist/state/setup-failure.d.ts +3 -0
- package/dist/state/setup-failure.d.ts.map +1 -0
- package/dist/state/setup-failure.js +13 -0
- package/dist/state/setup-failure.js.map +1 -0
- package/dist/state/socket-home.d.ts +17 -12
- package/dist/state/socket-home.d.ts.map +1 -1
- package/dist/state/socket-home.js +31 -14
- package/dist/state/socket-home.js.map +1 -1
- package/dist/state/store.d.ts +1 -3
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +3 -18
- package/dist/state/store.js.map +1 -1
- package/dist/terminal/cursor.d.ts +1 -1
- package/dist/terminal/cursor.d.ts.map +1 -1
- package/dist/terminal/cursor.js +36 -1
- package/dist/terminal/cursor.js.map +1 -1
- package/dist/terminal/headless.d.ts +1 -1
- package/dist/terminal/headless.d.ts.map +1 -1
- package/dist/terminal/headless.js +1 -3
- package/dist/terminal/headless.js.map +1 -1
- package/docs/cli-behavior.md +1218 -28
- package/docs/cli.md +2 -0
- package/docs/codex/cli.md +4 -2
- package/docs/embedding.md +7 -0
- package/docs/performance/terminal-engines.md +88 -0
- package/docs/performance.md +120 -0
- package/package.json +4 -4
- package/prd/04-architecture.md +32 -0
- package/prd/05-api/5.1-starting-claude.md +17 -1
- package/prd/05-api/5.2-resuming-claude.md +5 -0
- package/prd/05-api/5.3-claude-session-api.md +267 -40
- package/prd/05-api/5.4-events.md +77 -10
- package/prd/05-api/5.5-starting-codex.md +3 -1
- package/prd/05-api/5.6-resuming-codex.md +4 -1
- package/prd/05-api/5.7-codex-session-api.md +87 -5
- package/prd/05-api/5.8-session-api.md +32 -1
- package/prd/06-claude-hook-bridge.md +2 -0
- package/prd/07a-codex-hook-bridge.md +5 -0
- package/prd/08-state.md +63 -7
- package/prd/09-lifecycle.md +126 -35
- package/prd/10-errors.md +11 -4
- package/prd/12-e2e.md +81 -0
- package/prd/12a-cli.md +63 -9
- package/prd/14-conformance.md +52 -35
- package/prd/16-maintainer-review.md +11 -0
- package/dist/claude/model-composer.d.ts +0 -2
- package/dist/claude/model-composer.d.ts.map +0 -1
- package/dist/claude/model-composer.js +0 -12
- package/dist/claude/model-composer.js.map +0 -1
- package/dist/claude/transcript/drain.d.ts +0 -33
- package/dist/claude/transcript/drain.d.ts.map +0 -1
- package/dist/claude/transcript/drain.js +0 -56
- package/dist/claude/transcript/drain.js.map +0 -1
- package/dist/codex/session/cli-exit.d.ts +0 -24
- package/dist/codex/session/cli-exit.d.ts.map +0 -1
- package/dist/codex/session/cli-exit.js +0 -43
- package/dist/codex/session/cli-exit.js.map +0 -1
- package/dist/codex/transcript/drain.d.ts +0 -30
- package/dist/codex/transcript/drain.d.ts.map +0 -1
- package/dist/codex/transcript/drain.js +0 -48
- package/dist/codex/transcript/drain.js.map +0 -1
- package/dist/runtime/probe-cleanup.d.ts.map +0 -1
- package/dist/runtime/probe-cleanup.js.map +0 -1
- package/dist/runtime/probe.d.ts +0 -11
- package/dist/runtime/probe.d.ts.map +0 -1
- package/dist/runtime/probe.js +0 -113
- package/dist/runtime/probe.js.map +0 -1
- package/dist/runtime/session/foreign-picker.d.ts +0 -8
- package/dist/runtime/session/foreign-picker.d.ts.map +0 -1
- package/dist/runtime/session/foreign-picker.js +0 -18
- package/dist/runtime/session/foreign-picker.js.map +0 -1
- package/dist/runtime/session/picker-input.d.ts +0 -17
- package/dist/runtime/session/picker-input.d.ts.map +0 -1
- package/dist/runtime/session/picker-input.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The Codex setModel config transaction: snapshot → drive the picker → restore,
|
|
3
|
-
* all under the
|
|
3
|
+
* all under the lock for the session's config file. Factored out of session-instance so
|
|
4
4
|
* every branch (switch succeeds/rejects × restore succeeds/throws) is unit
|
|
5
5
|
* testable without a live session. Implements PRD §5.3 setModel restore and
|
|
6
6
|
* C-CODEX-14 (a late picker rejection must still restore, and a restore failure
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { withCodexConfigLock } from "./lock.js";
|
|
10
10
|
export function runCodexModelSwitch(io) {
|
|
11
11
|
return new Promise((resolve, reject) => {
|
|
12
|
-
const
|
|
12
|
+
const transact = async () => {
|
|
13
13
|
const snapshot = io.snapshot();
|
|
14
14
|
let primary;
|
|
15
15
|
let failed = false;
|
|
@@ -44,7 +44,8 @@ export function runCodexModelSwitch(io) {
|
|
|
44
44
|
restoreAfterSwitch(io, snapshot, failed || closing);
|
|
45
45
|
if (failed)
|
|
46
46
|
throw primary;
|
|
47
|
-
}
|
|
47
|
+
};
|
|
48
|
+
const transaction = withCodexConfigLock(io.path, transact, io.cancel);
|
|
48
49
|
// A rejection already delivered above makes this one a no-op.
|
|
49
50
|
transaction.then(resolve, reject);
|
|
50
51
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/codex/config/transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/codex/config/transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAyChD,MAAM,UAAU,mBAAmB,CAAC,EAAoB;IACtD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC1B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAgB,CAAC;YACrB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,kFAAkF;YAClF,kFAAkF;YAClF,kFAAkF;YAClF,8EAA8E;YAC9E,8EAA8E;YAC9E,MAAM,QAAQ,GAAG,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;YACvC,oFAAoF;YACpF,mFAAmF;YACnF,mFAAmF;YACnF,0EAA0E;YAC1E,MAAM,OAAO,GAAG,QAAQ,KAAK,SAAS,CAAC;YACvC,IAAI,OAAO,EAAE,CAAC;gBACZ,iFAAiF;gBACjF,gFAAgF;gBAChF,mFAAmF;gBACnF,8EAA8E;gBAC9E,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChB,MAAM,QAAQ,CAAC;YACjB,CAAC;YACD,qFAAqF;YACrF,0EAA0E;YAC1E,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC;YACpD,IAAI,MAAM;gBAAE,MAAM,OAAO,CAAC;QAC5B,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QACtE,8DAA8D;QAC9D,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CACzB,EAAoB,EACpB,QAA4B,EAC5B,OAAgB;IAEhB,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO;YAAE,MAAM,YAAY,CAAC;QACjC,IAAI,CAAC;YACH,EAAE,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,+EAA+E;QACjF,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The temp copies Codex saves of pasted images. Codex writes each image pasted into its
|
|
3
|
+
* composer to a `codex-clipboard-*.png` file in its temp directory and never removes it, and
|
|
4
|
+
* Elwood attaches every Codex image by pasting it (C-API-46). A session collects the copies
|
|
5
|
+
* its own transcript names, in the `local_image` parts of the user messages it records, and
|
|
6
|
+
* removes them once its CLI has exited. Implements PRD §5.3 (C-API-46).
|
|
7
|
+
*/
|
|
8
|
+
import type { ImageCopyErrorCode } from "../../core/warnings/images.ts";
|
|
9
|
+
/** The `local_image` paths of a completed `UserMessage` transcript item, of any kind. */
|
|
10
|
+
export declare function localImagePathsIn(item: unknown): readonly string[];
|
|
11
|
+
/**
|
|
12
|
+
* The copy `path` names directly in `tempDir`, rebuilt from `tempDir` and its name, else
|
|
13
|
+
* `undefined`. A path with a `..` segment never counts, since a link before it could lead
|
|
14
|
+
* the original path out of `tempDir`; repeated separators, which Codex may write after a
|
|
15
|
+
* `TMPDIR` that ends in one, do.
|
|
16
|
+
*/
|
|
17
|
+
export declare function clipboardCopyAt(path: string, tempDir: string): string | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* The pasted-image copies a committed transcript item names: those of its `local_image`
|
|
20
|
+
* paths that are copies directly in `tempDir`. Any other path, such as an image the user
|
|
21
|
+
* named by its own path, is never a copy.
|
|
22
|
+
*/
|
|
23
|
+
export declare function clipboardCopiesIn(item: unknown, tempDir: string): readonly string[];
|
|
24
|
+
/** The pasted-image copies one session's transcript has named. */
|
|
25
|
+
export declare class CodexClipboardCopies {
|
|
26
|
+
private readonly elwoodTempDir;
|
|
27
|
+
private readonly paths;
|
|
28
|
+
observe(item: unknown): void;
|
|
29
|
+
/**
|
|
30
|
+
* Removes every copy named so far, then calls `done` with the first failure's errno token,
|
|
31
|
+
* or `undefined` when every copy is gone: at once when there are none, else once the
|
|
32
|
+
* removals have finished. They run one at a time, so a session that pasted many images
|
|
33
|
+
* never blocks the event loop on them. Best-effort, as Elwood's own image temp files are
|
|
34
|
+
* (C-API-44): a copy that cannot be removed is left for the OS to reap. A copy already gone
|
|
35
|
+
* is not a failure.
|
|
36
|
+
*/
|
|
37
|
+
removeAll(done: (failure: ImageCopyErrorCode | undefined) => void): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=clipboard-copies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard-copies.d.ts","sourceRoot":"","sources":["../../../src/codex/images/clipboard-copies.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAOxE,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAUlE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKjF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEnF;AAED,kEAAkE;AAClE,qBAAa,oBAAoB;IAG/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAE3C,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI5B;;;;;;;OAOG;IACH,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,KAAK,IAAI,GAAG,IAAI;CAUzE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The temp copies Codex saves of pasted images. Codex writes each image pasted into its
|
|
3
|
+
* composer to a `codex-clipboard-*.png` file in its temp directory and never removes it, and
|
|
4
|
+
* Elwood attaches every Codex image by pasting it (C-API-46). A session collects the copies
|
|
5
|
+
* its own transcript names, in the `local_image` parts of the user messages it records, and
|
|
6
|
+
* removes them once its CLI has exited. Implements PRD §5.3 (C-API-46).
|
|
7
|
+
*/
|
|
8
|
+
import { unlink } from "node:fs/promises";
|
|
9
|
+
import { tmpdir } from "node:os";
|
|
10
|
+
import { basename, join, normalize, resolve, sep } from "node:path";
|
|
11
|
+
import { isErrnoToken } from "../../core/errors.js";
|
|
12
|
+
import { isRecord } from "../../core/predicates.js";
|
|
13
|
+
import { boundedErrorToken } from "../../core/warnings/reasons.js";
|
|
14
|
+
import { payloadOf } from "../transcript/payload.js";
|
|
15
|
+
/** The name Codex gives a pasted image's copy (a random suffix, six characters or a UUID). */
|
|
16
|
+
const copyNamePattern = /^codex-clipboard-[A-Za-z0-9_-]+\.png$/;
|
|
17
|
+
/** The `local_image` paths of a completed `UserMessage` transcript item, of any kind. */
|
|
18
|
+
export function localImagePathsIn(item) {
|
|
19
|
+
const payload = payloadOf(item);
|
|
20
|
+
const message = payload?.["type"] === "item_completed" ? payload["item"] : undefined;
|
|
21
|
+
if (!(isRecord(message) && message["type"] === "UserMessage"))
|
|
22
|
+
return [];
|
|
23
|
+
const content = message["content"];
|
|
24
|
+
if (!Array.isArray(content))
|
|
25
|
+
return [];
|
|
26
|
+
return content.flatMap((part) => {
|
|
27
|
+
const path = isRecord(part) && part["type"] === "local_image" ? part["path"] : undefined;
|
|
28
|
+
return typeof path === "string" ? [path] : [];
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The copy `path` names directly in `tempDir`, rebuilt from `tempDir` and its name, else
|
|
33
|
+
* `undefined`. A path with a `..` segment never counts, since a link before it could lead
|
|
34
|
+
* the original path out of `tempDir`; repeated separators, which Codex may write after a
|
|
35
|
+
* `TMPDIR` that ends in one, do.
|
|
36
|
+
*/
|
|
37
|
+
export function clipboardCopyAt(path, tempDir) {
|
|
38
|
+
const name = basename(path);
|
|
39
|
+
const copy = join(tempDir, name);
|
|
40
|
+
const direct = normalize(path) === copy && !path.split(sep).includes("..");
|
|
41
|
+
return copyNamePattern.test(name) && direct ? copy : undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The pasted-image copies a committed transcript item names: those of its `local_image`
|
|
45
|
+
* paths that are copies directly in `tempDir`. Any other path, such as an image the user
|
|
46
|
+
* named by its own path, is never a copy.
|
|
47
|
+
*/
|
|
48
|
+
export function clipboardCopiesIn(item, tempDir) {
|
|
49
|
+
return localImagePathsIn(item).flatMap((path) => clipboardCopyAt(path, tempDir) ?? []);
|
|
50
|
+
}
|
|
51
|
+
/** The pasted-image copies one session's transcript has named. */
|
|
52
|
+
export class CodexClipboardCopies {
|
|
53
|
+
// Elwood's temp dir. Codex starts through the user's login shell, which could point it
|
|
54
|
+
// at another; copies there are not this session's to remove (PRD §5.3).
|
|
55
|
+
elwoodTempDir = resolve(tmpdir());
|
|
56
|
+
paths = new Set();
|
|
57
|
+
observe(item) {
|
|
58
|
+
for (const path of clipboardCopiesIn(item, this.elwoodTempDir))
|
|
59
|
+
this.paths.add(path);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Removes every copy named so far, then calls `done` with the first failure's errno token,
|
|
63
|
+
* or `undefined` when every copy is gone: at once when there are none, else once the
|
|
64
|
+
* removals have finished. They run one at a time, so a session that pasted many images
|
|
65
|
+
* never blocks the event loop on them. Best-effort, as Elwood's own image temp files are
|
|
66
|
+
* (C-API-44): a copy that cannot be removed is left for the OS to reap. A copy already gone
|
|
67
|
+
* is not a failure.
|
|
68
|
+
*/
|
|
69
|
+
removeAll(done) {
|
|
70
|
+
const paths = [...this.paths];
|
|
71
|
+
this.paths.clear();
|
|
72
|
+
if (paths.length === 0) {
|
|
73
|
+
done(undefined);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// `done` runs outside the removal's promise, as a deferred exit already does.
|
|
77
|
+
void removeEach(paths).then((failure) => queueMicrotask(() => done(failure)));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function removeEach(paths) {
|
|
81
|
+
let failure;
|
|
82
|
+
for (const path of paths) {
|
|
83
|
+
const code = await unlink(path).then(() => undefined,
|
|
84
|
+
// The errno token, else `UnknownError`: never a path or a raw message.
|
|
85
|
+
(error) => boundedErrorToken(error, isErrnoToken));
|
|
86
|
+
if (code !== undefined && code !== "ENOENT")
|
|
87
|
+
failure ??= code;
|
|
88
|
+
}
|
|
89
|
+
return failure;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=clipboard-copies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard-copies.js","sourceRoot":"","sources":["../../../src/codex/images/clipboard-copies.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Codex /model picker automation spec.
|
|
3
3
|
* Implements PRD §5.7, C-API-23, and C-API-24.
|
|
4
4
|
*/
|
|
5
|
-
import type
|
|
5
|
+
import { type ModelPickerSpec } from "../core/models/picker.ts";
|
|
6
6
|
export declare const codexModelPicker: ModelPickerSpec;
|
|
7
7
|
//# sourceMappingURL=model-picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-picker.d.ts","sourceRoot":"","sources":["../../src/codex/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"model-picker.d.ts","sourceRoot":"","sources":["../../src/codex/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAqBrF,eAAO,MAAM,gBAAgB,EAAE,eAgD9B,CAAC"}
|
|
@@ -3,35 +3,45 @@
|
|
|
3
3
|
* Implements PRD §5.7, C-API-23, and C-API-24.
|
|
4
4
|
*/
|
|
5
5
|
import { sendPickerInput } from "../core/models/input.js";
|
|
6
|
+
import { isOwnCompletePicker } from "../core/models/picker.js";
|
|
6
7
|
import { bottomDialogCandidate, bottomDialogRow, codexModelPickerHeader, ownOperation, parseCodexModelPicker, } from "../core/models/rows.js";
|
|
7
8
|
import { waitForScreen } from "../core/models/tui-screen.js";
|
|
8
9
|
import { codexComposerClearance } from "./screen/clearance.js";
|
|
9
10
|
const reasoningHeader = /Select Reasoning Level/;
|
|
11
|
+
// Both screens close with `Press enter to confirm or esc to go back` on 0.154.0 and with
|
|
12
|
+
// `enter select · esc back` / `enter default · s session · esc back` on 0.164.0.
|
|
13
|
+
const footer = /\besc (?:to go )?back\b/i;
|
|
14
|
+
const pickerGrammar = { header: codexModelPickerHeader, footer };
|
|
15
|
+
const reasoningGrammar = { header: reasoningHeader, footer };
|
|
10
16
|
const changeConfirmed = /Model changed to/;
|
|
11
17
|
export const codexModelPicker = {
|
|
12
18
|
agent: "codex",
|
|
13
19
|
isClear: codexComposerClearance,
|
|
14
|
-
isCandidate: (text) => bottomDialogCandidate(text,
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
isCandidate: (text) => bottomDialogCandidate(text, pickerGrammar) || bottomDialogCandidate(text, reasoningGrammar),
|
|
21
|
+
hasPickerHeader: (text) => codexModelPickerHeader.test(text),
|
|
22
|
+
// Codex's switch has no dialog of the caller's own to replace the picker.
|
|
23
|
+
isCallerDialog: () => false,
|
|
17
24
|
activeDialog: (text, authority) => {
|
|
18
25
|
// Nothing on screen is our dialog unless we opened one; the grammar below only has to
|
|
19
26
|
// locate Elwood's own dialog, never adjudicate arbitrary agent output (C-API-24).
|
|
20
27
|
if (!authority.opened)
|
|
21
28
|
return undefined;
|
|
22
|
-
const picker = bottomDialogRow(text,
|
|
23
|
-
const level = bottomDialogRow(text,
|
|
29
|
+
const picker = bottomDialogRow(text, pickerGrammar);
|
|
30
|
+
const level = bottomDialogRow(text, reasoningGrammar);
|
|
24
31
|
if (picker < 0 && level < 0)
|
|
25
32
|
return undefined;
|
|
26
33
|
return level > picker ? "follow-up" : "picker";
|
|
27
34
|
},
|
|
28
35
|
parse: parseCodexModelPicker,
|
|
36
|
+
// No `withDefaults` here: when Codex draws no `(default)` marker (0.164 never does), each
|
|
37
|
+
// listing reads the configured default from the SESSION's config.toml, so the session
|
|
38
|
+
// binds it (`CodexSessionImpl.picker`, PRD §5.3).
|
|
29
39
|
// Enter confirms the model, then Codex asks for a reasoning level with the
|
|
30
40
|
// cursor pre-set on that model's default; a second Enter keeps it.
|
|
31
41
|
apply: async (io, timeoutMs) => {
|
|
32
42
|
// Enter CONFIRMS a model, so it is revalidated against the operation's own picker
|
|
33
43
|
// rather than a bare header a transcript could print (C-API-24).
|
|
34
|
-
await sendPickerInput(io, "\r", (
|
|
44
|
+
await sendPickerInput(io, "\r", isOwnCompletePicker(codexModelPicker));
|
|
35
45
|
await waitForScreen(io.terminal, (text) => reasoningHeader.test(text), timeoutMs, "codex reasoning level screen", io.signal);
|
|
36
46
|
// Same for the reasoning stage: only our own follow-up may receive this Enter.
|
|
37
47
|
await sendPickerInput(io, "\r", (text) => codexModelPicker.activeDialog(text, ownOperation) === "follow-up");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-picker.js","sourceRoot":"","sources":["../../src/codex/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-picker.js","sourceRoot":"","sources":["../../src/codex/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAwB,MAAM,0BAA0B,CAAC;AACrF,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EAEtB,YAAY,EACZ,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,eAAe,GAAG,wBAAwB,CAAC;AACjD,yFAAyF;AACzF,iFAAiF;AACjF,MAAM,MAAM,GAAG,0BAA0B,CAAC;AAC1C,MAAM,aAAa,GAAkB,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC;AAChF,MAAM,gBAAgB,GAAkB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;AAC5E,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,sBAAsB;IAC/B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC7F,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5D,0EAA0E;IAC1E,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK;IAC3B,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAChC,sFAAsF;QACtF,kFAAkF;QAClF,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QACxC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACtD,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,OAAO,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjD,CAAC;IACD,KAAK,EAAE,qBAAqB;IAC5B,0FAA0F;IAC1F,sFAAsF;IACtF,kDAAkD;IAClD,2EAA2E;IAC3E,mEAAmE;IACnE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;QAC7B,kFAAkF;QAClF,iEAAiE;QACjE,MAAM,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvE,MAAM,aAAa,CACjB,EAAE,CAAC,QAAQ,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EACpC,SAAS,EACT,8BAA8B,EAC9B,EAAE,CAAC,MAAM,CACV,CAAC;QACF,+EAA+E;QAC/E,MAAM,eAAe,CACnB,EAAE,EACF,IAAI,EACJ,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,WAAW,CAC5E,CAAC;QACF,MAAM,aAAa,CACjB,EAAE,CAAC,QAAQ,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EACnE,SAAS,EACT,iCAAiC,EACjC,EAAE,CAAC,MAAM,CACV,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -11,7 +11,7 @@ export type CodexCliCapabilities = {
|
|
|
11
11
|
export type CodexPreflightWarning = DistributiveOmit<Extract<ElwoodWarningEvent, {
|
|
12
12
|
readonly code: "version_unparseable" | "agent_update_failed";
|
|
13
13
|
}>, "elwoodSessionId">;
|
|
14
|
-
export declare function preflightCodex(strictVersionCheck: boolean, autoupdate?: boolean): Promise<CodexPreflightWarning | undefined>;
|
|
15
|
-
export declare function detectCodexCliCapabilities(): Promise<CodexCliCapabilities>;
|
|
14
|
+
export declare function preflightCodex(strictVersionCheck: boolean, autoupdate?: boolean, cwd?: string): Promise<CodexPreflightWarning | undefined>;
|
|
15
|
+
export declare function detectCodexCliCapabilities(cwd?: string): Promise<CodexCliCapabilities>;
|
|
16
16
|
export declare function resetCodexPreflightCacheForTests(): void;
|
|
17
17
|
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/codex/preflight.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/codex/preflight.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAYvF,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAC7C,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAA;CAAE,CAAC;AACjF,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAClD,OAAO,CAAC,kBAAkB,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,CAAA;CAAE,CAAC,EAC7F,iBAAiB,CAClB,CAAC;AAQF,wBAAsB,cAAc,CAClC,kBAAkB,EAAE,OAAO,EAC3B,UAAU,UAAQ,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAuC5C;AAuCD,wBAAgB,0BAA0B,CACxC,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAI/B;AAeD,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD"}
|
package/dist/codex/preflight.js
CHANGED
|
@@ -2,36 +2,39 @@
|
|
|
2
2
|
* Codex CLI availability and version checks.
|
|
3
3
|
* Implements PRD §9.2 and §10.
|
|
4
4
|
*/
|
|
5
|
-
import { elwoodError, probeFailureDetails } from "../core/errors.js";
|
|
5
|
+
import { elwoodError, notFoundDetails, probeFailureDetails } from "../core/errors.js";
|
|
6
6
|
import { compareVersions, parseVersion } from "../core/versions.js";
|
|
7
7
|
import { buildUpdateWarning } from "../core/warnings/update.js";
|
|
8
|
+
import { createDirectoryProbeCache, readInDirectory } from "../runtime/probe/directory-key.js";
|
|
8
9
|
import { currentCommandRunner, currentPlatform } from "../runtime/seams.js";
|
|
9
10
|
import { probeShellCommand, userShell } from "../runtime/shell.js";
|
|
10
|
-
import { cachedAutoupdate, cachedVersionRead,
|
|
11
|
+
import { cachedAutoupdate, cachedVersionRead, maxSettledPreflightDirectoryResults, } from "../runtime/update/once.js";
|
|
11
12
|
// Re-exported for existing importers; the implementation lives in core/versions.ts.
|
|
12
13
|
export const minimumCodexVersion = "0.124.0";
|
|
13
|
-
//
|
|
14
|
-
//
|
|
14
|
+
// Matching-directory capability reads share a run and retain only the derived boolean.
|
|
15
|
+
// A rejected probe is not retained, so a transient `--help` failure does not
|
|
15
16
|
// poison every later Codex start in the process (C-LIFE-11) — a later start re-probes.
|
|
16
|
-
const capabilityProbe =
|
|
17
|
-
export async function preflightCodex(strictVersionCheck, autoupdate = false) {
|
|
17
|
+
const capabilityProbe = createDirectoryProbeCache(maxSettledPreflightDirectoryResults);
|
|
18
|
+
export async function preflightCodex(strictVersionCheck, autoupdate = false, cwd) {
|
|
18
19
|
// Platform check is synchronous and first: unsupported hosts throw before
|
|
19
20
|
// any subprocess is spawned.
|
|
20
21
|
if (currentPlatform() !== "darwin") {
|
|
21
22
|
throw elwoodError("unsupported_platform", "Elwood currently supports macOS only.");
|
|
22
23
|
}
|
|
24
|
+
const workspace = cwd ?? process.cwd();
|
|
23
25
|
let updateError;
|
|
24
26
|
if (autoupdate) {
|
|
25
27
|
// Best-effort: the shared update never rejects; on failure we re-read and fall through to the
|
|
26
28
|
// compatibility gate — fatal only when the INSTALLED CLI is below the minimum (C-LIFE-11).
|
|
29
|
+
// Only a test that reset the update module without setting a coordinator sees a throw here.
|
|
27
30
|
const outcome = await cachedAutoupdate("codex", async () => {
|
|
28
|
-
await readCodexVersion(); // verify existence only after owning the cross-process lease
|
|
29
|
-
await runCodexUpdate();
|
|
31
|
+
await readCodexVersion(workspace); // verify existence only after owning the cross-process lease
|
|
32
|
+
await runCodexUpdate(workspace);
|
|
30
33
|
}, () => capabilityProbe.clear());
|
|
31
34
|
if (!outcome.ok)
|
|
32
35
|
updateError = outcome.error;
|
|
33
36
|
}
|
|
34
|
-
const result = await readCodexVersion();
|
|
37
|
+
const result = await readCodexVersion(workspace);
|
|
35
38
|
const version = parseVersion(result.stdout);
|
|
36
39
|
if (!version) {
|
|
37
40
|
if (strictVersionCheck) {
|
|
@@ -45,31 +48,35 @@ export async function preflightCodex(strictVersionCheck, autoupdate = false) {
|
|
|
45
48
|
// Installed CLI is compatible: a failed best-effort update is a warning, not a start failure.
|
|
46
49
|
return updateError === undefined ? undefined : buildUpdateWarning("codex", version, updateError);
|
|
47
50
|
}
|
|
48
|
-
async function runCodexUpdate() {
|
|
49
|
-
const result = await currentCommandRunner()(userShell(), probeShellCommand("codex update")
|
|
51
|
+
async function runCodexUpdate(cwd) {
|
|
52
|
+
const result = await currentCommandRunner()(userShell(), probeShellCommand("codex update"), {
|
|
53
|
+
cwd,
|
|
54
|
+
});
|
|
50
55
|
if (result.status !== 0) {
|
|
51
56
|
throw elwoodError("codex_update_failed", "`codex update` failed.", probeFailureDetails(result));
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
|
-
async function readCodexVersion() {
|
|
59
|
+
async function readCodexVersion(cwd) {
|
|
55
60
|
// The mapping to typed errors runs on every call (cache hit or miss) so all
|
|
56
61
|
// callers throw identically; only the subprocess is deduped.
|
|
57
|
-
const result = await cachedVersionRead("codex", () => Promise.resolve(currentCommandRunner()(userShell(), probeShellCommand("codex --version"))));
|
|
58
|
-
if (result.error?.code === "ENOENT" || result.
|
|
59
|
-
throw elwoodError("codex_not_found", "Could not find `codex` on PATH.");
|
|
62
|
+
const result = await cachedVersionRead("codex", () => Promise.resolve(currentCommandRunner()(userShell(), probeShellCommand("codex --version", "codex"), { cwd })), cwd);
|
|
63
|
+
if (result.error?.code === "ENOENT" || result.commandLookupFailed === true) {
|
|
64
|
+
throw elwoodError("codex_not_found", "Could not find `codex` on PATH.", notFoundDetails(result, "codex"));
|
|
60
65
|
}
|
|
61
66
|
if (result.status !== 0) {
|
|
62
67
|
throw elwoodError("codex_start_failed", "`codex --version` failed.", probeFailureDetails(result));
|
|
63
68
|
}
|
|
64
69
|
return result;
|
|
65
70
|
}
|
|
66
|
-
export function detectCodexCliCapabilities() {
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
return
|
|
71
|
+
export function detectCodexCliCapabilities(cwd = process.cwd()) {
|
|
72
|
+
// Matching-directory first spawns share a probe; a rejected read is not retained.
|
|
73
|
+
// A later start retries instead of inheriting the failure.
|
|
74
|
+
return readInDirectory(capabilityProbe, cwd, () => detectCapabilities(cwd));
|
|
70
75
|
}
|
|
71
|
-
async function detectCapabilities() {
|
|
72
|
-
const result = await currentCommandRunner()(userShell(), probeShellCommand("codex --help")
|
|
76
|
+
async function detectCapabilities(cwd) {
|
|
77
|
+
const result = await currentCommandRunner()(userShell(), probeShellCommand("codex --help"), {
|
|
78
|
+
cwd,
|
|
79
|
+
});
|
|
73
80
|
// A bounded probe (timeout/overflow) or nonzero exit is a diagnosable
|
|
74
81
|
// startup failure, not "capability unsupported" — surface it with cause.
|
|
75
82
|
if (result.error !== undefined || result.status !== 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/codex/preflight.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/codex/preflight.ts"],"names":[],"mappings":"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"}
|
package/dist/codex/pty.d.ts
CHANGED
|
@@ -1,9 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Codex PTY spawning with login-shell semantics
|
|
3
|
-
* Implements PRD §4.1, §4.2,
|
|
2
|
+
* Codex PTY spawning with login-shell semantics, and the config path of the `CODEX_HOME`
|
|
3
|
+
* that launch runs with. Implements PRD §4.1, §4.2, §5.3, §5.5, §8.1, and C-CODEX-24.
|
|
4
4
|
*/
|
|
5
5
|
import type { PtyProcess } from "../pty/types.ts";
|
|
6
|
+
import type { SessionRuntime } from "../state/runtime-paths.ts";
|
|
6
7
|
import type { SessionRecord } from "../state/store.ts";
|
|
7
8
|
import type { StartCodexOptions } from "./session/types.ts";
|
|
8
|
-
export
|
|
9
|
+
export type CodexLaunch = {
|
|
10
|
+
readonly pty: PtyProcess;
|
|
11
|
+
/**
|
|
12
|
+
* The config.toml of the `CODEX_HOME` the launched Codex runs with, from the launch shell's
|
|
13
|
+
* report: waited for until `signal` aborts, then kept (C-CODEX-24).
|
|
14
|
+
*/
|
|
15
|
+
readonly resolveConfigPath: (signal: AbortSignal) => Promise<string>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Where a launch's `CODEX_HOME` report goes: the session's private runtime home, not its state
|
|
19
|
+
* directory, named after the launch's own socket file. Each launch has its own, which a
|
|
20
|
+
* `noclobber` shell cannot mistake for an earlier one, and a failed start can find it (§8.1).
|
|
21
|
+
*/
|
|
22
|
+
export declare function codexHomeReportPath(runtime: Pick<SessionRuntime, "socketHome" | "socketPath">): string;
|
|
23
|
+
export declare function spawnCodexPty(record: SessionRecord, runtime: Pick<SessionRuntime, "socketHome" | "socketPath" | "bridgeScriptPath">, options: StartCodexOptions): Promise<CodexLaunch>;
|
|
24
|
+
/**
|
|
25
|
+
* A start that failed because the launch shell could not write its `CODEX_HOME` report says
|
|
26
|
+
* so, with the report's path (§8.1, C-CODEX-24). Codex never started then, so the exit status
|
|
27
|
+
* is the report step's: one after a finished report is Codex's own. The shell's own message is
|
|
28
|
+
* never read.
|
|
29
|
+
*/
|
|
30
|
+
export declare function explainCodexStartFailure(error: unknown, reportPath: string): unknown;
|
|
9
31
|
//# sourceMappingURL=pty.d.ts.map
|
package/dist/codex/pty.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/codex/pty.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/codex/pty.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AASvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACtE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,YAAY,CAAC,GACzD,MAAM,CAER;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,YAAY,GAAG,kBAAkB,CAAC,EAC/E,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CA+BtB;AAKD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAYpF"}
|
package/dist/codex/pty.js
CHANGED
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Codex PTY spawning with login-shell semantics
|
|
3
|
-
* Implements PRD §4.1, §4.2,
|
|
2
|
+
* Codex PTY spawning with login-shell semantics, and the config path of the `CODEX_HOME`
|
|
3
|
+
* that launch runs with. Implements PRD §4.1, §4.2, §5.3, §5.5, §8.1, and C-CODEX-24.
|
|
4
4
|
*/
|
|
5
|
+
import { rmSync } from "node:fs";
|
|
6
|
+
import { basename, join } from "node:path";
|
|
7
|
+
import { runContained } from "../core/contained.js";
|
|
5
8
|
import { defaultTerminalSize } from "../core/defaults.js";
|
|
6
|
-
import { causeDetails, elwoodError } from "../core/errors.js";
|
|
9
|
+
import { causeDetails, ElwoodError, elwoodError } from "../core/errors.js";
|
|
7
10
|
import { currentPtyFactory } from "../runtime/seams.js";
|
|
8
11
|
import { loginShellCommand, userShell } from "../runtime/shell.js";
|
|
9
12
|
import { buildCodexShellCommand } from "./command.js";
|
|
13
|
+
import { codexHomeReported, reportCodexHomeCommand, reportedCodexConfigPath, reportFailedStatus, } from "./config/home.js";
|
|
10
14
|
import * as preflight from "./preflight.js";
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Where a launch's `CODEX_HOME` report goes: the session's private runtime home, not its state
|
|
17
|
+
* directory, named after the launch's own socket file. Each launch has its own, which a
|
|
18
|
+
* `noclobber` shell cannot mistake for an earlier one, and a failed start can find it (§8.1).
|
|
19
|
+
*/
|
|
20
|
+
export function codexHomeReportPath(runtime) {
|
|
21
|
+
return join(runtime.socketHome, `codex-home-${basename(runtime.socketPath, ".sock")}`);
|
|
22
|
+
}
|
|
23
|
+
export async function spawnCodexPty(record, runtime, options) {
|
|
24
|
+
const capabilities = await preflight.detectCodexCliCapabilities(options.cwd);
|
|
25
|
+
const reportPath = codexHomeReportPath(runtime);
|
|
26
|
+
const launch = buildCodexShellCommand(record, runtime.bridgeScriptPath, options, capabilities);
|
|
27
|
+
let pty;
|
|
13
28
|
try {
|
|
14
|
-
|
|
29
|
+
pty = currentPtyFactory()({
|
|
15
30
|
command: userShell(),
|
|
16
|
-
args: loginShellCommand(
|
|
31
|
+
args: loginShellCommand(`${reportCodexHomeCommand(reportPath)}; ${launch}`),
|
|
17
32
|
cwd: record.cwd,
|
|
18
33
|
env: { ...process.env, ELWOOD_SESSION_ID: record.elwoodSessionId },
|
|
19
34
|
size: options.initialSize ?? defaultTerminalSize,
|
|
@@ -22,5 +37,36 @@ export async function spawnCodexPty(record, bridgeScriptPath, options) {
|
|
|
22
37
|
catch (error) {
|
|
23
38
|
throw elwoodError("pty_start_failed", "Could not start Codex PTY.", causeDetails(error));
|
|
24
39
|
}
|
|
40
|
+
// The report lasts as long as its launch, whether that ends in a failed start or later.
|
|
41
|
+
// Whether the report step failed is decided before it goes, for the start's failure to
|
|
42
|
+
// say so, and a report that cannot be removed never stops the PTY's other exit handlers:
|
|
43
|
+
// the socket home's own removal takes it.
|
|
44
|
+
pty.onExit((exit) => {
|
|
45
|
+
if (exit.exitCode === reportFailedStatus && !codexHomeReported(reportPath))
|
|
46
|
+
failedReportSteps.add(reportPath);
|
|
47
|
+
runContained(() => rmSync(reportPath, { force: true }));
|
|
48
|
+
});
|
|
49
|
+
let resolvedConfigPath;
|
|
50
|
+
return {
|
|
51
|
+
pty,
|
|
52
|
+
resolveConfigPath: async (signal) => (resolvedConfigPath ??= await reportedCodexConfigPath(reportPath, signal)),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** Reports whose launch shell exited at the report step, so Codex never started. */
|
|
56
|
+
const failedReportSteps = new Set();
|
|
57
|
+
/**
|
|
58
|
+
* A start that failed because the launch shell could not write its `CODEX_HOME` report says
|
|
59
|
+
* so, with the report's path (§8.1, C-CODEX-24). Codex never started then, so the exit status
|
|
60
|
+
* is the report step's: one after a finished report is Codex's own. The shell's own message is
|
|
61
|
+
* never read.
|
|
62
|
+
*/
|
|
63
|
+
export function explainCodexStartFailure(error, reportPath) {
|
|
64
|
+
const reportFailed = error instanceof ElwoodError &&
|
|
65
|
+
error.code === "codex_start_failed" &&
|
|
66
|
+
error.details["exitCode"] === reportFailedStatus &&
|
|
67
|
+
failedReportSteps.delete(reportPath);
|
|
68
|
+
if (!reportFailed)
|
|
69
|
+
return error;
|
|
70
|
+
return elwoodError("codex_start_failed", "Codex did not start: its launch could not write the CODEX_HOME report.", { ...error.details, phase: "codex_home_report", path: reportPath });
|
|
25
71
|
}
|
|
26
72
|
//# sourceMappingURL=pty.js.map
|
package/dist/codex/pty.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/codex/pty.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/codex/pty.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../src/codex/questions/candidates.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAIxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../src/codex/questions/candidates.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAIxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAGhF,OAAO,EAAE,KAAK,SAAS,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,uBAAwB,SAAQ,cAAc;IACzD,6FAA6F;IAC7F,YAAY,CACV,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,SAAS,uBAAuB,EAAE,EAC3C,MAAM,EAAE,WAAW,GAClB,MAAM,IAAI;IAIb,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO;IAG5C,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,MAAM;CAoCf"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { isRecord } from "../../core/predicates.js";
|
|
2
2
|
import { questionAnswerFailed } from "../../core/questions/errors.js";
|
|
3
|
+
import { payloadOf } from "../transcript/payload.js";
|
|
4
|
+
import { isTurnEndPayload } from "../transcript/turn-end.js";
|
|
3
5
|
import { CandidateStore } from "./candidate-store.js";
|
|
4
|
-
import { jsonRecord,
|
|
6
|
+
import { jsonRecord, questionCall, questionEnvelope, questionReplies } from "./records.js";
|
|
5
7
|
export class CodexQuestionCandidates extends CandidateStore {
|
|
6
8
|
/** Bind before driver input; the transaction signal releases values after native closure. */
|
|
7
9
|
expectAnswer(candidate, answers, signal) {
|
|
@@ -18,11 +20,8 @@ export class CodexQuestionCandidates extends CandidateStore {
|
|
|
18
20
|
const payload = payloadOf(event.raw);
|
|
19
21
|
if (!payload)
|
|
20
22
|
return false;
|
|
21
|
-
|
|
22
|
-
if (typeof type === "string" &&
|
|
23
|
-
["task_complete", "turn_complete", "turn_aborted", "turn_failed"].includes(type)) {
|
|
23
|
+
if (isTurnEndPayload(payload))
|
|
24
24
|
return this.endTurn();
|
|
25
|
-
}
|
|
26
25
|
const native = questionEnvelope(payload);
|
|
27
26
|
if (native) {
|
|
28
27
|
if (this.disabled)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../src/codex/questions/candidates.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,EAAkB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../src/codex/questions/candidates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Guard private native Codex question navigation and answer writes (PRD §4). */
|
|
2
2
|
import { delay } from "../../core/delay.js";
|
|
3
3
|
import { bracketedPasteEnd, bracketedPasteStart } from "../../core/input/constants.js";
|
|
4
|
-
import { pasteSettleDelayMs } from "../../core/input/index.js";
|
|
4
|
+
import { arrowDown, arrowUp, pasteSettleDelayMs } from "../../core/input/index.js";
|
|
5
5
|
import { questionAnswerFailed } from "../../core/questions/errors.js";
|
|
6
6
|
import { draftMatches } from "./draft.js";
|
|
7
7
|
import { assertSupportedQuestions } from "./driver-support.js";
|
|
@@ -91,7 +91,7 @@ async function stageAnswer(question, answer, io, match, initial) {
|
|
|
91
91
|
while (view.selected !== selected) {
|
|
92
92
|
const before = view.selected;
|
|
93
93
|
const after = before + (before < selected ? 1 : -1);
|
|
94
|
-
await io.write(before < selected ?
|
|
94
|
+
await io.write(before < selected ? arrowDown : arrowUp, (current) => {
|
|
95
95
|
const currentView = match(current);
|
|
96
96
|
return currentView?.selected === before && unownedChoice(currentView, question);
|
|
97
97
|
});
|