@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
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { causeDetails, ElwoodError, elwoodError } from "../../core/errors.js";
|
|
2
|
+
import { prepareStateDir } from "../../state/store.js";
|
|
3
|
+
/** State errors retain their identity; native I/O errors gain the adapter startup contract. */
|
|
4
|
+
export function prepareLaunchState(agent, stateDir, setup) {
|
|
5
|
+
try {
|
|
6
|
+
prepareStateDir(stateDir, setup);
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
if (error instanceof ElwoodError)
|
|
10
|
+
throw error;
|
|
11
|
+
throw elwoodError(`${agent}_start_failed`, `Could not prepare ${agent} session state.`, causeDetails(error));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=prepare-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-state.js","sourceRoot":"","sources":["../../../src/runtime/session/prepare-state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAsB,MAAM,sBAAsB,CAAC;AAE3E,+FAA+F;AAC/F,MAAM,UAAU,kBAAkB,CAChC,KAAsB,EACtB,QAAgB,EAChB,KAAoB;IAEpB,IAAI,CAAC;QACH,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW;YAAE,MAAM,KAAK,CAAC;QAC9C,MAAM,WAAW,CACf,GAAG,KAAK,eAAe,EACvB,qBAAqB,KAAK,iBAAiB,EAC3C,YAAY,CAAC,KAAK,CAAC,CACpB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -9,11 +9,11 @@ import type { PersistedLoopDefinition } from "../../state/loop-store.ts";
|
|
|
9
9
|
import type { SessionRuntime } from "../../state/runtime-paths.ts";
|
|
10
10
|
import type { SessionRecord } from "../../state/store.ts";
|
|
11
11
|
import { SessionLifecycle } from "./lifecycle.ts";
|
|
12
|
-
import type {
|
|
12
|
+
import type { SessionInputOwnership } from "./session-input.ts";
|
|
13
13
|
import type { SessionStatusEmitter } from "./status-wiring.ts";
|
|
14
14
|
export declare abstract class QuestionSessionBase extends SessionLifecycle {
|
|
15
15
|
private readonly questions;
|
|
16
|
-
protected constructor(agent: ElwoodAgentKind, record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, input:
|
|
16
|
+
protected constructor(agent: ElwoodAgentKind, record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, input: SessionInputOwnership, events: SessionStatusEmitter, replay: TerminalReplayBuffer, loops: readonly PersistedLoopDefinition[]);
|
|
17
17
|
protected configureQuestions(factory: (registry: QuestionRegistry) => QuestionAdapter): void;
|
|
18
18
|
protected revokeQuestionAnswer(): void;
|
|
19
19
|
protected isInputBlocked(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/questions.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/questions.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,8BAAsB,mBAAoB,SAAQ,gBAAgB;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,SAAS,aACP,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,SAAS,uBAAuB,EAAE;IAY3C,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,eAAe,GAAG,IAAI;IAG5F,SAAS,CAAC,oBAAoB,IAAI,IAAI;cAGnB,cAAc,IAAI,OAAO;IAG5C,aAAa;IAGb,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,IAAI,CAAC;CAGjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../../src/runtime/session/questions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAWtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,MAAM,OAAgB,mBAAoB,SAAQ,gBAAgB;IAC/C,SAAS,CAAmB;IAC7C,YACE,KAAsB,EACtB,MAAqB,EACrB,QAAgB,EAChB,OAAuB,EACvB,GAAe,EACf,
|
|
1
|
+
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../../src/runtime/session/questions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAWtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,MAAM,OAAgB,mBAAoB,SAAQ,gBAAgB;IAC/C,SAAS,CAAmB;IAC7C,YACE,KAAsB,EACtB,MAAqB,EACrB,QAAgB,EAChB,OAAuB,EACvB,GAAe,EACf,KAA4B,EAC5B,MAA4B,EAC5B,MAA4B,EAC5B,KAAyC;QAEzC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CACnC,KAAK,EACL,MAAM,CAAC,eAAe,EACtB,MAAM,EACN,KAAK,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,CAAC;IACJ,CAAC;IACS,kBAAkB,CAAC,OAAwD;QACnF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACS,oBAAoB;QAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IACkB,cAAc;QAC/B,OAAO,KAAK,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAChE,CAAC;IACD,aAAa;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,eAAe,CACb,SAAiB,EACjB,OAAwC,EACxC,OAAqC;QAErC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC;CACF"}
|
|
@@ -12,10 +12,19 @@ import { type InitialReady } from "../readiness/initial-ready.ts";
|
|
|
12
12
|
export type ReadinessGate = {
|
|
13
13
|
readonly ready: InitialReady;
|
|
14
14
|
readonly isHeld: () => boolean;
|
|
15
|
-
readonly observeFrameHold: (facts: ComposerReadyFacts, trustInputBlocking
|
|
16
|
-
/** Per rendered frame: update the blocking gate, reconcile a deferred mark,
|
|
17
|
-
* (on resume) mark readiness on the first quiet, non-blocking composer. */
|
|
18
|
-
readonly observeReadinessFrame: (facts: ComposerReadyFacts, trustInputBlocking
|
|
15
|
+
readonly observeFrameHold: (facts: ComposerReadyFacts, trustInputBlocking: boolean, frame: string) => void;
|
|
16
|
+
/** Per rendered frame: update the blocking gate, reconcile a deferred or waiting mark,
|
|
17
|
+
* and (on resume) mark readiness on the first quiet, non-blocking composer. */
|
|
18
|
+
readonly observeReadinessFrame: (facts: ComposerReadyFacts, trustInputBlocking: boolean, frame: string) => void;
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* An adapter's `composer.configured`, when supplied, proves a rendered composer belongs
|
|
22
|
+
* to a configured session rather than to the boot screen (Codex's model footer). The
|
|
23
|
+
* initial deadline then marks only onto such a frame (C-API-28). The latest frame is
|
|
24
|
+
* checked only when readiness asks, never on every render.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createReadinessGate(onReady: () => void, resumed: boolean, composer?: {
|
|
27
|
+
readonly configured: (frame: string) => boolean;
|
|
28
|
+
readonly onBackstopRelease: () => void;
|
|
29
|
+
}): ReadinessGate;
|
|
21
30
|
//# sourceMappingURL=readiness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAEL,KAAK,YAAY,EAGlB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,CACzB,KAAK,EAAE,kBAAkB,EACzB,kBAAkB,EAAE,OAAO,EAC3B,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;IACV;mFAC+E;IAC/E,QAAQ,CAAC,qBAAqB,EAAE,CAC9B,KAAK,EAAE,kBAAkB,EACzB,kBAAkB,EAAE,OAAO,EAC3B,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;CACX,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,IAAI,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE;IACT,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC;CACxC,GACA,aAAa,CAoCf"}
|
|
@@ -8,25 +8,41 @@
|
|
|
8
8
|
* Implements PRD §5.3 (C-API-28).
|
|
9
9
|
*/
|
|
10
10
|
import { initialReady, markReadyOnResumeComposer, } from "../readiness/initial-ready.js";
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* An adapter's `composer.configured`, when supplied, proves a rendered composer belongs
|
|
13
|
+
* to a configured session rather than to the boot screen (Codex's model footer). The
|
|
14
|
+
* initial deadline then marks only onto such a frame (C-API-28). The latest frame is
|
|
15
|
+
* checked only when readiness asks, never on every render.
|
|
16
|
+
*/
|
|
17
|
+
export function createReadinessGate(onReady, resumed, composer) {
|
|
12
18
|
let readinessHeld = false;
|
|
13
|
-
|
|
19
|
+
let latest;
|
|
20
|
+
const observeFrameHold = (facts, trustInputBlocking, frame) => {
|
|
14
21
|
// A dialog's deferred mark waits for idle; ordinary cold-start work still
|
|
15
22
|
// retains the existing hook/deadline path instead of waiting on itself.
|
|
16
23
|
readinessHeld =
|
|
17
24
|
facts.blocking_prompt_visible ||
|
|
18
25
|
trustInputBlocking ||
|
|
19
26
|
(readinessHeld && (facts.working_visible === true || !facts.composer_visible));
|
|
27
|
+
latest = { facts, frame };
|
|
28
|
+
};
|
|
29
|
+
// Work may animate forever (a failing MCP server's retry spinner), so only the
|
|
30
|
+
// configured composer itself, not idleness, is required before the deadline marks.
|
|
31
|
+
const evidence = composer && {
|
|
32
|
+
shown: () => latest?.facts.composer_visible === true &&
|
|
33
|
+
!latest.facts.blocking_prompt_visible &&
|
|
34
|
+
composer.configured(latest.frame),
|
|
35
|
+
onBackstopRelease: composer.onBackstopRelease,
|
|
20
36
|
};
|
|
21
|
-
const ready = initialReady(onReady, undefined, () => readinessHeld);
|
|
37
|
+
const ready = initialReady(onReady, undefined, () => readinessHeld, evidence);
|
|
22
38
|
return {
|
|
23
39
|
ready,
|
|
24
40
|
isHeld: () => readinessHeld,
|
|
25
41
|
observeFrameHold,
|
|
26
|
-
observeReadinessFrame: (facts, trustInputBlocking
|
|
27
|
-
observeFrameHold(facts, trustInputBlocking);
|
|
42
|
+
observeReadinessFrame: (facts, trustInputBlocking, frame) => {
|
|
43
|
+
observeFrameHold(facts, trustInputBlocking, frame);
|
|
28
44
|
markReadyOnResumeComposer(ready, resumed, facts, readinessHeld);
|
|
29
|
-
ready.retryWhenReleased(readinessHeld);
|
|
45
|
+
ready.retryWhenReleased(readinessHeld);
|
|
30
46
|
},
|
|
31
47
|
};
|
|
32
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../src/runtime/session/readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../src/runtime/session/readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAGL,YAAY,EACZ,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC;AAmBvC;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAmB,EACnB,OAAgB,EAChB,QAGC;IAED,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,MAAgE,CAAC;IACrE,MAAM,gBAAgB,GAAG,CACvB,KAAyB,EACzB,kBAA2B,EAC3B,KAAa,EACb,EAAE;QACF,0EAA0E;QAC1E,wEAAwE;QACxE,aAAa;YACX,KAAK,CAAC,uBAAuB;gBAC7B,kBAAkB;gBAClB,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACjF,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC,CAAC;IACF,+EAA+E;IAC/E,mFAAmF;IACnF,MAAM,QAAQ,GAA2C,QAAQ,IAAI;QACnE,KAAK,EAAE,GAAG,EAAE,CACV,MAAM,EAAE,KAAK,CAAC,gBAAgB,KAAK,IAAI;YACvC,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB;YACrC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;KAC9C,CAAC;IACF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9E,OAAO;QACL,KAAK;QACL,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa;QAC3B,gBAAgB;QAChB,qBAAqB,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;YAC1D,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACnD,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;YAChE,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -4,12 +4,13 @@
|
|
|
4
4
|
* - `bestEffort()` for the native unsolicited-exit callback: a reap failure must
|
|
5
5
|
* never throw out of that callback, so it is contained and RETURNED as a
|
|
6
6
|
* live `reap_failed` warning (emitted once when observed), never silently dropped.
|
|
7
|
-
* - `orThrow()` for an explicit `stop()`/`kill()` on an already-terminal session
|
|
8
|
-
* it must NOT swallow — it throws a typed
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
7
|
+
* - `orThrow()` for an explicit `stop()`/`kill()` on an already-terminal session
|
|
8
|
+
* and for `teardown`'s retry step: it must NOT swallow — it throws a typed
|
|
9
|
+
* `termination_failed` (with its errno and the leader's process-group id) so
|
|
10
|
+
* the caller rejects with an ElwoodError (C-ERR-01), and the reap stays
|
|
11
|
+
* unlatched for a later retry.
|
|
12
|
+
* `reaper` exposes the underlying one-shot for the `terminatePty` termination path,
|
|
13
|
+
* which owns its own failure handling.
|
|
13
14
|
*/
|
|
14
15
|
import type { ElwoodAgentKind } from "../../core/activity/index.ts";
|
|
15
16
|
import type { ElwoodWarningEvent } from "../../core/types.ts";
|
|
@@ -22,7 +23,10 @@ export declare class SessionReapPolicy {
|
|
|
22
23
|
constructor(agent: ElwoodAgentKind, elwoodSessionId: string, leaderPid: number);
|
|
23
24
|
/** Contain a native-exit reap failure as a live warning to emit; never throw. */
|
|
24
25
|
bestEffort(): ElwoodWarningEvent | undefined;
|
|
25
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Reap on explicit shutdown, including an unresolved detached sweep; wrap any failure
|
|
28
|
+
* as a typed `termination_failed`.
|
|
29
|
+
*/
|
|
26
30
|
orThrow(): void;
|
|
27
31
|
}
|
|
28
32
|
//# sourceMappingURL=reap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reap.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/reap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"reap.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/reap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAO9E,iFAAiF;IACjF,UAAU,IAAI,kBAAkB,GAAG,SAAS;IAS5C;;;OAGG;IACH,OAAO,IAAI,IAAI;CAehB"}
|
|
@@ -4,16 +4,18 @@
|
|
|
4
4
|
* - `bestEffort()` for the native unsolicited-exit callback: a reap failure must
|
|
5
5
|
* never throw out of that callback, so it is contained and RETURNED as a
|
|
6
6
|
* live `reap_failed` warning (emitted once when observed), never silently dropped.
|
|
7
|
-
* - `orThrow()` for an explicit `stop()`/`kill()` on an already-terminal session
|
|
8
|
-
* it must NOT swallow — it throws a typed
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
7
|
+
* - `orThrow()` for an explicit `stop()`/`kill()` on an already-terminal session
|
|
8
|
+
* and for `teardown`'s retry step: it must NOT swallow — it throws a typed
|
|
9
|
+
* `termination_failed` (with its errno and the leader's process-group id) so
|
|
10
|
+
* the caller rejects with an ElwoodError (C-ERR-01), and the reap stays
|
|
11
|
+
* unlatched for a later retry.
|
|
12
|
+
* `reaper` exposes the underlying one-shot for the `terminatePty` termination path,
|
|
13
|
+
* which owns its own failure handling.
|
|
13
14
|
*/
|
|
14
15
|
import { reapFailureWarning } from "../../core/activity/index.js";
|
|
15
|
-
import { causeDetails, elwoodError } from "../../core/errors.js";
|
|
16
|
+
import { causeDetails, elwoodError, toError } from "../../core/errors.js";
|
|
16
17
|
import { SessionReaper } from "../shutdown/reap-tree.js";
|
|
18
|
+
import { unconfirmedGroupsDetail } from "../shutdown/terminate.js";
|
|
17
19
|
export class SessionReapPolicy {
|
|
18
20
|
reaper;
|
|
19
21
|
agent;
|
|
@@ -35,14 +37,18 @@ export class SessionReapPolicy {
|
|
|
35
37
|
return reapFailureWarning(this.agent, this.elwoodSessionId, this.leaderPid, error);
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Reap on explicit shutdown, including an unresolved detached sweep; wrap any failure
|
|
42
|
+
* as a typed `termination_failed`.
|
|
43
|
+
*/
|
|
39
44
|
orThrow() {
|
|
40
45
|
try {
|
|
41
|
-
this.reaper.
|
|
46
|
+
this.reaper.reapAndThrowOnDetachedSweepFailure();
|
|
42
47
|
}
|
|
43
48
|
catch (error) {
|
|
44
|
-
throw elwoodError("termination_failed", "Could not
|
|
49
|
+
throw elwoodError("termination_failed", "Could not confirm the PTY process tree was reaped.", {
|
|
45
50
|
...causeDetails(error),
|
|
51
|
+
...unconfirmedGroupsDetail(toError(error)),
|
|
46
52
|
processGroupId: this.leaderPid,
|
|
47
53
|
});
|
|
48
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reap.js","sourceRoot":"","sources":["../../../src/runtime/session/reap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"reap.js","sourceRoot":"","sources":["../../../src/runtime/session/reap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,OAAO,iBAAiB;IACnB,MAAM,CAAgB;IACd,KAAK,CAAkB;IACvB,eAAe,CAAS;IACxB,SAAS,CAAS;IAEnC,YAAY,KAAsB,EAAE,eAAuB,EAAE,SAAiB;QAC5E,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,iFAAiF;IACjF,UAAU;QACR,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,kCAAkC,EAAE,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CACf,oBAAoB,EACpB,oDAAoD,EACpD;gBACE,GAAG,YAAY,CAAC,KAAK,CAAC;gBACtB,GAAG,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1C,cAAc,EAAE,IAAI,CAAC,SAAS;aAC/B,CACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session runtime cleanup, shared by the Claude and Codex adapters (PRD §9.4,
|
|
3
|
+
* C-LIFE-12): stop the hook bridge, finish the transcript watcher, then drain and
|
|
4
|
+
* dispose the terminal, in that order. It runs on every shutdown and on an unsolicited
|
|
5
|
+
* exit, including a shutdown whose PTY could not be terminated, so the watcher stops
|
|
6
|
+
* polling even while the PTY lives on.
|
|
7
|
+
*/
|
|
8
|
+
import type { PtyProcess } from "../../pty/types.ts";
|
|
9
|
+
import type { ElwoodTerminal } from "../../terminal/headless.ts";
|
|
10
|
+
/** What a session's runtime cleanup stops beyond its terminal. */
|
|
11
|
+
export type SessionRuntimeParts = {
|
|
12
|
+
readonly stopBridge: () => Promise<void>;
|
|
13
|
+
/** One bounded final flush of what the transcript already holds, then no more polling. */
|
|
14
|
+
readonly finishTranscriptWatcher: () => Promise<void> | void;
|
|
15
|
+
};
|
|
16
|
+
/** Every step runs even if an earlier one rejects, so nothing is left running (§9.4). */
|
|
17
|
+
export declare function stopSessionRuntime(parts: SessionRuntimeParts, terminal: ElwoodTerminal, pty: Pick<PtyProcess, "onData">): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=runtime-cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-cleanup.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/runtime-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,kEAAkE;AAClE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,0FAA0F;IAC1F,QAAQ,CAAC,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9D,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session runtime cleanup, shared by the Claude and Codex adapters (PRD §9.4,
|
|
3
|
+
* C-LIFE-12): stop the hook bridge, finish the transcript watcher, then drain and
|
|
4
|
+
* dispose the terminal, in that order. It runs on every shutdown and on an unsolicited
|
|
5
|
+
* exit, including a shutdown whose PTY could not be terminated, so the watcher stops
|
|
6
|
+
* polling even while the PTY lives on.
|
|
7
|
+
*/
|
|
8
|
+
import { runCleanupSteps } from "../shutdown/teardown.js";
|
|
9
|
+
import { drainAndDisposeTerminal } from "../shutdown/terminal.js";
|
|
10
|
+
/** Every step runs even if an earlier one rejects, so nothing is left running (§9.4). */
|
|
11
|
+
export function stopSessionRuntime(parts, terminal, pty) {
|
|
12
|
+
return runCleanupSteps([
|
|
13
|
+
() => parts.stopBridge(),
|
|
14
|
+
() => parts.finishTranscriptWatcher(),
|
|
15
|
+
() => drainAndDisposeTerminal(terminal, pty),
|
|
16
|
+
]);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=runtime-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-cleanup.js","sourceRoot":"","sources":["../../../src/runtime/session/runtime-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AASlE,yFAAyF;AACzF,MAAM,UAAU,kBAAkB,CAChC,KAA0B,EAC1B,QAAwB,EACxB,GAA+B;IAE/B,OAAO,eAAe,CAAC;QACrB,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE;QACxB,GAAG,EAAE,CAAC,KAAK,CAAC,uBAAuB,EAAE;QACrC,GAAG,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,GAAG,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One session's input ownership: caller keys reach the terminal through `caller`, and
|
|
3
|
+
* Elwood's operations write through `automated`. Startup responders write through their
|
|
4
|
+
* own guarded writers, whose sends run inside `withAutomatedInput`, the same scope.
|
|
5
|
+
* Raw caller input aborts `signal()`, which revokes the automation holding the terminal at
|
|
6
|
+
* that moment: picker operations (C-API-55), composer cleanup, and native question answers.
|
|
7
|
+
* Listeners registered with `onCallerInput` hear of it too, which hands the session's
|
|
8
|
+
* startup prompts to the caller (C-TRUST-01, C-CODEX-12).
|
|
9
|
+
*/
|
|
10
|
+
import type { EmptyComposerObserver } from "../../core/input/clear-ack.ts";
|
|
11
|
+
import { ComposerCleanup } from "../../core/input/composer-cleanup.ts";
|
|
12
|
+
import type { ElwoodTerminal } from "../../terminal/headless.ts";
|
|
13
|
+
type AutomatedWork = () => Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Run `listener` whenever caller input revokes automation in this terminal's session,
|
|
16
|
+
* until the returned function unsubscribes it.
|
|
17
|
+
*/
|
|
18
|
+
export declare function onCallerInput(terminal: {
|
|
19
|
+
readonly xterm: object;
|
|
20
|
+
}, listener: () => void): () => void;
|
|
21
|
+
/** Preserve the same ownership scope for startup writers that retain their own input policy. */
|
|
22
|
+
export declare function withAutomatedInput(terminal: ElwoodTerminal, work: AutomatedWork): Promise<void>;
|
|
23
|
+
export declare class SessionInputOwnership {
|
|
24
|
+
readonly caller: ElwoodTerminal;
|
|
25
|
+
readonly automated: ElwoodTerminal;
|
|
26
|
+
private current;
|
|
27
|
+
constructor(inner: ElwoodTerminal);
|
|
28
|
+
composerCleanup(blocked: () => boolean, closing: AbortSignal, observeEmpty: EmptyComposerObserver): ComposerCleanup["run"];
|
|
29
|
+
signal(): AbortSignal;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=session-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-input.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/session-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,KAAK,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AASzC;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACpC,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAMZ;AAED,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/F;AAED,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,OAAO,CAAC,OAAO,CAAyB;gBAE5B,KAAK,EAAE,cAAc;IA4CjC,eAAe,CACb,OAAO,EAAE,MAAM,OAAO,EACtB,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,qBAAqB,GAClC,eAAe,CAAC,KAAK,CAAC;IAWzB,MAAM,IAAI,WAAW;CAGtB"}
|
|
@@ -1,27 +1,55 @@
|
|
|
1
1
|
import { ComposerCleanup } from "../../core/input/composer-cleanup.js";
|
|
2
|
-
import {
|
|
2
|
+
import { callerInputIntervention } from "../../core/models/intervention.js";
|
|
3
3
|
const automationScopes = new WeakMap();
|
|
4
|
+
/** Keyed by the session's xterm, which every terminal view of that session shares. */
|
|
5
|
+
const callerInputListeners = new WeakMap();
|
|
6
|
+
/**
|
|
7
|
+
* Run `listener` whenever caller input revokes automation in this terminal's session,
|
|
8
|
+
* until the returned function unsubscribes it.
|
|
9
|
+
*/
|
|
10
|
+
export function onCallerInput(terminal, listener) {
|
|
11
|
+
const listeners = callerInputListeners.get(terminal.xterm);
|
|
12
|
+
listeners?.add(listener);
|
|
13
|
+
return () => {
|
|
14
|
+
listeners?.delete(listener);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
4
17
|
/** Preserve the same ownership scope for startup writers that retain their own input policy. */
|
|
5
18
|
export function withAutomatedInput(terminal, work) {
|
|
6
19
|
return automationScopes.get(terminal.xterm)?.(work) ?? work();
|
|
7
20
|
}
|
|
8
|
-
export class
|
|
21
|
+
export class SessionInputOwnership {
|
|
9
22
|
caller;
|
|
10
23
|
automated;
|
|
11
24
|
current = new AbortController();
|
|
12
25
|
constructor(inner) {
|
|
13
26
|
let automating = false;
|
|
27
|
+
const listeners = new Set();
|
|
28
|
+
callerInputListeners.set(inner.xterm, listeners);
|
|
29
|
+
// Runs before the caller's keys are written: picker operations and the startup
|
|
30
|
+
// answers registered through onCallerInput stop, so none of their writes follow them.
|
|
14
31
|
const revoke = () => {
|
|
15
|
-
this.current.abort(
|
|
32
|
+
this.current.abort(callerInputIntervention());
|
|
16
33
|
this.current = new AbortController();
|
|
34
|
+
for (const listener of listeners)
|
|
35
|
+
listener();
|
|
17
36
|
};
|
|
18
37
|
// onData also carries parser-generated protocol replies; only input invocations
|
|
19
38
|
// represent caller keys. Native startup queries must not revoke draft ownership.
|
|
20
39
|
const input = inner.xterm.input.bind(inner.xterm);
|
|
21
40
|
inner.xterm.input = (data, wasUserInput) => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
41
|
+
// Each write consumes the automation marker while xterm runs it, so input that an
|
|
42
|
+
// `onData` listener sends from inside an automated write is the caller's and revokes.
|
|
43
|
+
const automated = automating;
|
|
44
|
+
automating = false;
|
|
45
|
+
try {
|
|
46
|
+
if (!automated)
|
|
47
|
+
revoke();
|
|
48
|
+
input(data, wasUserInput);
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
automating = automated;
|
|
52
|
+
}
|
|
25
53
|
};
|
|
26
54
|
const automate = (work) => {
|
|
27
55
|
const prior = automating;
|
|
@@ -71,4 +99,4 @@ function view(inner, sendInput) {
|
|
|
71
99
|
dispose: () => inner.dispose(),
|
|
72
100
|
};
|
|
73
101
|
}
|
|
74
|
-
//# sourceMappingURL=
|
|
102
|
+
//# sourceMappingURL=session-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-input.js","sourceRoot":"","sources":["../../../src/runtime/session/session-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
/** Binds one session's lifecycle callbacks to coordinated shutdown (PRD §9.4). */
|
|
1
|
+
/** Binds one session's lifecycle callbacks to coordinated shutdown (PRD §9.1, §9.4). */
|
|
2
2
|
import type { ElwoodSessionStatus } from "../../core/types.ts";
|
|
3
3
|
import type { PtyProcess } from "../../pty/types.ts";
|
|
4
4
|
import type { SessionRuntime } from "../../state/runtime-paths.ts";
|
|
5
|
+
import type { SessionStartupCleanup } from "../startup/cleanup.ts";
|
|
5
6
|
import type { StatusEvidenceKind } from "../status-evidence.ts";
|
|
6
7
|
import type { SessionLoops } from "./loops.ts";
|
|
7
8
|
import type { SessionReapPolicy } from "./reap.ts";
|
|
@@ -18,6 +19,7 @@ type ShutdownBindingInput = {
|
|
|
18
19
|
readonly submitEvidence: (kind: StatusEvidenceKind) => void;
|
|
19
20
|
};
|
|
20
21
|
export declare class SessionShutdownBinding {
|
|
22
|
+
private readonly input;
|
|
21
23
|
private pending;
|
|
22
24
|
private readonly prepareClear;
|
|
23
25
|
private readonly managed;
|
|
@@ -33,6 +35,15 @@ export declare class SessionShutdownBinding {
|
|
|
33
35
|
/** Release from submitExit finally, even when terminal-status delivery throws. */
|
|
34
36
|
completeExitFinalization(): void;
|
|
35
37
|
private afterExitFinalization;
|
|
38
|
+
/**
|
|
39
|
+
* The session's share of a failed startup's cleanup (PRD §9.1, C-LIFE-10). `before`
|
|
40
|
+
* closes the session and pauses its loops. `pty.terminate` ends the PTY with the
|
|
41
|
+
* session's own one-shot reaper, the one its exit path reaps with, so the group is
|
|
42
|
+
* reaped once. Once the session has seen the PTY exit, the leader's pid may be reused,
|
|
43
|
+
* so the PTY is never signaled again: only that shared reaper runs, which does nothing
|
|
44
|
+
* if the exit's reap succeeded and retries it if it failed.
|
|
45
|
+
*/
|
|
46
|
+
startupCleanupResources(closeSession: () => void, cancelReadiness: () => void): SessionStartupCleanup;
|
|
36
47
|
exitEvidence(): ShutdownEvidence | "terminal_exited";
|
|
37
48
|
}
|
|
38
49
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-binding.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/shutdown-binding.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"shutdown-binding.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/shutdown-binding.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAExF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEvE,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,MAAM,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiD;IAClF,OAAO,CAAC,uBAAuB,CAA2B;gBAE9C,KAAK,EAAE,oBAAoB;IAoCvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB,8FAA8F;IAC9F,qBAAqB,IAAI,IAAI;IAM7B,kFAAkF;IAClF,wBAAwB,IAAI,IAAI;IAIhC,OAAO,CAAC,qBAAqB;IAY7B;;;;;;;OAOG;IACH,uBAAuB,CACrB,YAAY,EAAE,MAAM,IAAI,EACxB,eAAe,EAAE,MAAM,IAAI,GAC1B,qBAAqB;IAqBxB,YAAY,IAAI,gBAAgB,GAAG,iBAAiB;CAGrD"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
/** Binds one session's lifecycle callbacks to coordinated shutdown (PRD §9.4). */
|
|
1
|
+
/** Binds one session's lifecycle callbacks to coordinated shutdown (PRD §9.1, §9.4). */
|
|
2
2
|
import { removeSessionFiles } from "../../state/store.js";
|
|
3
3
|
import { ShutdownCoordinator } from "../shutdown/coordinator.js";
|
|
4
|
+
import { terminatePty } from "../shutdown/terminate.js";
|
|
4
5
|
import { managedShutdown } from "./shutdown.js";
|
|
5
6
|
export class SessionShutdownBinding {
|
|
7
|
+
input;
|
|
6
8
|
pending;
|
|
7
9
|
prepareClear;
|
|
8
10
|
managed;
|
|
@@ -10,6 +12,7 @@ export class SessionShutdownBinding {
|
|
|
10
12
|
waitingShutdowns = new Map();
|
|
11
13
|
resolveExitFinalization;
|
|
12
14
|
constructor(input) {
|
|
15
|
+
this.input = input;
|
|
13
16
|
this.prepareClear = () => input.loops.prepareClear();
|
|
14
17
|
this.managed = managedShutdown(new ShutdownCoordinator(), () => ({
|
|
15
18
|
pty: input.pty,
|
|
@@ -79,6 +82,35 @@ export class SessionShutdownBinding {
|
|
|
79
82
|
this.waitingShutdowns.set(work, pending);
|
|
80
83
|
return pending;
|
|
81
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* The session's share of a failed startup's cleanup (PRD §9.1, C-LIFE-10). `before`
|
|
87
|
+
* closes the session and pauses its loops. `pty.terminate` ends the PTY with the
|
|
88
|
+
* session's own one-shot reaper, the one its exit path reaps with, so the group is
|
|
89
|
+
* reaped once. Once the session has seen the PTY exit, the leader's pid may be reused,
|
|
90
|
+
* so the PTY is never signaled again: only that shared reaper runs, which does nothing
|
|
91
|
+
* if the exit's reap succeeded and retries it if it failed.
|
|
92
|
+
*/
|
|
93
|
+
startupCleanupResources(closeSession, cancelReadiness) {
|
|
94
|
+
const { pty, reapPolicy, loops } = this.input;
|
|
95
|
+
return {
|
|
96
|
+
before: () => {
|
|
97
|
+
closeSession();
|
|
98
|
+
cancelReadiness();
|
|
99
|
+
loops.pause();
|
|
100
|
+
},
|
|
101
|
+
pty: {
|
|
102
|
+
pid: pty.pid,
|
|
103
|
+
terminate: async (timeouts) => {
|
|
104
|
+
if (this.exitFinalization === undefined) {
|
|
105
|
+
await terminatePty(pty, "SIGTERM", reapPolicy.reaper, timeouts);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
reapPolicy.reaper.reap();
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
82
114
|
exitEvidence() {
|
|
83
115
|
return this.pending ?? "terminal_exited";
|
|
84
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-binding.js","sourceRoot":"","sources":["../../../src/runtime/session/shutdown-binding.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"shutdown-binding.js","sourceRoot":"","sources":["../../../src/runtime/session/shutdown-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime cleanup for an explicit `stop()`/`kill()` attempt (PRD §9.4 and §10,
|
|
3
|
+
* C-LIFE-10): cleanup runs after every attempt to terminate the PTY or, once it was
|
|
4
|
+
* signaled, to reap it, failed or not. So a PTY that could not be signaled, did not
|
|
5
|
+
* exit, or could not be reaped never leaves the session's runtime (its hook bridge and
|
|
6
|
+
* terminal renderer, and Codex's transcript watcher) running until a later `teardown()`.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Runs `attempt` (a PTY termination, or the survivor reap of an already-signaled one),
|
|
10
|
+
* then `cleanupRuntime` whether or not `attempt` rejected, and rejects with a typed
|
|
11
|
+
* `termination_failed` (C-ERR-01). The attempt's failure stays the rejection, carrying a
|
|
12
|
+
* cleanup failure's message alongside it in `details.cleanupError`. A cleanup
|
|
13
|
+
* failure alone is wrapped too: `runCleanupSteps` rejects with a bare `Error` on the
|
|
14
|
+
* assumption that its caller wraps it, and `stop()`/`kill()` are that caller.
|
|
15
|
+
*/
|
|
16
|
+
export declare function shutdownAttemptThenCleanUp(attempt: () => Promise<void> | void, cleanupRuntime: () => Promise<void>): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=shutdown-cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown-cleanup.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/shutdown-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACnC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime cleanup for an explicit `stop()`/`kill()` attempt (PRD §9.4 and §10,
|
|
3
|
+
* C-LIFE-10): cleanup runs after every attempt to terminate the PTY or, once it was
|
|
4
|
+
* signaled, to reap it, failed or not. So a PTY that could not be signaled, did not
|
|
5
|
+
* exit, or could not be reaped never leaves the session's runtime (its hook bridge and
|
|
6
|
+
* terminal renderer, and Codex's transcript watcher) running until a later `teardown()`.
|
|
7
|
+
*/
|
|
8
|
+
import { causeDetails, ElwoodError, elwoodError, toError } from "../../core/errors.js";
|
|
9
|
+
/**
|
|
10
|
+
* Runs `attempt` (a PTY termination, or the survivor reap of an already-signaled one),
|
|
11
|
+
* then `cleanupRuntime` whether or not `attempt` rejected, and rejects with a typed
|
|
12
|
+
* `termination_failed` (C-ERR-01). The attempt's failure stays the rejection, carrying a
|
|
13
|
+
* cleanup failure's message alongside it in `details.cleanupError`. A cleanup
|
|
14
|
+
* failure alone is wrapped too: `runCleanupSteps` rejects with a bare `Error` on the
|
|
15
|
+
* assumption that its caller wraps it, and `stop()`/`kill()` are that caller.
|
|
16
|
+
*/
|
|
17
|
+
export async function shutdownAttemptThenCleanUp(attempt, cleanupRuntime) {
|
|
18
|
+
let terminationError;
|
|
19
|
+
try {
|
|
20
|
+
await attempt();
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
terminationError = asTerminationFailure(error);
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
await cleanupRuntime();
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
const cleanupError = toError(error).message;
|
|
30
|
+
if (terminationError === undefined) {
|
|
31
|
+
throw elwoodError("termination_failed", "Could not clean up the Elwood runtime.", {
|
|
32
|
+
cause: cleanupError,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
throw elwoodError(terminationError.code, terminationError.message, {
|
|
36
|
+
...terminationError.details,
|
|
37
|
+
cleanupError,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
if (terminationError !== undefined)
|
|
41
|
+
throw terminationError;
|
|
42
|
+
}
|
|
43
|
+
/** The typed failure `stop()`/`kill()` reject with, even for an untyped throw. */
|
|
44
|
+
function asTerminationFailure(error) {
|
|
45
|
+
if (error instanceof ElwoodError)
|
|
46
|
+
return error;
|
|
47
|
+
return elwoodError("termination_failed", toError(error).message, causeDetails(error));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=shutdown-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown-cleanup.js","sourceRoot":"","sources":["../../../src/runtime/session/shutdown-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAmC,EACnC,cAAmC;IAEnC,IAAI,gBAAyC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC;QACH,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QAC5C,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,WAAW,CAAC,oBAAoB,EAAE,wCAAwC,EAAE;gBAChF,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;YACjE,GAAG,gBAAgB,CAAC,OAAO;YAC3B,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IACD,IAAI,gBAAgB,KAAK,SAAS;QAAE,MAAM,gBAAgB,CAAC;AAC7D,CAAC;AAED,kFAAkF;AAClF,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,KAAK,YAAY,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,WAAW,CAAC,oBAAoB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACxF,CAAC"}
|