@with-logic/elwood 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +565 -1
- package/CONTRIBUTING.md +3 -0
- package/README.md +4 -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 +6 -5
- package/dist/runtime/session/base.js.map +1 -1
- package/dist/runtime/session/commands.d.ts +5 -3
- 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 +13 -11
- package/dist/runtime/session/picker.d.ts.map +1 -1
- package/dist/runtime/session/picker.js +46 -24
- 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/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/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,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How long a model dialog must stay gone before input may follow it (PRD §5.3, C-API-55).
|
|
3
|
+
* Shared by the input holds and by a picker operation's own close wait.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Consecutive positive clearance READINGS that prove a dialog is gone rather than
|
|
7
|
+
* mid-repaint. A reading is one look at the latest completed frame. It need not be a new
|
|
8
|
+
* frame: idle CLIs do not repaint, so the hold counts readings spaced in time
|
|
9
|
+
* (`clearReadingGapMs`), not rendered-frame callbacks.
|
|
10
|
+
*
|
|
11
|
+
* Matches `quietFramesToSettle` in `core/turn-state.ts`, deliberately. That value IS
|
|
12
|
+
* measured: Codex's resume replay repaints in bursts with brief 1-frame quiet gaps, and 5
|
|
13
|
+
* clears them with margin (docs/cli-behavior.md, C-TURN-03). Picker repaints are the same
|
|
14
|
+
* class of problem — a dialog redrawing between stages is briefly unrecognizable — and we
|
|
15
|
+
* have NOT measured their gap length, so there is no evidence for a smaller number.
|
|
16
|
+
*
|
|
17
|
+
* The failure directions are not symmetric, which settles it. Too high only delays
|
|
18
|
+
* releasing the input hold. Too low releases queued input into a repainting picker, where
|
|
19
|
+
* Enter applies the highlighted model — the exact bug class this file exists to prevent.
|
|
20
|
+
* Absent a measurement, take the conservative measured precedent.
|
|
21
|
+
*
|
|
22
|
+
* This governs every input hold (`runtime/session/picker-hold.ts`), which is unbounded and
|
|
23
|
+
* only observes, so a longer streak costs nothing but a little latency, and an operation's
|
|
24
|
+
* close wait (`close-wait.ts`). Failure cleanup uses a shorter one on purpose: see
|
|
25
|
+
* `cleanupClearReadings` in `runtime/session/picker-cleanup.ts`.
|
|
26
|
+
*/
|
|
27
|
+
export declare const clearReadings = 5;
|
|
28
|
+
/**
|
|
29
|
+
* The least time between two clearance readings that both count toward `clearReadings`.
|
|
30
|
+
* Below the 50 ms queued-write retry (`unsafeWriteRetryMs`), so each retry of a waiting
|
|
31
|
+
* writer counts, while readings bunched into one instant, or a burst of repaints, count
|
|
32
|
+
* once: a release takes four gaps (160 ms or more). What a reading must show differs by
|
|
33
|
+
* consumer: an input hold (`picker-hold.ts`) needs positive native-composer clearance, while
|
|
34
|
+
* a successful operation's close wait (`close-wait.ts`) needs only that the bottom-most
|
|
35
|
+
* region is not its dialog, since the composer is never clear during a turn.
|
|
36
|
+
*/
|
|
37
|
+
export declare const clearReadingGapMs = 40;
|
|
38
|
+
//# sourceMappingURL=clearance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearance.d.ts","sourceRoot":"","sources":["../../../src/core/models/clearance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How long a model dialog must stay gone before input may follow it (PRD §5.3, C-API-55).
|
|
3
|
+
* Shared by the input holds and by a picker operation's own close wait.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Consecutive positive clearance READINGS that prove a dialog is gone rather than
|
|
7
|
+
* mid-repaint. A reading is one look at the latest completed frame. It need not be a new
|
|
8
|
+
* frame: idle CLIs do not repaint, so the hold counts readings spaced in time
|
|
9
|
+
* (`clearReadingGapMs`), not rendered-frame callbacks.
|
|
10
|
+
*
|
|
11
|
+
* Matches `quietFramesToSettle` in `core/turn-state.ts`, deliberately. That value IS
|
|
12
|
+
* measured: Codex's resume replay repaints in bursts with brief 1-frame quiet gaps, and 5
|
|
13
|
+
* clears them with margin (docs/cli-behavior.md, C-TURN-03). Picker repaints are the same
|
|
14
|
+
* class of problem — a dialog redrawing between stages is briefly unrecognizable — and we
|
|
15
|
+
* have NOT measured their gap length, so there is no evidence for a smaller number.
|
|
16
|
+
*
|
|
17
|
+
* The failure directions are not symmetric, which settles it. Too high only delays
|
|
18
|
+
* releasing the input hold. Too low releases queued input into a repainting picker, where
|
|
19
|
+
* Enter applies the highlighted model — the exact bug class this file exists to prevent.
|
|
20
|
+
* Absent a measurement, take the conservative measured precedent.
|
|
21
|
+
*
|
|
22
|
+
* This governs every input hold (`runtime/session/picker-hold.ts`), which is unbounded and
|
|
23
|
+
* only observes, so a longer streak costs nothing but a little latency, and an operation's
|
|
24
|
+
* close wait (`close-wait.ts`). Failure cleanup uses a shorter one on purpose: see
|
|
25
|
+
* `cleanupClearReadings` in `runtime/session/picker-cleanup.ts`.
|
|
26
|
+
*/
|
|
27
|
+
export const clearReadings = 5;
|
|
28
|
+
/**
|
|
29
|
+
* The least time between two clearance readings that both count toward `clearReadings`.
|
|
30
|
+
* Below the 50 ms queued-write retry (`unsafeWriteRetryMs`), so each retry of a waiting
|
|
31
|
+
* writer counts, while readings bunched into one instant, or a burst of repaints, count
|
|
32
|
+
* once: a release takes four gaps (160 ms or more). What a reading must show differs by
|
|
33
|
+
* consumer: an input hold (`picker-hold.ts`) needs positive native-composer clearance, while
|
|
34
|
+
* a successful operation's close wait (`close-wait.ts`) needs only that the bottom-most
|
|
35
|
+
* region is not its dialog, since the composer is never clear during a turn.
|
|
36
|
+
*/
|
|
37
|
+
export const clearReadingGapMs = 40;
|
|
38
|
+
//# sourceMappingURL=clearance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearance.js","sourceRoot":"","sources":["../../../src/core/models/clearance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A model operation's close wait: the queue slot is released only once the operation's
|
|
3
|
+
* dialog has stayed gone, not on the first frame that lacks it (PRD §5.3, C-API-55).
|
|
4
|
+
*/
|
|
5
|
+
import type { ModelPickerIo, ModelPickerSpec } from "./picker.ts";
|
|
6
|
+
/**
|
|
7
|
+
* Resolves once the dialog has not shown across `clearReadings` readings spaced
|
|
8
|
+
* `clearReadingGapMs` apart; any reading that shows it restarts the count. One frame without
|
|
9
|
+
* the picker is not proof it closed: a blank or half-painted repaint lacks it too, and the
|
|
10
|
+
* picker can paint again after it, where a queued Enter released by this operation would
|
|
11
|
+
* apply the highlighted model. Absence, not positive composer clearance, is what is counted:
|
|
12
|
+
* clearance excludes a running turn, and model operations run during turns (C-API-35). A
|
|
13
|
+
* reading that cannot first render everything received proves nothing, so it fails the wait
|
|
14
|
+
* (C-API-56).
|
|
15
|
+
*/
|
|
16
|
+
export declare function waitUntilClosed(io: Pick<ModelPickerIo, "terminal" | "signal">, spec: ModelPickerSpec, timeoutMs: number): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=close-wait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"close-wait.d.ts","sourceRoot":"","sources":["../../../src/core/models/close-wait.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAYlE;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,QAAQ,CAAC,EAC9C,IAAI,EAAE,eAAe,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A model operation's close wait: the queue slot is released only once the operation's
|
|
3
|
+
* dialog has stayed gone, not on the first frame that lacks it (PRD §5.3, C-API-55).
|
|
4
|
+
*/
|
|
5
|
+
import { delay } from "../delay.js";
|
|
6
|
+
import { elwoodError } from "../errors.js";
|
|
7
|
+
import { writeUnsafe } from "../input/abort.js";
|
|
8
|
+
import { clearReadingGapMs, clearReadings } from "./clearance.js";
|
|
9
|
+
import { ownOperation } from "./rows.js";
|
|
10
|
+
/**
|
|
11
|
+
* Whether the bottom-most region is still the operation's dialog: any stage of it, complete
|
|
12
|
+
* or partly painted. Deliberately weaker than `isOwnCompletePicker`, because it only waits;
|
|
13
|
+
* it never gates a write. Dialog text above a conversation or composer row (a transcript
|
|
14
|
+
* quoting the picker's title) is not the dialog and does not hold the slot (C-API-55).
|
|
15
|
+
*/
|
|
16
|
+
const closing = (spec, text) => spec.activeDialog(text, ownOperation) !== undefined || spec.isCandidate(text);
|
|
17
|
+
/**
|
|
18
|
+
* Resolves once the dialog has not shown across `clearReadings` readings spaced
|
|
19
|
+
* `clearReadingGapMs` apart; any reading that shows it restarts the count. One frame without
|
|
20
|
+
* the picker is not proof it closed: a blank or half-painted repaint lacks it too, and the
|
|
21
|
+
* picker can paint again after it, where a queued Enter released by this operation would
|
|
22
|
+
* apply the highlighted model. Absence, not positive composer clearance, is what is counted:
|
|
23
|
+
* clearance excludes a running turn, and model operations run during turns (C-API-35). A
|
|
24
|
+
* reading that cannot first render everything received proves nothing, so it fails the wait
|
|
25
|
+
* (C-API-56).
|
|
26
|
+
*/
|
|
27
|
+
export async function waitUntilClosed(io, spec, timeoutMs) {
|
|
28
|
+
const deadline = Date.now() + timeoutMs;
|
|
29
|
+
for (let streak = 0;; await delay(clearReadingGapMs)) {
|
|
30
|
+
io.signal?.throwIfAborted();
|
|
31
|
+
// Each reading is of everything received, like each picker key: a repaint still queued
|
|
32
|
+
// for rendering would otherwise leave a stale blank frame to count (C-API-56).
|
|
33
|
+
if (await writeUnsafe(io.terminal, undefined, io.signal)) {
|
|
34
|
+
io.signal?.throwIfAborted();
|
|
35
|
+
throw elwoodError("model_automation_failed", `Could not confirm the ${spec.agent} model picker closed: its received output could not be rendered.`);
|
|
36
|
+
}
|
|
37
|
+
streak = closing(spec, io.terminal.snapshot().text) ? 0 : streak + 1;
|
|
38
|
+
if (streak >= clearReadings)
|
|
39
|
+
return;
|
|
40
|
+
if (Date.now() >= deadline)
|
|
41
|
+
throw elwoodError("model_automation_failed", `Timed out waiting for ${spec.agent} model picker to close.`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=close-wait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"close-wait.js","sourceRoot":"","sources":["../../../src/core/models/close-wait.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,OAAO,GAAG,CAAC,IAAqB,EAAE,IAAY,EAAE,EAAE,CACtD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAEhF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAA8C,EAC9C,IAAqB,EACrB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,KAAK,IAAI,MAAM,GAAG,CAAC,GAAI,MAAM,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtD,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QAC5B,uFAAuF;QACvF,+EAA+E;QAC/E,IAAI,MAAM,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;YAC5B,MAAM,WAAW,CACf,yBAAyB,EACzB,yBAAyB,IAAI,CAAC,KAAK,kEAAkE,CACtG,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACrE,IAAI,MAAM,IAAI,aAAa;YAAE,OAAO;QACpC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YACxB,MAAM,WAAW,CACf,yBAAyB,EACzB,yBAAyB,IAAI,CAAC,KAAK,yBAAyB,CAC7D,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -3,14 +3,29 @@
|
|
|
3
3
|
* the authority of the transaction that opened it. Split from `rows.ts` (which parses the
|
|
4
4
|
* rows themselves) to keep each file within the size cap. Implements C-API-24.
|
|
5
5
|
*/
|
|
6
|
+
import { type ScrollGrammar } from "./row-block.ts";
|
|
6
7
|
/**
|
|
7
|
-
*
|
|
8
|
+
* What one CLI's model dialog looks like beyond the shared block rules. Each adapter owns
|
|
9
|
+
* its own, so one CLI's layout change cannot widen what counts as the other's dialog.
|
|
10
|
+
*/
|
|
11
|
+
export type DialogGrammar = {
|
|
12
|
+
/** The dialog's title. */
|
|
13
|
+
readonly header: RegExp;
|
|
14
|
+
/** The phrase the closing hint row carries (`Esc to cancel`), matched in hint clauses only. */
|
|
15
|
+
readonly footer: RegExp;
|
|
16
|
+
/** A row of the CLI's own that may sit between the rows and the footer. */
|
|
17
|
+
readonly controlRow?: RegExp;
|
|
18
|
+
/** How the CLI windows a list longer than its viewport, if it does. */
|
|
19
|
+
readonly scroll?: ScrollGrammar;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* The row of the last header when it opens the bottom-most native region, else -1.
|
|
8
23
|
* Both CLIs replace the composer with the dialog, so a header with anything foreign at
|
|
9
24
|
* or below it is transcript, composer, or another dialog's content. Elwood must neither
|
|
10
25
|
* cancel such text (Escape would interrupt a running turn, clear staged input, or
|
|
11
26
|
* dismiss a human's prompt) nor hold input on it (C-API-24).
|
|
12
27
|
*/
|
|
13
|
-
export declare function bottomDialogRow(text: string,
|
|
28
|
+
export declare function bottomDialogRow(text: string, grammar: DialogGrammar): number;
|
|
14
29
|
/** A bottom-most native picker shell may hold input before its rows/footer finish. */
|
|
15
|
-
export declare function bottomDialogCandidate(text: string,
|
|
30
|
+
export declare function bottomDialogCandidate(text: string, grammar: DialogGrammar): boolean;
|
|
16
31
|
//# sourceMappingURL=dialog-region.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-region.d.ts","sourceRoot":"","sources":["../../../src/core/models/dialog-region.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"dialog-region.d.ts","sourceRoot":"","sources":["../../../src/core/models/dialog-region.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAmC,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAErF;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC,CAAC;AA4FF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAO5E;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAInF"}
|
|
@@ -3,25 +3,17 @@
|
|
|
3
3
|
* the authority of the transaction that opened it. Split from `rows.ts` (which parses the
|
|
4
4
|
* rows themselves) to keep each file within the size cap. Implements C-API-24.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { caretRow, numberedRow, RowBlock } from "./row-block.js";
|
|
7
7
|
// An agent reply or the composer renders below any header the transcript merely quotes.
|
|
8
8
|
const replyRow = /^\s*[●•⏺]/;
|
|
9
|
-
const caretRow = /^\s*[❯›]/;
|
|
10
|
-
const numberedRow = /^\s*[❯›]?\s*(\d+)[.)]\s/;
|
|
11
9
|
// Both CLIs separate the transcript from the composer or a lower dialog with one of these.
|
|
12
10
|
const blockEnd = /^\s*(?:[─━]{3}.*)?$/;
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
// inside a sentence of the agent's own prose that happens to mention pressing Esc.
|
|
16
|
-
const dialogFooter = /\b(?:esc to cancel|esc to go back)\b/i;
|
|
11
|
+
// The closing hint row is ONLY hints — `key to action` clauses joined by `·` — so the footer
|
|
12
|
+
// phrase cannot be matched inside a sentence of the agent's own prose that mentions Esc.
|
|
17
13
|
const hintClause = /^[^.!?]{0,48}$/;
|
|
18
|
-
// Claude paints a radio-style control row under its rows (`◉ xHigh effort ←/→ to adjust`).
|
|
19
|
-
// It is part of the dialog, so it may sit between the rows and the footer — but it is a
|
|
20
|
-
// marker row, not free prose, which is what keeps this from reopening the mid-list gap.
|
|
21
|
-
const controlRow = /^\s*[◉○◎●]\s*\S/;
|
|
22
14
|
/** A closing hint row: the footer phrase standing on its own row, not buried in prose. */
|
|
23
|
-
function isFooterRow(line) {
|
|
24
|
-
if (!
|
|
15
|
+
function isFooterRow(line, grammar) {
|
|
16
|
+
if (!grammar.footer.test(line))
|
|
25
17
|
return false;
|
|
26
18
|
return line
|
|
27
19
|
.split(/[·•]/)
|
|
@@ -43,14 +35,17 @@ function opensRegion(header) {
|
|
|
43
35
|
* caret, or numbered row — those belong to the transcript, the composer, or another list.
|
|
44
36
|
* Once the rows have STARTED the block is contiguous (real dialogs paint it in one run), so
|
|
45
37
|
* only a blank or rule, the CLI's own control row (`◉ xHigh effort ←/→ to adjust`), or the
|
|
46
|
-
* closing hint row may appear; free prose mid-list means these rows are not one block.
|
|
38
|
+
* closing hint row may appear; free prose mid-list means these rows are not one block. The
|
|
39
|
+
* control row is checked first: Claude's High-effort row (`● High effort …`) wears a bullet.
|
|
47
40
|
*/
|
|
48
|
-
function mayAppearBesideRows(line, rowsStarted) {
|
|
41
|
+
function mayAppearBesideRows(line, rowsStarted, grammar) {
|
|
42
|
+
if (rowsStarted && grammar.controlRow?.test(line) === true)
|
|
43
|
+
return true;
|
|
49
44
|
if (replyRow.test(line) || caretRow.test(line) || numberedRow.test(line))
|
|
50
45
|
return false;
|
|
51
46
|
if (!rowsStarted)
|
|
52
47
|
return true;
|
|
53
|
-
return blockEnd.test(line) ||
|
|
48
|
+
return blockEnd.test(line) || isFooterRow(line, grammar);
|
|
54
49
|
}
|
|
55
50
|
/**
|
|
56
51
|
* Whether `lines` (the header row down to the end of the viewport) hold one COMPLETE
|
|
@@ -64,7 +59,10 @@ function mayAppearBesideRows(line, rowsStarted) {
|
|
|
64
59
|
* contiguous block of picker rows numbered from 1 with at most one cursor. A staged
|
|
65
60
|
* composer line, a permission or approval option, or a second numbered list is on a
|
|
66
61
|
* caret row outside that block, restarts the numbering, follows a blank or rule, or
|
|
67
|
-
* lacks the description column, so none of them can pass for the dialog.
|
|
62
|
+
* lacks the description column, so none of them can pass for the dialog. A windowed
|
|
63
|
+
* list (Claude's, longer than ten rows) is the one block that may start past 1: its first
|
|
64
|
+
* row wears the grammar's `above` marker, a `below` row ends it, and its overflow line
|
|
65
|
+
* (`… +K models`) may stand only directly under its last row.
|
|
68
66
|
*
|
|
69
67
|
* Nothing missing and nothing after: the block renders at least two numbered rows and
|
|
70
68
|
* then the CLI's closing hint row, which TERMINATES it — only blank lines and rules may
|
|
@@ -74,12 +72,11 @@ function mayAppearBesideRows(line, rowsStarted) {
|
|
|
74
72
|
*
|
|
75
73
|
* `lines` always starts at the matched header row, so `header` is never absent.
|
|
76
74
|
*/
|
|
77
|
-
function isNativeRegion(lines, complete
|
|
75
|
+
function isNativeRegion(lines, grammar, complete) {
|
|
78
76
|
const [header, ...body] = lines;
|
|
79
77
|
if (!opensRegion(header))
|
|
80
78
|
return false;
|
|
81
|
-
|
|
82
|
-
let cursors = 0;
|
|
79
|
+
const block = new RowBlock({ complete, scroll: grammar.scroll });
|
|
83
80
|
let footer = false;
|
|
84
81
|
for (const line of body) {
|
|
85
82
|
// Nothing but blank lines and rules may follow the closing hint row: a complete
|
|
@@ -92,42 +89,34 @@ function isNativeRegion(lines, complete = true) {
|
|
|
92
89
|
return false;
|
|
93
90
|
continue;
|
|
94
91
|
}
|
|
95
|
-
|
|
96
|
-
// Anything else — a renumbered second list, a row without the description column —
|
|
97
|
-
// is not this dialog's, so the region is not one native block.
|
|
98
|
-
const candidateRow = !complete && numberedRow.test(line);
|
|
99
|
-
if (!(rowPattern.test(line) || candidateRow) || Number(numberedRow.exec(line)?.[1]) !== next) {
|
|
100
|
-
if (!mayAppearBesideRows(line, next > 1))
|
|
101
|
-
return false;
|
|
102
|
-
footer = isFooterRow(line);
|
|
92
|
+
if (block.accept(line))
|
|
103
93
|
continue;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
cursors += 1;
|
|
94
|
+
if (!mayAppearBesideRows(line, block.rowCount > 0, grammar))
|
|
95
|
+
return false;
|
|
96
|
+
footer = isFooterRow(line, grammar);
|
|
108
97
|
}
|
|
109
|
-
return
|
|
98
|
+
return block.cursorCount <= 1 && (!complete || (footer && block.rowCount >= minimumRows));
|
|
110
99
|
}
|
|
111
100
|
/**
|
|
112
|
-
* The row of the last
|
|
101
|
+
* The row of the last header when it opens the bottom-most native region, else -1.
|
|
113
102
|
* Both CLIs replace the composer with the dialog, so a header with anything foreign at
|
|
114
103
|
* or below it is transcript, composer, or another dialog's content. Elwood must neither
|
|
115
104
|
* cancel such text (Escape would interrupt a running turn, clear staged input, or
|
|
116
105
|
* dismiss a human's prompt) nor hold input on it (C-API-24).
|
|
117
106
|
*/
|
|
118
|
-
export function bottomDialogRow(text,
|
|
107
|
+
export function bottomDialogRow(text, grammar) {
|
|
119
108
|
const lines = text.split("\n");
|
|
120
|
-
const start = lines.findLastIndex((line) => header.test(line));
|
|
109
|
+
const start = lines.findLastIndex((line) => grammar.header.test(line));
|
|
121
110
|
// No header, no dialog. Scanning from row 0 instead would ask whether the whole viewport
|
|
122
111
|
// happens to look native, which is a different and much weaker question.
|
|
123
112
|
if (start < 0)
|
|
124
113
|
return -1;
|
|
125
|
-
return isNativeRegion(lines.slice(start)) ? start : -1;
|
|
114
|
+
return isNativeRegion(lines.slice(start), grammar, true) ? start : -1;
|
|
126
115
|
}
|
|
127
116
|
/** A bottom-most native picker shell may hold input before its rows/footer finish. */
|
|
128
|
-
export function bottomDialogCandidate(text,
|
|
117
|
+
export function bottomDialogCandidate(text, grammar) {
|
|
129
118
|
const lines = text.split("\n");
|
|
130
|
-
const start = lines.findLastIndex((line) => header.test(line));
|
|
131
|
-
return start >= 0 && isNativeRegion(lines.slice(start), false);
|
|
119
|
+
const start = lines.findLastIndex((line) => grammar.header.test(line));
|
|
120
|
+
return start >= 0 && isNativeRegion(lines.slice(start), grammar, false);
|
|
132
121
|
}
|
|
133
122
|
//# sourceMappingURL=dialog-region.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-region.js","sourceRoot":"","sources":["../../../src/core/models/dialog-region.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dialog-region.js","sourceRoot":"","sources":["../../../src/core/models/dialog-region.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAsB,MAAM,gBAAgB,CAAC;AAiBrF,wFAAwF;AACxF,MAAM,QAAQ,GAAG,WAAW,CAAC;AAC7B,2FAA2F;AAC3F,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AACvC,6FAA6F;AAC7F,yFAAyF;AACzF,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAEpC,0FAA0F;AAC1F,SAAS,WAAW,CAAC,IAAY,EAAE,OAAsB;IACvD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,IAAI;SACR,KAAK,CAAC,MAAM,CAAC;SACb,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnF,CAAC;AACD,2FAA2F;AAC3F,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;GAKG;AACH,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,WAAoB,EAAE,OAAsB;IACrF,IAAI,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxE,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,cAAc,CAAC,KAAwB,EAAE,OAAsB,EAAE,QAAiB;IACzF,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,KAA8B,CAAC;IACzD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,gFAAgF;QAChF,oFAAoF;QACpF,iFAAiF;QACjF,iFAAiF;QACjF,gDAAgD;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACvC,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,SAAS;QACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1E,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAAsB;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,yFAAyF;IACzF,yEAAyE;IACzE,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACzB,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,OAAsB;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,OAAO,KAAK,IAAI,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/** Revalidate the active picker immediately before automation writes (PRD §5.3, C-API-23/24/56). */
|
|
1
2
|
import type { ModelPickerIo } from "./picker.ts";
|
|
2
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Writes one picker key, decided on everything RECEIVED rather than the last rendered frame:
|
|
5
|
+
* a permission or hook prompt can already be in the PTY buffer while the snapshot still shows
|
|
6
|
+
* the picker, and a key chosen from that stale frame would change the prompt's selection.
|
|
7
|
+
* `writeUnsafe` first renders and observes all received output; when the screen cannot be
|
|
8
|
+
* vouched for, the key is withheld and the operation fails. Otherwise the dialog is
|
|
9
|
+
* revalidated on that observed frame and the key is written before further output arrives.
|
|
10
|
+
*/
|
|
11
|
+
export declare function sendPickerInput(io: Pick<ModelPickerIo, "terminal" | "blocked" | "signal">, input: string, expected: (text: string) => boolean, ownsBlockingDialog?: boolean): Promise<void>;
|
|
3
12
|
//# sourceMappingURL=input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/core/models/input.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/core/models/input.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAIpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC,EAC1D,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACnC,kBAAkB,UAAQ,GACzB,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
/** Revalidate the active picker immediately before automation writes (PRD §5.3, C-API-23/24). */
|
|
1
|
+
/** Revalidate the active picker immediately before automation writes (PRD §5.3, C-API-23/24/56). */
|
|
2
2
|
import { elwoodError } from "../errors.js";
|
|
3
|
-
|
|
3
|
+
import { writeUnsafe } from "../input/abort.js";
|
|
4
|
+
/**
|
|
5
|
+
* Writes one picker key, decided on everything RECEIVED rather than the last rendered frame:
|
|
6
|
+
* a permission or hook prompt can already be in the PTY buffer while the snapshot still shows
|
|
7
|
+
* the picker, and a key chosen from that stale frame would change the prompt's selection.
|
|
8
|
+
* `writeUnsafe` first renders and observes all received output; when the screen cannot be
|
|
9
|
+
* vouched for, the key is withheld and the operation fails. Otherwise the dialog is
|
|
10
|
+
* revalidated on that observed frame and the key is written before further output arrives.
|
|
11
|
+
*/
|
|
12
|
+
export async function sendPickerInput(io, input, expected, ownsBlockingDialog = false) {
|
|
13
|
+
if (await writeUnsafe(io.terminal, undefined, io.signal)) {
|
|
14
|
+
io.signal?.throwIfAborted();
|
|
15
|
+
throw elwoodError("model_automation_failed", "The model picker screen could not be verified before input could be sent.");
|
|
16
|
+
}
|
|
4
17
|
if ((!ownsBlockingDialog && io.blocked?.()) || !expected(io.terminal.snapshot().text)) {
|
|
5
18
|
throw elwoodError("model_automation_failed", "The model picker was replaced before input could be sent.");
|
|
6
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/core/models/input.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/core/models/input.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAEpG,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAA0D,EAC1D,KAAa,EACb,QAAmC,EACnC,kBAAkB,GAAG,KAAK;IAE1B,IAAI,MAAM,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QAC5B,MAAM,WAAW,CACf,yBAAyB,EACzB,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtF,MAAM,WAAW,CACf,yBAAyB,EACzB,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function
|
|
2
|
-
export declare function
|
|
1
|
+
export declare function callerInputIntervention(): Error;
|
|
2
|
+
export declare function isCallerInputIntervention(reason: unknown): boolean;
|
|
3
3
|
//# sourceMappingURL=intervention.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intervention.d.ts","sourceRoot":"","sources":["../../../src/core/models/intervention.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"intervention.d.ts","sourceRoot":"","sources":["../../../src/core/models/intervention.ts"],"names":[],"mappings":"AAQA,wBAAgB,uBAAuB,IAAI,KAAK,CAO/C;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAElE"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Private provenance for automation that raw caller input revoked: a picker operation
|
|
3
|
+
* (C-API-55, C-CODEX-14), staged turn input, composer cleanup, or a native question answer.
|
|
4
|
+
*/
|
|
2
5
|
import { elwoodError } from "../errors.js";
|
|
3
6
|
const interventions = new WeakSet();
|
|
4
|
-
export function
|
|
7
|
+
export function callerInputIntervention() {
|
|
5
8
|
const error = elwoodError("model_automation_failed", "Raw input replaced the model picker operation.");
|
|
6
9
|
interventions.add(error);
|
|
7
10
|
return error;
|
|
8
11
|
}
|
|
9
|
-
export function
|
|
12
|
+
export function isCallerInputIntervention(reason) {
|
|
10
13
|
return reason instanceof Error && interventions.has(reason);
|
|
11
14
|
}
|
|
12
15
|
//# sourceMappingURL=intervention.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intervention.js","sourceRoot":"","sources":["../../../src/core/models/intervention.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"intervention.js","sourceRoot":"","sources":["../../../src/core/models/intervention.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,aAAa,GAAG,IAAI,OAAO,EAAS,CAAC;AAE3C,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAAG,WAAW,CACvB,yBAAyB,EACzB,gDAAgD,CACjD,CAAC;IACF,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAe;IACvD,OAAO,MAAM,YAAY,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one gate for every picker key and every frame the window walk reads.
|
|
3
|
+
* Implements PRD §5.3 and C-API-24.
|
|
4
|
+
*/
|
|
5
|
+
import type { ModelPickerSpec } from "./picker.ts";
|
|
6
|
+
/**
|
|
7
|
+
* True only while THIS operation's own COMPLETE picker is the bottom-most region: never its
|
|
8
|
+
* `painting` shell and never a `follow-up` stage. It gates every shared navigation,
|
|
9
|
+
* selection, and cancelling key, each adapter's selecting key, and every frame the window
|
|
10
|
+
* walk reads; a follow-up is answered only by the adapter's `apply`, under that stage's own
|
|
11
|
+
* guard (Claude's cache warning, Codex's reasoning level).
|
|
12
|
+
*
|
|
13
|
+
* Elwood is inside the transaction that wrote `/model`, so these reads carry its authority
|
|
14
|
+
* (`ownOperation`). A header match alone is untrusted: a transcript or the agent's own output
|
|
15
|
+
* can print `Select model`, so navigating or Escaping on it could send keys into a running
|
|
16
|
+
* turn, the real composer, or another prompt (C-API-24). The header gates only the `/model`
|
|
17
|
+
* open wait (`openAndParse`); the cursor-settle wait reads a parsed row, and the close wait
|
|
18
|
+
* (`waitUntilClosed`) reads only the bottom-most region. None of them writes.
|
|
19
|
+
*/
|
|
20
|
+
export declare const isOwnCompletePicker: (spec: Pick<ModelPickerSpec, "activeDialog">) => (text: string) => boolean;
|
|
21
|
+
//# sourceMappingURL=own-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"own-picker.d.ts","sourceRoot":"","sources":["../../../src/core/models/own-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,GAC7B,MAAM,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,MAAM,MAAM,MAAM,YACV,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one gate for every picker key and every frame the window walk reads.
|
|
3
|
+
* Implements PRD §5.3 and C-API-24.
|
|
4
|
+
*/
|
|
5
|
+
import { ownOperation } from "./rows.js";
|
|
6
|
+
/**
|
|
7
|
+
* True only while THIS operation's own COMPLETE picker is the bottom-most region: never its
|
|
8
|
+
* `painting` shell and never a `follow-up` stage. It gates every shared navigation,
|
|
9
|
+
* selection, and cancelling key, each adapter's selecting key, and every frame the window
|
|
10
|
+
* walk reads; a follow-up is answered only by the adapter's `apply`, under that stage's own
|
|
11
|
+
* guard (Claude's cache warning, Codex's reasoning level).
|
|
12
|
+
*
|
|
13
|
+
* Elwood is inside the transaction that wrote `/model`, so these reads carry its authority
|
|
14
|
+
* (`ownOperation`). A header match alone is untrusted: a transcript or the agent's own output
|
|
15
|
+
* can print `Select model`, so navigating or Escaping on it could send keys into a running
|
|
16
|
+
* turn, the real composer, or another prompt (C-API-24). The header gates only the `/model`
|
|
17
|
+
* open wait (`openAndParse`); the cursor-settle wait reads a parsed row, and the close wait
|
|
18
|
+
* (`waitUntilClosed`) reads only the bottom-most region. None of them writes.
|
|
19
|
+
*/
|
|
20
|
+
export const isOwnCompletePicker = (spec) => (text) => spec.activeDialog(text, ownOperation) === "picker";
|
|
21
|
+
//# sourceMappingURL=own-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"own-picker.js","sourceRoot":"","sources":["../../../src/core/models/own-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,CAAC,IAA2C,EAAE,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE,CAChE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,QAAQ,CAAC"}
|
|
@@ -2,24 +2,39 @@
|
|
|
2
2
|
* Shared /model picker automation for adapter sessions.
|
|
3
3
|
* Implements PRD §5.3, §5.7, C-API-23, and C-API-24.
|
|
4
4
|
*/
|
|
5
|
+
import type { ElwoodAgentKind } from "../activity/index.ts";
|
|
6
|
+
import type { ObservedTerminal } from "../input/abort.ts";
|
|
5
7
|
import type { AgentModelOption, ModelDialogAuthority, ModelDialogStage, ParsedModelPicker } from "./rows.ts";
|
|
6
|
-
|
|
8
|
+
export { isOwnCompletePicker } from "./own-picker.ts";
|
|
7
9
|
export declare function pickerTimeout(options?: {
|
|
8
10
|
readonly timeoutMs?: number;
|
|
9
11
|
}): number;
|
|
10
12
|
export type ModelPickerIo = {
|
|
11
|
-
|
|
13
|
+
/** Every key is written behind its received-output barrier (C-API-56). */
|
|
14
|
+
readonly terminal: ObservedTerminal;
|
|
12
15
|
readonly blocked?: () => boolean;
|
|
13
16
|
readonly signal?: AbortSignal;
|
|
14
17
|
readonly submit: (command: string, signal: AbortSignal) => Promise<void>;
|
|
15
18
|
};
|
|
16
19
|
export type ModelPickerSpec = {
|
|
17
|
-
readonly agent:
|
|
20
|
+
readonly agent: ElwoodAgentKind;
|
|
18
21
|
/** A native model-dialog shell can hold input before its rows finish. */
|
|
19
22
|
readonly isCandidate: (text: string) => boolean;
|
|
20
23
|
/** Positive native composer evidence for releasing a foreign-dialog hold. */
|
|
21
24
|
readonly isClear: (text: string) => boolean;
|
|
22
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Only that the picker's title is on screen: a transcript can print it, and a picker
|
|
27
|
+
* still painting shows it over stale rows. It gates the `/model` open wait and may hold
|
|
28
|
+
* input; it never ends a close wait (which reads only the bottom-most region) and never
|
|
29
|
+
* authorizes a write.
|
|
30
|
+
*/
|
|
31
|
+
readonly hasPickerHeader: (text: string) => boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Positive evidence that the bottom-most dialog is the caller's own, which replaced
|
|
34
|
+
* ours: Claude's `PreModelSwitch` hook confirmation. Elwood neither answers it nor keeps
|
|
35
|
+
* it as a survivor; it is left for the caller (PRD §5.3).
|
|
36
|
+
*/
|
|
37
|
+
readonly isCallerDialog: (text: string) => boolean;
|
|
23
38
|
/**
|
|
24
39
|
* The live, bottom-most model dialog: the only one Elwood may cancel or hold input on.
|
|
25
40
|
* `authority` is REQUIRED and carries proof Elwood opened this dialog (see
|
|
@@ -29,8 +44,23 @@ export type ModelPickerSpec = {
|
|
|
29
44
|
*/
|
|
30
45
|
readonly activeDialog: (text: string, authority: ModelDialogAuthority) => ModelDialogStage | undefined;
|
|
31
46
|
readonly parse: (text: string) => ParsedModelPicker;
|
|
47
|
+
/**
|
|
48
|
+
* Completes listed rows from state the picker does not render, inside the operation's
|
|
49
|
+
* queue slot and under its deadline/termination `signal`. Codex reads its configured
|
|
50
|
+
* default here (PRD §5.3).
|
|
51
|
+
*/
|
|
52
|
+
readonly withDefaults?: (options: readonly AgentModelOption[], signal: AbortSignal) => Promise<readonly AgentModelOption[]>;
|
|
32
53
|
readonly apply: (io: ModelPickerIo, timeoutMs: number) => Promise<void>;
|
|
33
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Every row the picker lists, rows outside its window included. Cancels with Escape after the
|
|
57
|
+
* walk, so neither the model nor its effort changes, and returns once the picker is closed.
|
|
58
|
+
*/
|
|
34
59
|
export declare function listPickerModels(io: ModelPickerIo, spec: ModelPickerSpec, timeoutMs: number): Promise<readonly AgentModelOption[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Selects `id`, walking a scrolling window only until that row is rendered, then moving to it
|
|
62
|
+
* and applying it with the adapter's own `apply`. An unknown id cancels, and the rejection
|
|
63
|
+
* lists every row the walk saw.
|
|
64
|
+
*/
|
|
35
65
|
export declare function setPickerModel(io: ModelPickerIo, spec: ModelPickerSpec, id: string, timeoutMs: number): Promise<void>;
|
|
36
66
|
//# sourceMappingURL=picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../src/core/models/picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../src/core/models/picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE/E;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,EAAE,CACrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,oBAAoB,KAC5B,gBAAgB,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CACtB,OAAO,EAAE,SAAS,gBAAgB,EAAE,EACpC,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE,CAAC;AAKF;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,eAAe,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAMtC;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|