@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,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"}
|
|
@@ -4,77 +4,83 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { delay } from "../delay.js";
|
|
6
6
|
import { elwoodError } from "../errors.js";
|
|
7
|
+
import { arrowDown, arrowUp } from "../input/constants.js";
|
|
8
|
+
import { waitUntilClosed } from "./close-wait.js";
|
|
7
9
|
import { sendPickerInput } from "./input.js";
|
|
8
|
-
import {
|
|
10
|
+
import { isOwnCompletePicker } from "./own-picker.js";
|
|
11
|
+
import { defaultModelTimeoutMs, openCommandScreen, waitForScreen } from "./tui-screen.js";
|
|
12
|
+
import { cursorOption, revealPickerRows } from "./window.js";
|
|
13
|
+
export { isOwnCompletePicker } from "./own-picker.js";
|
|
9
14
|
export function pickerTimeout(options) {
|
|
10
15
|
return options?.timeoutMs ?? defaultModelTimeoutMs;
|
|
11
16
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Elwood is inside the transaction that wrote `/model`, so these reads carry its authority.
|
|
14
|
-
* Every wait and write below is gated on `ours(spec)` rather than the raw `isOpen` header:
|
|
15
|
-
* a header match alone is untrusted candidate evidence — a transcript or the agent's own
|
|
16
|
-
* output can print `Select model` — so navigating or Escaping on it could send keys into a
|
|
17
|
-
* running turn, the real composer, or another prompt (C-API-24).
|
|
18
|
-
*/
|
|
19
|
-
const opened = { opened: true };
|
|
20
|
-
/** True only while THIS operation's own dialog is the bottom-most region of the screen. */
|
|
21
|
-
const ours = (spec) => (text) => spec.activeDialog(text, opened) !== undefined;
|
|
22
|
-
/**
|
|
23
|
-
* The guard for a CANCELLING Escape, which is deliberately weaker than `ours`.
|
|
24
|
-
*
|
|
25
|
-
* Navigation and selection must land on a fully recognized dialog, because an arrow or
|
|
26
|
-
* Enter on the wrong screen changes something. Escape only closes, and this operation
|
|
27
|
-
* opened the screen that is up: a picker whose rows never parsed is still OUR picker, and
|
|
28
|
-
* abandoning it because the grammar cannot describe it would leave it open for the next
|
|
29
|
-
* queued write. So the header is enough here, and only here.
|
|
30
|
-
*/
|
|
31
|
-
const oursOrOpen = (spec) => (text) => ours(spec)(text) || spec.isOpen(text);
|
|
32
17
|
const escapeKey = "\u001b";
|
|
33
|
-
const arrowDown = "\u001b[B";
|
|
34
|
-
const arrowUp = "\u001b[A";
|
|
35
18
|
const arrowStepMs = 80;
|
|
19
|
+
/**
|
|
20
|
+
* Every row the picker lists, rows outside its window included. Cancels with Escape after the
|
|
21
|
+
* walk, so neither the model nor its effort changes, and returns once the picker is closed.
|
|
22
|
+
*/
|
|
36
23
|
export async function listPickerModels(io, spec, timeoutMs) {
|
|
37
|
-
const
|
|
38
|
-
await
|
|
39
|
-
await
|
|
40
|
-
|
|
24
|
+
const opening = await openAndParse(io, spec, timeoutMs);
|
|
25
|
+
const { options } = await revealPickerRows(io, spec, opening, { timeoutMs });
|
|
26
|
+
await sendPickerInput(io, escapeKey, isOwnCompletePicker(spec));
|
|
27
|
+
await waitUntilClosed(io, spec, timeoutMs);
|
|
28
|
+
return options;
|
|
41
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Selects `id`, walking a scrolling window only until that row is rendered, then moving to it
|
|
32
|
+
* and applying it with the adapter's own `apply`. An unknown id cancels, and the rejection
|
|
33
|
+
* lists every row the walk saw.
|
|
34
|
+
*/
|
|
42
35
|
export async function setPickerModel(io, spec, id, timeoutMs) {
|
|
43
|
-
const
|
|
36
|
+
const opening = await openAndParse(io, spec, timeoutMs);
|
|
44
37
|
const wanted = id.toLowerCase();
|
|
45
38
|
// Row ids are already lower-cased labels (`rows.ts`), so matching the id
|
|
46
39
|
// alone covers a caller that passes the display label in any case.
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
const isTarget = (option) => option.id === wanted;
|
|
41
|
+
const ownCompletePicker = isOwnCompletePicker(spec);
|
|
42
|
+
// A row outside a scrolling window is as selectable as a rendered one: walk only until it
|
|
43
|
+
// is rendered. An unknown id walks the whole list, so the error names every row.
|
|
44
|
+
const walk = { timeoutMs, found: isTarget };
|
|
45
|
+
const { frame: parsed, options } = await revealPickerRows(io, spec, opening, walk);
|
|
46
|
+
const targetOptionIndex = parsed.options.findIndex(isTarget);
|
|
47
|
+
if (targetOptionIndex === -1 || parsed.cursorOptionIndex === -1) {
|
|
48
|
+
await sendPickerInput(io, escapeKey, ownCompletePicker);
|
|
49
|
+
const reason = targetOptionIndex === -1
|
|
50
|
+
? `Unknown model id "${id}".`
|
|
51
|
+
: "Could not locate the picker cursor.";
|
|
51
52
|
throw elwoodError("model_automation_failed", reason, {
|
|
52
|
-
available:
|
|
53
|
+
available: options.map((option) => option.id),
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
|
-
const delta =
|
|
56
|
+
const delta = targetOptionIndex - parsed.cursorOptionIndex;
|
|
56
57
|
const key = delta > 0 ? arrowDown : arrowUp;
|
|
57
58
|
for (let step = 0; step < Math.abs(delta); step += 1) {
|
|
58
|
-
await sendPickerInput(io, key,
|
|
59
|
+
await sendPickerInput(io, key, ownCompletePicker);
|
|
59
60
|
await delay(arrowStepMs);
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
+
// Settle on the cursor row's identity, not its index: a scrolled Claude window shifts
|
|
63
|
+
// which rows are rendered as the cursor moves, so the target's index changes with it.
|
|
64
|
+
await waitForScreen(io.terminal, (text) => cursorOption(spec.parse(text))?.id === wanted, timeoutMs, `${spec.agent} picker cursor on "${id}"`, io.signal);
|
|
62
65
|
await spec.apply(io, timeoutMs);
|
|
66
|
+
await waitUntilClosed(io, spec, timeoutMs);
|
|
63
67
|
}
|
|
64
68
|
async function openAndParse(io, spec, timeoutMs) {
|
|
65
|
-
|
|
69
|
+
await openCommandScreen({
|
|
66
70
|
terminal: io.terminal,
|
|
67
71
|
...(io.signal === undefined ? {} : { signal: io.signal }),
|
|
68
72
|
submit: (signal) => io.submit("/model", signal),
|
|
69
|
-
isOpen: spec.
|
|
73
|
+
isOpen: spec.hasPickerHeader,
|
|
70
74
|
timeoutMs,
|
|
71
75
|
label: `${spec.agent} model picker`,
|
|
72
76
|
});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
// The header paints before the rows finish: Claude draws the picker over its slash-command
|
|
78
|
+
// menu, so a frame that merely shows `Select model` can hold three rows above stale
|
|
79
|
+
// commands. Parse only the complete dialog the grammar recognizes as ours, the same guard
|
|
80
|
+
// every key write passes, or a partial list is returned as the catalog. A picker that
|
|
81
|
+
// never completes is not written to here: the transaction's failure cleanup Escapes it
|
|
82
|
+
// once it is recognizable, and a candidate that never is keeps queued input held.
|
|
83
|
+
const text = await waitForScreen(io.terminal, isOwnCompletePicker(spec), timeoutMs, `${spec.agent} model picker rows`, io.signal);
|
|
84
|
+
return spec.parse(text);
|
|
79
85
|
}
|
|
80
86
|
//# sourceMappingURL=picker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../../../src/core/models/picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../../../src/core/models/picker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one contiguous block of option rows inside a native model dialog, fed line by line.
|
|
3
|
+
* Split from `dialog-region.ts`, which decides what may surround the block. Implements
|
|
4
|
+
* C-API-24.
|
|
5
|
+
*/
|
|
6
|
+
export declare const caretRow: RegExp;
|
|
7
|
+
export declare const numberedRow: RegExp;
|
|
8
|
+
/**
|
|
9
|
+
* How a CLI windows a list longer than its viewport, for the adapter that does. `above`
|
|
10
|
+
* and `below` each match a row's start through the marker it wears in the cursor column
|
|
11
|
+
* while rows are hidden above the window (its first visible row) or below it (its last);
|
|
12
|
+
* `overflow` is the line that may stand directly under that last row while any are hidden,
|
|
13
|
+
* which wears the `below` marker or, when the cursor is on it, the cursor in its place. The
|
|
14
|
+
* overflow line's `hidden` named group captures how many rows are hidden.
|
|
15
|
+
*/
|
|
16
|
+
export type ScrollGrammar = {
|
|
17
|
+
readonly above: RegExp;
|
|
18
|
+
readonly below: RegExp;
|
|
19
|
+
readonly overflow: RegExp;
|
|
20
|
+
};
|
|
21
|
+
/** `line` with a leading scroll marker blanked, so it reads as an ordinary option row. */
|
|
22
|
+
export declare function unmarkedRow(line: string, scroll: ScrollGrammar | undefined): string;
|
|
23
|
+
/**
|
|
24
|
+
* Whether the overflow line may stand directly under row `line`: only a window's last row,
|
|
25
|
+
* which wears the `below` marker or, when the cursor is on it, the cursor in its place. The
|
|
26
|
+
* region grammar and the overflow-count parser (`rows.ts`) share this one rule.
|
|
27
|
+
*/
|
|
28
|
+
export declare function overflowMayFollowRow(line: string, scroll: ScrollGrammar | undefined): boolean;
|
|
29
|
+
export declare class RowBlock {
|
|
30
|
+
rowCount: number;
|
|
31
|
+
cursorCount: number;
|
|
32
|
+
private nextRowNumber;
|
|
33
|
+
/**
|
|
34
|
+
* A `below` row, or the overflow line under it, ended the window: no later row belongs to
|
|
35
|
+
* it. A window at the bottom of the list has neither; the dialog's footer ends it.
|
|
36
|
+
*/
|
|
37
|
+
private windowEnded;
|
|
38
|
+
/**
|
|
39
|
+
* The last line accepted was a row wearing the `below` marker or the cursor, which takes
|
|
40
|
+
* the marker's place: the only line the overflow line may stand under.
|
|
41
|
+
*/
|
|
42
|
+
private overflowMayFollow;
|
|
43
|
+
private readonly complete;
|
|
44
|
+
private readonly scroll;
|
|
45
|
+
constructor(options: {
|
|
46
|
+
readonly complete: boolean;
|
|
47
|
+
readonly scroll: ScrollGrammar | undefined;
|
|
48
|
+
});
|
|
49
|
+
/**
|
|
50
|
+
* Whether `line` extends the block: its next row or, on a windowed list, the overflow line
|
|
51
|
+
* directly under its last row, which is `below`-marked or the cursor row. A COMPLETE dialog's rows are full picker rows
|
|
52
|
+
* (`1. Label Description`); while a candidate is still painting, a numbered row whose
|
|
53
|
+
* description has not arrived yet counts too, so the shell keeps holding input. Anything
|
|
54
|
+
* else — a renumbered second list, a row after the window ended, a scroll marker the
|
|
55
|
+
* CLI's grammar does not define — is not this dialog's.
|
|
56
|
+
*/
|
|
57
|
+
accept(line: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Whether `row` (`line` with any scroll marker blanked) is the block's next row. Only the
|
|
60
|
+
* FIRST row may be numbered past 1, and only under an `above` marker: a window scrolled
|
|
61
|
+
* down hides the rows above it, but an unmarked list that starts at 3 is someone else's,
|
|
62
|
+
* and an `above` marker below the first row is not a window.
|
|
63
|
+
*/
|
|
64
|
+
private isRow;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=row-block.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-block.d.ts","sourceRoot":"","sources":["../../../src/core/models/row-block.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,QAAQ,QAAa,CAAC;AACnC,eAAO,MAAM,WAAW,QAA4B,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAGnF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAE7F;AAED,qBAAa,QAAQ;IACnB,QAAQ,SAAK;IACb,WAAW,SAAK;IAChB,OAAO,CAAC,aAAa,CAAK;IAC1B;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAS;IAC5B;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBACvC,OAAO,EAAE;QACnB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;KAC5C;IAKD;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAiB7B;;;;;OAKG;IACH,OAAO,CAAC,KAAK;CASd"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one contiguous block of option rows inside a native model dialog, fed line by line.
|
|
3
|
+
* Split from `dialog-region.ts`, which decides what may surround the block. Implements
|
|
4
|
+
* C-API-24.
|
|
5
|
+
*/
|
|
6
|
+
import { rowPattern } from "./rows.js";
|
|
7
|
+
export const caretRow = /^\s*[❯›]/;
|
|
8
|
+
export const numberedRow = /^\s*[❯›]?\s*(\d+)[.)]\s/;
|
|
9
|
+
/** `line` with a leading scroll marker blanked, so it reads as an ordinary option row. */
|
|
10
|
+
export function unmarkedRow(line, scroll) {
|
|
11
|
+
const marker = [scroll?.above, scroll?.below].find((pattern) => pattern?.test(line));
|
|
12
|
+
return marker === undefined ? line : line.replace(marker, (start) => " ".repeat(start.length));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Whether the overflow line may stand directly under row `line`: only a window's last row,
|
|
16
|
+
* which wears the `below` marker or, when the cursor is on it, the cursor in its place. The
|
|
17
|
+
* region grammar and the overflow-count parser (`rows.ts`) share this one rule.
|
|
18
|
+
*/
|
|
19
|
+
export function overflowMayFollowRow(line, scroll) {
|
|
20
|
+
return scroll?.below.test(line) === true || caretRow.test(unmarkedRow(line, scroll));
|
|
21
|
+
}
|
|
22
|
+
export class RowBlock {
|
|
23
|
+
rowCount = 0;
|
|
24
|
+
cursorCount = 0;
|
|
25
|
+
nextRowNumber = 1;
|
|
26
|
+
/**
|
|
27
|
+
* A `below` row, or the overflow line under it, ended the window: no later row belongs to
|
|
28
|
+
* it. A window at the bottom of the list has neither; the dialog's footer ends it.
|
|
29
|
+
*/
|
|
30
|
+
windowEnded = false;
|
|
31
|
+
/**
|
|
32
|
+
* The last line accepted was a row wearing the `below` marker or the cursor, which takes
|
|
33
|
+
* the marker's place: the only line the overflow line may stand under.
|
|
34
|
+
*/
|
|
35
|
+
overflowMayFollow = false;
|
|
36
|
+
complete;
|
|
37
|
+
scroll;
|
|
38
|
+
constructor(options) {
|
|
39
|
+
this.complete = options.complete;
|
|
40
|
+
this.scroll = options.scroll;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Whether `line` extends the block: its next row or, on a windowed list, the overflow line
|
|
44
|
+
* directly under its last row, which is `below`-marked or the cursor row. A COMPLETE dialog's rows are full picker rows
|
|
45
|
+
* (`1. Label Description`); while a candidate is still painting, a numbered row whose
|
|
46
|
+
* description has not arrived yet counts too, so the shell keeps holding input. Anything
|
|
47
|
+
* else — a renumbered second list, a row after the window ended, a scroll marker the
|
|
48
|
+
* CLI's grammar does not define — is not this dialog's.
|
|
49
|
+
*/
|
|
50
|
+
accept(line) {
|
|
51
|
+
const mayBeOverflow = this.overflowMayFollow;
|
|
52
|
+
this.overflowMayFollow = false;
|
|
53
|
+
if (mayBeOverflow && this.scroll?.overflow.test(line) === true) {
|
|
54
|
+
this.windowEnded = true;
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
const row = unmarkedRow(line, this.scroll);
|
|
58
|
+
if (this.windowEnded || !this.isRow(line, row))
|
|
59
|
+
return false;
|
|
60
|
+
this.rowCount += 1;
|
|
61
|
+
this.nextRowNumber = Number(numberedRow.exec(row)?.[1]) + 1;
|
|
62
|
+
this.windowEnded = this.scroll?.below.test(line) === true;
|
|
63
|
+
if (caretRow.test(row))
|
|
64
|
+
this.cursorCount += 1;
|
|
65
|
+
this.overflowMayFollow = overflowMayFollowRow(line, this.scroll);
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Whether `row` (`line` with any scroll marker blanked) is the block's next row. Only the
|
|
70
|
+
* FIRST row may be numbered past 1, and only under an `above` marker: a window scrolled
|
|
71
|
+
* down hides the rows above it, but an unmarked list that starts at 3 is someone else's,
|
|
72
|
+
* and an `above` marker below the first row is not a window.
|
|
73
|
+
*/
|
|
74
|
+
isRow(line, row) {
|
|
75
|
+
if (!(rowPattern.test(row) || (!this.complete && numberedRow.test(row))))
|
|
76
|
+
return false;
|
|
77
|
+
const number = Number(numberedRow.exec(row)?.[1]);
|
|
78
|
+
// A number that rounds is not the row the CLI drew, and rows that round together would
|
|
79
|
+
// pass for consecutive ones.
|
|
80
|
+
if (!Number.isSafeInteger(number))
|
|
81
|
+
return false;
|
|
82
|
+
if (this.scroll?.above.test(line) === true)
|
|
83
|
+
return this.rowCount === 0 && number > 1;
|
|
84
|
+
return number === this.nextRowNumber;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=row-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-block.js","sourceRoot":"","sources":["../../../src/core/models/row-block.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* model dialog only as the bottom-most native region of the viewport.
|
|
4
4
|
* Implements PRD §5.3 AgentModelOption, C-API-23, and C-API-24.
|
|
5
5
|
*/
|
|
6
|
+
import { type ScrollGrammar } from "./row-block.ts";
|
|
6
7
|
export type AgentModelOption = {
|
|
7
8
|
readonly id: string;
|
|
8
9
|
readonly label: string;
|
|
@@ -11,16 +12,44 @@ export type AgentModelOption = {
|
|
|
11
12
|
readonly isDefault: boolean;
|
|
12
13
|
readonly raw: string;
|
|
13
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* One rendered option row. `absoluteRowNumber` is the row's 1-based position in the WHOLE
|
|
17
|
+
* list, as the CLI numbers it: a scrolled window keeps it, so `↑ 3.` is the third model even
|
|
18
|
+
* as the first row on screen.
|
|
19
|
+
*/
|
|
20
|
+
export type PickerRow = {
|
|
21
|
+
readonly absoluteRowNumber: number;
|
|
22
|
+
readonly option: AgentModelOption;
|
|
23
|
+
};
|
|
14
24
|
export type ParsedModelPicker = {
|
|
25
|
+
readonly rows: readonly PickerRow[];
|
|
26
|
+
/** Each row's option, in the same order as `rows`. */
|
|
15
27
|
readonly options: readonly AgentModelOption[];
|
|
16
|
-
|
|
28
|
+
/** Index into `rows` and `options` of the highlighted row; -1 while none is painted. */
|
|
29
|
+
readonly cursorOptionIndex: number;
|
|
30
|
+
/**
|
|
31
|
+
* How many rows the window hides below its last rendered row: 0 when the window reaches
|
|
32
|
+
* the end of the list, the overflow line's count when one is drawn, and undefined when
|
|
33
|
+
* the window marks rows hidden below without a positive count, so the length is unknown.
|
|
34
|
+
*/
|
|
35
|
+
readonly hiddenRowCountBelow: number | undefined;
|
|
17
36
|
};
|
|
18
37
|
export declare const claudeModelPickerHeader: RegExp;
|
|
19
38
|
export declare const codexModelPickerHeader: RegExp;
|
|
39
|
+
/** `1. Label Description`, capturing the cursor glyph, absolute row number, label and description. */
|
|
20
40
|
export declare const rowPattern: RegExp;
|
|
21
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Claude's rendered rows. Under `scroll`, a row wearing a scroll marker (`↓ 10.`) is an
|
|
43
|
+
* ordinary option; its `raw` keeps the marker as rendered.
|
|
44
|
+
*/
|
|
45
|
+
export declare function parseClaudeModelPicker(text: string, scroll?: ScrollGrammar): ParsedModelPicker;
|
|
46
|
+
/**
|
|
47
|
+
* Rendered markers only. Codex 0.164 draws `(current)` and never `(default)`, so a lone
|
|
48
|
+
* `(current)` says nothing about the default; the Codex spec marks it from config.toml.
|
|
49
|
+
*/
|
|
22
50
|
export declare function parseCodexModelPicker(text: string): ParsedModelPicker;
|
|
23
|
-
export { bottomDialogCandidate, bottomDialogRow } from "./dialog-region.ts";
|
|
51
|
+
export { bottomDialogCandidate, bottomDialogRow, type DialogGrammar } from "./dialog-region.ts";
|
|
52
|
+
export type { ScrollGrammar } from "./row-block.ts";
|
|
24
53
|
/**
|
|
25
54
|
* The picker itself, the stage an accepted row opens (reasoning level, cache warning),
|
|
26
55
|
* or a dialog shell still `painting`: it holds input but is never sent a key.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../../../src/core/models/rows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../../../src/core/models/rows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAwB,KAAK,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAEvF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AACtD,eAAO,MAAM,sBAAsB,QAA4B,CAAC;AAEhE,uGAAuG;AACvG,eAAO,MAAM,UAAU,QAAkD,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAU9F;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAOrE;AA+CD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChG,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;AAEnE;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,oBAAuC,CAAC;AAEnE,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,CAAC"}
|
package/dist/core/models/rows.js
CHANGED
|
@@ -3,11 +3,17 @@
|
|
|
3
3
|
* model dialog only as the bottom-most native region of the viewport.
|
|
4
4
|
* Implements PRD §5.3 AgentModelOption, C-API-23, and C-API-24.
|
|
5
5
|
*/
|
|
6
|
+
import { overflowMayFollowRow, unmarkedRow } from "./row-block.js";
|
|
6
7
|
export const claudeModelPickerHeader = /Select model/;
|
|
7
8
|
export const codexModelPickerHeader = /Select Model and Effort/;
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
-
|
|
9
|
+
/** `1. Label Description`, capturing the cursor glyph, absolute row number, label and description. */
|
|
10
|
+
export const rowPattern = /^\s*(❯|›)?\s*(\d+)\.\s+(.+?)\s{2,}(\S.*?)\s*$/;
|
|
11
|
+
/**
|
|
12
|
+
* Claude's rendered rows. Under `scroll`, a row wearing a scroll marker (`↓ 10.`) is an
|
|
13
|
+
* ordinary option; its `raw` keeps the marker as rendered.
|
|
14
|
+
*/
|
|
15
|
+
export function parseClaudeModelPicker(text, scroll) {
|
|
16
|
+
return parseRows(pickerRegion(text, claudeModelPickerHeader), scroll, (labelText) => {
|
|
11
17
|
const isCurrent = labelText.includes("✔");
|
|
12
18
|
const isDefault = /\(recommended\)/i.test(labelText);
|
|
13
19
|
const label = labelText
|
|
@@ -17,35 +23,57 @@ export function parseClaudeModelPicker(text) {
|
|
|
17
23
|
return { label, id: label.toLowerCase(), isCurrent, isDefault };
|
|
18
24
|
});
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Rendered markers only. Codex 0.164 draws `(current)` and never `(default)`, so a lone
|
|
28
|
+
* `(current)` says nothing about the default; the Codex spec marks it from config.toml.
|
|
29
|
+
*/
|
|
20
30
|
export function parseCodexModelPicker(text) {
|
|
21
|
-
|
|
31
|
+
return parseRows(pickerRegion(text, codexModelPickerHeader), undefined, (labelText) => {
|
|
22
32
|
const isCurrent = /\(current\)/i.test(labelText);
|
|
23
33
|
const isDefault = /\(default\)/i.test(labelText);
|
|
24
34
|
const label = labelText.replace(/\((?:current|default)\)/gi, "").trim();
|
|
25
35
|
return { label, id: label.toLowerCase(), isCurrent, isDefault };
|
|
26
36
|
});
|
|
27
|
-
// Codex omits the default marker when the current model is the default.
|
|
28
|
-
if (parsed.options.some((option) => option.isDefault))
|
|
29
|
-
return parsed;
|
|
30
|
-
const options = parsed.options.map((option) => option.isCurrent ? { ...option, isDefault: true } : option);
|
|
31
|
-
return { options, cursorIndex: parsed.cursorIndex };
|
|
32
37
|
}
|
|
33
|
-
function parseRows(region, decorate) {
|
|
34
|
-
const
|
|
35
|
-
let
|
|
38
|
+
function parseRows(region, scroll, decorate) {
|
|
39
|
+
const rows = [];
|
|
40
|
+
let cursorOptionIndex = -1;
|
|
41
|
+
let hiddenRowCountBelow = 0;
|
|
42
|
+
// As in the region grammar, a count is read only from the line directly under a row
|
|
43
|
+
// `overflowMayFollowRow` allows; an overflow line anywhere else leaves the length unknown.
|
|
44
|
+
let overflowMayFollow = false;
|
|
36
45
|
for (const line of region.split("\n")) {
|
|
37
|
-
const
|
|
38
|
-
|
|
46
|
+
const mayBeOverflow = overflowMayFollow;
|
|
47
|
+
overflowMayFollow = false;
|
|
48
|
+
const overflow = scroll?.overflow.exec(line);
|
|
49
|
+
if (overflow)
|
|
50
|
+
hiddenRowCountBelow = mayBeOverflow ? positiveCount(overflow.groups?.["hidden"]) : undefined;
|
|
51
|
+
const match = rowPattern.exec(unmarkedRow(line, scroll));
|
|
52
|
+
const absoluteRowNumber = Number(match?.[2]);
|
|
53
|
+
// As in the region grammar, a number that rounds is not the row the CLI drew.
|
|
54
|
+
if (!(match && Number.isSafeInteger(absoluteRowNumber)))
|
|
39
55
|
continue;
|
|
40
56
|
if (match[1])
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
57
|
+
cursorOptionIndex = rows.length;
|
|
58
|
+
// A `below` marker says rows are hidden; only the overflow line under it says how many.
|
|
59
|
+
if (scroll?.below.test(line) === true)
|
|
60
|
+
hiddenRowCountBelow = undefined;
|
|
61
|
+
overflowMayFollow = overflowMayFollowRow(line, scroll);
|
|
62
|
+
rows.push({
|
|
63
|
+
absoluteRowNumber,
|
|
64
|
+
option: {
|
|
65
|
+
...decorate(match[3]),
|
|
66
|
+
description: match[4],
|
|
67
|
+
raw: line.trim(),
|
|
68
|
+
},
|
|
46
69
|
});
|
|
47
70
|
}
|
|
48
|
-
return { options,
|
|
71
|
+
return { rows, options: rows.map((row) => row.option), cursorOptionIndex, hiddenRowCountBelow };
|
|
72
|
+
}
|
|
73
|
+
/** The rendered hidden-row count, returned only when it is a positive, exactly representable integer. */
|
|
74
|
+
function positiveCount(text) {
|
|
75
|
+
const count = Number(text);
|
|
76
|
+
return Number.isSafeInteger(count) && count > 0 ? count : undefined;
|
|
49
77
|
}
|
|
50
78
|
export { bottomDialogCandidate, bottomDialogRow } from "./dialog-region.js";
|
|
51
79
|
/**
|