@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
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
## 5.10 Native questions
|
|
2
|
+
|
|
3
|
+
`ElwoodAgentSession`, both raw adapter interfaces, and both lazy session classes
|
|
4
|
+
expose `listQuestions(): Promise<readonly ElwoodQuestionRequest[]>` and
|
|
5
|
+
`answerQuestions(requestId, answers, options?): Promise<void>`. These controls
|
|
6
|
+
bypass the ergonomic turn queue; answering never creates a user turn or finishes
|
|
7
|
+
an existing `send`/`stream`. Lazy controls start the session before delegation.
|
|
8
|
+
|
|
9
|
+
A request has readonly `id`, `agent`, `delivery` (`blocking` or `queued`), and
|
|
10
|
+
ordered `questions`. Each question has readonly `id`, `prompt`, optional `header`,
|
|
11
|
+
`options` (ordered readonly `id`, `label`, optional `description`), `selection`
|
|
12
|
+
(`single`, `multiple`, or `none`), `textMode` (`none`, `alternative`, or
|
|
13
|
+
`additional`), and `supportsSecretInput`. IDs are opaque and scoped to the live process.
|
|
14
|
+
`alternative` permits text instead of options; `additional` permits text alongside
|
|
15
|
+
options. Capabilities describe only supported native input, not model intent.
|
|
16
|
+
|
|
17
|
+
The snapshot lists currently available requests in discovery order and is deeply immutable.
|
|
18
|
+
Redraws and mirrored source records retain identities. A semantic replacement
|
|
19
|
+
closes the old request as unavailable and raises a new ID. No question or answer
|
|
20
|
+
is stored in Elwood session state or restored by Elwood on resume.
|
|
21
|
+
|
|
22
|
+
`question` events carry `elwoodSessionId`, `agent`, `request`, and `phase`
|
|
23
|
+
(`raised` or `closed`). Closed events also carry `reason`: `answered`,
|
|
24
|
+
`cancelled`, or `unavailable`. `answered` requires native acceptance evidence;
|
|
25
|
+
`cancelled` requires native dismissal evidence; withdrawal, turn end, replacement,
|
|
26
|
+
and shutdown use `unavailable` when no stronger evidence exists. Matching
|
|
27
|
+
normalized activities have `kind: "question"`, `source: "terminal"`, the same
|
|
28
|
+
structured event in `question`, and a phase label. They contain request prompts,
|
|
29
|
+
not answer values. Existing raw hook/transcript observations remain unredacted.
|
|
30
|
+
Question activity is telemetry and never ergonomic answer text. The request, event
|
|
31
|
+
and normalized activity agents agree, including in their public discriminated types.
|
|
32
|
+
|
|
33
|
+
Each answer contains `questionId`, optional ordered `optionIds`, and optional
|
|
34
|
+
`text`. Exactly one answer for every question in the selected request is required.
|
|
35
|
+
Unknown/duplicate IDs, unsupported text, multiple options on single-select,
|
|
36
|
+
empty answers, and control-bearing text reject as `invalid_question_answer`
|
|
37
|
+
before any write. The complete validated answer batch is limited to 8 MiB: the sum of UTF-8 bytes
|
|
38
|
+
in its question IDs, selected option IDs and text. JSON syntax and unknown fields
|
|
39
|
+
do not count toward this limit. Malformed UTF-16 is rejected. Multiline text is safely bracketed-pasted. An unknown, closed,
|
|
40
|
+
retired, or previous-process request rejects as `question_not_found` before input.
|
|
41
|
+
|
|
42
|
+
`options` accepts optional positive finite `timeoutMs` (default 20,000) and
|
|
43
|
+
`signal: AbortSignal`. Long deadlines use bounded timer chunks. A single answer transaction owns the physical question
|
|
44
|
+
input lane; overlapping calls reject as `question_answer_failed` before reading
|
|
45
|
+
caller answer or options fields, including stale IDs and invalid batches. When
|
|
46
|
+
no attempt owns the lane, unknown or retired IDs reject as `question_not_found`
|
|
47
|
+
before input. It operates
|
|
48
|
+
even while an ordinary queued writer or ergonomic turn is waiting. Every write
|
|
49
|
+
revalidates current completed native frames, live request ownership and caller
|
|
50
|
+
intervention. Raw keys and interruption revoke the transaction. Timeout,
|
|
51
|
+
cancellation, changed/unsupported layout, rejected input and uncertain acceptance
|
|
52
|
+
reject with content-free `question_answer_failed`; a submitting Enter is never
|
|
53
|
+
blindly retried. Closing the session prevents further writes. Failures may expose
|
|
54
|
+
only fixed `details.category` categories: `frame_wait`, `adapter`, `terminal_write`,
|
|
55
|
+
`native_acceptance`, or `aborted`; they never retain raw exceptions or answer text.
|
|
56
|
+
|
|
57
|
+
A failed attempt that has not started a physical write can remain answerable. If
|
|
58
|
+
input may have reached the CLI and native acceptance is unconfirmed, the API
|
|
59
|
+
request closes once as `unavailable` and disappears from snapshots. Retrying its
|
|
60
|
+
ID rejects as `question_not_found` before input. Elwood retains the native identity
|
|
61
|
+
and holds ordinary automation until correlated native closure, turn end or
|
|
62
|
+
shutdown releases it. Redraws, changed metadata for that same reserved identity
|
|
63
|
+
and late write completion cannot republish or reauthorize the request. Native
|
|
64
|
+
closure releases this reservation silently, without a second question closure.
|
|
65
|
+
Both the physical write and the correlated native reservation must settle before
|
|
66
|
+
ordinary input can resume, whichever settles first. The API closure alone does
|
|
67
|
+
not mean the CLI is ready for ordinary input.
|
|
68
|
+
|
|
69
|
+
Pending requests and native question editors hold ordinary prompt, command,
|
|
70
|
+
loop and login writes. Native lifecycle status remains independent of queued
|
|
71
|
+
question availability. Unknown question layouts are hold-only, observable through
|
|
72
|
+
the existing terminal/attention surfaces, and never receive guessed keys.
|
|
73
|
+
|
|
74
|
+
Claude `AskUserQuestion` hooks supply grouped request metadata. A request is
|
|
75
|
+
published only when its matching native questionnaire is visible; direct caller
|
|
76
|
+
hook answers and denials retain precedence and do not create a phantom pending
|
|
77
|
+
request, even if a matching stale screen is still visible. Initial hook activity
|
|
78
|
+
keeps its existing timing; discovery waits for that exact caller decision and
|
|
79
|
+
then a fresh completed native paint.
|
|
80
|
+
Overlapping Claude hooks retain independent native tool-use identities and exact
|
|
81
|
+
caller outcomes, including out-of-order resolution and completion. A pending
|
|
82
|
+
outcome withholds only its matching candidate; it cannot suppress discovery of an
|
|
83
|
+
unrelated resolved request. Matching `PermissionRequest` mirrors retain the
|
|
84
|
+
original candidate even when their hook IDs differ. A native panel that matches
|
|
85
|
+
multiple independent candidates grants no answer authority; ownership remains
|
|
86
|
+
held until native evidence disambiguates it. ID-less completion requires one
|
|
87
|
+
uniquely matching candidate and cannot retire an ambiguous group.
|
|
88
|
+
The adapter supports the captured single-choice, checkbox, tabbed sequential
|
|
89
|
+
question and review stages, with alternative free text. It requires a recognized
|
|
90
|
+
initial first-question stage; a human-navigated unsupported partial stage rejects
|
|
91
|
+
safely. Only a matching `AskUserQuestion` completion acknowledges the whole
|
|
92
|
+
request. A supplied native completion ID must match the active request; without an ID,
|
|
93
|
+
ordered question definitions must match its prompts, headers, selection modes and
|
|
94
|
+
ordered option labels/descriptions. Unrelated tools or mismatched question
|
|
95
|
+
metadata cannot acknowledge, cancel or retire that request. The standard hook
|
|
96
|
+
timeout is unchanged and never waits for a human answer.
|
|
97
|
+
|
|
98
|
+
Codex native text acceptance normalizes CRLF and CR to LF, then trims Rust
|
|
99
|
+
Unicode White_Space at both ends (U+FEFF is retained); interior whitespace is
|
|
100
|
+
preserved. Queued selected labels are trimmed; modal selected labels remain
|
|
101
|
+
exact and optional notes use the text normalization. Long, clipped, multiline and literal placeholder text is accepted only while
|
|
102
|
+
the submitted text remains in the same native question editor. The complete
|
|
103
|
+
committed native answer must match the submitted answer before success.
|
|
104
|
+
Unsupported or opaque Codex native identities reserve ordinary automation until
|
|
105
|
+
explicit native turn end; raw human terminal input remains available.
|
|
106
|
+
Codex metadata budget overflow emits one content-free `question_automation_disabled`
|
|
107
|
+
warning and normalized warning activity per session, then disables automation.
|
|
108
|
+
|
|
109
|
+
A successful Claude final submission awaits matching native completion through
|
|
110
|
+
a newly empty composer. An interrupted, unconfirmed answer retires the API
|
|
111
|
+
request while retaining its native identity and input hold until native closure;
|
|
112
|
+
a later acknowledgement releases that reservation without another closure event.
|
|
113
|
+
|
|
114
|
+
Question notification failures are contained without changing request state or
|
|
115
|
+
native input holds. The first failed question or companion question-activity
|
|
116
|
+
observer in a live session produces the content-free `question_observer_failed`
|
|
117
|
+
warning and normalized warning activity specified in [§5.4](5.4-events.md).
|
|
@@ -145,7 +145,24 @@ arrives (a missing or failed hook bridge) must not starve readiness forever, so
|
|
|
145
145
|
initial readiness fires no later than a fixed deadline after the first rendered
|
|
146
146
|
frame even when neither a hook nor (on cold start) any composer signal arrives.
|
|
147
147
|
Subsequent turn readiness comes from
|
|
148
|
-
completion signals such as an unblocked `Stop` hook.
|
|
148
|
+
completion signals such as an unblocked `Stop` hook. A Stop captures the current
|
|
149
|
+
queue-backed caller submission before notifying observers or invoking handlers. If a newer
|
|
150
|
+
`sendPrompt`, `sendMessage`, or `sendGuidance` prompt is physically submitted while
|
|
151
|
+
that Stop is being handled, the older Stop
|
|
152
|
+
MUST NOT mark the newer submission ready or release its queued successor.
|
|
153
|
+
Hook-observer failure diagnostics publish before this final generation check and
|
|
154
|
+
readiness transition, so their callbacks share the same submission boundary.
|
|
155
|
+
Retained rendered work, idle, or interrupt frames from before that physical
|
|
156
|
+
submission MUST NOT complete it. Rendered idle completion requires fresh work
|
|
157
|
+
after submission; a fresh interrupt banner absent at submission still completes
|
|
158
|
+
without a working footer. A terminal with no received output has no prior banner;
|
|
159
|
+
an incomplete or unverified prior frame does not establish absence. Guidance can
|
|
160
|
+
steer an existing turn, but receives the
|
|
161
|
+
same conservative rendered-frame boundary.
|
|
162
|
+
Immediate input remains available inside Stop callbacks, including a handler
|
|
163
|
+
that awaits `sendPrompt()`; waiting for Stop completion must not deadlock it.
|
|
164
|
+
Blocked outcomes still retain the active turn, and failed-open callbacks use the
|
|
165
|
+
same submission boundary as an ordinary unblocked outcome. Queued messages are
|
|
149
166
|
submitted in FIFO order, one message per ready transition, so back-to-back calls
|
|
150
167
|
do not accidentally paste multiple user turns into one active agent prompt. A
|
|
151
168
|
queued `sendMessage` promise resolves when that message has been written to the
|
|
@@ -158,12 +175,31 @@ acceptance before an idle `ready` transition may complete a turn. A matching
|
|
|
158
175
|
closes the cold-start deadline race: under load, Codex may repaint a boot spinner
|
|
159
176
|
and composer after the deadline-released paste, swallow that paste, and otherwise
|
|
160
177
|
look exactly like a completed empty turn. When `ready` returns without positive
|
|
161
|
-
acceptance,
|
|
178
|
+
acceptance, and no awaited input writer still owns native recovery, Elwood waits
|
|
179
|
+
the normal no-oracle quiet window and replays the same
|
|
162
180
|
submission at the now-idle composer, at most twice. A still-unaccepted turn fails
|
|
163
181
|
with `wait_timeout`; it never reports a false empty success. A positive acceptance
|
|
164
182
|
arriving during the quiet window cancels recovery and lets the observed `ready`
|
|
165
183
|
settle normally.
|
|
166
184
|
|
|
185
|
+
The per-session control queue accepts at most **1,024 outstanding operations**
|
|
186
|
+
and **8 MiB (8 × 1,024 × 1,024 bytes) of aggregate UTF-8 input text**, including
|
|
187
|
+
its active physical operation. This shared limit covers queued messages, prompts,
|
|
188
|
+
guidance, commands, exclusive controls, and loop-origin submissions. An admission
|
|
189
|
+
that would exceed either limit rejects with `input_queue_full` before attachment,
|
|
190
|
+
admission preparation, or terminal input; existing operations keep their order.
|
|
191
|
+
Text is measured before paste sanitization. Image clones retain their separate
|
|
192
|
+
§5.3 budget. Cancelling a waiting operation or physically settling an active one
|
|
193
|
+
releases its reservation; cancelling an active write does not release capacity
|
|
194
|
+
before that write settles. Physical loop completion releases capacity before
|
|
195
|
+
`fired` observers run, while retaining queue ordering through the following
|
|
196
|
+
running notification. Session close rejects waiting operations and releases
|
|
197
|
+
their reservations; new calls on a closed session still reject with
|
|
198
|
+
`session_not_running`, even if the queue was full. Direct `sendKeys`, terminal
|
|
199
|
+
input, and interrupt remain available outside this queue. Capacity is a rejection
|
|
200
|
+
boundary, not another unbounded waiting list. A loop whose admission is rejected
|
|
201
|
+
follows the existing failed-submission retry/warning policy (§5.9), never `fired`.
|
|
202
|
+
|
|
167
203
|
`sendGuidance` is the adapter-neutral intervention API. Before the session has
|
|
168
204
|
ever reached semantic readiness, and while a blocking dialog is visible, it has
|
|
169
205
|
the same readiness-safe behavior as `sendMessage`. During a real running turn
|
|
@@ -179,12 +215,118 @@ write can be consumed by the paste boundary — leaving the prompt staged in
|
|
|
179
215
|
the composer, never submitted (long multi-line prompts such as personas hit
|
|
180
216
|
this reliably). Elwood therefore writes the bracketed paste and the
|
|
181
217
|
submitting Enter as separate PTY writes, with the Enter following after a
|
|
182
|
-
short settle delay, and then
|
|
218
|
+
short settle delay, and then observes the rendered
|
|
183
219
|
screen: while the composer still shows staged content (Claude's
|
|
184
220
|
"[Pasted text" chip; for Codex the paste's final line still in the
|
|
185
|
-
composer),
|
|
186
|
-
|
|
187
|
-
|
|
221
|
+
composer), ordinary submissions may re-send Enter at most twice, over at most four observation
|
|
222
|
+
attempts spaced one second apart after the first Enter. Only the completed,
|
|
223
|
+
visible, idle composer at the native cursor can establish staged text; matching
|
|
224
|
+
transcript text is insufficient. Working, hidden, incomplete, and unknown frames
|
|
225
|
+
withhold Enter and consume an observation attempt, not a physical retry. A fresh
|
|
226
|
+
positive empty-input observation retires that submission's recovery permanently;
|
|
227
|
+
an empty frame retained from before its paste does not. Dialogs withhold recovery
|
|
228
|
+
under the same observation bound. This bound does not shorten the initial
|
|
229
|
+
submission's dialog wait.
|
|
230
|
+
|
|
231
|
+
Working indicators alone cannot distinguish accepted work from startup or resume
|
|
232
|
+
replay. A later verified idle staged draft may therefore recover, whether or not
|
|
233
|
+
initial readiness has fired. Recovery does not infer acceptance from optimistic
|
|
234
|
+
status or permanently remember a working indicator. A cached staged frame is not
|
|
235
|
+
proof that the native CLI has not accepted the submission. Recovery therefore
|
|
236
|
+
requires a completed native render received after the most recent attempted
|
|
237
|
+
Enter, including a failed recovery write; moving the viewport or resizing alone
|
|
238
|
+
is not a fresh render. This applies to text and image-only or whitespace drafts.
|
|
239
|
+
Image chips qualify only inside the visible, idle, cursor-owned composer.
|
|
240
|
+
|
|
241
|
+
Native `user_message` activity permanently revokes background recovery captured
|
|
242
|
+
before a submission's paste and first Enter, including activity received while
|
|
243
|
+
that physical Enter is pending. Optimistic caller-submitted status does not
|
|
244
|
+
revoke recovery. This conservatively withholds further Enter; it does not prove
|
|
245
|
+
correlation to a particular prompt, change the first-write promise, or release
|
|
246
|
+
composer cleanup ownership.
|
|
247
|
+
|
|
248
|
+
Initial and replay ergonomic submissions retain their queue slot and staged-draft
|
|
249
|
+
cleanup ownership beyond the first physical Enter. They release only after a
|
|
250
|
+
positive empty native input frame whose completed PTY output arrived after that
|
|
251
|
+
Enter; changed geometry or a new empty-frame token without new output is not
|
|
252
|
+
acceptance. Missing staged text, blank/partial output, and native submission
|
|
253
|
+
activity alone cannot release a retained image or whitespace-only draft. Native
|
|
254
|
+
activity revokes recovery Enter authority while the empty-input wait continues.
|
|
255
|
+
Whitespace-only retry recognition is supported for Codex’s captured live advanced-cursor
|
|
256
|
+
layout. Claude has no whitespace-only retry guarantee: an unverifiable whitespace
|
|
257
|
+
draft remains cancellably held until positive empty-input acceptance or termination.
|
|
258
|
+
Image-bearing whitespace submissions on both adapters retain image ownership.
|
|
259
|
+
These submissions reuse the same staged-input, dialog, render-progress and
|
|
260
|
+
physical-retry guards as ordinary recovery. Acceptance is checked immediately after
|
|
261
|
+
Enter and on completed native render notifications, without ordinary recovery’s
|
|
262
|
+
four-observation or one-second observation ceiling. Unchanged ambiguous or blocked
|
|
263
|
+
frames do not cause recurring scans or timers; they retain cancellable ownership.
|
|
264
|
+
Only fresh staged-input evidence schedules a paced retry or final observation.
|
|
265
|
+
Pending render observations are shared, and timed-out or cancelled observers are
|
|
266
|
+
removed without adding another reaction to the same pending render promise.
|
|
267
|
+
After at most two recovery Enters,
|
|
268
|
+
a fresh still-staged observation rejects with `wait_timeout`; the final Enter
|
|
269
|
+
must be independently observed before acceptance or exhaustion. Ambiguous or
|
|
270
|
+
blocked observations remain cancellable without a whole-turn deadline. Raw input
|
|
271
|
+
revokes both automated retry and cleanup authority. While an initial or replay
|
|
272
|
+
ergonomic submission awaits empty-input confirmation, raw takeover rejects it
|
|
273
|
+
with `wait_timeout` and a submission-specific message; model picker operations
|
|
274
|
+
retain their `model_automation_failed` diagnostic. Cancellation and session
|
|
275
|
+
closure retain a pending physical write until it settles, then use the existing
|
|
276
|
+
cleanup/error rules. Raw control submission promises retain their first-Enter
|
|
277
|
+
contract; ergonomic consumer and physical-input lifetimes are specified in §5.8.
|
|
278
|
+
|
|
279
|
+
Queued input MUST NOT be written into a screen Elwood has not observed (C-API-56).
|
|
280
|
+
Terminal rendering is asynchronous (§4.1), so a blocking dialog can be received
|
|
281
|
+
from the PTY before any rendered frame shows it. Before writing a queued paste,
|
|
282
|
+
command text, submitting Enter, or recovery Enter, Elwood renders and observes
|
|
283
|
+
every PTY byte it has already received, and only then evaluates the
|
|
284
|
+
blocking-dialog hold; the write follows that decision before any further PTY
|
|
285
|
+
output is delivered. Output received while that observation is in progress is
|
|
286
|
+
part of it. When the received output cannot be observed — the PTY does not go
|
|
287
|
+
quiet within one second, or any render has failed (no later output can prove the
|
|
288
|
+
terminal model complete again) — the write is withheld
|
|
289
|
+
exactly as if a dialog were visible and re-attempted; input is never written
|
|
290
|
+
through an unobserved screen.
|
|
291
|
+
|
|
292
|
+
The same rule binds Elwood's own NON-TRUST automated startup writes — the Codex
|
|
293
|
+
update skip and its retries, and the Claude browser-tools decline. Each observes
|
|
294
|
+
everything received and re-checks the settled frame before writing, so neither
|
|
295
|
+
can reach a trust dialog that arrived while the previous screen was still
|
|
296
|
+
rendering. A withheld automated write is silent: it is not a write failure,
|
|
297
|
+
emits no `startup_prompt` activity and no warning, and the prompt stays
|
|
298
|
+
answerable on a later frame while the session remains live. Claude browser-tools
|
|
299
|
+
automation is permanently cancelled at disposal: no later retry, success activity,
|
|
300
|
+
or write-failure warning is emitted (C-CLAUDE-22). The trust responder is exempt from this veto,
|
|
301
|
+
because answering a trust dialog is precisely its role. Cancellation
|
|
302
|
+
interrupts the wait. The compact recovery Enter and the cancellation cleanup keys
|
|
303
|
+
follow the same rule, and the compact recovery Enter is cancelled as soon as a
|
|
304
|
+
later queued operation dispatches, because the composer then belongs to it.
|
|
305
|
+
Raw input through `sendKeys`, `terminal.sendInput`, or `xterm.input` also cancels
|
|
306
|
+
remaining recovery Enters for the staged paste: the caller now owns that draft.
|
|
307
|
+
`sendKeys` remains the explicit raw-input escape hatch and
|
|
308
|
+
does not wait.
|
|
309
|
+
|
|
310
|
+
A failed or cancelled queued submission retains ownership of its staged draft
|
|
311
|
+
until cleanup or raw input. Cleanup never writes through an unsafe frame;
|
|
312
|
+
if held, it is deferred until the next queued operation, before that operation
|
|
313
|
+
attaches images or writes input. This includes cancellation after attachment
|
|
314
|
+
succeeds but before text submission. A rejected cleanup write retains the hold
|
|
315
|
+
and rejects the successor with `wait_timeout`; it cannot append to the stale draft.
|
|
316
|
+
A physical clear write is not confirmation: cleanup requires a fresh completed
|
|
317
|
+
native empty-composer observation within one second. An unchanged pre-clear
|
|
318
|
+
frame, unsafe observation, or expiry retains the draft for a later safe attempt.
|
|
319
|
+
Raw input through `sendKeys`, `terminal.sendInput`, or `xterm.input` revokes this
|
|
320
|
+
cleanup authority: the caller now owns the draft, and subsequent queued input
|
|
321
|
+
has its ordinary semantics. Later failed staging cannot reacquire cleanup authority
|
|
322
|
+
over caller-owned text; a successful submitting Enter establishes a new cleanup
|
|
323
|
+
baseline only if no raw input intervened during that submission. Cleanup precedes
|
|
324
|
+
caller-turn publication and readiness consumption, so a failed clear leaves those
|
|
325
|
+
unchanged. Exclusive model/login deadlines include the deferred cleanup wait,
|
|
326
|
+
without revoking an already-started operation’s authority to cancel its own dialog.
|
|
327
|
+
Closing drops deferred cleanup without waiting for a
|
|
328
|
+
dialog or writing later cleanup keys. Clipboard restoration does not wait for
|
|
329
|
+
this deferred composer cleanup.
|
|
188
330
|
|
|
189
331
|
Message text is DATA, never terminal control. `sendPrompt`, `sendMessage`, and
|
|
190
332
|
`sendGuidance` submit caller- or model-controlled text as the content of a
|
|
@@ -226,13 +368,17 @@ rather than a raw type error.
|
|
|
226
368
|
Image attachment is CONFIRMED, never assumed. For each image Elwood waits for the
|
|
227
369
|
CLI's `[Image #N]` chip to appear in the composer region; if the chip is not
|
|
228
370
|
observed within the per-image confirmation timeout (10 s), or the OS clipboard
|
|
229
|
-
cannot be read or written,
|
|
371
|
+
cannot be read or written, or terminal rendering permanently fails, the call
|
|
372
|
+
rejects with `image_attach_failed` and Elwood
|
|
230
373
|
submits NO text and attaches no further images. A confirmation timeout therefore
|
|
231
374
|
surfaces (e.g. on TUI-wording drift) rather than silently degrading to a text-only
|
|
232
375
|
turn. A session that TERMINATES mid-attach rejects the call with
|
|
233
376
|
`session_not_running`, like any other queued operation. Chip confirmation is
|
|
234
377
|
scoped to the composer region so unrelated on-screen text containing a literal
|
|
235
|
-
`[Image #N]` cannot spoof it.
|
|
378
|
+
`[Image #N]` cannot spoof it. The baseline chip count is read only after received
|
|
379
|
+
output has settled, immediately before the image key is sent. A permanent render
|
|
380
|
+
failure rejects the attachment without waiting for session closure; Codex restores
|
|
381
|
+
its clipboard text and releases the clipboard lock before that rejection settles.
|
|
236
382
|
|
|
237
383
|
The attach path is adapter-specific because the two CLIs ingest images
|
|
238
384
|
differently, and this is a version-coupled TUI behavior verified against real
|
|
@@ -274,10 +420,9 @@ Third, session close during an in-flight attach rejects the operation and blocks
|
|
|
274
420
|
the text write, but does not join the attach's temp-cleanup and clipboard-restore
|
|
275
421
|
finalizers; on an abrupt teardown those may not complete before process exit
|
|
276
422
|
(clipboard restore is already best-effort, and temp files fall to OS reaping).
|
|
277
|
-
Fourth,
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
turn, but it does not run an adapter-specific transactional confirm-and-restore
|
|
423
|
+
Fourth, failed-attach cleanup follows the owned, deferred cleanup rule above.
|
|
424
|
+
The clear uses kill-to-line-start plus kill-to-line-end, but does not run an
|
|
425
|
+
adapter-specific transactional confirm-and-restore
|
|
281
426
|
of the exact prior composer baseline; a partially-staged draft that those keys do
|
|
282
427
|
not fully clear could still carry over (mitigated because a caller does not
|
|
283
428
|
interleave submissions on one session). Fifth, chip confirmation identifies the
|
|
@@ -305,8 +450,9 @@ adapter also has a documented interrupt end banner (Claude renders
|
|
|
305
450
|
"⎿ Interrupted", Codex renders "Conversation interrupted") whose appearance
|
|
306
451
|
fires the turn-end transition even when the working token was never visible.
|
|
307
452
|
Together the sources cover every width. Turn start is a rendered-state signal:
|
|
308
|
-
the on-screen working token where it fits, plus the OSC window-title
|
|
309
|
-
spinner (C-TURN-05)
|
|
453
|
+
the on-screen working token where it fits, plus the OSC window-title working
|
|
454
|
+
spinner (C-TURN-05): the braille range on both adapters and Claude's observed
|
|
455
|
+
`◐ ` prefix. This signal is width-independent and reveals a running turn even
|
|
310
456
|
when the footer token is elided; a caller `sendMessage`/`sendPrompt` also moves
|
|
311
457
|
the session to `running`. Normal completion comes from the `Stop` hook, and
|
|
312
458
|
interrupts from the working-token edge on wide screens or the end banner
|
|
@@ -404,6 +550,84 @@ or the Codex model slug, such as `gpt-5.4`). `isCurrent` reflects the model the
|
|
|
404
550
|
session is using now; `isDefault` reflects the CLI's configured default. When
|
|
405
551
|
Codex renders only a `(current)` marker, that row is also the default.
|
|
406
552
|
|
|
553
|
+
Model operations hold an exclusive session-input queue slot for the entire
|
|
554
|
+
open/navigate/apply-or-cancel flow, including waiting for the dialog to clear.
|
|
555
|
+
Concurrent model operations and normal submissions cannot interleave writes:
|
|
556
|
+
they are dispatched only after the operation settles. The queue wait and picker
|
|
557
|
+
operation share the supplied `timeoutMs` budget, so an operation still queued at
|
|
558
|
+
its deadline rejects with `model_automation_failed` without opening a picker.
|
|
559
|
+
The deadline and termination abort pending navigation before any further write.
|
|
560
|
+
|
|
561
|
+
When an operation fails with its model dialog still open, Elwood cancels it before
|
|
562
|
+
releasing the slot, within one additional second. Cancelling a follow-up stage
|
|
563
|
+
(Codex's reasoning level, Claude's cache warning) returns the CLI to the picker, so
|
|
564
|
+
each stage receives one Escape; an Escape already written for a stage is never
|
|
565
|
+
repeated, and termination stops cleanup before any further write. A dialog still
|
|
566
|
+
visible after that second keeps every queued writer held (messages, commands,
|
|
567
|
+
`/login`) while it remains; raw `sendKeys` stays available for manual recovery.
|
|
568
|
+
A dialog can also paint after the failure: a submitted `/model` whose picker had
|
|
569
|
+
not rendered can still open it, and an accepted stage can still paint its follow-up.
|
|
570
|
+
In those cases Elwood keeps the slot for the same bounded second and cancels a
|
|
571
|
+
dialog that appears in it; when none appears the slot is released at the bound. A
|
|
572
|
+
dialog that repaints after clearing is a new dialog and receives its own Escape.
|
|
573
|
+
Model picker text already visible when the operation acquires the slot (a human's
|
|
574
|
+
dialog, or a transcript quoting one) is not Elwood's: the operation rejects with
|
|
575
|
+
`model_automation_failed` without writing, cancelling, or holding input.
|
|
576
|
+
A partially painted Claude switch dialog (its title without its options yet) holds
|
|
577
|
+
input like a complete one but is never sent a key, because a cache warning and a
|
|
578
|
+
`PreModelSwitch` hook confirmation share that shell; `setModel` likewise does not
|
|
579
|
+
settle while one is on screen. Nor may it settle while a COMPLETE confirmation of
|
|
580
|
+
either kind is on screen: a hook's confirmation is the human's to answer, and the
|
|
581
|
+
model has not changed until they do, so reporting success there would report a
|
|
582
|
+
change that may never happen.
|
|
583
|
+
Every picker wait and write MUST be gated on the operation's own dialog, not on a
|
|
584
|
+
bare header match: a header alone is untrusted candidate evidence that transcript
|
|
585
|
+
or agent output can satisfy, so navigating or cancelling on it could send keys into
|
|
586
|
+
a running turn, the real composer, or another prompt. Cleanup's Escape is decided
|
|
587
|
+
on everything RECEIVED, not the last rendered frame, and is withheld when the
|
|
588
|
+
screen cannot be vouched for. A single clear frame does not end cleanup once a
|
|
589
|
+
dialog has been seen, because a repainting picker is briefly unrecognizable.
|
|
590
|
+
When session termination races a Codex `setModel`, the call rejects at once rather
|
|
591
|
+
than waiting out the exit bound, and the exit barrier is consulted on every outcome,
|
|
592
|
+
because the question is whether the dying CLI can still write `config.toml` — not
|
|
593
|
+
whether Elwood's automation succeeded. Since that rejection settles the call before
|
|
594
|
+
the restore runs, a restore failure afterwards MUST still be reported as a warning
|
|
595
|
+
rather than swallowed, or the temporary model silently stays the user's default.
|
|
596
|
+
A model dialog nobody Elwood opened — a human who typed `/model` themselves — is never
|
|
597
|
+
Elwood's to drive, but a write that is not part of a picker transaction (`/login`
|
|
598
|
+
recovery) MUST still stand off it while it is visible, because Enter applies its
|
|
599
|
+
highlighted row and Escape discards the human's state. That guard applies to the WRITE
|
|
600
|
+
only; it MUST NOT suppress readiness, which would deadlock Elwood's own picker whose
|
|
601
|
+
dialog is on screen by design.
|
|
602
|
+
Before dispatching `/model`, Elwood revalidates that no foreign picker is visible.
|
|
603
|
+
Public raw input through `sendKeys`, terminal `sendInput`, or `xterm.input` revokes
|
|
604
|
+
the active picker operation: it rejects with `model_automation_failed` and sends
|
|
605
|
+
no further navigation or cleanup keys into the human-owned generation. A foreign
|
|
606
|
+
picker hold survives partial repaints and clears only after five consecutive
|
|
607
|
+
positive native-composer observations, never from an empty or unrecognized frame.
|
|
608
|
+
Only the bottom-most region of the viewport is a model dialog: dialog text with a
|
|
609
|
+
conversation or composer row below it is transcript content (a reply quoting a
|
|
610
|
+
picker), which Elwood neither cancels nor holds on. Unrelated dialogs, including a
|
|
611
|
+
`PreModelSwitch` hook confirmation, are left for the caller.
|
|
612
|
+
Codex retains its process-wide configuration transaction lock, but acquires it INSIDE
|
|
613
|
+
the session queue slot: claiming the lock first would let a following submission
|
|
614
|
+
dispatch while the switch waited on another session's transaction, sending under the
|
|
615
|
+
old model. When the
|
|
616
|
+
session terminates during a Codex `setModel`, the call rejects at once but the
|
|
617
|
+
`config.toml` restore, and with it the configuration lock, waits until the CLI
|
|
618
|
+
process has exited (at most five seconds), because a dying CLI can still persist
|
|
619
|
+
the selection it had confirmed. The barrier MUST be the observed process exit:
|
|
620
|
+
a terminal session status (`stopped`, `killed`, `torn_down`) is recorded by the
|
|
621
|
+
shutdown path itself and is reached even when termination did not take, so it is
|
|
622
|
+
not proof the CLI can no longer write. The five-second bound is best-effort — it
|
|
623
|
+
prevents a process that never exits from holding the lock, and after it elapses
|
|
624
|
+
the restore proceeds without a confirmed exit. The barrier applies whether the
|
|
625
|
+
switch succeeded or failed, since a successful switch racing termination leaves
|
|
626
|
+
the same dying process able to write. A `setModel` still WAITING for the
|
|
627
|
+
configuration lock when its session closes MUST reject promptly with
|
|
628
|
+
`session_not_running` rather than wait out the transaction ahead of it, and MUST
|
|
629
|
+
NOT then apply its switch when the lock frees.
|
|
630
|
+
|
|
407
631
|
`listModels` opens the picker, parses the rendered rows, cancels the picker
|
|
408
632
|
with Escape, and MUST leave the session's model unchanged. `setModel` selects
|
|
409
633
|
the requested row through cursor navigation. Elwood itself MUST NOT persist a
|
|
@@ -432,7 +656,10 @@ live session, which keeps the switched model because Codex reads its config
|
|
|
432
656
|
at launch. When the compare fails — for example the user edited `config.toml`
|
|
433
657
|
concurrently — Elwood MUST NOT clobber the file; it leaves the CLI's write in
|
|
434
658
|
place and emits the `codex_default_model_persisted` warning so the deviation
|
|
435
|
-
is surfaced rather than silent.
|
|
659
|
+
is surfaced rather than silent. Raw input taking over an active picker also
|
|
660
|
+
revokes restoration authority: Elwood leaves any resulting config change in place
|
|
661
|
+
and emits that same warning with a content-free takeover explanation. It must
|
|
662
|
+
not restore its snapshot over a model choice the human may have just made. Elwood confirms the CLI's own default
|
|
436
663
|
reasoning level for the chosen Codex model. The whole snapshot/apply/restore
|
|
437
664
|
transaction holds a process-wide lock so two concurrent `setModel` switches in
|
|
438
665
|
the SAME Elwood process cannot interleave and leave the wrong default. This lock
|
|
@@ -525,6 +752,14 @@ the promise rejects with `session_not_running`. Hook and activity events for
|
|
|
525
752
|
`PreCompact`/`PostCompact` flow to the parent app exactly as for any other
|
|
526
753
|
hook.
|
|
527
754
|
|
|
755
|
+
A slash-command popup can swallow the Enter that submits `/compact`. When no
|
|
756
|
+
`PreCompact` hook has arrived after three seconds (or half of a shorter
|
|
757
|
+
`timeoutMs`), Elwood sends one recovery Enter. That Enter is a queued write like
|
|
758
|
+
any other: it waits behind a model operation that owns the input queue and is
|
|
759
|
+
written once the queue is released, it is dropped when compaction settles or the
|
|
760
|
+
session terminates first, and it is withheld while a blocking dialog or any model
|
|
761
|
+
dialog (one that survived cleanup, or a human's) is visible.
|
|
762
|
+
|
|
528
763
|
`ElwoodSessionStatus` values are `starting`, `running`, `ready`, `blocked`,
|
|
529
764
|
`stopped`, `exited`, `killed`, and `torn_down`.
|
|
530
765
|
|
|
@@ -537,19 +772,39 @@ in `running`. Adapter readiness signals move the session back to `ready`.
|
|
|
537
772
|
|
|
538
773
|
`blocked` reports that the wrapped agent is waiting on a human decision it
|
|
539
774
|
cannot answer itself: a tool permission or approval dialog, or a workspace
|
|
540
|
-
trust prompt Elwood was not authorized to answer (`autotrust: false`)
|
|
775
|
+
trust prompt Elwood was not authorized to answer (`autotrust: false`), or an
|
|
776
|
+
authorized trust gate whose bounded safe automation could not finish (§5.4).
|
|
541
777
|
Blocked detection derives from the rendered screen via the adapter's
|
|
542
|
-
documented screen-fact rules.
|
|
778
|
+
documented screen-fact rules. Native Claude questionnaires are blocking even
|
|
779
|
+
when their question copy contains composer-like carets, header-like rows, fences,
|
|
780
|
+
or navigation-footer text. A completed questionnaire quoted above a later native
|
|
781
|
+
composer does not provide questionnaire-blocking evidence (C-ATTN-05).
|
|
782
|
+
A session enters `blocked` from any live status
|
|
543
783
|
(`running` or `ready`) when a blocking dialog appears — an adapter may finish
|
|
544
784
|
its working indicator before the dialog settles, so the block can follow a
|
|
545
|
-
`ready` beat
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
785
|
+
`ready` beat. Verified clearance settles directly to `running` when the same
|
|
786
|
+
frame shows ongoing work, keeping queued messages suspended without an
|
|
787
|
+
intermediate `ready` event; it settles to `ready` only when a positive idle
|
|
788
|
+
composer is visible. A caret alone is not positive idle evidence: clearance
|
|
789
|
+
requires the adapter's verified native composer and current rendered frame. A
|
|
790
|
+
partial or blank repaint retains the pending block and input hold. Initial readiness requested behind a dialog remains deferred until
|
|
791
|
+
a positive idle composer frame. Working clearance synchronizes resumed turn
|
|
792
|
+
detection so the next idle composer ends that turn; an older interrupt banner
|
|
793
|
+
on that same working clearance frame does not end the newly resumed work. If a caller prompt was held behind the dialog, its
|
|
794
|
+
physical submission restores `running` before the queue can release a follow-up;
|
|
795
|
+
this does not repeat caller intent or recurring-loop bookkeeping. Prompts Elwood answers automatically
|
|
796
|
+
(startup prompt automation, or workspace trust with `autotrust: true`) do not
|
|
797
|
+
produce a `blocked` transition when automation succeeds within its bound. Trust
|
|
798
|
+
automation that cannot safely finish falls back to a recoverable block after
|
|
799
|
+
five seconds (§5.4); raw input can recover it and safe automation re-arms on a
|
|
800
|
+
new valid layout or dialog generation. The block lasts until verified clearance. Terminal statuses absorb blocking
|
|
549
801
|
evidence. On the transition into `blocked`, Elwood also emits an `activity`
|
|
550
802
|
event with `source: "terminal"`, `kind: "attention"`, a label naming the
|
|
551
803
|
matched screen-fact rule ids, and text describing that the agent is waiting on
|
|
552
|
-
a human decision.
|
|
804
|
+
a human decision. While the session remains blocked, a changed set of blocking
|
|
805
|
+
rule ids emits another attention activity with the current ids, without submitting
|
|
806
|
+
another blocking status decision. Repainting the
|
|
807
|
+
same rule set (including a different ordering) emits no duplicate.
|
|
553
808
|
|
|
554
809
|
`statusDecisions()` returns a live-only log of at most the 50 most recent
|
|
555
810
|
status decisions, oldest first. Each `ElwoodStatusDecision` records the evidence that
|
|
@@ -601,8 +856,12 @@ renderers. The handle also exposes terminal-control methods used internally
|
|
|
601
856
|
(`sendInput`, `writeOutput`, `resize`, `settled`, and `dispose`); callers should
|
|
602
857
|
prefer the session-level `sendPrompt`, `sendMessage`, `sendKeys`, `resize`,
|
|
603
858
|
`stop`, `kill`, and `teardown` APIs unless they are building advanced terminal
|
|
604
|
-
integrations. Consumers that need diagnostics may await `terminal.settled()`
|
|
605
|
-
|
|
859
|
+
integrations. Consumers that need diagnostics may await `terminal.settled()` —
|
|
860
|
+
which covers output received while waiting and never rejects — and read
|
|
861
|
+
`terminal.snapshot()`. The read-only boolean property `terminal.renderFailed`
|
|
862
|
+
becomes true when a render fails and stays true: the lost output cannot be
|
|
863
|
+
restored and no later output proves a complete redraw, so snapshots may be stale
|
|
864
|
+
and queued input stays withheld (raw `sendKeys` and a restart remain available). Visual terminal renderers SHOULD render the raw
|
|
606
865
|
`terminal:data` byte stream instead of repainting from snapshots.
|
|
607
866
|
`sendInput` resolves after input has been forwarded to the PTY and rejects when
|
|
608
867
|
that forwarding fails.
|
|
@@ -626,6 +885,14 @@ clears its loop definitions. `teardown` removes
|
|
|
626
885
|
Elwood-owned state for the session and must not remove Claude-owned transcripts,
|
|
627
886
|
auth, or project/user settings that Elwood did not create.
|
|
628
887
|
|
|
888
|
+
Claude transcript activity and diagnostic delivery already in progress must finish
|
|
889
|
+
before terminal exit and terminal lifecycle status, including when a listener
|
|
890
|
+
synchronously stops the session. Deferred startup diagnostics obey the same order.
|
|
891
|
+
When the PTY exit has already been observed, `stop`, `kill`, and `teardown` invoked
|
|
892
|
+
from final-flush listeners join that finalization before shutdown cleanup, without
|
|
893
|
+
signaling the exited PTY or waiting for another exit notification. Terminal exit,
|
|
894
|
+
terminal status, and natural-exit reaping occur once even if PTY callbacks reenter.
|
|
895
|
+
|
|
629
896
|
`stop`, `kill`, and `teardown` MUST reap the full PTY process tree, not only the
|
|
630
897
|
PTY leader. The adapter CLI spawns helper subprocesses that are descendants of
|
|
631
898
|
the PTY leader — notably the per-session hook bridge (`node hook-bridge.mjs`) the
|
|
@@ -656,3 +923,5 @@ before writing; only the existing first-party cache-confirmation policy may own
|
|
|
656
923
|
its specific blocking screen. Compaction recovery Enter must also respect the dialog guard. Explicit caller
|
|
657
924
|
`sendKeys` and narrowly scoped login/picker confirmation automation retain their
|
|
658
925
|
existing contracts. C-API-23/24/37 and C-ATTN-01.
|
|
926
|
+
|
|
927
|
+
Native question snapshots and answering are shared controls; see [§5.10](5.10-questions.md).
|