@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,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's diagnostic for a failed session cleanup (PRD §12A.2, C-CLI-09): it names the
|
|
3
|
+
* typed Elwood failures behind it, each always by its error code, then by its errno tokens
|
|
4
|
+
* and unconfirmed process-group ids when it has them. It never carries their messages,
|
|
5
|
+
* paths, or other free text.
|
|
6
|
+
* Text mode's error lines (§12A.3) carry it beside a different primary failure.
|
|
7
|
+
*/
|
|
8
|
+
import { ElwoodError, isErrnoToken } from "../../core/errors.js";
|
|
9
|
+
import { MAX_REPORTED_GROUPS } from "../../runtime/shutdown/detached-sweep/failures.js";
|
|
10
|
+
/**
|
|
11
|
+
* `Cleanup failed.`, or `Cleanup failed (termination_failed EPERM).` when the failure is
|
|
12
|
+
* typed. A `teardown_failed` from `teardown()` is summarized by the typed failures of its
|
|
13
|
+
* steps (`details.failures`, §10), in order; an untyped one adds nothing.
|
|
14
|
+
*/
|
|
15
|
+
export function cleanupFailureMessage(error) {
|
|
16
|
+
const parts = typedCauses(error).map(describeCause);
|
|
17
|
+
return parts.length === 0 ? "Cleanup failed." : `Cleanup failed (${parts.join(", ")}).`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Text mode's stderr lines for an error record (§12A.3), each `prefix` then a sanitized
|
|
21
|
+
* value: the error, then the cleanup diagnostic when a failed cleanup sits behind a
|
|
22
|
+
* different primary failure (§12A.2). A cleanup failure that is itself the primary
|
|
23
|
+
* failure is the error's own line.
|
|
24
|
+
*/
|
|
25
|
+
export function textErrorLines(record, prefix, value) {
|
|
26
|
+
const { cleanup, error } = record;
|
|
27
|
+
const separate = cleanup.status === "failed" && error.code !== "cleanup_failed";
|
|
28
|
+
const lines = separate ? [error.message, cleanup.error] : [error.message];
|
|
29
|
+
return lines.map((line) => `${prefix}${value(line)}\n`).join("");
|
|
30
|
+
}
|
|
31
|
+
function typedCauses(error) {
|
|
32
|
+
if (!(error instanceof ElwoodError))
|
|
33
|
+
return [];
|
|
34
|
+
const failures = error.details["failures"];
|
|
35
|
+
if (!Array.isArray(failures))
|
|
36
|
+
return [error];
|
|
37
|
+
// `runTeardownSteps` builds this list; an untyped step failure has only a message.
|
|
38
|
+
return failures.filter((failure) => "code" in failure);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* `termination_failed EIO reap EPERM process groups 4242 4243`: the code, its errno, its
|
|
42
|
+
* reap's, then the process groups a detached sweep could not confirm reaped (§10).
|
|
43
|
+
*/
|
|
44
|
+
function describeCause({ code, details }) {
|
|
45
|
+
const errno = errnoToken(details["errno"]);
|
|
46
|
+
const reapErrno = errnoToken(details["reapErrno"]);
|
|
47
|
+
const groups = processGroupIds(details["unconfirmedProcessGroupIds"]);
|
|
48
|
+
return [
|
|
49
|
+
code,
|
|
50
|
+
errno,
|
|
51
|
+
reapErrno === undefined ? undefined : `reap ${reapErrno}`,
|
|
52
|
+
groups.length === 0 ? undefined : `process groups ${groups.join(" ")}`,
|
|
53
|
+
]
|
|
54
|
+
.filter((part) => part !== undefined)
|
|
55
|
+
.join(" ");
|
|
56
|
+
}
|
|
57
|
+
function errnoToken(value) {
|
|
58
|
+
return isErrnoToken(value) ? value : undefined;
|
|
59
|
+
}
|
|
60
|
+
/** Positive integer ids only, as many as a sweep failure can name. */
|
|
61
|
+
function processGroupIds(value) {
|
|
62
|
+
if (!Array.isArray(value))
|
|
63
|
+
return [];
|
|
64
|
+
const ids = value.filter((id) => Number.isSafeInteger(id) && id > 0);
|
|
65
|
+
return ids.slice(0, MAX_REPORTED_GROUPS);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=cleanup-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-error.js","sourceRoot":"","sources":["../../../src/cli/output/cleanup-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
import type { ElwoodSessionStatus } from "../../core/types.ts";
|
|
6
6
|
import type { CliAgent } from "../types.ts";
|
|
7
7
|
export type CliCleanupAction = "none" | "preserve" | "teardown";
|
|
8
|
+
/** A failed cleanup always carries its content-free diagnostic (§12A.2). */
|
|
8
9
|
export type CliCleanup = {
|
|
9
10
|
readonly action: CliCleanupAction;
|
|
10
|
-
readonly status: "succeeded"
|
|
11
|
-
|
|
11
|
+
readonly status: "succeeded";
|
|
12
|
+
} | {
|
|
13
|
+
readonly action: CliCleanupAction;
|
|
14
|
+
readonly status: "failed";
|
|
15
|
+
readonly error: string;
|
|
12
16
|
};
|
|
13
17
|
export type CliTerminalBase = {
|
|
14
18
|
readonly schemaVersion: 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/output/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAChE,MAAM,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/output/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,11 +18,15 @@ export declare const noAgentFoundMessage: string;
|
|
|
18
18
|
/**
|
|
19
19
|
* True when the login shell resolves `agent` as a command. Uses the same
|
|
20
20
|
* interactive login shell as the agent PTY so PATH resolution is identical, but
|
|
21
|
-
* asks only `command -v`, so the agent itself never starts (C-CLI-14).
|
|
21
|
+
* asks only `command -v`, so the agent itself never starts (C-CLI-14). Detection uses only
|
|
22
|
+
* `command -v`'s exit status; its output is discarded. A probe
|
|
22
23
|
* that could not run at all (missing or broken shell, probe timeout) is a
|
|
23
24
|
* distinct failure: it says nothing about which agents are installed.
|
|
24
25
|
*/
|
|
25
|
-
export declare function loginShellResolves(agent: CliAgent,
|
|
26
|
+
export declare function loginShellResolves(agent: CliAgent, options?: {
|
|
27
|
+
readonly shell?: string;
|
|
28
|
+
readonly cwd?: string;
|
|
29
|
+
}): Promise<boolean>;
|
|
26
30
|
/**
|
|
27
31
|
* Probes every agent concurrently and returns the first in detection order that
|
|
28
32
|
* `probe` reports available; `no_agent_found` when none is.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-detect.d.ts","sourceRoot":"","sources":["../../../src/cli/request/agent-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAW,KAAK,YAAY,EAAW,MAAM,cAAc,CAAC;AAEnE,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,8BAA6D,CAAC;AAE9F,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB,QAIgB,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"agent-detect.d.ts","sourceRoot":"","sources":["../../../src/cli/request/agent-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAW,KAAK,YAAY,EAAW,MAAM,cAAc,CAAC;AAEnE,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,8BAA6D,CAAC;AAE9F,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB,QAIgB,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,QAAQ,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,OAAO,CAAC,OAAO,CAAC,CASlB;AAoBD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,GAAE,UAA+B,GACrC,OAAO,CAAC,QAAQ,CAAC,CAKnB;AAED,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAU/B"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* cannot run at all is reported as such, not as "no agent installed".
|
|
8
8
|
*/
|
|
9
9
|
import { currentCommandRunner } from "../../runtime/seams.js";
|
|
10
|
-
import {
|
|
10
|
+
import { probeShellStatus, shellQuote, userShell } from "../../runtime/shell.js";
|
|
11
11
|
import { CliValidationError } from "../types.js";
|
|
12
12
|
import { layered, sourced } from "./sources.js";
|
|
13
13
|
/** Detection order: the first agent whose command resolves wins. */
|
|
@@ -21,20 +21,28 @@ export const noAgentFoundMessage = "No agent was found: neither `claude` nor `co
|
|
|
21
21
|
/**
|
|
22
22
|
* True when the login shell resolves `agent` as a command. Uses the same
|
|
23
23
|
* interactive login shell as the agent PTY so PATH resolution is identical, but
|
|
24
|
-
* asks only `command -v`, so the agent itself never starts (C-CLI-14).
|
|
24
|
+
* asks only `command -v`, so the agent itself never starts (C-CLI-14). Detection uses only
|
|
25
|
+
* `command -v`'s exit status; its output is discarded. A probe
|
|
25
26
|
* that could not run at all (missing or broken shell, probe timeout) is a
|
|
26
27
|
* distinct failure: it says nothing about which agents are installed.
|
|
27
28
|
*/
|
|
28
|
-
export async function loginShellResolves(agent,
|
|
29
|
-
const
|
|
30
|
-
const
|
|
29
|
+
export async function loginShellResolves(agent, options = {}) {
|
|
30
|
+
const shell = options.shell ?? userShell();
|
|
31
|
+
const cwd = options.cwd ?? process.cwd();
|
|
32
|
+
const command = probeShellStatus(`command -v ${shellQuote(agent)}`);
|
|
33
|
+
const result = await currentCommandRunner()(shell, command, { cwd });
|
|
31
34
|
if (result.error !== undefined) {
|
|
32
35
|
throw new CliValidationError("no_agent_found", probeFailedMessage(shell, result.error));
|
|
33
36
|
}
|
|
34
37
|
return result.status === 0;
|
|
35
38
|
}
|
|
36
39
|
function probeFailedMessage(shell, error) {
|
|
37
|
-
|
|
40
|
+
// A login-shell failure's message is Elwood's own fixed text, never captured output.
|
|
41
|
+
const reason = error.phase === "login_shell"
|
|
42
|
+
? `failed before running the check (${error.message})`
|
|
43
|
+
: error.code === undefined
|
|
44
|
+
? "did not run"
|
|
45
|
+
: `failed with ${error.code}`;
|
|
38
46
|
return (`No agent was found because the probe itself failed: login shell ${JSON.stringify(shell)} ` +
|
|
39
47
|
`${reason} while checking for \`claude\` and \`codex\`. Fix the shell, or select an agent ` +
|
|
40
48
|
"with --agent, ELWOOD_AGENT, or `elwood config set agent <claude|codex>`.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-detect.js","sourceRoot":"","sources":["../../../src/cli/request/agent-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"agent-detect.js","sourceRoot":"","sources":["../../../src/cli/request/agent-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Finalizes adapter-dependent resume options, workspace, and images.
|
|
3
|
-
* Implements PRD §12A.1/§12A.2 and C-CLI-03/C-CLI-04/C-CLI-06/C-CLI-08.
|
|
3
|
+
* Implements PRD §12A.1/§12A.2/§12A.5 and C-CLI-03/C-CLI-04/C-CLI-06/C-CLI-08/C-CLI-15.
|
|
4
4
|
*/
|
|
5
5
|
import { type CliAgent, type EffectiveRunRequest, type ResolvedRunRequest } from "../types.ts";
|
|
6
6
|
export declare function finalizeRunRequest(draft: ResolvedRunRequest, stored?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../src/cli/request/finalize.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../src/cli/request/finalize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAEL,KAAK,QAAQ,EAEb,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAKrB,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,kBAAkB,EACzB,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC1D,OAAO,CAAC,mBAAmB,CAAC,CAS9B"}
|
|
@@ -1,43 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Finalizes adapter-dependent resume options, workspace, and images.
|
|
3
|
-
* Implements PRD §12A.1/§12A.2 and C-CLI-03/C-CLI-04/C-CLI-06/C-CLI-08.
|
|
3
|
+
* Implements PRD §12A.1/§12A.2/§12A.5 and C-CLI-03/C-CLI-04/C-CLI-06/C-CLI-08/C-CLI-15.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import { isAbsolute, resolve } from "node:path";
|
|
7
|
-
import { errnoCode } from "../../core/errors.js";
|
|
5
|
+
import { resolve } from "node:path";
|
|
8
6
|
import { validateImages } from "../../core/images/resolve.js";
|
|
9
7
|
import { claudeReasoningEfforts, codexReasoningEfforts } from "../../core/reasoning-effort.js";
|
|
10
8
|
import { agentDisplayName, } from "../types.js";
|
|
11
9
|
import { settingConflict } from "./validation.js";
|
|
12
10
|
import { choice, nonBlank, optional, usage } from "./values.js";
|
|
11
|
+
import { validateWorkspace } from "./workspace.js";
|
|
13
12
|
export async function finalizeRunRequest(draft, stored) {
|
|
14
13
|
validateStored(draft, stored);
|
|
15
14
|
const agent = stored?.agent ?? draft.agent;
|
|
16
15
|
validateEffectiveAgent(draft, agent);
|
|
17
|
-
const cwd = stored?.cwd ?? draft.cwd;
|
|
18
|
-
if (cwd === undefined)
|
|
19
|
-
throw usage("The effective workspace could not be resolved.");
|
|
20
|
-
if (!isAbsolute(cwd))
|
|
21
|
-
throw usage(`Workspace '${cwd}' must be an absolute path.`);
|
|
22
|
-
const info = await workspaceStat(cwd);
|
|
23
|
-
if (!info.isDirectory())
|
|
24
|
-
throw usage(`Workspace '${cwd}' is not a directory.`);
|
|
25
|
-
const uid = process.getuid?.();
|
|
26
|
-
if (uid !== undefined && info.uid !== uid)
|
|
27
|
-
throw usage(`Workspace '${cwd}' must be owned by the current user.`);
|
|
16
|
+
const cwd = await validateWorkspace(stored?.cwd ?? draft.cwd);
|
|
28
17
|
const images = await validateImages(draft.imagePaths.map((path) => ({ path: resolve(cwd, nonBlank(path, "image")) })));
|
|
29
18
|
return effectiveRequest(draft, agent, cwd, images, stored !== undefined);
|
|
30
19
|
}
|
|
31
|
-
async function workspaceStat(cwd) {
|
|
32
|
-
try {
|
|
33
|
-
return await stat(cwd);
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
if (errnoCode(error) === "ENOENT")
|
|
37
|
-
throw usage(`Workspace '${cwd}' does not exist.`);
|
|
38
|
-
throw usage(`Workspace '${cwd}' could not be inspected.`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
20
|
function validateStored(draft, stored) {
|
|
42
21
|
if (draft.resume !== undefined && stored === undefined)
|
|
43
22
|
throw usage("Stored session data is required to resolve a resume.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize.js","sourceRoot":"","sources":["../../../src/cli/request/finalize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"finalize.js","sourceRoot":"","sources":["../../../src/cli/request/finalize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EACL,gBAAgB,GAKjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAyB,EACzB,MAA2D;IAE3D,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;IAC3C,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAClF,CAAC;IACF,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CACrB,KAAyB,EACzB,MAAsE;IAEtE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QACpD,MAAM,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACtE,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI;QACpD,MAAM,KAAK,CAAC,uEAAuE,CAAC,CAAC;IACvF,IACE,MAAM,KAAK,SAAS;QACpB,KAAK,CAAC,aAAa,KAAK,SAAS;QACjC,KAAK,CAAC,aAAa,KAAK,MAAM,CAAC,KAAK,EACpC,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,KAAK,CACT,OAAO,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,CAAC,+DAA+D;YACjE,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAyB,EAAE,KAAe;IACxE,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5E,MAAM,KAAK,CACT,OAAO,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CACtC,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,iBAAiB,CAC/B,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,EACjC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CACzC,CAAC;QACF,MAAM,KAAK,CACT,OAAO,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CACvC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAG,OAAwC;IACpE,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,MAAM,EAAoB,EAAE,CAC3B,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,CAC9E,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAyB,EACzB,KAAe,EACf,GAAW,EACX,MAAqC,EACrC,OAAgB;IAEhB,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI;QAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3F,CAAC;IACF,MAAM,EACJ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW,EACvB,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,OAAO,EACxB,cAAc,EAAE,WAAW,EAC3B,OAAO,EAAE,QAAQ,EACjB,cAAc,EAAE,SAAS,EACzB,YAAY,EAAE,aAAa,EAC3B,qBAAqB,EAAE,eAAe,EACtC,oBAAoB,EAAE,cAAc,EACpC,IAAI,EAAE,KAAK,EACX,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IACV,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9D,OAAO;QACL,GAAG,IAAI;QACP,GAAG;QACH,MAAM;QACN,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QACpC,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC;QAC/C,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,SAAS,EAAE,CAAC;QAChF,GAAG,CAAC,KAAK,KAAK,OAAO,IAAI;YACvB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,iBAAiB;YAC3C,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,OAAO;SAChD,CAAC;QACF,GAAG,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,SAAS,WAAW,CAAC,KAAe,EAAE,KAAyB;IAC7D,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC;YACE,KAAK;YACL,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;SACzF;QACH,CAAC,CAAC;YACE,KAAK;YACL,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;SACxF,CAAC;AACR,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAyB,EACzB,KAAe,EACf,OAAgB;IAEhB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/C,OAAO;QACL,GAAG,UAAU;QACb,OAAO,EAAE;YACP,GAAG,UAAU,CAAC,OAAO;YACrB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK;YAC5E,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS;YACpF,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,KAAK;YACjD,eAAe,EAAE,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,eAAe;YACrE,cAAc,EACZ,KAAK,KAAK,QAAQ;gBAChB,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS;oBAClC,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc;gBACrC,CAAC,CAAC,gBAAgB;YACtB,OAAO,EACL,KAAK,KAAK,OAAO;gBACf,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS;oBAC3B,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO;gBAC9B,CAAC,CAAC,gBAAgB;YACtB,cAAc,EACZ,KAAK,KAAK,OAAO;gBACf,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS;oBAClC,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc;gBACrC,CAAC,CAAC,gBAAgB;SACvB;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/request/index.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAMrG,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/request/index.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAMrG,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,mBAAmB,CAAC;AAoB3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,KAAK,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAErD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,aAAa,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAK7B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,aAAa,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAgG7B"}
|
|
@@ -4,15 +4,16 @@ import { readConfigWithStatus } from "../config/store.js";
|
|
|
4
4
|
import { parseDuration } from "../duration.js";
|
|
5
5
|
import { readPromptInput } from "../input.js";
|
|
6
6
|
import { cliAgents, cliOutputModes, } from "../types.js";
|
|
7
|
-
import { detectAvailableAgent, selectAgent } from "./agent-detect.js";
|
|
7
|
+
import { detectAvailableAgent, loginShellResolves, selectAgent, } from "./agent-detect.js";
|
|
8
8
|
import { explicitAdapterOptions, layeredSettings } from "./layers.js";
|
|
9
9
|
import { resolvePosture } from "./posture.js";
|
|
10
10
|
import { ioSettings, optionSettings } from "./settings.js";
|
|
11
11
|
import { configKey, sourced } from "./sources.js";
|
|
12
12
|
import { validateHighTrust, validateLifecycle, validateOutput, validateSpecificFlags, } from "./validation.js";
|
|
13
13
|
import { decodeEnvironment, optional, optionalNonBlank, reasoning, requiredChoice, } from "./values.js";
|
|
14
|
+
import { validateWorkspace } from "./workspace.js";
|
|
14
15
|
export { finalizeRunRequest } from "./finalize.js";
|
|
15
|
-
export async function resolveRunRequest(parsed, context, detectAgent
|
|
16
|
+
export async function resolveRunRequest(parsed, context, detectAgent) {
|
|
16
17
|
return {
|
|
17
18
|
...(await resolveRunSettings(parsed, context, detectAgent)),
|
|
18
19
|
prompt: await readPromptInput(parsed.promptWords, context.stdin),
|
|
@@ -22,7 +23,7 @@ export async function resolveRunRequest(parsed, context, detectAgent = detectAva
|
|
|
22
23
|
* Resolve and validate settings without reading prompt input or starting an agent.
|
|
23
24
|
* `detectAgent` runs only when nothing selects the agent for a new session (C-CLI-21).
|
|
24
25
|
*/
|
|
25
|
-
export async function resolveRunSettings(parsed, context, detectAgent
|
|
26
|
+
export async function resolveRunSettings(parsed, context, detectAgent) {
|
|
26
27
|
const useDefaults = parsed.flags.ignoreDefaults !== true;
|
|
27
28
|
const configLocation = resolveConfigLocation(context.env, context.invocationCwd, context.homeDir);
|
|
28
29
|
const configRead = useDefaults
|
|
@@ -31,12 +32,18 @@ export async function resolveRunSettings(parsed, context, detectAgent = detectAv
|
|
|
31
32
|
const config = configRead.config;
|
|
32
33
|
const env = useDefaults ? decodeEnvironment(context.env) : {};
|
|
33
34
|
const resuming = parsed.flags.resume !== undefined;
|
|
35
|
+
const layers = layeredSettings(parsed, env, config, configLocation.path, context, resuming);
|
|
36
|
+
const cwd = layers.cwd.value ?? context.invocationCwd;
|
|
34
37
|
const agentSetting = await selectAgent({
|
|
35
38
|
flag: parsed.flags.agent,
|
|
36
39
|
env: env.agent,
|
|
37
40
|
config: sourced(config.agent, configKey(configLocation.path, "agent")),
|
|
38
41
|
resuming,
|
|
39
|
-
},
|
|
42
|
+
}, async () => {
|
|
43
|
+
const validatedCwd = await validateWorkspace(cwd);
|
|
44
|
+
return (detectAgent?.() ??
|
|
45
|
+
detectAvailableAgent((agent) => loginShellResolves(agent, { cwd: validatedCwd })));
|
|
46
|
+
});
|
|
40
47
|
const agent = requiredChoice(agentSetting.value, cliAgents, "agent");
|
|
41
48
|
// High trust is rejected against explicit posture BEFORE the adapter check, so
|
|
42
49
|
// `--high-trust --codex-sandbox …` names the switch rather than the agent (C-CLI-22).
|
|
@@ -49,7 +56,6 @@ export async function resolveRunSettings(parsed, context, detectAgent = detectAv
|
|
|
49
56
|
const debug = parsed.flags.debug ?? false;
|
|
50
57
|
const head = parsed.flags.head ?? false;
|
|
51
58
|
validateOutput(output, io.stream, io.verbose, debug, head);
|
|
52
|
-
const layers = layeredSettings(parsed, env, config, configLocation.path, context, resuming);
|
|
53
59
|
const agentOptions = optionSettings(config, configLocation.path, layers.model, layers.effort);
|
|
54
60
|
const selected = agentOptions.values[agent];
|
|
55
61
|
const posture = resolvePosture(parsed, env, config, configLocation.path, agent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/request/index.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAErG,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAEL,SAAS,EACT,cAAc,GAIf,MAAM,aAAa,CAAC;AACrB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/request/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Looks for a way another user could change what a workspace path resolves to between
|
|
3
|
+
* validation and launch. Implements PRD §12A.5 and C-CLI-15.
|
|
4
|
+
*
|
|
5
|
+
* The path is resolved name by name, as the kernel resolves it at spawn, following each symlink.
|
|
6
|
+
* Every directory a name is looked up in must be owned by root or the user and not writable by
|
|
7
|
+
* group or others, unless it is sticky or its group is the user's private group; every
|
|
8
|
+
* directory and symlink passed must be owned by root or the user, since a sticky directory lets
|
|
9
|
+
* other users rename their own entries. Finding nothing means only that these owner and
|
|
10
|
+
* mode-bit checks found nothing: an ACL that grants another user write access, or another
|
|
11
|
+
* member of the user's private group, is not seen. A path whose links cannot be followed
|
|
12
|
+
* safely fails with a `PathInspectionError` that names the link.
|
|
13
|
+
*/
|
|
14
|
+
import { type PathUser } from "../../core/path-trust.ts";
|
|
15
|
+
export { lookupFault, type PathUser } from "../../core/path-trust.ts";
|
|
16
|
+
/** The path's links cannot be followed safely; the message names the link and the fix. */
|
|
17
|
+
export declare class PathInspectionError extends Error {
|
|
18
|
+
readonly name = "PathInspectionError";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The first reason another user could redirect `path`, naming the directory or link that lets
|
|
22
|
+
* them, or `undefined` when the owner and mode-bit checks find none. A link the walk cannot
|
|
23
|
+
* follow throws a `PathInspectionError`, even past such a reason. The workspace itself is the
|
|
24
|
+
* caller's to check.
|
|
25
|
+
*/
|
|
26
|
+
export declare function pathReplacementReason(path: string, user: PathUser): Promise<string | undefined>;
|
|
27
|
+
//# sourceMappingURL=path-replacement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-replacement.d.ts","sourceRoot":"","sources":["../../../src/cli/request/path-replacement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEtE,0FAA0F;AAC1F,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAkB,IAAI,yBAAyB;CAChD;AAKD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA8B7B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Looks for a way another user could change what a workspace path resolves to between
|
|
3
|
+
* validation and launch. Implements PRD §12A.5 and C-CLI-15.
|
|
4
|
+
*
|
|
5
|
+
* The path is resolved name by name, as the kernel resolves it at spawn, following each symlink.
|
|
6
|
+
* Every directory a name is looked up in must be owned by root or the user and not writable by
|
|
7
|
+
* group or others, unless it is sticky or its group is the user's private group; every
|
|
8
|
+
* directory and symlink passed must be owned by root or the user, since a sticky directory lets
|
|
9
|
+
* other users rename their own entries. Finding nothing means only that these owner and
|
|
10
|
+
* mode-bit checks found nothing: an ACL that grants another user write access, or another
|
|
11
|
+
* member of the user's private group, is not seen. A path whose links cannot be followed
|
|
12
|
+
* safely fails with a `PathInspectionError` that names the link.
|
|
13
|
+
*/
|
|
14
|
+
import { isUtf8 } from "node:buffer";
|
|
15
|
+
import { lstat, readlink } from "node:fs/promises";
|
|
16
|
+
import { dirname, isAbsolute, join } from "node:path";
|
|
17
|
+
import { lookupFault, ownerFault } from "../../core/path-trust.js";
|
|
18
|
+
export { lookupFault } from "../../core/path-trust.js";
|
|
19
|
+
/** The path's links cannot be followed safely; the message names the link and the fix. */
|
|
20
|
+
export class PathInspectionError extends Error {
|
|
21
|
+
name = "PathInspectionError";
|
|
22
|
+
}
|
|
23
|
+
/** As many symlinks as Linux follows in one path; a loop fails as uninspectable. */
|
|
24
|
+
const MAX_LINKS = 40;
|
|
25
|
+
/**
|
|
26
|
+
* The first reason another user could redirect `path`, naming the directory or link that lets
|
|
27
|
+
* them, or `undefined` when the owner and mode-bit checks find none. A link the walk cannot
|
|
28
|
+
* follow throws a `PathInspectionError`, even past such a reason. The workspace itself is the
|
|
29
|
+
* caller's to check.
|
|
30
|
+
*/
|
|
31
|
+
export async function pathReplacementReason(path, user) {
|
|
32
|
+
let current = "/";
|
|
33
|
+
let fault = lookupFault(await lstat(current), user, current);
|
|
34
|
+
const pending = namesOf(path);
|
|
35
|
+
let links = 0;
|
|
36
|
+
// The walk goes on past the first fault, which it keeps, so a link it cannot follow is still
|
|
37
|
+
// named rather than left for `stat` to fail on.
|
|
38
|
+
for (let name = pending.pop(); name !== undefined; name = pending.pop()) {
|
|
39
|
+
if (name === "..") {
|
|
40
|
+
current = dirname(current);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const next = join(current, name);
|
|
44
|
+
const info = await lstat(next);
|
|
45
|
+
if (info.isSymbolicLink()) {
|
|
46
|
+
fault ??= ownerFault(info, user, next, "link");
|
|
47
|
+
if (++links > MAX_LINKS)
|
|
48
|
+
throw new PathInspectionError(`symbolic link '${next}' is past the ${MAX_LINKS} links a path may follow, as in a loop; fix the links, or choose a workspace reached without them`);
|
|
49
|
+
const target = await linkTarget(next);
|
|
50
|
+
pending.push(...namesOf(target));
|
|
51
|
+
if (isAbsolute(target))
|
|
52
|
+
current = "/";
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
// The last name is the workspace; every other one is a directory the next name is looked in.
|
|
56
|
+
if (pending.length > 0)
|
|
57
|
+
fault ??= lookupFault(info, user, next);
|
|
58
|
+
current = next;
|
|
59
|
+
}
|
|
60
|
+
return fault;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The target of the link at `path`. One that is not UTF-8 fails: decoded, it would name another
|
|
64
|
+
* path than the bytes the kernel follows, so the walk could check the wrong directories.
|
|
65
|
+
*/
|
|
66
|
+
async function linkTarget(path) {
|
|
67
|
+
const bytes = await readlink(path, { encoding: "buffer" });
|
|
68
|
+
if (!isUtf8(bytes))
|
|
69
|
+
throw new PathInspectionError(`symbolic link '${path}' does not point to a UTF-8 path; point it at one, or choose a workspace reached without it`);
|
|
70
|
+
return bytes.toString("utf8");
|
|
71
|
+
}
|
|
72
|
+
/** The names of `path`, last first, so the next one to resolve is popped. */
|
|
73
|
+
function namesOf(path) {
|
|
74
|
+
return path
|
|
75
|
+
.split("/")
|
|
76
|
+
.filter((name) => name !== "" && name !== ".")
|
|
77
|
+
.reverse();
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=path-replacement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-replacement.js","sourceRoot":"","sources":["../../../src/cli/request/path-replacement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates a run's effective workspace: an absolute, existing directory the user owns and can enter,
|
|
3
|
+
* reached through no directory or link the owner and mode-bit checks find another user could use
|
|
4
|
+
* to replace it before launch. Implements PRD §12A.5, C-CLI-03, and C-CLI-15.
|
|
5
|
+
*/
|
|
6
|
+
/** Returns `cwd` once it is a workspace Elwood may launch in, else throws a usage error. */
|
|
7
|
+
export declare function validateWorkspace(cwd: string | undefined): Promise<string>;
|
|
8
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/cli/request/workspace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,4FAA4F;AAC5F,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBhF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates a run's effective workspace: an absolute, existing directory the user owns and can enter,
|
|
3
|
+
* reached through no directory or link the owner and mode-bit checks find another user could use
|
|
4
|
+
* to replace it before launch. Implements PRD §12A.5, C-CLI-03, and C-CLI-15.
|
|
5
|
+
*/
|
|
6
|
+
import { constants } from "node:fs";
|
|
7
|
+
import { access, stat } from "node:fs/promises";
|
|
8
|
+
import { isAbsolute } from "node:path";
|
|
9
|
+
import { errnoCode } from "../../core/errors.js";
|
|
10
|
+
import { PathInspectionError, pathReplacementReason } from "./path-replacement.js";
|
|
11
|
+
import { usage } from "./values.js";
|
|
12
|
+
/** Returns `cwd` once it is a workspace Elwood may launch in, else throws a usage error. */
|
|
13
|
+
export async function validateWorkspace(cwd) {
|
|
14
|
+
if (cwd === undefined)
|
|
15
|
+
throw usage("The effective workspace could not be resolved.");
|
|
16
|
+
if (!isAbsolute(cwd))
|
|
17
|
+
throw usage(`Workspace '${cwd}' must be an absolute path.`);
|
|
18
|
+
const uid = process.getuid?.();
|
|
19
|
+
const user = uid === undefined ? undefined : { uid, gid: process.getgid() };
|
|
20
|
+
const { info, replacementReason } = await inspectWorkspace(cwd, user);
|
|
21
|
+
if (!info.isDirectory())
|
|
22
|
+
throw usage(`Workspace '${cwd}' is not a directory.`);
|
|
23
|
+
if (uid !== undefined && info.uid !== uid)
|
|
24
|
+
throw usage(`Workspace '${cwd}' must be owned by the current user.`);
|
|
25
|
+
if (replacementReason !== undefined)
|
|
26
|
+
throw usage(`Workspace '${cwd}' could be replaced by another user: ${replacementReason}.`);
|
|
27
|
+
try {
|
|
28
|
+
await access(cwd, constants.X_OK);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
throw usage(`Workspace '${cwd}' cannot be entered; check directory search permissions.`);
|
|
32
|
+
}
|
|
33
|
+
return cwd;
|
|
34
|
+
}
|
|
35
|
+
/** The workspace and, where there is a POSIX user, any reason another user could redirect it. */
|
|
36
|
+
async function inspectWorkspace(cwd, user) {
|
|
37
|
+
try {
|
|
38
|
+
// The walk first, so a link that cannot be followed is named rather than failing `stat`.
|
|
39
|
+
const replacementReason = user && (await pathReplacementReason(cwd, user));
|
|
40
|
+
return { info: await stat(cwd), replacementReason };
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (errnoCode(error) === "ENOENT")
|
|
44
|
+
throw usage(`Workspace '${cwd}' does not exist.`);
|
|
45
|
+
if (error instanceof PathInspectionError)
|
|
46
|
+
throw usage(`Workspace '${cwd}' could not be inspected: ${error.message}.`);
|
|
47
|
+
throw usage(`Workspace '${cwd}' could not be inspected.`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/cli/request/workspace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAiB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAuB;IAC7D,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACrF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,KAAK,CAAC,cAAc,GAAG,6BAA6B,CAAC,CAAC;IAClF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,MAAO,EAAE,EAAE,CAAC;IAC7E,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAAE,MAAM,KAAK,CAAC,cAAc,GAAG,uBAAuB,CAAC,CAAC;IAC/E,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG;QACvC,MAAM,KAAK,CAAC,cAAc,GAAG,sCAAsC,CAAC,CAAC;IACvE,IAAI,iBAAiB,KAAK,SAAS;QACjC,MAAM,KAAK,CAAC,cAAc,GAAG,wCAAwC,iBAAiB,GAAG,CAAC,CAAC;IAC7F,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,CAAC,cAAc,GAAG,0DAA0D,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iGAAiG;AACjG,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAA0B;IACrE,IAAI,CAAC;QACH,yFAAyF;QACzF,MAAM,iBAAiB,GAAG,IAAI,IAAI,CAAC,MAAM,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAAC;QACrF,IAAI,KAAK,YAAY,mBAAmB;YACtC,MAAM,KAAK,CAAC,cAAc,GAAG,6BAA6B,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAC9E,MAAM,KAAK,CAAC,cAAc,GAAG,2BAA2B,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/cli/run/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/cli/run/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAO9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGzE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,KAAK,CAAS;gBAGpB,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,MAAM;IAWzB,UAAU,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAI5C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/B,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI;IAIrE,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAOxC,QAAQ,IAAI,IAAI;IAMhB,aAAa,IAAI,IAAI;IAIf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,CAAC,cAAc,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BpE,OAAO,CAAC,OAAO;YAkBD,YAAY;IAI1B,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,KAAK;IAIb,0FAA0F;YAC5E,iBAAiB;IAU/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CACW;CAC5C"}
|
package/dist/cli/run/output.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Accumulates one safe response while coordinating human and machine CLI renderers.
|
|
3
3
|
* Implements PRD §12A.3 and C-CLI-10 through C-CLI-12.
|
|
4
4
|
*/
|
|
5
|
+
import { textErrorLines } from "../output/cleanup-error.js";
|
|
5
6
|
import { writeJson } from "../output/json.js";
|
|
6
7
|
import { JsonlRenderer } from "../output/jsonl.js";
|
|
7
8
|
import { progressFromTurn, progressFromWarning } from "../output/records.js";
|
|
@@ -84,7 +85,7 @@ export class RunOutput {
|
|
|
84
85
|
else
|
|
85
86
|
await this.observeWrite(writeFinalText(this.stdout, record.response));
|
|
86
87
|
if (this.request.output === "text" && record.type === "error" && !this.stderr.closed) {
|
|
87
|
-
await this.observeDiagnostic(
|
|
88
|
+
await this.observeDiagnostic(textErrorLines(record, "elwood: ", this.diagnosticValue));
|
|
88
89
|
}
|
|
89
90
|
if (this.request.output === "text" &&
|
|
90
91
|
this.request.keep &&
|