@with-logic/elwood 0.1.2 → 0.2.0
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 +396 -2
- package/CONTRIBUTING.md +29 -18
- package/README.md +50 -19
- package/dist/bridge/parse.d.ts.map +1 -1
- package/dist/bridge/parse.js +2 -1
- package/dist/bridge/parse.js.map +1 -1
- package/dist/bridge/server.d.ts.map +1 -1
- package/dist/bridge/server.js +6 -2
- package/dist/bridge/server.js.map +1 -1
- package/dist/claude/attach-images.d.ts +3 -1
- package/dist/claude/attach-images.d.ts.map +1 -1
- package/dist/claude/attach-images.js +11 -10
- package/dist/claude/attach-images.js.map +1 -1
- package/dist/claude/composer/empty-input.d.ts +4 -0
- package/dist/claude/composer/empty-input.d.ts.map +1 -0
- package/dist/claude/composer/empty-input.js +28 -0
- package/dist/claude/composer/empty-input.js.map +1 -0
- package/dist/claude/composer/footer.d.ts +3 -0
- package/dist/claude/composer/footer.d.ts.map +1 -0
- package/dist/claude/composer/footer.js +3 -0
- package/dist/claude/composer/footer.js.map +1 -0
- package/dist/claude/composer/staged-input.d.ts +7 -0
- package/dist/claude/composer/staged-input.d.ts.map +1 -0
- package/dist/claude/composer/staged-input.js +18 -0
- package/dist/claude/composer/staged-input.js.map +1 -0
- package/dist/claude/hooks/common-result.d.ts +5 -0
- package/dist/claude/hooks/common-result.d.ts.map +1 -0
- package/dist/claude/hooks/common-result.js +3 -0
- package/dist/claude/hooks/common-result.js.map +1 -0
- package/dist/claude/hooks/dispatch.d.ts +2 -1
- package/dist/claude/hooks/dispatch.d.ts.map +1 -1
- package/dist/claude/hooks/dispatch.js +3 -1
- package/dist/claude/hooks/dispatch.js.map +1 -1
- package/dist/claude/hooks/events-extra.d.ts +5 -4
- package/dist/claude/hooks/events-extra.d.ts.map +1 -1
- package/dist/claude/hooks/index.d.ts +10 -10
- package/dist/claude/hooks/index.d.ts.map +1 -1
- package/dist/claude/hooks/index.js +1 -4
- package/dist/claude/hooks/index.js.map +1 -1
- package/dist/claude/hooks/inputs/control.d.ts +25 -0
- package/dist/claude/hooks/inputs/control.d.ts.map +1 -0
- package/dist/claude/hooks/inputs/control.js +3 -0
- package/dist/claude/hooks/inputs/control.js.map +1 -0
- package/dist/claude/hooks/stop-failure.d.ts +10 -0
- package/dist/claude/hooks/stop-failure.d.ts.map +1 -0
- package/dist/claude/hooks/stop-failure.js +18 -0
- package/dist/claude/hooks/stop-failure.js.map +1 -0
- package/dist/claude/hooks/tool-types.d.ts +12 -10
- package/dist/claude/hooks/tool-types.d.ts.map +1 -1
- package/dist/claude/login/notice.d.ts +3 -0
- package/dist/claude/login/notice.d.ts.map +1 -0
- package/dist/claude/login/notice.js +3 -0
- package/dist/claude/login/notice.js.map +1 -0
- package/dist/claude/login/renewal.d.ts +13 -0
- package/dist/claude/login/renewal.d.ts.map +1 -0
- package/dist/claude/login/renewal.js +97 -0
- package/dist/claude/login/renewal.js.map +1 -0
- package/dist/claude/model-composer.d.ts +2 -0
- package/dist/claude/model-composer.d.ts.map +1 -0
- package/dist/claude/model-composer.js +12 -0
- package/dist/claude/model-composer.js.map +1 -0
- package/dist/claude/model-picker.d.ts.map +1 -1
- package/dist/claude/model-picker.js +42 -8
- package/dist/claude/model-picker.js.map +1 -1
- package/dist/claude/model-switch-confirmation.d.ts +6 -0
- package/dist/claude/model-switch-confirmation.d.ts.map +1 -1
- package/dist/claude/model-switch-confirmation.js +77 -4
- package/dist/claude/model-switch-confirmation.js.map +1 -1
- package/dist/claude/preflight.d.ts.map +1 -1
- package/dist/claude/preflight.js +2 -4
- package/dist/claude/preflight.js.map +1 -1
- package/dist/claude/questions/answer.d.ts +9 -0
- package/dist/claude/questions/answer.d.ts.map +1 -0
- package/dist/claude/questions/answer.js +84 -0
- package/dist/claude/questions/answer.js.map +1 -0
- package/dist/claude/questions/bind-answers.d.ts +14 -0
- package/dist/claude/questions/bind-answers.d.ts.map +1 -0
- package/dist/claude/questions/bind-answers.js +36 -0
- package/dist/claude/questions/bind-answers.js.map +1 -0
- package/dist/claude/questions/candidate.d.ts +23 -0
- package/dist/claude/questions/candidate.d.ts.map +1 -0
- package/dist/claude/questions/candidate.js +47 -0
- package/dist/claude/questions/candidate.js.map +1 -0
- package/dist/claude/questions/correlation.d.ts +15 -0
- package/dist/claude/questions/correlation.d.ts.map +1 -0
- package/dist/claude/questions/correlation.js +23 -0
- package/dist/claude/questions/correlation.js.map +1 -0
- package/dist/claude/questions/hook-decisions.d.ts +19 -0
- package/dist/claude/questions/hook-decisions.d.ts.map +1 -0
- package/dist/claude/questions/hook-decisions.js +52 -0
- package/dist/claude/questions/hook-decisions.js.map +1 -0
- package/dist/claude/questions/index.d.ts +27 -0
- package/dist/claude/questions/index.d.ts.map +1 -0
- package/dist/claude/questions/index.js +161 -0
- package/dist/claude/questions/index.js.map +1 -0
- package/dist/claude/questions/navigation.d.ts +24 -0
- package/dist/claude/questions/navigation.d.ts.map +1 -0
- package/dist/claude/questions/navigation.js +37 -0
- package/dist/claude/questions/navigation.js.map +1 -0
- package/dist/claude/questions/rows.d.ts +19 -0
- package/dist/claude/questions/rows.d.ts.map +1 -0
- package/dist/claude/questions/rows.js +64 -0
- package/dist/claude/questions/rows.js.map +1 -0
- package/dist/claude/questions/screen.d.ts +29 -0
- package/dist/claude/questions/screen.d.ts.map +1 -0
- package/dist/claude/questions/screen.js +103 -0
- package/dist/claude/questions/screen.js.map +1 -0
- package/dist/claude/screen-table.d.ts +19 -2
- package/dist/claude/screen-table.d.ts.map +1 -1
- package/dist/claude/screen-table.js +48 -4
- package/dist/claude/screen-table.js.map +1 -1
- package/dist/claude/serialize.d.ts.map +1 -1
- package/dist/claude/serialize.js +22 -6
- package/dist/claude/serialize.js.map +1 -1
- package/dist/claude/session/build.d.ts +1 -12
- package/dist/claude/session/build.d.ts.map +1 -1
- package/dist/claude/session/build.js +42 -55
- package/dist/claude/session/build.js.map +1 -1
- package/dist/claude/session/hook-handler.d.ts +3 -2
- package/dist/claude/session/hook-handler.d.ts.map +1 -1
- package/dist/claude/session/hook-handler.js +44 -18
- package/dist/claude/session/hook-handler.js.map +1 -1
- package/dist/claude/session/index.d.ts +2 -1
- package/dist/claude/session/index.d.ts.map +1 -1
- package/dist/claude/session/index.js +23 -8
- package/dist/claude/session/index.js.map +1 -1
- package/dist/claude/session/instance.d.ts +17 -5
- package/dist/claude/session/instance.d.ts.map +1 -1
- package/dist/claude/session/instance.js +25 -12
- package/dist/claude/session/instance.js.map +1 -1
- package/dist/claude/session/interface.d.ts +2 -1
- package/dist/claude/session/interface.d.ts.map +1 -1
- package/dist/claude/session/questions.d.ts +9 -0
- package/dist/claude/session/questions.d.ts.map +1 -0
- package/dist/claude/session/questions.js +19 -0
- package/dist/claude/session/questions.js.map +1 -0
- package/dist/claude/session/resume.d.ts.map +1 -1
- package/dist/claude/session/resume.js +35 -26
- package/dist/claude/session/resume.js.map +1 -1
- package/dist/claude/session/runtime.d.ts +10 -0
- package/dist/claude/session/runtime.d.ts.map +1 -1
- package/dist/claude/session/runtime.js +8 -5
- package/dist/claude/session/runtime.js.map +1 -1
- package/dist/claude/session/startup-warnings.d.ts +5 -0
- package/dist/claude/session/startup-warnings.d.ts.map +1 -0
- package/dist/claude/session/startup-warnings.js +7 -0
- package/dist/claude/session/startup-warnings.js.map +1 -0
- package/dist/claude/session/transcript.d.ts +2 -0
- package/dist/claude/session/transcript.d.ts.map +1 -1
- package/dist/claude/session/transcript.js +21 -3
- package/dist/claude/session/transcript.js.map +1 -1
- package/dist/claude/startup-prompts.d.ts +35 -3
- package/dist/claude/startup-prompts.d.ts.map +1 -1
- package/dist/claude/startup-prompts.js +81 -15
- package/dist/claude/startup-prompts.js.map +1 -1
- package/dist/claude/transcript/index.d.ts.map +1 -1
- package/dist/claude/transcript/index.js +3 -2
- package/dist/claude/transcript/index.js.map +1 -1
- package/dist/claude/validate/event-fields.d.ts +6 -0
- package/dist/claude/validate/event-fields.d.ts.map +1 -0
- package/dist/claude/validate/event-fields.js +103 -0
- package/dist/claude/validate/event-fields.js.map +1 -0
- package/dist/claude/validate/input.d.ts.map +1 -1
- package/dist/claude/validate/input.js +12 -41
- package/dist/claude/validate/input.js.map +1 -1
- package/dist/claude/validate/shapes.d.ts +1 -1
- package/dist/claude/validate/shapes.d.ts.map +1 -1
- package/dist/claude/validate/shapes.js +1 -1
- package/dist/claude/validate/shapes.js.map +1 -1
- package/dist/claude/validate/tool-shapes.d.ts +102 -0
- package/dist/claude/validate/tool-shapes.d.ts.map +1 -0
- package/dist/claude/validate/tool-shapes.js +83 -0
- package/dist/claude/validate/tool-shapes.js.map +1 -0
- package/dist/claude/validate/tool-update.d.ts +2 -11
- package/dist/claude/validate/tool-update.d.ts.map +1 -1
- package/dist/claude/validate/tool-update.js +11 -112
- package/dist/claude/validate/tool-update.js.map +1 -1
- package/dist/claude/validate/tool-values.d.ts +7 -0
- package/dist/claude/validate/tool-values.d.ts.map +1 -0
- package/dist/claude/validate/tool-values.js +30 -0
- package/dist/claude/validate/tool-values.js.map +1 -0
- package/dist/cli/args/options.d.ts.map +1 -1
- package/dist/cli/args/options.js +1 -0
- package/dist/cli/args/options.js.map +1 -1
- package/dist/cli/args-commands.d.ts.map +1 -1
- package/dist/cli/args-commands.js +3 -0
- package/dist/cli/args-commands.js.map +1 -1
- package/dist/cli/config/store.d.ts.map +1 -1
- package/dist/cli/config/store.js +2 -1
- package/dist/cli/config/store.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +15 -11
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/effort.d.ts +5 -0
- package/dist/cli/interactive/effort.d.ts.map +1 -0
- package/dist/cli/interactive/effort.js +13 -0
- package/dist/cli/interactive/effort.js.map +1 -0
- package/dist/cli/interactive/launch.d.ts.map +1 -1
- package/dist/cli/interactive/launch.js +1 -1
- package/dist/cli/interactive/launch.js.map +1 -1
- package/dist/cli/lifecycle/index.d.ts +3 -6
- package/dist/cli/lifecycle/index.d.ts.map +1 -1
- package/dist/cli/lifecycle/index.js +6 -13
- package/dist/cli/lifecycle/index.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +9 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/models/combined.d.ts +6 -0
- package/dist/cli/models/combined.d.ts.map +1 -0
- package/dist/cli/models/combined.js +92 -0
- package/dist/cli/models/combined.js.map +1 -0
- package/dist/cli/models/index.d.ts +2 -0
- package/dist/cli/models/index.d.ts.map +1 -1
- package/dist/cli/models/index.js +15 -4
- package/dist/cli/models/index.js.map +1 -1
- package/dist/cli/models/render.d.ts +4 -0
- package/dist/cli/models/render.d.ts.map +1 -1
- package/dist/cli/models/render.js +28 -1
- package/dist/cli/models/render.js.map +1 -1
- package/dist/cli/models/result.d.ts +13 -0
- package/dist/cli/models/result.d.ts.map +1 -0
- package/dist/cli/models/result.js +2 -0
- package/dist/cli/models/result.js.map +1 -0
- package/dist/cli/models/settings.d.ts +63 -0
- package/dist/cli/models/settings.d.ts.map +1 -0
- package/dist/cli/models/settings.js +24 -0
- package/dist/cli/models/settings.js.map +1 -0
- package/dist/cli/models/signals.d.ts +11 -0
- package/dist/cli/models/signals.d.ts.map +1 -0
- package/dist/cli/models/signals.js +21 -0
- package/dist/cli/models/signals.js.map +1 -0
- package/dist/cli/request/index.d.ts.map +1 -1
- package/dist/cli/request/index.js +2 -1
- package/dist/cli/request/index.js.map +1 -1
- package/dist/cli/request/validation.d.ts.map +1 -1
- package/dist/cli/request/validation.js +0 -4
- package/dist/cli/request/validation.js.map +1 -1
- package/dist/cli/run/index.d.ts.map +1 -1
- package/dist/cli/run/index.js +3 -1
- package/dist/cli/run/index.js.map +1 -1
- package/dist/cli/run/output.d.ts.map +1 -1
- package/dist/cli/run/output.js +4 -6
- package/dist/cli/run/output.js.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 +2 -0
- package/dist/cli/session/index.d.ts.map +1 -1
- package/dist/cli/session/index.js +3 -0
- package/dist/cli/session/index.js.map +1 -1
- package/dist/cli/session/launch.d.ts +0 -3
- package/dist/cli/session/launch.d.ts.map +1 -1
- package/dist/cli/session/launch.js +0 -11
- package/dist/cli/session/launch.js.map +1 -1
- package/dist/cli/sessions/list.d.ts.map +1 -1
- package/dist/cli/sessions/list.js +5 -4
- package/dist/cli/sessions/list.js.map +1 -1
- package/dist/cli/types.d.ts +2 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/update-attention.d.ts +2 -1
- package/dist/cli/update-attention.d.ts.map +1 -1
- package/dist/cli/update-attention.js +11 -2
- package/dist/cli/update-attention.js.map +1 -1
- package/dist/codex/accepted-turn.d.ts +4 -0
- package/dist/codex/accepted-turn.d.ts.map +1 -0
- package/dist/codex/accepted-turn.js +17 -0
- package/dist/codex/accepted-turn.js.map +1 -0
- package/dist/codex/config/transaction.d.ts +22 -0
- package/dist/codex/config/transaction.d.ts.map +1 -1
- package/dist/codex/config/transaction.js +61 -31
- package/dist/codex/config/transaction.js.map +1 -1
- package/dist/codex/hooks/index.d.ts +6 -1
- package/dist/codex/hooks/index.d.ts.map +1 -1
- package/dist/codex/hooks/validate-result.d.ts.map +1 -1
- package/dist/codex/hooks/validate-result.js +2 -1
- package/dist/codex/hooks/validate-result.js.map +1 -1
- package/dist/codex/hooks/validate.d.ts.map +1 -1
- package/dist/codex/hooks/validate.js +1 -3
- package/dist/codex/hooks/validate.js.map +1 -1
- package/dist/codex/hooks/values.d.ts +3 -0
- package/dist/codex/hooks/values.d.ts.map +1 -0
- package/dist/codex/hooks/values.js +5 -0
- package/dist/codex/hooks/values.js.map +1 -0
- package/dist/codex/images/attach.d.ts +3 -1
- package/dist/codex/images/attach.d.ts.map +1 -1
- package/dist/codex/images/attach.js +10 -11
- package/dist/codex/images/attach.js.map +1 -1
- package/dist/codex/images/clipboard.d.ts.map +1 -1
- package/dist/codex/images/clipboard.js +11 -3
- package/dist/codex/images/clipboard.js.map +1 -1
- package/dist/codex/model-picker.d.ts.map +1 -1
- package/dist/codex/model-picker.js +23 -5
- package/dist/codex/model-picker.js.map +1 -1
- package/dist/codex/preflight.d.ts.map +1 -1
- package/dist/codex/preflight.js +2 -2
- package/dist/codex/preflight.js.map +1 -1
- package/dist/codex/questions/acceptance.d.ts +18 -0
- package/dist/codex/questions/acceptance.d.ts.map +1 -0
- package/dist/codex/questions/acceptance.js +70 -0
- package/dist/codex/questions/acceptance.js.map +1 -0
- package/dist/codex/questions/adapter.d.ts +26 -0
- package/dist/codex/questions/adapter.d.ts.map +1 -0
- package/dist/codex/questions/adapter.js +163 -0
- package/dist/codex/questions/adapter.js.map +1 -0
- package/dist/codex/questions/candidate-acceptance.d.ts +5 -0
- package/dist/codex/questions/candidate-acceptance.d.ts.map +1 -0
- package/dist/codex/questions/candidate-acceptance.js +8 -0
- package/dist/codex/questions/candidate-acceptance.js.map +1 -0
- package/dist/codex/questions/candidate-authority.d.ts +10 -0
- package/dist/codex/questions/candidate-authority.d.ts.map +1 -0
- package/dist/codex/questions/candidate-authority.js +25 -0
- package/dist/codex/questions/candidate-authority.js.map +1 -0
- package/dist/codex/questions/candidate-disable.d.ts +5 -0
- package/dist/codex/questions/candidate-disable.d.ts.map +1 -0
- package/dist/codex/questions/candidate-disable.js +14 -0
- package/dist/codex/questions/candidate-disable.js.map +1 -0
- package/dist/codex/questions/candidate-publication.d.ts +7 -0
- package/dist/codex/questions/candidate-publication.d.ts.map +1 -0
- package/dist/codex/questions/candidate-publication.js +8 -0
- package/dist/codex/questions/candidate-publication.js.map +1 -0
- package/dist/codex/questions/candidate-reservation.d.ts +6 -0
- package/dist/codex/questions/candidate-reservation.d.ts.map +1 -0
- package/dist/codex/questions/candidate-reservation.js +7 -0
- package/dist/codex/questions/candidate-reservation.js.map +1 -0
- package/dist/codex/questions/candidate-store.d.ts +53 -0
- package/dist/codex/questions/candidate-store.d.ts.map +1 -0
- package/dist/codex/questions/candidate-store.js +188 -0
- package/dist/codex/questions/candidate-store.js.map +1 -0
- package/dist/codex/questions/candidate.d.ts +40 -0
- package/dist/codex/questions/candidate.d.ts.map +1 -0
- package/dist/codex/questions/candidate.js +39 -0
- package/dist/codex/questions/candidate.js.map +1 -0
- package/dist/codex/questions/candidates.d.ts +16 -0
- package/dist/codex/questions/candidates.d.ts.map +1 -0
- package/dist/codex/questions/candidates.js +113 -0
- package/dist/codex/questions/candidates.js.map +1 -0
- package/dist/codex/questions/chrome.d.ts +10 -0
- package/dist/codex/questions/chrome.d.ts.map +1 -0
- package/dist/codex/questions/chrome.js +21 -0
- package/dist/codex/questions/chrome.js.map +1 -0
- package/dist/codex/questions/definitions.d.ts +19 -0
- package/dist/codex/questions/definitions.d.ts.map +1 -0
- package/dist/codex/questions/definitions.js +86 -0
- package/dist/codex/questions/definitions.js.map +1 -0
- package/dist/codex/questions/draft.d.ts +25 -0
- package/dist/codex/questions/draft.d.ts.map +1 -0
- package/dist/codex/questions/draft.js +76 -0
- package/dist/codex/questions/draft.js.map +1 -0
- package/dist/codex/questions/driver-support.d.ts +6 -0
- package/dist/codex/questions/driver-support.d.ts.map +1 -0
- package/dist/codex/questions/driver-support.js +7 -0
- package/dist/codex/questions/driver-support.js.map +1 -0
- package/dist/codex/questions/driver.d.ts +10 -0
- package/dist/codex/questions/driver.d.ts.map +1 -0
- package/dist/codex/questions/driver.js +139 -0
- package/dist/codex/questions/driver.js.map +1 -0
- package/dist/codex/questions/frame.d.ts +36 -0
- package/dist/codex/questions/frame.d.ts.map +1 -0
- package/dist/codex/questions/frame.js +138 -0
- package/dist/codex/questions/frame.js.map +1 -0
- package/dist/codex/questions/labels.d.ts +6 -0
- package/dist/codex/questions/labels.d.ts.map +1 -0
- package/dist/codex/questions/labels.js +6 -0
- package/dist/codex/questions/labels.js.map +1 -0
- package/dist/codex/questions/limits.d.ts +18 -0
- package/dist/codex/questions/limits.d.ts.map +1 -0
- package/dist/codex/questions/limits.js +61 -0
- package/dist/codex/questions/limits.js.map +1 -0
- package/dist/codex/questions/native-pending.d.ts +7 -0
- package/dist/codex/questions/native-pending.d.ts.map +1 -0
- package/dist/codex/questions/native-pending.js +37 -0
- package/dist/codex/questions/native-pending.js.map +1 -0
- package/dist/codex/questions/owned-editor.d.ts +12 -0
- package/dist/codex/questions/owned-editor.d.ts.map +1 -0
- package/dist/codex/questions/owned-editor.js +37 -0
- package/dist/codex/questions/owned-editor.js.map +1 -0
- package/dist/codex/questions/pending-submissions.d.ts +12 -0
- package/dist/codex/questions/pending-submissions.d.ts.map +1 -0
- package/dist/codex/questions/pending-submissions.js +42 -0
- package/dist/codex/questions/pending-submissions.js.map +1 -0
- package/dist/codex/questions/records.d.ts +29 -0
- package/dist/codex/questions/records.d.ts.map +1 -0
- package/dist/codex/questions/records.js +113 -0
- package/dist/codex/questions/records.js.map +1 -0
- package/dist/codex/questions/selection.d.ts +3 -0
- package/dist/codex/questions/selection.d.ts.map +1 -0
- package/dist/codex/questions/selection.js +18 -0
- package/dist/codex/questions/selection.js.map +1 -0
- package/dist/codex/questions/session.d.ts +6 -0
- package/dist/codex/questions/session.d.ts.map +1 -0
- package/dist/codex/questions/session.js +21 -0
- package/dist/codex/questions/session.js.map +1 -0
- package/dist/codex/screen/clearance.d.ts +17 -0
- package/dist/codex/screen/clearance.d.ts.map +1 -0
- package/dist/codex/screen/clearance.js +170 -0
- package/dist/codex/screen/clearance.js.map +1 -0
- package/dist/codex/screen/empty-input.d.ts +4 -0
- package/dist/codex/screen/empty-input.d.ts.map +1 -0
- package/dist/codex/screen/empty-input.js +10 -0
- package/dist/codex/screen/empty-input.js.map +1 -0
- package/dist/codex/screen/live-clearance.d.ts +6 -0
- package/dist/codex/screen/live-clearance.d.ts.map +1 -0
- package/dist/codex/screen/live-clearance.js +34 -0
- package/dist/codex/screen/live-clearance.js.map +1 -0
- package/dist/codex/screen/retained-clearance.d.ts +19 -0
- package/dist/codex/screen/retained-clearance.d.ts.map +1 -0
- package/dist/codex/screen/retained-clearance.js +67 -0
- package/dist/codex/screen/retained-clearance.js.map +1 -0
- package/dist/codex/screen/staged-input.d.ts +7 -0
- package/dist/codex/screen/staged-input.d.ts.map +1 -0
- package/dist/codex/screen/staged-input.js +40 -0
- package/dist/codex/screen/staged-input.js.map +1 -0
- package/dist/codex/screen/working.d.ts +4 -0
- package/dist/codex/screen/working.d.ts.map +1 -0
- package/dist/codex/screen/working.js +5 -0
- package/dist/codex/screen/working.js.map +1 -0
- package/dist/codex/screen-table.d.ts +4 -1
- package/dist/codex/screen-table.d.ts.map +1 -1
- package/dist/codex/screen-table.js +44 -11
- package/dist/codex/screen-table.js.map +1 -1
- package/dist/codex/session/build.d.ts +1 -0
- package/dist/codex/session/build.d.ts.map +1 -1
- package/dist/codex/session/build.js +62 -68
- package/dist/codex/session/build.js.map +1 -1
- package/dist/codex/session/caller-input.d.ts +18 -0
- package/dist/codex/session/caller-input.d.ts.map +1 -0
- package/dist/codex/session/caller-input.js +50 -0
- package/dist/codex/session/caller-input.js.map +1 -0
- package/dist/codex/session/cleanup.d.ts +2 -1
- package/dist/codex/session/cleanup.d.ts.map +1 -1
- package/dist/codex/session/cleanup.js +3 -2
- package/dist/codex/session/cleanup.js.map +1 -1
- package/dist/codex/session/cli-exit.d.ts +24 -0
- package/dist/codex/session/cli-exit.d.ts.map +1 -0
- package/dist/codex/session/cli-exit.js +43 -0
- package/dist/codex/session/cli-exit.js.map +1 -0
- package/dist/codex/session/hooks.d.ts +3 -0
- package/dist/codex/session/hooks.d.ts.map +1 -1
- package/dist/codex/session/hooks.js +66 -13
- package/dist/codex/session/hooks.js.map +1 -1
- package/dist/codex/session/index.d.ts +2 -1
- package/dist/codex/session/index.d.ts.map +1 -1
- package/dist/codex/session/index.js +23 -8
- package/dist/codex/session/index.js.map +1 -1
- package/dist/codex/session/initial-ready.d.ts +6 -0
- package/dist/codex/session/initial-ready.d.ts.map +1 -0
- package/dist/codex/session/initial-ready.js +9 -0
- package/dist/codex/session/initial-ready.js.map +1 -0
- package/dist/codex/session/instance.d.ts +19 -4
- package/dist/codex/session/instance.d.ts.map +1 -1
- package/dist/codex/session/instance.js +60 -30
- package/dist/codex/session/instance.js.map +1 -1
- package/dist/codex/session/resume.d.ts.map +1 -1
- package/dist/codex/session/resume.js +35 -26
- package/dist/codex/session/resume.js.map +1 -1
- package/dist/codex/session/runtime.d.ts.map +1 -1
- package/dist/codex/session/runtime.js +1 -2
- package/dist/codex/session/runtime.js.map +1 -1
- package/dist/codex/session/startup-warnings.d.ts +11 -0
- package/dist/codex/session/startup-warnings.d.ts.map +1 -0
- package/dist/codex/session/startup-warnings.js +9 -0
- package/dist/codex/session/startup-warnings.js.map +1 -0
- package/dist/codex/session/transcript.d.ts +3 -1
- package/dist/codex/session/transcript.d.ts.map +1 -1
- package/dist/codex/session/transcript.js +51 -8
- package/dist/codex/session/transcript.js.map +1 -1
- package/dist/codex/session/types.d.ts +4 -3
- package/dist/codex/session/types.d.ts.map +1 -1
- package/dist/codex/session/update-attention.d.ts +4 -0
- package/dist/codex/session/update-attention.d.ts.map +1 -0
- package/dist/codex/session/update-attention.js +18 -0
- package/dist/codex/session/update-attention.js.map +1 -0
- package/dist/codex/session/warnings.d.ts +2 -1
- package/dist/codex/session/warnings.d.ts.map +1 -1
- package/dist/codex/session/warnings.js +2 -1
- package/dist/codex/session/warnings.js.map +1 -1
- package/dist/codex/simple.d.ts +1 -0
- package/dist/codex/simple.d.ts.map +1 -1
- package/dist/codex/simple.js +2 -0
- package/dist/codex/simple.js.map +1 -1
- package/dist/codex/startup-prompts.d.ts +29 -14
- package/dist/codex/startup-prompts.d.ts.map +1 -1
- package/dist/codex/startup-prompts.js +113 -93
- package/dist/codex/startup-prompts.js.map +1 -1
- package/dist/codex/startup-warnings.d.ts +10 -0
- package/dist/codex/startup-warnings.d.ts.map +1 -0
- package/dist/codex/startup-warnings.js +65 -0
- package/dist/codex/startup-warnings.js.map +1 -0
- package/dist/codex/transcript/summary.d.ts +1 -1
- package/dist/codex/transcript/summary.d.ts.map +1 -1
- package/dist/codex/transcript/summary.js +18 -7
- package/dist/codex/transcript/summary.js.map +1 -1
- package/dist/codex/transcript/types.d.ts +23 -12
- package/dist/codex/transcript/types.d.ts.map +1 -1
- package/dist/codex/transcript/watcher.d.ts.map +1 -1
- package/dist/codex/transcript/watcher.js +2 -1
- package/dist/codex/transcript/watcher.js.map +1 -1
- package/dist/codex/update/classification.d.ts +27 -0
- package/dist/codex/update/classification.d.ts.map +1 -0
- package/dist/codex/update/classification.js +28 -0
- package/dist/codex/update/classification.js.map +1 -0
- package/dist/codex/update/evidence.d.ts +22 -0
- package/dist/codex/update/evidence.d.ts.map +1 -0
- package/dist/codex/update/evidence.js +69 -0
- package/dist/codex/update/evidence.js.map +1 -0
- package/dist/codex/update/layout.d.ts +7 -0
- package/dist/codex/update/layout.d.ts.map +1 -0
- package/dist/codex/update/layout.js +65 -0
- package/dist/codex/update/layout.js.map +1 -0
- package/dist/codex/update/recognition.d.ts +3 -0
- package/dist/codex/update/recognition.d.ts.map +1 -0
- package/dist/codex/update/recognition.js +7 -0
- package/dist/codex/update/recognition.js.map +1 -0
- package/dist/codex/update/selection.d.ts +7 -0
- package/dist/codex/update/selection.d.ts.map +1 -0
- package/dist/codex/update/selection.js +10 -0
- package/dist/codex/update/selection.js.map +1 -0
- package/dist/codex/update/skip-attempt.d.ts +25 -0
- package/dist/codex/update/skip-attempt.d.ts.map +1 -0
- package/dist/codex/update/skip-attempt.js +64 -0
- package/dist/codex/update/skip-attempt.js.map +1 -0
- package/dist/codex/update/tracker.d.ts +37 -0
- package/dist/codex/update/tracker.d.ts.map +1 -0
- package/dist/codex/update/tracker.js +156 -0
- package/dist/codex/update/tracker.js.map +1 -0
- package/dist/codex/update-identity.d.ts +23 -0
- package/dist/codex/update-identity.d.ts.map +1 -0
- package/dist/codex/update-identity.js +46 -0
- package/dist/codex/update-identity.js.map +1 -0
- package/dist/codex/update-prompt.d.ts +26 -17
- package/dist/codex/update-prompt.d.ts.map +1 -1
- package/dist/codex/update-prompt.js +65 -62
- package/dist/codex/update-prompt.js.map +1 -1
- package/dist/core/activity/index.d.ts +24 -3
- package/dist/core/activity/index.d.ts.map +1 -1
- package/dist/core/activity/index.js.map +1 -1
- package/dist/core/activity/meta.d.ts +6 -1
- package/dist/core/activity/meta.d.ts.map +1 -1
- package/dist/core/activity/meta.js.map +1 -1
- package/dist/core/activity/transcript.d.ts +4 -1
- package/dist/core/activity/transcript.d.ts.map +1 -1
- package/dist/core/activity/transcript.js +28 -18
- package/dist/core/activity/transcript.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/async-mutex.d.ts +14 -8
- package/dist/core/async-mutex.d.ts.map +1 -1
- package/dist/core/async-mutex.js +48 -12
- package/dist/core/async-mutex.js.map +1 -1
- package/dist/core/attention.d.ts +6 -2
- package/dist/core/attention.d.ts.map +1 -1
- package/dist/core/attention.js +23 -9
- package/dist/core/attention.js.map +1 -1
- package/dist/core/control-queue/admission-scan.d.ts +10 -0
- package/dist/core/control-queue/admission-scan.d.ts.map +1 -0
- package/dist/core/control-queue/admission-scan.js +28 -0
- package/dist/core/control-queue/admission-scan.js.map +1 -0
- package/dist/core/control-queue/admission.d.ts +15 -0
- package/dist/core/control-queue/admission.d.ts.map +1 -0
- package/dist/core/control-queue/admission.js +70 -0
- package/dist/core/control-queue/admission.js.map +1 -0
- package/dist/core/control-queue/budget.d.ts +15 -0
- package/dist/core/control-queue/budget.d.ts.map +1 -0
- package/dist/core/control-queue/budget.js +33 -0
- package/dist/core/control-queue/budget.js.map +1 -0
- package/dist/core/control-queue/index.d.ts +6 -3
- package/dist/core/control-queue/index.d.ts.map +1 -1
- package/dist/core/control-queue/index.js +52 -28
- package/dist/core/control-queue/index.js.map +1 -1
- package/dist/core/control-queue/scan.d.ts +10 -0
- package/dist/core/control-queue/scan.d.ts.map +1 -0
- package/dist/core/control-queue/scan.js +24 -0
- package/dist/core/control-queue/scan.js.map +1 -0
- package/dist/core/control-queue/state.d.ts +19 -3
- package/dist/core/control-queue/state.d.ts.map +1 -1
- package/dist/core/control-queue/state.js +87 -15
- package/dist/core/control-queue/state.js.map +1 -1
- package/dist/core/control-queue/submission.d.ts +8 -0
- package/dist/core/control-queue/submission.d.ts.map +1 -0
- package/dist/core/control-queue/submission.js +41 -0
- package/dist/core/control-queue/submission.js.map +1 -0
- package/dist/core/control-queue/traits.d.ts +6 -9
- package/dist/core/control-queue/traits.d.ts.map +1 -1
- package/dist/core/control-queue/traits.js +2 -15
- package/dist/core/control-queue/traits.js.map +1 -1
- package/dist/core/control-queue/types.d.ts +28 -2
- package/dist/core/control-queue/types.d.ts.map +1 -1
- package/dist/core/errors.d.ts +7 -2
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +7 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/freeze-hook-event.d.ts +6 -0
- package/dist/core/freeze-hook-event.d.ts.map +1 -0
- package/dist/core/freeze-hook-event.js +16 -0
- package/dist/core/freeze-hook-event.js.map +1 -0
- package/dist/core/hook-dispatch.d.ts +3 -2
- package/dist/core/hook-dispatch.d.ts.map +1 -1
- package/dist/core/hook-dispatch.js +14 -6
- package/dist/core/hook-dispatch.js.map +1 -1
- package/dist/core/hook-observation.d.ts +24 -0
- package/dist/core/hook-observation.d.ts.map +1 -0
- package/dist/core/hook-observation.js +68 -0
- package/dist/core/hook-observation.js.map +1 -0
- package/dist/core/hook-result.d.ts +12 -2
- package/dist/core/hook-result.d.ts.map +1 -1
- package/dist/core/hook-result.js +10 -9
- package/dist/core/hook-result.js.map +1 -1
- package/dist/core/hook-timeout.d.ts.map +1 -1
- package/dist/core/hook-timeout.js +3 -2
- package/dist/core/hook-timeout.js.map +1 -1
- package/dist/core/images/capture.d.ts +14 -0
- package/dist/core/images/capture.d.ts.map +1 -0
- package/dist/core/images/capture.js +35 -0
- package/dist/core/images/capture.js.map +1 -0
- package/dist/core/images/chip-wait.d.ts +14 -16
- package/dist/core/images/chip-wait.d.ts.map +1 -1
- package/dist/core/images/chip-wait.js +31 -34
- package/dist/core/images/chip-wait.js.map +1 -1
- package/dist/core/images/queued-budget.d.ts +18 -0
- package/dist/core/images/queued-budget.d.ts.map +1 -0
- package/dist/core/images/queued-budget.js +41 -0
- package/dist/core/images/queued-budget.js.map +1 -0
- package/dist/core/inert-record.d.ts +3 -0
- package/dist/core/inert-record.d.ts.map +1 -0
- package/dist/core/inert-record.js +6 -0
- package/dist/core/inert-record.js.map +1 -0
- package/dist/core/input/abort.d.ts +33 -2
- package/dist/core/input/abort.d.ts.map +1 -1
- package/dist/core/input/abort.js +42 -2
- package/dist/core/input/abort.js.map +1 -1
- package/dist/core/input/clear-ack.d.ts +10 -0
- package/dist/core/input/clear-ack.d.ts.map +1 -0
- package/dist/core/input/clear-ack.js +26 -0
- package/dist/core/input/clear-ack.js.map +1 -0
- package/dist/core/input/composer-cleanup.d.ts +33 -0
- package/dist/core/input/composer-cleanup.d.ts.map +1 -0
- package/dist/core/input/composer-cleanup.js +127 -0
- package/dist/core/input/composer-cleanup.js.map +1 -0
- package/dist/core/input/constants.d.ts +12 -0
- package/dist/core/input/constants.d.ts.map +1 -0
- package/dist/core/input/constants.js +12 -0
- package/dist/core/input/constants.js.map +1 -0
- package/dist/core/input/empty-frame.d.ts +4 -0
- package/dist/core/input/empty-frame.d.ts.map +1 -0
- package/dist/core/input/empty-frame.js +15 -0
- package/dist/core/input/empty-frame.js.map +1 -0
- package/dist/core/input/index.d.ts +8 -25
- package/dist/core/input/index.d.ts.map +1 -1
- package/dist/core/input/index.js +67 -102
- package/dist/core/input/index.js.map +1 -1
- package/dist/core/input/paste-guard.d.ts +34 -0
- package/dist/core/input/paste-guard.d.ts.map +1 -0
- package/dist/core/input/paste-guard.js +2 -0
- package/dist/core/input/paste-guard.js.map +1 -0
- package/dist/core/input/paste-nudge.d.ts +10 -0
- package/dist/core/input/paste-nudge.d.ts.map +1 -0
- package/dist/core/input/paste-nudge.js +91 -0
- package/dist/core/input/paste-nudge.js.map +1 -0
- package/dist/core/input/render-observation.d.ts +3 -0
- package/dist/core/input/render-observation.d.ts.map +1 -0
- package/dist/core/input/render-observation.js +38 -0
- package/dist/core/input/render-observation.js.map +1 -0
- package/dist/core/input/render-wakeup.d.ts +10 -0
- package/dist/core/input/render-wakeup.d.ts.map +1 -0
- package/dist/core/input/render-wakeup.js +45 -0
- package/dist/core/input/render-wakeup.js.map +1 -0
- package/dist/core/input/sanitize.d.ts +11 -0
- package/dist/core/input/sanitize.d.ts.map +1 -0
- package/dist/core/input/sanitize.js +19 -0
- package/dist/core/input/sanitize.js.map +1 -0
- package/dist/core/input/staged-composer.d.ts +12 -0
- package/dist/core/input/staged-composer.d.ts.map +1 -0
- package/dist/core/input/staged-composer.js +56 -0
- package/dist/core/input/staged-composer.js.map +1 -0
- package/dist/core/input/submission-cancel.d.ts +6 -0
- package/dist/core/input/submission-cancel.d.ts.map +1 -0
- package/dist/core/input/submission-cancel.js +18 -0
- package/dist/core/input/submission-cancel.js.map +1 -0
- package/dist/core/json-shape.d.ts +2 -0
- package/dist/core/json-shape.d.ts.map +1 -0
- package/dist/core/json-shape.js +6 -0
- package/dist/core/json-shape.js.map +1 -0
- package/dist/core/json-snapshot.d.ts +10 -0
- package/dist/core/json-snapshot.d.ts.map +1 -0
- package/dist/core/json-snapshot.js +84 -0
- package/dist/core/json-snapshot.js.map +1 -0
- package/dist/core/loops/scheduler.d.ts +1 -1
- package/dist/core/loops/scheduler.d.ts.map +1 -1
- package/dist/core/loops/scheduler.js +1 -2
- package/dist/core/loops/scheduler.js.map +1 -1
- package/dist/core/models/dialog-region.d.ts +16 -0
- package/dist/core/models/dialog-region.d.ts.map +1 -0
- package/dist/core/models/dialog-region.js +133 -0
- package/dist/core/models/dialog-region.js.map +1 -0
- package/dist/core/models/input.d.ts +1 -1
- package/dist/core/models/input.d.ts.map +1 -1
- package/dist/core/models/input.js.map +1 -1
- package/dist/core/models/intervention.d.ts +3 -0
- package/dist/core/models/intervention.d.ts.map +1 -0
- package/dist/core/models/intervention.js +12 -0
- package/dist/core/models/intervention.js.map +1 -0
- package/dist/core/models/picker.d.ts +14 -1
- package/dist/core/models/picker.d.ts.map +1 -1
- package/dist/core/models/picker.js +27 -6
- package/dist/core/models/picker.js.map +1 -1
- package/dist/core/models/rows.d.ts +42 -2
- package/dist/core/models/rows.d.ts.map +1 -1
- package/dist/core/models/rows.js +30 -3
- package/dist/core/models/rows.js.map +1 -1
- package/dist/core/models/tui-screen.d.ts +11 -1
- package/dist/core/models/tui-screen.d.ts.map +1 -1
- package/dist/core/models/tui-screen.js +22 -4
- package/dist/core/models/tui-screen.js.map +1 -1
- package/dist/core/module-require.d.ts +1 -1
- package/dist/core/module-require.js +1 -1
- package/dist/core/persona.d.ts +5 -4
- package/dist/core/persona.d.ts.map +1 -1
- package/dist/core/persona.js +18 -3
- package/dist/core/persona.js.map +1 -1
- package/dist/core/predicates.d.ts +9 -1
- package/dist/core/predicates.d.ts.map +1 -1
- package/dist/core/predicates.js +12 -2
- package/dist/core/predicates.js.map +1 -1
- package/dist/core/questions/abort.d.ts +2 -0
- package/dist/core/questions/abort.d.ts.map +1 -0
- package/dist/core/questions/abort.js +21 -0
- package/dist/core/questions/abort.js.map +1 -0
- package/dist/core/questions/activity-fields.d.ts +5 -0
- package/dist/core/questions/activity-fields.d.ts.map +1 -0
- package/dist/core/questions/activity-fields.js +15 -0
- package/dist/core/questions/activity-fields.js.map +1 -0
- package/dist/core/questions/activity.d.ts +6 -0
- package/dist/core/questions/activity.d.ts.map +1 -0
- package/dist/core/questions/activity.js +2 -0
- package/dist/core/questions/activity.js.map +1 -0
- package/dist/core/questions/adapter.d.ts +15 -0
- package/dist/core/questions/adapter.d.ts.map +1 -0
- package/dist/core/questions/adapter.js +2 -0
- package/dist/core/questions/adapter.js.map +1 -0
- package/dist/core/questions/attempt.d.ts +26 -0
- package/dist/core/questions/attempt.d.ts.map +1 -0
- package/dist/core/questions/attempt.js +85 -0
- package/dist/core/questions/attempt.js.map +1 -0
- package/dist/core/questions/controller.d.ts +24 -0
- package/dist/core/questions/controller.d.ts.map +1 -0
- package/dist/core/questions/controller.js +83 -0
- package/dist/core/questions/controller.js.map +1 -0
- package/dist/core/questions/correlation.d.ts +8 -0
- package/dist/core/questions/correlation.d.ts.map +1 -0
- package/dist/core/questions/correlation.js +11 -0
- package/dist/core/questions/correlation.js.map +1 -0
- package/dist/core/questions/cursor-provenance.d.ts +12 -0
- package/dist/core/questions/cursor-provenance.d.ts.map +1 -0
- package/dist/core/questions/cursor-provenance.js +19 -0
- package/dist/core/questions/cursor-provenance.js.map +1 -0
- package/dist/core/questions/deadline.d.ts +2 -0
- package/dist/core/questions/deadline.d.ts.map +1 -0
- package/dist/core/questions/deadline.js +11 -0
- package/dist/core/questions/deadline.js.map +1 -0
- package/dist/core/questions/dispatch.d.ts +17 -0
- package/dist/core/questions/dispatch.d.ts.map +1 -0
- package/dist/core/questions/dispatch.js +46 -0
- package/dist/core/questions/dispatch.js.map +1 -0
- package/dist/core/questions/errors.d.ts +8 -0
- package/dist/core/questions/errors.d.ts.map +1 -0
- package/dist/core/questions/errors.js +10 -0
- package/dist/core/questions/errors.js.map +1 -0
- package/dist/core/questions/input.d.ts +13 -0
- package/dist/core/questions/input.d.ts.map +1 -0
- package/dist/core/questions/input.js +93 -0
- package/dist/core/questions/input.js.map +1 -0
- package/dist/core/questions/io.d.ts +23 -0
- package/dist/core/questions/io.d.ts.map +1 -0
- package/dist/core/questions/io.js +2 -0
- package/dist/core/questions/io.js.map +1 -0
- package/dist/core/questions/notification-errors.d.ts +14 -0
- package/dist/core/questions/notification-errors.d.ts.map +1 -0
- package/dist/core/questions/notification-errors.js +45 -0
- package/dist/core/questions/notification-errors.js.map +1 -0
- package/dist/core/questions/observers.d.ts +17 -0
- package/dist/core/questions/observers.d.ts.map +1 -0
- package/dist/core/questions/observers.js +57 -0
- package/dist/core/questions/observers.js.map +1 -0
- package/dist/core/questions/registry.d.ts +35 -0
- package/dist/core/questions/registry.d.ts.map +1 -0
- package/dist/core/questions/registry.js +158 -0
- package/dist/core/questions/registry.js.map +1 -0
- package/dist/core/questions/transaction.d.ts +23 -0
- package/dist/core/questions/transaction.d.ts.map +1 -0
- package/dist/core/questions/transaction.js +97 -0
- package/dist/core/questions/transaction.js.map +1 -0
- package/dist/core/questions/types.d.ts +62 -0
- package/dist/core/questions/types.d.ts.map +1 -0
- package/dist/core/questions/types.js +2 -0
- package/dist/core/questions/types.js.map +1 -0
- package/dist/core/questions/validate.d.ts +16 -0
- package/dist/core/questions/validate.d.ts.map +1 -0
- package/dist/core/questions/validate.js +95 -0
- package/dist/core/questions/validate.js.map +1 -0
- package/dist/core/rendered-observers.d.ts +7 -2
- package/dist/core/rendered-observers.d.ts.map +1 -1
- package/dist/core/rendered-observers.js +44 -10
- package/dist/core/rendered-observers.js.map +1 -1
- package/dist/core/screen-facts.d.ts +8 -3
- package/dist/core/screen-facts.d.ts.map +1 -1
- package/dist/core/screen-facts.js +6 -3
- package/dist/core/screen-facts.js.map +1 -1
- package/dist/core/simple/boundary-observer.d.ts +30 -0
- package/dist/core/simple/boundary-observer.d.ts.map +1 -0
- package/dist/core/simple/boundary-observer.js +111 -0
- package/dist/core/simple/boundary-observer.js.map +1 -0
- package/dist/core/simple/boundary-signal.d.ts +31 -0
- package/dist/core/simple/boundary-signal.d.ts.map +1 -0
- package/dist/core/simple/boundary-signal.js +19 -0
- package/dist/core/simple/boundary-signal.js.map +1 -0
- package/dist/core/simple/captured-input.d.ts +19 -0
- package/dist/core/simple/captured-input.d.ts.map +1 -0
- package/dist/core/simple/captured-input.js +78 -0
- package/dist/core/simple/captured-input.js.map +1 -0
- package/dist/core/simple/close.d.ts +6 -0
- package/dist/core/simple/close.d.ts.map +1 -0
- package/dist/core/simple/close.js +20 -0
- package/dist/core/simple/close.js.map +1 -0
- package/dist/core/simple/events.d.ts +2 -2
- package/dist/core/simple/events.js +2 -2
- package/dist/core/simple/loop-boundary.d.ts +12 -0
- package/dist/core/simple/loop-boundary.d.ts.map +1 -0
- package/dist/core/simple/loop-boundary.js +68 -0
- package/dist/core/simple/loop-boundary.js.map +1 -0
- package/dist/core/simple/loop-hold.d.ts +7 -0
- package/dist/core/simple/loop-hold.d.ts.map +1 -0
- package/dist/core/simple/loop-hold.js +9 -0
- package/dist/core/simple/loop-hold.js.map +1 -0
- package/dist/core/simple/native-boundary.d.ts +15 -0
- package/dist/core/simple/native-boundary.d.ts.map +1 -0
- package/dist/core/simple/native-boundary.js +18 -0
- package/dist/core/simple/native-boundary.js.map +1 -0
- package/dist/core/simple/native-idle.d.ts +17 -0
- package/dist/core/simple/native-idle.d.ts.map +1 -0
- package/dist/core/simple/native-idle.js +25 -0
- package/dist/core/simple/native-idle.js.map +1 -0
- package/dist/core/simple/observe-boundary.d.ts +28 -0
- package/dist/core/simple/observe-boundary.d.ts.map +1 -0
- package/dist/core/simple/observe-boundary.js +13 -0
- package/dist/core/simple/observe-boundary.js.map +1 -0
- package/dist/core/simple/owned-loop.d.ts +8 -0
- package/dist/core/simple/owned-loop.d.ts.map +1 -0
- package/dist/core/simple/owned-loop.js +42 -0
- package/dist/core/simple/owned-loop.js.map +1 -0
- package/dist/core/simple/session.d.ts +7 -7
- package/dist/core/simple/session.d.ts.map +1 -1
- package/dist/core/simple/session.js +20 -33
- package/dist/core/simple/session.js.map +1 -1
- package/dist/core/simple/submission-context.d.ts +13 -0
- package/dist/core/simple/submission-context.d.ts.map +1 -0
- package/dist/core/simple/submission-context.js +35 -0
- package/dist/core/simple/submission-context.js.map +1 -0
- package/dist/core/simple/turn/bounds.d.ts +22 -0
- package/dist/core/simple/turn/bounds.d.ts.map +1 -0
- package/dist/core/simple/turn/bounds.js +22 -0
- package/dist/core/simple/turn/bounds.js.map +1 -0
- package/dist/core/simple/turn/defaults.d.ts +24 -0
- package/dist/core/simple/turn/defaults.d.ts.map +1 -0
- package/dist/core/simple/turn/defaults.js +34 -0
- package/dist/core/simple/turn/defaults.js.map +1 -0
- package/dist/core/simple/turn-acceptance.d.ts +20 -3
- package/dist/core/simple/turn-acceptance.d.ts.map +1 -1
- package/dist/core/simple/turn-acceptance.js +55 -5
- package/dist/core/simple/turn-acceptance.js.map +1 -1
- package/dist/core/simple/turn-boundary.d.ts +7 -2
- package/dist/core/simple/turn-boundary.d.ts.map +1 -1
- package/dist/core/simple/turn-boundary.js +17 -5
- package/dist/core/simple/turn-boundary.js.map +1 -1
- package/dist/core/simple/turn-gate.d.ts.map +1 -1
- package/dist/core/simple/turn-gate.js +1 -11
- package/dist/core/simple/turn-gate.js.map +1 -1
- package/dist/core/simple/turn-identity.d.ts +28 -0
- package/dist/core/simple/turn-identity.d.ts.map +1 -0
- package/dist/core/simple/turn-identity.js +74 -0
- package/dist/core/simple/turn-identity.js.map +1 -0
- package/dist/core/simple/turn-types.d.ts +11 -4
- package/dist/core/simple/turn-types.d.ts.map +1 -1
- package/dist/core/simple/turn-types.js +1 -6
- package/dist/core/simple/turn-types.js.map +1 -1
- package/dist/core/simple/turn.d.ts +7 -30
- package/dist/core/simple/turn.d.ts.map +1 -1
- package/dist/core/simple/turn.js +75 -75
- package/dist/core/simple/turn.js.map +1 -1
- package/dist/core/startup/barrier.d.ts +37 -0
- package/dist/core/startup/barrier.d.ts.map +1 -0
- package/dist/core/startup/barrier.js +59 -0
- package/dist/core/startup/barrier.js.map +1 -0
- package/dist/core/startup/frame.d.ts +2 -0
- package/dist/core/startup/frame.d.ts.map +1 -1
- package/dist/core/startup/frame.js +12 -0
- package/dist/core/startup/frame.js.map +1 -1
- package/dist/core/startup/warnings.d.ts +5 -0
- package/dist/core/startup/warnings.d.ts.map +1 -0
- package/dist/core/startup/warnings.js +14 -0
- package/dist/core/startup/warnings.js.map +1 -0
- package/dist/core/startup/write.d.ts +13 -11
- package/dist/core/startup/write.d.ts.map +1 -1
- package/dist/core/startup/write.js +12 -5
- package/dist/core/startup/write.js.map +1 -1
- package/dist/core/stop-input.d.ts +19 -0
- package/dist/core/stop-input.d.ts.map +1 -0
- package/dist/core/stop-input.js +47 -0
- package/dist/core/stop-input.js.map +1 -0
- package/dist/core/terminal-options.d.ts +13 -3
- package/dist/core/terminal-options.d.ts.map +1 -1
- package/dist/core/terminal-options.js +17 -7
- package/dist/core/terminal-options.js.map +1 -1
- package/dist/core/terminal-replay.d.ts +1 -0
- package/dist/core/terminal-replay.d.ts.map +1 -1
- package/dist/core/terminal-replay.js +6 -0
- package/dist/core/terminal-replay.js.map +1 -1
- package/dist/core/timers.d.ts +15 -0
- package/dist/core/timers.d.ts.map +1 -0
- package/dist/core/timers.js +17 -0
- package/dist/core/timers.js.map +1 -0
- package/dist/core/trust/allowlist.d.ts +24 -1
- package/dist/core/trust/allowlist.d.ts.map +1 -1
- package/dist/core/trust/allowlist.js +39 -12
- package/dist/core/trust/allowlist.js.map +1 -1
- package/dist/core/trust/blocking.d.ts +21 -10
- package/dist/core/trust/blocking.d.ts.map +1 -1
- package/dist/core/trust/blocking.js +64 -18
- package/dist/core/trust/blocking.js.map +1 -1
- package/dist/core/trust/clearance.d.ts +20 -0
- package/dist/core/trust/clearance.d.ts.map +1 -0
- package/dist/core/trust/clearance.js +25 -0
- package/dist/core/trust/clearance.js.map +1 -0
- package/dist/core/trust/copy.d.ts +19 -0
- package/dist/core/trust/copy.d.ts.map +1 -0
- package/dist/core/trust/copy.js +23 -0
- package/dist/core/trust/copy.js.map +1 -0
- package/dist/core/trust/dialog.d.ts +28 -0
- package/dist/core/trust/dialog.d.ts.map +1 -0
- package/dist/core/trust/dialog.js +96 -0
- package/dist/core/trust/dialog.js.map +1 -0
- package/dist/core/trust/options.d.ts +9 -0
- package/dist/core/trust/options.d.ts.map +1 -0
- package/dist/core/trust/options.js +9 -0
- package/dist/core/trust/options.js.map +1 -0
- package/dist/core/trust/prompts.d.ts +16 -37
- package/dist/core/trust/prompts.d.ts.map +1 -1
- package/dist/core/trust/prompts.js +10 -18
- package/dist/core/trust/prompts.js.map +1 -1
- package/dist/core/trust/responder.d.ts +27 -45
- package/dist/core/trust/responder.d.ts.map +1 -1
- package/dist/core/trust/responder.js +178 -108
- package/dist/core/trust/responder.js.map +1 -1
- package/dist/core/trust/types.d.ts +36 -0
- package/dist/core/trust/types.d.ts.map +1 -0
- package/dist/core/trust/types.js +17 -0
- package/dist/core/trust/types.js.map +1 -0
- package/dist/core/trust/view.d.ts +31 -0
- package/dist/core/trust/view.d.ts.map +1 -0
- package/dist/core/trust/view.js +52 -0
- package/dist/core/trust/view.js.map +1 -0
- package/dist/core/trust/write.d.ts +31 -0
- package/dist/core/trust/write.d.ts.map +1 -0
- package/dist/core/trust/write.js +148 -0
- package/dist/core/trust/write.js.map +1 -0
- package/dist/core/turn-state.d.ts +6 -0
- package/dist/core/turn-state.d.ts.map +1 -1
- package/dist/core/turn-state.js +31 -1
- package/dist/core/turn-state.js.map +1 -1
- package/dist/core/types.d.ts +4 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/warnings/auth.d.ts +25 -0
- package/dist/core/warnings/auth.d.ts.map +1 -0
- package/dist/core/warnings/auth.js +2 -0
- package/dist/core/warnings/auth.js.map +1 -0
- package/dist/core/warnings/index.d.ts +9 -16
- package/dist/core/warnings/index.d.ts.map +1 -1
- package/dist/core/warnings/index.js +2 -3
- package/dist/core/warnings/index.js.map +1 -1
- package/dist/core/warnings/lifecycle.d.ts +25 -1
- package/dist/core/warnings/lifecycle.d.ts.map +1 -1
- package/dist/core/warnings/lifecycle.js +1 -1
- package/dist/core/warnings/questions.d.ts +23 -0
- package/dist/core/warnings/questions.d.ts.map +1 -0
- package/dist/core/warnings/questions.js +2 -0
- package/dist/core/warnings/questions.js.map +1 -0
- package/dist/core/warnings/session.d.ts +3 -2
- package/dist/core/warnings/session.d.ts.map +1 -1
- package/dist/core/warnings/session.js +3 -2
- package/dist/core/warnings/session.js.map +1 -1
- package/dist/core/warnings/transcript.d.ts +12 -0
- package/dist/core/warnings/transcript.d.ts.map +1 -0
- package/dist/core/warnings/transcript.js +2 -0
- package/dist/core/warnings/transcript.js.map +1 -0
- package/dist/core/warnings/update.d.ts +11 -2
- package/dist/core/warnings/update.d.ts.map +1 -1
- package/dist/core/warnings/update.js +27 -4
- package/dist/core/warnings/update.js.map +1 -1
- package/dist/events/emitter.d.ts +18 -2
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +61 -14
- package/dist/events/emitter.js.map +1 -1
- package/dist/events/observer-errors.d.ts +9 -0
- package/dist/events/observer-errors.d.ts.map +1 -0
- package/dist/events/observer-errors.js +68 -0
- package/dist/events/observer-errors.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/pty/node.d.ts.map +1 -1
- package/dist/pty/node.js +4 -0
- package/dist/pty/node.js.map +1 -1
- package/dist/pty/types.d.ts +5 -0
- package/dist/pty/types.d.ts.map +1 -1
- package/dist/runtime/probe-cleanup.d.ts +34 -0
- package/dist/runtime/probe-cleanup.d.ts.map +1 -0
- package/dist/runtime/probe-cleanup.js +139 -0
- package/dist/runtime/probe-cleanup.js.map +1 -0
- package/dist/runtime/probe.d.ts.map +1 -1
- package/dist/runtime/probe.js +18 -25
- package/dist/runtime/probe.js.map +1 -1
- package/dist/runtime/readiness/initial-ready.d.ts +13 -11
- package/dist/runtime/readiness/initial-ready.d.ts.map +1 -1
- package/dist/runtime/readiness/initial-ready.js +23 -18
- package/dist/runtime/readiness/initial-ready.js.map +1 -1
- package/dist/runtime/seams.d.ts +2 -1
- package/dist/runtime/seams.d.ts.map +1 -1
- package/dist/runtime/seams.js.map +1 -1
- package/dist/runtime/session/attention-clearance.d.ts +5 -0
- package/dist/runtime/session/attention-clearance.d.ts.map +1 -0
- package/dist/runtime/session/attention-clearance.js +20 -0
- package/dist/runtime/session/attention-clearance.js.map +1 -0
- package/dist/runtime/session/base.d.ts +17 -4
- package/dist/runtime/session/base.d.ts.map +1 -1
- package/dist/runtime/session/base.js +68 -14
- package/dist/runtime/session/base.js.map +1 -1
- package/dist/runtime/session/commands.d.ts +17 -3
- package/dist/runtime/session/commands.d.ts.map +1 -1
- package/dist/runtime/session/commands.js +60 -13
- package/dist/runtime/session/commands.js.map +1 -1
- package/dist/runtime/session/foreign-picker.d.ts +8 -0
- package/dist/runtime/session/foreign-picker.d.ts.map +1 -0
- package/dist/runtime/session/foreign-picker.js +18 -0
- package/dist/runtime/session/foreign-picker.js.map +1 -0
- package/dist/runtime/session/frames.d.ts +27 -0
- package/dist/runtime/session/frames.d.ts.map +1 -0
- package/dist/runtime/session/frames.js +80 -0
- package/dist/runtime/session/frames.js.map +1 -0
- package/dist/runtime/session/image-attach.d.ts +3 -15
- package/dist/runtime/session/image-attach.d.ts.map +1 -1
- package/dist/runtime/session/image-attach.js +9 -27
- package/dist/runtime/session/image-attach.js.map +1 -1
- package/dist/runtime/session/lifecycle.d.ts +20 -14
- package/dist/runtime/session/lifecycle.d.ts.map +1 -1
- package/dist/runtime/session/lifecycle.js +49 -47
- package/dist/runtime/session/lifecycle.js.map +1 -1
- package/dist/runtime/session/loops.d.ts +10 -1
- package/dist/runtime/session/loops.d.ts.map +1 -1
- package/dist/runtime/session/loops.js +61 -19
- package/dist/runtime/session/loops.js.map +1 -1
- package/dist/runtime/session/native-submission.d.ts +10 -0
- package/dist/runtime/session/native-submission.d.ts.map +1 -0
- package/dist/runtime/session/native-submission.js +62 -0
- package/dist/runtime/session/native-submission.js.map +1 -0
- package/dist/runtime/session/not-running.d.ts +13 -0
- package/dist/runtime/session/not-running.d.ts.map +1 -0
- package/dist/runtime/session/not-running.js +28 -0
- package/dist/runtime/session/not-running.js.map +1 -0
- package/dist/runtime/session/paste-recovery.d.ts +15 -0
- package/dist/runtime/session/paste-recovery.d.ts.map +1 -0
- package/dist/runtime/session/paste-recovery.js +30 -0
- package/dist/runtime/session/paste-recovery.js.map +1 -0
- package/dist/runtime/session/picker-cleanup.d.ts +56 -0
- package/dist/runtime/session/picker-cleanup.d.ts.map +1 -0
- package/dist/runtime/session/picker-cleanup.js +126 -0
- package/dist/runtime/session/picker-cleanup.js.map +1 -0
- package/dist/runtime/session/picker-input.d.ts +17 -0
- package/dist/runtime/session/picker-input.d.ts.map +1 -0
- package/dist/runtime/session/picker-input.js +74 -0
- package/dist/runtime/session/picker-input.js.map +1 -0
- package/dist/runtime/session/picker.d.ts +56 -0
- package/dist/runtime/session/picker.d.ts.map +1 -0
- package/dist/runtime/session/picker.js +143 -0
- package/dist/runtime/session/picker.js.map +1 -0
- package/dist/runtime/session/questions.d.ts +23 -0
- package/dist/runtime/session/questions.d.ts.map +1 -0
- package/dist/runtime/session/questions.js +25 -0
- package/dist/runtime/session/questions.js.map +1 -0
- package/dist/runtime/session/readiness.d.ts +6 -3
- package/dist/runtime/session/readiness.d.ts.map +1 -1
- package/dist/runtime/session/readiness.js +19 -8
- package/dist/runtime/session/readiness.js.map +1 -1
- package/dist/runtime/session/shutdown-binding.d.ts +9 -0
- package/dist/runtime/session/shutdown-binding.d.ts.map +1 -1
- package/dist/runtime/session/shutdown-binding.js +57 -8
- package/dist/runtime/session/shutdown-binding.js.map +1 -1
- package/dist/runtime/session/shutdown.d.ts +2 -5
- package/dist/runtime/session/shutdown.d.ts.map +1 -1
- package/dist/runtime/session/shutdown.js +12 -13
- package/dist/runtime/session/shutdown.js.map +1 -1
- package/dist/runtime/session/status-wiring.d.ts +9 -4
- package/dist/runtime/session/status-wiring.d.ts.map +1 -1
- package/dist/runtime/session/status-wiring.js +8 -5
- package/dist/runtime/session/status-wiring.js.map +1 -1
- package/dist/runtime/session/stop-completion.d.ts +23 -0
- package/dist/runtime/session/stop-completion.d.ts.map +1 -0
- package/dist/runtime/session/stop-completion.js +32 -0
- package/dist/runtime/session/stop-completion.js.map +1 -0
- package/dist/runtime/session/turn-submission.d.ts +9 -0
- package/dist/runtime/session/turn-submission.d.ts.map +1 -0
- package/dist/runtime/session/turn-submission.js +19 -0
- package/dist/runtime/session/turn-submission.js.map +1 -0
- package/dist/runtime/shutdown/terminal.d.ts +10 -0
- package/dist/runtime/shutdown/terminal.d.ts.map +1 -0
- package/dist/runtime/shutdown/terminal.js +38 -0
- package/dist/runtime/shutdown/terminal.js.map +1 -0
- package/dist/runtime/startup/buffer.d.ts +1 -1
- package/dist/runtime/startup/buffer.d.ts.map +1 -1
- package/dist/runtime/startup/buffer.js +14 -8
- package/dist/runtime/startup/buffer.js.map +1 -1
- package/dist/runtime/status-evidence.d.ts +7 -3
- package/dist/runtime/status-evidence.d.ts.map +1 -1
- package/dist/runtime/status-evidence.js +12 -10
- package/dist/runtime/status-evidence.js.map +1 -1
- package/dist/runtime/update/lock.d.ts +7 -0
- package/dist/runtime/update/lock.d.ts.map +1 -1
- package/dist/runtime/update/lock.js +102 -121
- package/dist/runtime/update/lock.js.map +1 -1
- package/dist/runtime/update/owner.d.ts +54 -0
- package/dist/runtime/update/owner.d.ts.map +1 -0
- package/dist/runtime/update/owner.js +131 -0
- package/dist/runtime/update/owner.js.map +1 -0
- package/dist/runtime/update/retained-lease.d.ts +13 -0
- package/dist/runtime/update/retained-lease.d.ts.map +1 -0
- package/dist/runtime/update/retained-lease.js +40 -0
- package/dist/runtime/update/retained-lease.js.map +1 -0
- package/dist/runtime/update/waiting.d.ts +4 -0
- package/dist/runtime/update/waiting.d.ts.map +1 -0
- package/dist/runtime/update/waiting.js +95 -0
- package/dist/runtime/update/waiting.js.map +1 -0
- package/dist/state/canonical-path.d.ts +2 -0
- package/dist/state/canonical-path.d.ts.map +1 -0
- package/dist/state/canonical-path.js +22 -0
- package/dist/state/canonical-path.js.map +1 -0
- package/dist/state/launch-ownership.d.ts +21 -0
- package/dist/state/launch-ownership.d.ts.map +1 -0
- package/dist/state/launch-ownership.js +154 -0
- package/dist/state/launch-ownership.js.map +1 -0
- package/dist/state/launch-publication.d.ts +7 -0
- package/dist/state/launch-publication.d.ts.map +1 -0
- package/dist/state/launch-publication.js +53 -0
- package/dist/state/launch-publication.js.map +1 -0
- package/dist/state/private-read.js +2 -1
- package/dist/state/private-read.js.map +1 -1
- package/dist/state/private-session.d.ts +1 -1
- package/dist/state/private-session.d.ts.map +1 -1
- package/dist/state/private-session.js +4 -1
- package/dist/state/private-session.js.map +1 -1
- package/dist/state/runtime-paths.d.ts +10 -9
- package/dist/state/runtime-paths.d.ts.map +1 -1
- package/dist/state/runtime-paths.js +14 -12
- package/dist/state/runtime-paths.js.map +1 -1
- package/dist/state/socket-home.d.ts +8 -4
- package/dist/state/socket-home.d.ts.map +1 -1
- package/dist/state/socket-home.js +31 -7
- package/dist/state/socket-home.js.map +1 -1
- package/dist/state/startup-ownership.d.ts +4 -0
- package/dist/state/startup-ownership.d.ts.map +1 -0
- package/dist/state/startup-ownership.js +14 -0
- package/dist/state/startup-ownership.js.map +1 -0
- package/dist/state/store.d.ts +1 -1
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +2 -2
- package/dist/state/store.js.map +1 -1
- package/dist/terminal/coordinates.d.ts +7 -0
- package/dist/terminal/coordinates.d.ts.map +1 -0
- package/dist/terminal/coordinates.js +6 -0
- package/dist/terminal/coordinates.js.map +1 -0
- package/dist/terminal/cursor.d.ts +40 -0
- package/dist/terminal/cursor.d.ts.map +1 -0
- package/dist/terminal/cursor.js +116 -0
- package/dist/terminal/cursor.js.map +1 -0
- package/dist/terminal/headless.d.ts +7 -5
- package/dist/terminal/headless.d.ts.map +1 -1
- package/dist/terminal/headless.js +47 -35
- package/dist/terminal/headless.js.map +1 -1
- package/dist/terminal/pty-output.d.ts +37 -0
- package/dist/terminal/pty-output.d.ts.map +1 -0
- package/dist/terminal/pty-output.js +109 -0
- package/dist/terminal/pty-output.js.map +1 -0
- package/dist/terminal/render-queue.d.ts +30 -0
- package/dist/terminal/render-queue.d.ts.map +1 -0
- package/dist/terminal/render-queue.js +105 -0
- package/dist/terminal/render-queue.js.map +1 -0
- package/dist/terminal/snapshot.d.ts +5 -0
- package/dist/terminal/snapshot.d.ts.map +1 -0
- package/dist/terminal/snapshot.js +13 -0
- package/dist/terminal/snapshot.js.map +1 -0
- package/docs/api.md +8 -1
- package/docs/cli-behavior.md +930 -43
- package/docs/cli-output.md +44 -10
- package/docs/cli.md +18 -11
- package/docs/codex/cli.md +44 -0
- package/docs/login-recovery.md +24 -0
- package/docs/native-question-proofs.md +57 -0
- package/docs/performance.md +73 -0
- package/docs/questions.md +181 -0
- package/package.json +1 -1
- package/prd/04-architecture.md +15 -0
- package/prd/05-api/5.1-starting-claude.md +11 -1
- package/prd/05-api/5.10-questions.md +117 -0
- package/prd/05-api/5.3-claude-session-api.md +293 -24
- package/prd/05-api/5.4-events.md +159 -32
- package/prd/05-api/5.5-starting-codex.md +85 -18
- package/prd/05-api/5.7-codex-session-api.md +143 -5
- package/prd/05-api/5.8-session-api.md +58 -6
- package/prd/05-api/5.9-loops.md +11 -1
- package/prd/05-api/README.md +2 -0
- package/prd/06-claude-hook-bridge.md +115 -0
- package/prd/07-claude-policy.md +2 -0
- package/prd/07a-codex-hook-bridge.md +90 -0
- package/prd/08-state.md +51 -10
- package/prd/09-lifecycle.md +79 -3
- package/prd/10-errors.md +9 -2
- package/prd/12a-cli.md +50 -17
- package/prd/13-latitude.md +89 -0
- package/prd/14-conformance.md +86 -32
- package/prd/16-maintainer-review.md +75 -0
- package/prd/README.md +1 -0
package/docs/cli-output.md
CHANGED
|
@@ -5,9 +5,9 @@ exit codes, and safe shell recipes. Start with [cli.md](cli.md) for usage.
|
|
|
5
5
|
|
|
6
6
|
## Text, verbose, and stream
|
|
7
7
|
|
|
8
|
-
Text is the default output protocol.
|
|
9
|
-
|
|
10
|
-
tool-name, warning, and cleanup progress; it does not repeat assistant or
|
|
8
|
+
Text is the default output protocol. Live session warnings are quiet by default,
|
|
9
|
+
including during `elwood models`. Errors remain visible. `--verbose` adds compact
|
|
10
|
+
elapsed phase, tool-name, warning, and cleanup progress on stderr; it does not repeat assistant or
|
|
11
11
|
thinking text. `--debug` adds full sanitized event details. `--stream` emits
|
|
12
12
|
assistant text as it arrives and is valid only with text output; use
|
|
13
13
|
`--no-stream` when config enabled streaming but a script needs JSON.
|
|
@@ -26,7 +26,9 @@ a downstream pipe closing early triggers cleanup without an uncaught `EPIPE`.
|
|
|
26
26
|
|
|
27
27
|
`--output json` emits exactly one version-1 document. Its stable fields are
|
|
28
28
|
`schemaVersion`, `type`, `agent`, `response`, `sessionId`, `durationMs`,
|
|
29
|
-
`cleanup`, and, on failure, `error
|
|
29
|
+
`cleanup`, and, on failure, `error`. The examples below use `--ephemeral`, so
|
|
30
|
+
cleanup removes session state and `sessionId` is null. By default, CLI turns
|
|
31
|
+
preserve state and return a resumable session ID once one is available:
|
|
30
32
|
|
|
31
33
|
```json
|
|
32
34
|
{
|
|
@@ -66,7 +68,8 @@ a usage error or `no_agent_found`) reports `"agent": null`.
|
|
|
66
68
|
`--output jsonl` emits sequenced version-1 `text`, `thinking`, `tool`,
|
|
67
69
|
`status`, and `warning` records followed by exactly one `result` or `error`
|
|
68
70
|
record. Every record has `sequence` and `elapsedMs`; tool calls and results
|
|
69
|
-
share `toolCallId` when the agent supplies one
|
|
71
|
+
share `toolCallId` when the agent supplies one. This example also uses
|
|
72
|
+
`--ephemeral`:
|
|
70
73
|
|
|
71
74
|
```jsonl
|
|
72
75
|
{"schemaVersion":1,"type":"status","status":"running","sequence":1,"elapsedMs":114}
|
|
@@ -77,7 +80,9 @@ share `toolCallId` when the agent supplies one:
|
|
|
77
80
|
```
|
|
78
81
|
|
|
79
82
|
JSONL warning records stay on stdout so the machine protocol remains ordered;
|
|
80
|
-
text and JSON runs surface warnings on stderr
|
|
83
|
+
text and JSON runs surface session warnings on stderr only with `--verbose`
|
|
84
|
+
or `--debug`. `ELWOOD_VERBOSE=true` or config `verbose: true` also enables them;
|
|
85
|
+
`--no-verbose` overrides inherited verbosity (but not explicit `--debug`).
|
|
81
86
|
|
|
82
87
|
## Session and model listings
|
|
83
88
|
|
|
@@ -108,10 +113,35 @@ in JSON mode, and `sessions` never starts an agent:
|
|
|
108
113
|
check, so a force-killed owner can leave a stale "live" until the session is
|
|
109
114
|
next started or torn down. An empty state directory yields an empty `sessions`
|
|
110
115
|
array (text mode prints a notice on stderr and nothing on stdout). Unreadable
|
|
111
|
-
records are skipped with one stderr warning each
|
|
116
|
+
records are skipped with one stderr warning each, even without verbosity,
|
|
117
|
+
because the listing omits those results.
|
|
112
118
|
|
|
113
|
-
`elwood models`
|
|
114
|
-
|
|
119
|
+
`elwood models` probes Claude then Codex, regardless of saved or environment
|
|
120
|
+
agent defaults. Text includes an `AGENT` column. JSON contains successful
|
|
121
|
+
catalogs and canonical per-agent error records in one document:
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"schemaVersion": 1,
|
|
126
|
+
"type": "models",
|
|
127
|
+
"agents": [
|
|
128
|
+
{ "agent": "claude", "models": [] },
|
|
129
|
+
{ "agent": "codex", "models": [] }
|
|
130
|
+
],
|
|
131
|
+
"errors": []
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Each probe opens and cancels its model picker and always removes its session
|
|
136
|
+
state. An empty `models` array means that probe succeeded with no rows. If an
|
|
137
|
+
adapter fails, its catalog is absent from `agents` and its canonical error
|
|
138
|
+
record appears in `errors`, including `agent`, `error`, `durationMs`, and
|
|
139
|
+
`cleanup`. Available catalogs remain present. Incomplete results exit nonzero:
|
|
140
|
+
130 for interruption, then 124 for timeout, 2 for usage errors, or 1 for other
|
|
141
|
+
failures, in that precedence order. `--timeout` is a whole-command budget; no
|
|
142
|
+
next probe starts after timeout or Ctrl-C.
|
|
143
|
+
|
|
144
|
+
Explicit `elwood models --agent claude` retains its single-agent document:
|
|
115
145
|
|
|
116
146
|
```json
|
|
117
147
|
{
|
|
@@ -125,7 +155,7 @@ tears the session down:
|
|
|
125
155
|
}
|
|
126
156
|
```
|
|
127
157
|
|
|
128
|
-
|
|
158
|
+
Single-agent failures use the same `error` document and statuses as a run. Useful recipes:
|
|
129
159
|
|
|
130
160
|
```sh
|
|
131
161
|
id=$(elwood sessions --output json | jq -r '.sessions[0].id')
|
|
@@ -182,3 +212,7 @@ fi
|
|
|
182
212
|
Do not use `jq -r .response` alone as a success check. Error documents can
|
|
183
213
|
carry a partial `response`, and streamed text can be partial when the process
|
|
184
214
|
exits nonzero.
|
|
215
|
+
|
|
216
|
+
For retained text runs, `--show-session-id` opts into a session-ID footer on stderr.
|
|
217
|
+
Without it, use `elwood sessions` to find the ID. JSON and JSONL always keep their
|
|
218
|
+
existing `sessionId` field.
|
package/docs/cli.md
CHANGED
|
@@ -15,8 +15,9 @@ elwood run --output json < prompt.txt
|
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
`elwood "prompt"` runs in the current directory, waits for one complete turn,
|
|
18
|
-
prints the combined assistant text to stdout, then
|
|
19
|
-
|
|
18
|
+
prints the combined assistant text to stdout, then stops the agent and preserves
|
|
19
|
+
its Elwood session state for later listing or resumption. Use `--ephemeral` to
|
|
20
|
+
remove that state afterward. It does not undo files the agent changed or remove history owned by
|
|
20
21
|
the agent CLI. `elwood run "prompt"` is the same command in explicit form.
|
|
21
22
|
|
|
22
23
|
Positional words are joined with spaces. Non-empty piped stdin is appended after
|
|
@@ -83,8 +84,9 @@ Boolean environment values are exactly `true` or `false`.
|
|
|
83
84
|
Run `elwood --help` for the full flag list. Launch controls include `--model`,
|
|
84
85
|
`--reasoning-effort`, `--persona`, `--claude-permission-mode`,
|
|
85
86
|
`--codex-sandbox`, `--codex-approval-policy`, `--state-dir`, `--verbose`,
|
|
86
|
-
`--debug`, and `--trust` / `--no-trust`.
|
|
87
|
-
|
|
87
|
+
`--debug`, and `--trust` / `--no-trust`. Live session warnings are quiet by
|
|
88
|
+
default; use `--verbose` or `--debug` to see them, including for `elwood models`.
|
|
89
|
+
The built-in non-interactive posture is Claude `dontAsk`, or Codex `workspace-write` with approval policy `never`.
|
|
88
90
|
|
|
89
91
|
For an unattended run that must never stop on a permission prompt, prefer the
|
|
90
92
|
agent-neutral `--high-trust` over per-agent posture flags. It selects Claude
|
|
@@ -140,11 +142,13 @@ combined with `--stream`, `--verbose`, `--debug`, or `--output jsonl`.
|
|
|
140
142
|
|
|
141
143
|
## Continuation and cleanup
|
|
142
144
|
|
|
143
|
-
New runs
|
|
144
|
-
|
|
145
|
+
New and resumed runs preserve state by default; `--keep` explicitly selects
|
|
146
|
+
that default. Text output contains only the agent response. Add
|
|
147
|
+
`--show-session-id` to print the retained ID on stderr, or run `elwood sessions`
|
|
148
|
+
to find it later. JSON and JSONL include it in the terminal record:
|
|
145
149
|
|
|
146
150
|
```sh
|
|
147
|
-
first=$(elwood --
|
|
151
|
+
first=$(elwood --output json "Remember that the release color is teal")
|
|
148
152
|
id=$(printf '%s' "$first" | jq -r .sessionId)
|
|
149
153
|
elwood --resume "$id" "What is the release color?"
|
|
150
154
|
elwood --resume "$id" --ephemeral "Finish this conversation"
|
|
@@ -165,10 +169,13 @@ remain. It is supported only for new sessions, never with `--resume`.
|
|
|
165
169
|
## Trust and security
|
|
166
170
|
|
|
167
171
|
Headless mode is non-interactive. With the default `--trust`, Elwood answers
|
|
168
|
-
only its allowlisted workspace-directory and extension trust dialogs
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
+
only its allowlisted workspace-directory and extension trust dialogs.
|
|
173
|
+
`--no-trust` disables those approvals. Codex hook trust is always bypassed for
|
|
174
|
+
the entire session, including third-party hooks configured in Codex, because
|
|
175
|
+
Elwood needs its own hook bridge to run. This bypass is independent of `--trust`.
|
|
176
|
+
Other recognized dialogs fail as `blocked_prompt`. The same error applies when
|
|
177
|
+
safe trust automation cannot clear a gate within five seconds; queued prompt
|
|
178
|
+
input is never sent into that gate.
|
|
172
179
|
|
|
173
180
|
Piped text and image paths are prompt input with the same authority as text
|
|
174
181
|
typed by the caller. Do not combine untrusted input with broad filesystem
|
package/docs/codex/cli.md
CHANGED
|
@@ -40,6 +40,50 @@ Useful CLI capabilities for Elwood:
|
|
|
40
40
|
terminal output and also project recognized warnings into typed `warning`
|
|
41
41
|
events with remediation commands.
|
|
42
42
|
|
|
43
|
+
## Commentary and final replies
|
|
44
|
+
|
|
45
|
+
Subscribe to `activity` to display Codex's committed user-facing progress:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
session.on("activity", (event) => {
|
|
49
|
+
if (event.kind === "assistant_progress" && event.text) {
|
|
50
|
+
appendProgress(event.text);
|
|
51
|
+
} else if (event.kind === "assistant_message" && event.text) {
|
|
52
|
+
appendFinalReply(event.text);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Progress uses `source: "transcript"`, `label: "assistant"`, the session ID,
|
|
58
|
+
transcript path and optional native turn ID. It preserves string content and
|
|
59
|
+
ordered array-form `output_text` blocks from `response_item` messages explicitly
|
|
60
|
+
marked `phase: "commentary"`. Analysis and unknown phases never become progress.
|
|
61
|
+
Readable reasoning retains its separate `reasoning` channel; encrypted reasoning
|
|
62
|
+
is never normalized into text.
|
|
63
|
+
|
|
64
|
+
Response items are the canonical progress source. Explicit non-final legacy
|
|
65
|
+
`agent_message` mirrors remain raw transcript events with `other` summaries and
|
|
66
|
+
no normalized text, avoiding duplicate publication and false final replies.
|
|
67
|
+
Legacy unphased and final-answer behavior is preserved.
|
|
68
|
+
|
|
69
|
+
Keep progress separate from final-reply handlers: it must not clear working
|
|
70
|
+
state, consume reply context, finalize a trace, or route mentions to other
|
|
71
|
+
agents. Progress does not end a turn or change session status. Ergonomic
|
|
72
|
+
`send()` and `stream()` keep collecting their existing final-answer content;
|
|
73
|
+
use `on("activity", ...)` for progress. These are live observations, not token
|
|
74
|
+
deltas or replayed history, and their text may contain sensitive conversation
|
|
75
|
+
content just like final replies.
|
|
76
|
+
|
|
77
|
+
## Native questions
|
|
78
|
+
|
|
79
|
+
Codex modal and queued question tools surface through Elwood's shared
|
|
80
|
+
`question` event, normalized `question` activity, `listQuestions()` and
|
|
81
|
+
`answerQuestions()`. Modal question sets are one request; queued asynchronous
|
|
82
|
+
questions are independently answerable requests and can coexist with ongoing
|
|
83
|
+
work. Question-bearing asynchronous messages remain distinct from final replies,
|
|
84
|
+
even when their native record says `phase: "final_answer"`. See
|
|
85
|
+
[native questions](../questions.md) for consumer usage and lifecycle details.
|
|
86
|
+
|
|
43
87
|
## Resume Implications
|
|
44
88
|
|
|
45
89
|
Codex stores transcripts locally under Codex-owned state. Elwood should persist
|
package/docs/login-recovery.md
CHANGED
|
@@ -13,6 +13,30 @@ surfaces this so a session never wedges silently:
|
|
|
13
13
|
matching `warning` activity) carrying `recoveryCommand: "/login"`, and leaves
|
|
14
14
|
the session alive so you can recover without restarting.
|
|
15
15
|
|
|
16
|
+
## Advance renewal notices
|
|
17
|
+
|
|
18
|
+
Claude can show `Your login expires in 3 days · run /login to renew` while the
|
|
19
|
+
session is still usable. Elwood exposes this separately from `login_expired`:
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
session.on("warning", (warning) => {
|
|
23
|
+
if (warning.code === "login_expiring") {
|
|
24
|
+
// Notify a human or schedule renewal according to your application's policy.
|
|
25
|
+
showRenewalNotice(warning.expiresInDays, warning.recoveryCommand);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Subscribe immediately after `startClaude` or `resumeClaude` returns to receive
|
|
31
|
+
startup observations. The same payload appears in `activity` with
|
|
32
|
+
`kind: "warning"`, `label: "login_expiring"`, and the typed warning in `raw`.
|
|
33
|
+
The CLI-reported `expiresInDays` is a duration, not an exact expiry timestamp.
|
|
34
|
+
Each distinct countdown value emits once per live session. Warnings are never
|
|
35
|
+
persisted or replayed to later subscribers. Native welcome banners and empty
|
|
36
|
+
composer footers are recognized; arbitrary transcript text is ignored. Elwood
|
|
37
|
+
does not change status or initiate login. A consumer can offer the existing
|
|
38
|
+
`session.login()` flow when the human is ready.
|
|
39
|
+
|
|
16
40
|
## Driving `/login`
|
|
17
41
|
|
|
18
42
|
`ClaudeSession.login(options)` drives the interactive `/login` flow. The
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Native question proofs
|
|
2
|
+
|
|
3
|
+
These opt-in tests exercise `listQuestions()` and `answerQuestions()` against
|
|
4
|
+
real authenticated CLI processes. Each entrypoint uses two valid-model turns.
|
|
5
|
+
Run them separately after `npm run check`; they consume model quota.
|
|
6
|
+
|
|
7
|
+
## Claude: C-E2E-18
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
ELWOOD_NATIVE_QUESTIONS_PROOF=1 node --no-warnings --test --test-concurrency=1 tests/e2e/claude-questions.e2e.ts
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The proof pins Claude Code 2.1.305 and uses `haiku`. It prefers that exact binary
|
|
14
|
+
in `~/.local/share/claude/versions/`, falling back to the installed binary only
|
|
15
|
+
when its version matches. It copies credentials into a private temporary home
|
|
16
|
+
and writes a minimal temporary configuration. Parent configuration is checked
|
|
17
|
+
for changes; it is not copied into the proof's home. The parent CLI installation
|
|
18
|
+
remains unchanged.
|
|
19
|
+
|
|
20
|
+
The first turn submits grouped single and multiple choices. The second submits
|
|
21
|
+
multiline alternative text. Both compare the native `AskUserQuestion`
|
|
22
|
+
PostToolUse answers, require an answered closure and an empty pending list,
|
|
23
|
+
and keep the original `send()` waiting for the final assistant reply.
|
|
24
|
+
|
|
25
|
+
Question events and normalized activities must correspond exactly and contain
|
|
26
|
+
no submitted answer marker. The proof recursively checks Elwood-owned state
|
|
27
|
+
before and after shutdown. Diagnostic artifacts use private, exclusive files
|
|
28
|
+
inside the sandbox. Teardown removes the sandbox and verifies that parent
|
|
29
|
+
configuration, authentication and process environment remain unchanged.
|
|
30
|
+
|
|
31
|
+
## Codex: C-E2E-19
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
ELWOOD_NATIVE_QUESTIONS_PROOF=1 node --no-warnings --test --test-concurrency=1 tests/e2e/codex-questions.e2e.ts
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The proof pins Codex 0.163.0 and uses `gpt-6-luna` with low effort. The first
|
|
38
|
+
turn asks three queued questions in one asynchronous call. It answers Note,
|
|
39
|
+
Literal, then Color through the public API, checking the other requests remain
|
|
40
|
+
available and the original turn remains running. The second turn submits one
|
|
41
|
+
three-question Plan modal, including None of the above and a named choice with
|
|
42
|
+
additional notes.
|
|
43
|
+
|
|
44
|
+
Both long answers exceed 700 characters and include CRLF and CR line endings,
|
|
45
|
+
interior tabs, indented caret rows, interior trailing spaces and outer Unicode
|
|
46
|
+
whitespace. Complete committed native free-text answers and notes must match
|
|
47
|
+
after newline normalization and outer Unicode White_Space trimming. Queued
|
|
48
|
+
selected labels are trimmed; modal selected labels remain exact (PRD §5.10).
|
|
49
|
+
The literal answers
|
|
50
|
+
`Type your answer` and `Add notes` must also match exactly; a clipped viewport
|
|
51
|
+
or placeholder rendering is not accepted as proof of the submitted value.
|
|
52
|
+
|
|
53
|
+
The proof compares complete queued reply envelopes and grouped modal answer
|
|
54
|
+
arrays, requires four answered request closures and final-only ergonomic
|
|
55
|
+
replies, and applies the same telemetry/state privacy and parent-state checks
|
|
56
|
+
as the Claude proof. Native transcripts and diagnostic captures stay inside
|
|
57
|
+
private sandbox directories that teardown removes.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Performance checks
|
|
2
|
+
|
|
3
|
+
Elwood's parent process renders terminal output, classifies frames, retains a
|
|
4
|
+
bounded replay buffer, and watches transcripts for each session. Native Claude
|
|
5
|
+
and Codex processes consume additional resources outside this process.
|
|
6
|
+
|
|
7
|
+
## Repeatable terminal load
|
|
8
|
+
|
|
9
|
+
Run these from the repository root after `npm ci`, using Node 24 or newer:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
ELWOOD_BENCH_AGENT=claude node --expose-gc --no-warnings scripts/performance/terminal.ts 8 1 8 32
|
|
13
|
+
ELWOOD_BENCH_AGENT=codex node --expose-gc --no-warnings scripts/performance/terminal.ts 8 1 8 32
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Each child writes 8 MiB through a real PTY. The probe checks byte counts and a
|
|
17
|
+
final rendered marker, then reports elapsed time, memory, event-loop delay,
|
|
18
|
+
pending output, and resources remaining after cleanup. The selected observer
|
|
19
|
+
runs the production startup-prompt, screen-fact, turn, attention, and replay
|
|
20
|
+
code. Omit `ELWOOD_BENCH_AGENT` to measure rendering and snapshots alone.
|
|
21
|
+
|
|
22
|
+
This is a synthetic output burst. It does not launch agent CLIs, make model
|
|
23
|
+
requests, exercise hook or transcript traffic, or measure child-process memory.
|
|
24
|
+
Use it to detect regressions in Elwood's output processing; real workloads need
|
|
25
|
+
their own measurements.
|
|
26
|
+
|
|
27
|
+
### September 16, 2026 baseline
|
|
28
|
+
|
|
29
|
+
Measured on the development Mac with Node 24.7.0. Results vary with machine and
|
|
30
|
+
concurrent workload; these are observations, not performance guarantees.
|
|
31
|
+
|
|
32
|
+
| Observer | Sessions | Total output | Elapsed | Peak parent RSS | Event-loop p99 / max |
|
|
33
|
+
|---|---:|---:|---:|---:|---:|
|
|
34
|
+
| Claude | 1 | 8 MiB | 0.185 s | 110 MiB | 11.3 / 11.3 ms |
|
|
35
|
+
| Claude | 8 | 64 MiB | 0.969 s | 240 MiB | 14.4 / 16.0 ms |
|
|
36
|
+
| Claude | 32 | 256 MiB | 7.608 s | 363 MiB | 26.2 / 31.9 ms |
|
|
37
|
+
| Codex | 1 | 8 MiB | 0.243 s | 117 MiB | 19.5 / 19.5 ms |
|
|
38
|
+
| Codex | 8 | 64 MiB | 1.537 s | 248 MiB | 17.4 / 23.4 ms |
|
|
39
|
+
| Codex | 32 | 256 MiB | 9.270 s | 364 MiB | 23.9 / 42.3 ms |
|
|
40
|
+
|
|
41
|
+
At 32 sessions, final rendering finished within 10 ms of child exit. Neither
|
|
42
|
+
run retained PTY resources after cleanup, and post-GC heap usage did not increase
|
|
43
|
+
over that trial's starting heap. The remaining `PipeWrap` was the probe's stdout.
|
|
44
|
+
|
|
45
|
+
Before output batching, the snapshot-only probe took 14.497 s for one 8 MiB
|
|
46
|
+
session, queued about 8.19 MiB, and spent 14.19 s rendering after child exit.
|
|
47
|
+
The corresponding post-fix trial took 0.544 s. These two trials used the same
|
|
48
|
+
snapshot-only workload; the table above also includes production frame observers.
|
|
49
|
+
|
|
50
|
+
A separate ten-second idle probe used 128 real empty transcript files, split
|
|
51
|
+
evenly between Claude and Codex watchers at their default polling intervals. It
|
|
52
|
+
used 97.9 ms of CPU time (about 0.98% of one core), with 19.0 ms p99 event-loop
|
|
53
|
+
delay. It reported no errors, no retained heap increase, and no active resources
|
|
54
|
+
after closing the watchers. This measures idle polling, not transcript parsing
|
|
55
|
+
under active output.
|
|
56
|
+
|
|
57
|
+
## Bounds and regression coverage
|
|
58
|
+
|
|
59
|
+
- Adjacent PTY output is batched for at most 4 ms or 64 KiB, preserving order and
|
|
60
|
+
content. Renderer observations occur at batch boundaries.
|
|
61
|
+
- Real PTYs pause at 1 MiB of pending output and resume below 512 KiB. An already
|
|
62
|
+
delivered chunk can exceed the threshold. Custom PTY factories must provide
|
|
63
|
+
flow control to receive this backpressure.
|
|
64
|
+
- Runtime cleanup gives received output up to one second to render before
|
|
65
|
+
disposal. Process exit and reaping remain immediate; direct terminal disposal
|
|
66
|
+
discards pending output immediately.
|
|
67
|
+
- Tests cover batch ordering, Unicode/ANSI boundaries, slow-renderer
|
|
68
|
+
backpressure, disposal, final output on exit, and cancellation of late
|
|
69
|
+
readiness timers.
|
|
70
|
+
|
|
71
|
+
Re-run the probe after changes to rendering, frame classification, replay,
|
|
72
|
+
transcript polling, or cleanup. Compare output correctness and cleanup as well
|
|
73
|
+
as throughput, memory, and event-loop delay.
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Native agent questions
|
|
2
|
+
|
|
3
|
+
Elwood exposes structured questions from the real Claude Code and Codex terminal
|
|
4
|
+
interfaces. A host such as Coal Harbor renders the questions, collects answers,
|
|
5
|
+
and calls Elwood to submit them through the native editor.
|
|
6
|
+
|
|
7
|
+
Subscribe before starting a turn. Keep the question handler active while awaiting
|
|
8
|
+
`send()` or consuming `stream()`; a blocking question needs an answer before that
|
|
9
|
+
turn can finish.
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { ClaudeSession, type ElwoodQuestionAnswer } from "@with-logic/elwood";
|
|
13
|
+
|
|
14
|
+
const session = new ClaudeSession({ cwd: "/path/to/project", autotrust: true });
|
|
15
|
+
|
|
16
|
+
session.on("question", (event) => {
|
|
17
|
+
if (event.phase === "raised") showQuestionRequest(event.request);
|
|
18
|
+
else removeQuestionRequest(event.request.id, event.reason);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// After the user fills every question in one request:
|
|
22
|
+
async function submit(requestId: string, answers: readonly ElwoodQuestionAnswer[]) {
|
|
23
|
+
await session.answerQuestions(requestId, answers, { timeoutMs: 20_000 });
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const reply = await session.send("Help me choose and implement the right approach.");
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The same methods and event exist on `CodexSession`, the low-level adapter
|
|
30
|
+
interfaces, and the shared `ElwoodAgentSession` interface. Lazy session controls
|
|
31
|
+
start their session when needed. A late subscriber can reconcile its UI with
|
|
32
|
+
`await session.listQuestions()`, an immutable list of available requests in
|
|
33
|
+
discovery order. Subscribe first and buffer lifecycle events while loading the
|
|
34
|
+
snapshot; install the snapshot, then replay those buffered edges by request ID.
|
|
35
|
+
This prevents a request closed during loading from reappearing in the UI.
|
|
36
|
+
|
|
37
|
+
## Request and answer contract
|
|
38
|
+
|
|
39
|
+
A request contains an opaque `id`, `agent`, `delivery` (`blocking` or `queued`),
|
|
40
|
+
and ordered `questions`. Each question contains:
|
|
41
|
+
|
|
42
|
+
- An opaque `id`, `prompt`, optional `header`, and ordered `options` with opaque
|
|
43
|
+
IDs, labels, and optional descriptions.
|
|
44
|
+
- `selection`: `single`, `multiple`, or `none`.
|
|
45
|
+
- `textMode`: `none`, `alternative` (text instead of a choice), or `additional`
|
|
46
|
+
(text may accompany a choice).
|
|
47
|
+
- `supportsSecretInput`: whether the supported native editor accepts secret input. Current
|
|
48
|
+
characterized editors advertise `false`; do not infer masking from model text.
|
|
49
|
+
|
|
50
|
+
Render these capabilities as supplied. Send one complete batch for one request:
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
const [request] = await session.listQuestions();
|
|
54
|
+
if (request) {
|
|
55
|
+
const answers: readonly ElwoodQuestionAnswer[] = await collectUserAnswers(request);
|
|
56
|
+
await session.answerQuestions(request.id, answers);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
For a choice, use `{ questionId, optionIds: userSelectedOptionIds }`. For text,
|
|
61
|
+
use `{ questionId, text: "The user's answer" }`. For multiple choice, pass all
|
|
62
|
+
selected `optionIds`. Include both only when `textMode` is `additional`.
|
|
63
|
+
Every question in the selected request needs exactly one answer; the host chooses
|
|
64
|
+
when to submit. Elwood never selects defaults or answers automatically.
|
|
65
|
+
|
|
66
|
+
Unknown or duplicate question/option IDs, missing answers, unsupported
|
|
67
|
+
combinations, empty answers, and unsafe control characters reject before any
|
|
68
|
+
input. Multiline text uses bracketed paste. The 8 MiB answer-batch limit is the
|
|
69
|
+
sum of UTF-8 bytes in validated question IDs, selected option IDs and text;
|
|
70
|
+
JSON syntax and unknown fields do not count. Text must contain well-formed
|
|
71
|
+
UTF-16. Invalid answers produce `invalid_question_answer`; unknown, stale, closed
|
|
72
|
+
or previous-process request IDs produce `question_not_found`. Do not retain
|
|
73
|
+
request IDs across process restarts or resume.
|
|
74
|
+
|
|
75
|
+
## Lifecycle and input ownership
|
|
76
|
+
|
|
77
|
+
The typed `question` event has `phase: "raised"` or `"closed"`, plus the request,
|
|
78
|
+
agent and `elwoodSessionId`. Closure reasons are `answered`, `cancelled`, and
|
|
79
|
+
`unavailable`. `answered` means native acceptance was observed. Turn completion,
|
|
80
|
+
withdrawal, replacement or shutdown uses `unavailable` unless stronger native
|
|
81
|
+
evidence exists. Redraws and mirrored source records do not raise duplicates.
|
|
82
|
+
|
|
83
|
+
The normalized activity stream carries the same event in `activity.question`
|
|
84
|
+
with `kind: "question"`. Choose one surface, or deduplicate matching deliveries
|
|
85
|
+
by request ID, phase and closure reason when listening to both. A request's
|
|
86
|
+
`closed` event must still be processed after its `raised` event. Question
|
|
87
|
+
activities contain question metadata, not the user's submitted answers. They are
|
|
88
|
+
separate from final assistant text and excluded from ergonomic reply text.
|
|
89
|
+
|
|
90
|
+
A throwing or rejecting `question` or matching `activity` handler produces at
|
|
91
|
+
most one content-free `question_observer_failed` warning per live session, plus
|
|
92
|
+
its normalized warning activity. Its `phase` is `question` or `activity`, naming
|
|
93
|
+
the first failing notification channel. Other handlers and question lifecycle
|
|
94
|
+
delivery continue. The diagnostic contains no question, answer or error contents;
|
|
95
|
+
it does not authorize retrying or replaying an answer.
|
|
96
|
+
|
|
97
|
+
Answering uses a dedicated input lane and works while another send or turn is
|
|
98
|
+
waiting. Pending questions hold ordinary text, slash commands, loops and login
|
|
99
|
+
writes so those cannot enter the question editor or erase queued questions.
|
|
100
|
+
`delivery: "queued"` can coexist with an agent that is still working. Question
|
|
101
|
+
availability alone does not mean its turn has finished.
|
|
102
|
+
|
|
103
|
+
An answer call resolves after native acceptance. The default timeout is 20
|
|
104
|
+
seconds; pass a positive finite `timeoutMs` or an `AbortSignal` as `signal` to
|
|
105
|
+
bound the operation. Concurrent answer calls, human keyboard takeover,
|
|
106
|
+
interruption, shutdown, layout changes, rejected input or uncertain acceptance
|
|
107
|
+
reject with `question_answer_failed`. A submitting Enter is never blindly
|
|
108
|
+
retried. Failures may include a content-free `details.category`: `frame_wait`,
|
|
109
|
+
`adapter`, `terminal_write`, `native_acceptance`, or `aborted`.
|
|
110
|
+
|
|
111
|
+
If no physical write started, the request may remain available for another
|
|
112
|
+
attempt. If input may have reached the CLI without confirmed acceptance, Elwood
|
|
113
|
+
closes the API request once as `unavailable` and removes it from `listQuestions()`.
|
|
114
|
+
Its old ID then rejects with `question_not_found` before writing. Refresh the list
|
|
115
|
+
and terminal view; offer an answer form only for a currently available request.
|
|
116
|
+
|
|
117
|
+
Elwood keeps the uncertain native identity reserved, holding ordinary input until
|
|
118
|
+
native closure, turn end or shutdown. A redraw, changed metadata for the same
|
|
119
|
+
identity or a late write completion cannot restore the answer form. A later
|
|
120
|
+
native acknowledgement releases that reservation without a second closure event.
|
|
121
|
+
Both the physical write and native reservation must settle before ordinary input
|
|
122
|
+
resumes, in either order. An unavailable API request does not mean the CLI is
|
|
123
|
+
ready; the terminal remains available for manual inspection and recovery.
|
|
124
|
+
|
|
125
|
+
Requests and answers are live-only and are not added to Elwood's persisted state.
|
|
126
|
+
Existing raw hooks and transcripts retain their normal contents and can include
|
|
127
|
+
answers. Avoid logging them if your host treats those answers as sensitive.
|
|
128
|
+
|
|
129
|
+
## Native differences
|
|
130
|
+
|
|
131
|
+
Claude's `AskUserQuestion` can group tabbed questions into one request, including
|
|
132
|
+
single choice, checkboxes and alternative text on single-select questions.
|
|
133
|
+
Checkbox questions currently advertise `textMode: "none"`. Elwood submits the group through
|
|
134
|
+
its review page. A caller's direct Claude hook answer keeps precedence and does
|
|
135
|
+
not create a phantom terminal question. The supported automation starts from the
|
|
136
|
+
recognized first question; unsupported partial navigation fails safely. Completion
|
|
137
|
+
hooks must match the native Claude tool-use ID (`tool_use_id`), or the ordered
|
|
138
|
+
question definitions when the hook omits that ID. Unrelated Claude hooks cannot
|
|
139
|
+
acknowledge the request.
|
|
140
|
+
|
|
141
|
+
Codex's modal `request_user_input` groups questions into one acceptance unit.
|
|
142
|
+
Its current editor requires choices for every question; native Other/notes
|
|
143
|
+
supports a custom answer, and the native “None of the above” row is exposed as
|
|
144
|
+
its own option. Notes can accompany a selected choice. Queued
|
|
145
|
+
`request_user_input_async` questions are accepted
|
|
146
|
+
individually, so Elwood exposes one request per independently answerable question,
|
|
147
|
+
even if the agent asked several at once. They can disappear when the native turn
|
|
148
|
+
ends. Elwood does not extend their lifetime or invent a fixed expiry. Native Codex
|
|
149
|
+
metadata must omit `isSecret` or use boolean `false` for every question; unsupported
|
|
150
|
+
or malformed secret flags leave the complete request unavailable for automation.
|
|
151
|
+
|
|
152
|
+
Ordinary prose questions, permission prompts, trust gates, model pickers and login
|
|
153
|
+
flows retain their existing surfaces. Unknown question layouts remain available
|
|
154
|
+
through the terminal view and do not receive guessed answer keys. Native behavior
|
|
155
|
+
was characterized on Claude Code 2.1.305 and Codex 0.163.0; see
|
|
156
|
+
[CLI behavior](cli-behavior.md#native-interactive-question-records-2026-10-20) for evidence.
|
|
157
|
+
|
|
158
|
+
Codex question automation is bounded to 256 pending native requests and 1 MiB
|
|
159
|
+
of candidate metadata; each call is limited to 256 definitions and 1 MiB of
|
|
160
|
+
input metadata. Replay protection retains at most 4,096 retired identities and
|
|
161
|
+
1 MiB of key data. Overflow closes exposed requests as `unavailable` and disables
|
|
162
|
+
question automation until a new session is created. Ordinary text, slash-command,
|
|
163
|
+
loop and login writes remain held until native turn-end evidence. Raw `sendKeys()`
|
|
164
|
+
remains available for manual input and recovery. Unanswered requests have no
|
|
165
|
+
invented expiry deadline.
|
|
166
|
+
|
|
167
|
+
Codex normalizes CRLF and CR to LF and trims Rust Unicode White_Space from the
|
|
168
|
+
ends of submitted text (U+FEFF is retained). Interior whitespace is preserved.
|
|
169
|
+
Modal option labels remain exact; optional notes use the text normalization.
|
|
170
|
+
Elwood checks that long, clipped and multiline text, including text matching an
|
|
171
|
+
editor placeholder, remains in the same question editor. The call resolves only
|
|
172
|
+
after the complete accepted text matches the normalized submitted answer.
|
|
173
|
+
Budget disablement emits one content-free `question_automation_disabled` warning
|
|
174
|
+
and its normalized warning activity. Raw human terminal input remains available.
|
|
175
|
+
|
|
176
|
+
A successful Claude final submission waits for matching native completion even
|
|
177
|
+
after an empty composer appears. An interrupted, unconfirmed answer closes its
|
|
178
|
+
API request as unavailable while retaining the native identity and input hold
|
|
179
|
+
until native closure.
|
|
180
|
+
|
|
181
|
+
Aborting the call does not undo an answer already submitted to Claude.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@with-logic/elwood",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Control interactive agentic coding CLIs (Claude Code, Codex) through real terminal sessions: typed hooks, a unified activity stream, resumable sessions, and a headless CLI.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Logic App, Inc.",
|
package/prd/04-architecture.md
CHANGED
|
@@ -18,6 +18,21 @@ state, warnings, or startup prompts. Elwood MUST send `sendPrompt` and
|
|
|
18
18
|
`sendKeys` input through the headless terminal input path so parent app input,
|
|
19
19
|
programmatic prompts, and low-level keys share one terminal control mechanism.
|
|
20
20
|
|
|
21
|
+
PTY output is submitted to xterm's ordered write buffer without serializing each
|
|
22
|
+
chunk behind a separate timer. Adjacent chunks may be coalesced into bounded
|
|
23
|
+
render batches of at most 64 KiB, flushing sooner when full or after a 4 ms
|
|
24
|
+
scheduling window (subject to host event-loop scheduling); raw byte order is
|
|
25
|
+
preserved, while event chunk boundaries and
|
|
26
|
+
intermediate frames are not guaranteed. Render observers inspect each completed
|
|
27
|
+
batch before subsequent terminal writes are parsed. Real PTY
|
|
28
|
+
output pauses at 1 MiB of unrendered UTF-8 data and resumes below 512 KiB, without
|
|
29
|
+
dropping output. A paused PTY resumes as soon as its child process exits, and is
|
|
30
|
+
not paused again afterwards, so a backlog still draining at exit cannot strand
|
|
31
|
+
unread output behind a pause. The high-water mark can be exceeded by the single
|
|
32
|
+
chunk already delivered; OS/native buffers are outside this accounting. This is
|
|
33
|
+
backpressure, not a total process-memory cap. Disposing the terminal cancels pending render
|
|
34
|
+
notifications and settles outstanding write and `settled()` promises.
|
|
35
|
+
|
|
21
36
|
### 4.2 macOS shell behavior
|
|
22
37
|
|
|
23
38
|
On macOS, Elwood MUST start the PTY in the user's configured shell in a way that
|
|
@@ -97,7 +97,17 @@ tools onboarding prompt, declined through PTY input (Escape) with
|
|
|
97
97
|
automation is unconditional because declining grants nothing and an unanswered
|
|
98
98
|
onboarding prompt permanently wedges a headless session.
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
This non-trust automation has the SAME lifetime as trust automation: it is bound
|
|
101
|
+
to session disposal. Once the session begins closing — `stop()`, `kill()`, or PTY
|
|
102
|
+
exit — no further decline is attempted, and a decline already in flight settles as
|
|
103
|
+
a cancellation. Because the non-trust automation barrier parks on render settlement,
|
|
104
|
+
a write suspended there re-checks disposal when it resumes and abandons the keystroke:
|
|
105
|
+
nothing is written to a terminated PTY, and neither `startup_prompt` nor
|
|
106
|
+
`startup_prompt_write_failed` is emitted after close.
|
|
107
|
+
|
|
108
|
+
`persona` is an optional instruction message for the agent. A persona exceeding
|
|
109
|
+
8 MiB of UTF-8 text rejects startup with `input_queue_full` before preflight,
|
|
110
|
+
state creation, or process spawn. When set within this limit, Elwood
|
|
101
111
|
enqueues it before control returns to the caller, so it is guaranteed to be the
|
|
102
112
|
session's first submitted user message: it is delivered through the standard
|
|
103
113
|
message queue as soon as the session first becomes ready, ahead of any
|