@with-logic/elwood 0.1.3 → 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 +383 -2
- package/CONTRIBUTING.md +29 -18
- package/README.md +32 -7
- 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 +2 -1
- 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/models/settings.d.ts +2 -0
- package/dist/cli/models/settings.d.ts.map +1 -1
- package/dist/cli/request/index.d.ts.map +1 -1
- package/dist/cli/request/index.js +1 -0
- package/dist/cli/request/index.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 +1 -0
- 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 +4 -0
- package/docs/cli.md +15 -9
- 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 +13 -7
- package/prd/13-latitude.md +89 -0
- package/prd/14-conformance.md +84 -30
- package/prd/16-maintainer-review.md +75 -0
- package/prd/README.md +1 -0
package/prd/05-api/5.4-events.md
CHANGED
|
@@ -61,12 +61,36 @@ populate the normalized metadata fields whenever those values are present in the
|
|
|
61
61
|
source hook, transcript item, or lifecycle event. Adapter-specific `raw` remains
|
|
62
62
|
available for deep debugging and unsupported future payloads.
|
|
63
63
|
|
|
64
|
+
Codex assistant messages with explicit `phase: "commentary"` in committed
|
|
65
|
+
`response_item` message records produce `kind: "assistant_progress"`,
|
|
66
|
+
`label: "assistant"`, and untruncated normalized `text`. String content and
|
|
67
|
+
array-form `output_text` blocks are supported; array text is concatenated in
|
|
68
|
+
order. Analysis/unknown phases and non-output-text blocks are excluded from this
|
|
69
|
+
user-facing channel. Final-answer and legacy unphased assistant messages retain
|
|
70
|
+
their `assistant_message` behavior. Progress carries the usual session identity,
|
|
71
|
+
transcript path, optional native turn ID, and raw source item.
|
|
72
|
+
|
|
73
|
+
Response items are the canonical source of commentary. Legacy `agent_message`
|
|
74
|
+
records with an explicit non-final phase remain raw transcript observations
|
|
75
|
+
with an `other` summary/activity and no normalized text; their mirror must not
|
|
76
|
+
publish a second progress message or a premature final answer. Unphased and
|
|
77
|
+
`final_answer` legacy agent messages retain existing behavior.
|
|
78
|
+
|
|
79
|
+
Progress is observational: it does not change status, indicate a turn boundary,
|
|
80
|
+
or enter ergonomic `send()` results or `stream()` text events. Consumers render
|
|
81
|
+
it in chronological order while retaining working state, reply context and trace
|
|
82
|
+
ownership until a final reply or native lifecycle boundary. Consumers must not
|
|
83
|
+
treat progress mentions as reply-routing instructions.
|
|
84
|
+
|
|
64
85
|
When Elwood detects and answers an interactive startup prompt on behalf of the
|
|
65
86
|
parent app, it MUST emit an activity event with `source: "terminal"`,
|
|
66
87
|
`kind: "startup_prompt"`, a stable label, and text describing the key sent. This
|
|
67
88
|
`startup_prompt` activity is emitted only after the prompt's PTY write actually
|
|
68
89
|
fulfills; a rejected write emits no such activity and instead surfaces the
|
|
69
|
-
`startup_prompt_write_failed` warning (§5.7) while leaving the prompt retryable
|
|
90
|
+
`startup_prompt_write_failed` warning (§5.7) while leaving the prompt retryable
|
|
91
|
+
within the live session. Claude browser-tools disposal is a silent, permanent
|
|
92
|
+
cancellation: pending writes produce neither activity nor a write-failure warning,
|
|
93
|
+
and no later frame retries the decline (C-CLAUDE-22).
|
|
70
94
|
The stable startup-prompt label set is EXACTLY the following, and no other value
|
|
71
95
|
may be emitted with `kind: "startup_prompt"`:
|
|
72
96
|
|
|
@@ -86,39 +110,125 @@ The trust-prompt labels (`workspace_trust`, `skill_trust`, `plugin_trust`,
|
|
|
86
110
|
trust-prompt allowlist; a second implementation MUST treat this table as the
|
|
87
111
|
complete output union.
|
|
88
112
|
|
|
89
|
-
Under a caller's full-trust launch (`autotrust`),
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
Under a caller's full-trust launch (`autotrust`), Elwood MUST attempt to approve
|
|
114
|
+
every safely recognized allowlisted trust gate. The family covers workspace,
|
|
115
|
+
skill, plugin, MCP, and Claude bypass-permissions acceptance (§5.1). This is an
|
|
116
|
+
EXPLICIT ALLOWLIST: automatic input requires a native header, recognized
|
|
117
|
+
explanatory/path rows, and an exact affirmative choice in the same active,
|
|
118
|
+
bottom-most dialog. Transcript content, quoted instructions, earlier headers,
|
|
119
|
+
unknown intervening prose, and unrelated options MUST NOT authorize input.
|
|
120
|
+
Wrapped native copy and partial rendering remain supported. Where a prompt's
|
|
121
|
+
native dialog carries explanatory copy (Claude workspace and bypass-permissions,
|
|
122
|
+
Codex directory and hooks), that copy is REQUIRED: a bare allowlisted header with
|
|
123
|
+
affirmative options is only a candidate, held and never typed into, until its
|
|
124
|
+
native body paints. Prompts with no known native body (skill, plugin, MCP) are
|
|
125
|
+
recognized from their header and native option rows.
|
|
126
|
+
|
|
127
|
+
A known native-header candidate immediately holds initial readiness and queued
|
|
128
|
+
input, even when its copy/options are incomplete or unsupported. Candidate
|
|
129
|
+
recognition is only authority to hold input, never authority to approve. One
|
|
130
|
+
session-owned coordinator gives each observed dialog generation its own
|
|
131
|
+
reservation and bounded five-second deadline, beginning at first candidate
|
|
132
|
+
observation. Partial first paints receive that interval without an immediate
|
|
133
|
+
`blocked` transition. Numbered and cursor layouts share the same safety checks:
|
|
134
|
+
before every number, arrow, Enter, and retry, the session must still be live and
|
|
135
|
+
the same generation, native header, and exact affirmative choice must remain
|
|
136
|
+
valid. Cursor selection movement and completion of native option rows do not
|
|
137
|
+
alone replace a generation. Clearing and reappearance do. An older completion
|
|
138
|
+
cannot release or settle a newer generation's reservation.
|
|
139
|
+
|
|
140
|
+
Numbered confirmations retry at bounded intervals when the native input loop
|
|
141
|
+
has not consumed them; cursor navigation likewise waits for verified progress.
|
|
142
|
+
An unambiguous changed versioned Codex update banner, a bannered replacement with
|
|
143
|
+
changed or removed safe-option bindings and a valid safe choice, or a fresh unambiguous
|
|
144
|
+
banner with a valid current safe choice after update eligibility was revoked,
|
|
145
|
+
emits terminal `attention` labelled
|
|
146
|
+
`codex-update-prompt` with an optional numeric `promptGeneration`. This generation
|
|
147
|
+
is monotonically increasing within the live session. Fresh evidence may repeat the
|
|
148
|
+
same version pair after revocation; ordinary redraws, bannerless choices, and
|
|
149
|
+
ambiguous frames cannot renew it. After revocation, banner-only and action-only
|
|
150
|
+
repaints cannot reauthorize old bannerless choices or renew grace. It renews the CLI's bounded update grace once;
|
|
151
|
+
duplicate or older generation signals cannot extend that grace. It does not claim
|
|
152
|
+
that a key was written or that the prompt was answered.
|
|
153
|
+
|
|
154
|
+
With a live frame reader, `startup_prompt` is emitted only after a fulfilled
|
|
155
|
+
confirmation and a verified native composer or distinct native successor gate.
|
|
156
|
+
An unknown replacement is not successful clearance. Lost revalidation cancels
|
|
157
|
+
that attempt quietly, retaining input ownership while clearance is unverified.
|
|
158
|
+
Stop, kill, teardown, startup cleanup, and PTY exit cancel all trust attempts and
|
|
159
|
+
timers before disposal; late completions emit neither success nor warnings.
|
|
160
|
+
Only an actual rejected PTY write in a still-live matching attempt produces the
|
|
161
|
+
content-free `startup_prompt_write_failed` warning.
|
|
162
|
+
|
|
163
|
+
If automation cannot safely clear the gate within five seconds, the live session
|
|
164
|
+
MUST enter recoverable `blocked` status and emit the existing human `attention`
|
|
165
|
+
activity, even without another terminal frame. Unsupported layouts and exhausted
|
|
166
|
+
attempts use this same fallback; they never cause blind input or false write
|
|
167
|
+
warnings. An unchanged redraw cannot restart an expired attempt indefinitely.
|
|
168
|
+
A newly valid layout or a new dialog generation re-arms bounded safe automation;
|
|
169
|
+
once fallback has occurred, the public block remains until verified clearance.
|
|
170
|
+
Raw `sendKeys` remains available for human recovery, while queued persona,
|
|
171
|
+
message, and command input remains held. Headless CLI callers report the existing
|
|
172
|
+
`blocked_prompt` failure. No new public status, warning, or activity shape is added.
|
|
173
|
+
|
|
174
|
+
Normally successful automation MUST NOT produce a `blocked` transition. A
|
|
175
|
+
recognized prompt whose affirmative is still painting may retain its once-per-
|
|
176
|
+
generation transient `attention` labelled with the prompt id; it is distinct
|
|
177
|
+
from the fallback attention's blocking rule id. A candidate whose native body has
|
|
178
|
+
not validated emits no transient `attention`. With `autotrust` off, an
|
|
179
|
+
unanswered trust candidate blocks immediately for the human. This hold survives
|
|
180
|
+
partial or unknown replacements until a verified native composer or a recognized
|
|
181
|
+
successor takes ownership; losing the header alone never reopens queued input.
|
|
182
|
+
All recognition
|
|
183
|
+
uses the current rendered frame, never accumulated history.
|
|
184
|
+
|
|
185
|
+
Both adapters MUST retain trust input ownership until all received terminal output
|
|
186
|
+
has rendered successfully. A staged tail, pending render, synchronized redraw, or
|
|
187
|
+
render failure cannot clear human trust or authorize a trust retry. Retry reads
|
|
188
|
+
that are temporarily unavailable wait within the existing attempt deadline;
|
|
189
|
+
they never reuse the previous frame or enter the no-reader compatibility path.
|
|
190
|
+
|
|
191
|
+
Live Claude and Codex composer clearance requires a visible native input cursor on the
|
|
192
|
+
verified composer row. Cursor visibility, coordinates, title, and text must belong
|
|
193
|
+
to the same completed render; output received but not yet rendered cannot prove
|
|
194
|
+
clearance. Transcript caret/option text and ordinary quoted working prose are not current
|
|
195
|
+
input controls merely because they resemble one. Native dialog cursor hiding or a
|
|
196
|
+
cursor outside the composer keeps caller input held through partial repaints.
|
|
197
|
+
Native approval headers at the dialog's leading column also retain the hold;
|
|
198
|
+
a still-visible cursor on an older composer cannot override that replacement
|
|
199
|
+
evidence. Indented transcript quotations are not native approval headers.
|
|
200
|
+
An exact-shaped native working row remains ambiguous even with a visible input
|
|
201
|
+
cursor: Codex permits typing while running, and its title spinner is configurable.
|
|
202
|
+
Such a row conservatively retains the hold, including an identical transcript quotation.
|
|
203
|
+
|
|
204
|
+
An unrecognized gate behind a recognized native header prefix is hold-only
|
|
205
|
+
under every `autotrust` value. The recognized prefixes are exactly the
|
|
206
|
+
line-leading `Do you`, `Quick safety`, `Is this`, `Load this`, `Trust the`, `Trust this`,
|
|
207
|
+
`New MCP`, `WARNING:`, `Claude Code running`, and `Hooks need` (the adapter's
|
|
208
|
+
`headerStart`). When the bottom-most such region has non-empty header text,
|
|
209
|
+
selectable options, nothing below them but option rows and the native footer
|
|
210
|
+
that ends the frame (`Enter to confirm`/`Esc to cancel`, or `Press enter to
|
|
211
|
+
continue|confirm or esc to cancel|go back`, or `enter continue · esc quit`), no
|
|
212
|
+
conversation row above it, and no region names an allowlisted prompt, it MUST hold
|
|
213
|
+
readiness and queued input, MUST NOT receive any automated keypress (trust answers,
|
|
214
|
+
the Codex update skip and its retries, or the Claude browser-tools decline), and
|
|
215
|
+
blocks for the human
|
|
216
|
+
with the attention rule id `<agent>-unknown_gate-prompt`. A dialog that another blocking
|
|
217
|
+
rule already names (a tool permission or approval dialog) keeps that rule's
|
|
218
|
+
label alone. The hold follows the current frame: it releases once that gate is
|
|
219
|
+
no longer rendered, and raw `sendKeys` remains available to answer it. While
|
|
220
|
+
ANY trust candidate is rendered — this gate or an allowlisted header, even a
|
|
221
|
+
hold-only one with unsupported copy — the Codex update skip (first write and
|
|
222
|
+
every retry) and the Claude browser-tools decline MUST NOT write. This is
|
|
223
|
+
NOT a general guarantee: a gate whose header starts with any other words, whose
|
|
224
|
+
footer is not yet painted or not one of those rows, or that carries other rows
|
|
225
|
+
below its options is outside this grammar and is not held.
|
|
117
226
|
|
|
118
227
|
Two prompts are exceptions to the `autotrust` gate. Codex hook trust
|
|
119
|
-
(`hook_trust`) is
|
|
120
|
-
|
|
121
|
-
|
|
228
|
+
(`hook_trust`) is always enabled because the session requires its hook bridge.
|
|
229
|
+
Codex's hook-trust bypass is session-wide: it trusts ALL configured hooks,
|
|
230
|
+
including third-party hooks, independently of `autotrust`. `update` is not a
|
|
231
|
+
trust decision at all and is also handled independently of `autotrust`.
|
|
122
232
|
Every hook dispatch must also emit an adapter-neutral hook-result activity after
|
|
123
233
|
parent handlers run. The result activity must include the hook event name,
|
|
124
234
|
whether the dispatch failed open, and the raw in-memory result payload when
|
|
@@ -143,3 +253,20 @@ session.on("hook:PreToolUse", async (event) => {
|
|
|
143
253
|
|
|
144
254
|
The exact naming may vary, but the type system MUST narrow event payload and
|
|
145
255
|
valid response shape by hook event name.
|
|
256
|
+
|
|
257
|
+
The common `question` event and normalized `question` activity expose live native questionnaires as specified in [§5.10](5.10-questions.md).
|
|
258
|
+
|
|
259
|
+
Normalized `question` activities require the structured `question` payload.
|
|
260
|
+
`assistant_progress` requires readable `text`; committed Codex commentary summaries
|
|
261
|
+
likewise require text. The kind mapping covers every Codex summary variant.
|
|
262
|
+
|
|
263
|
+
A contained `question` listener failure or failure of its companion normalized
|
|
264
|
+
question activity emits at most one live `question_observer_failed` warning per
|
|
265
|
+
session and its normalized warning activity. The warning has `source: "lifecycle"`,
|
|
266
|
+
`severity: "warning"`, the session ID and agent, and `phase: "question" | "activity"`
|
|
267
|
+
for the first observed failure. Its message and raw diagnostic contain only fixed
|
|
268
|
+
text and that phase; no exception, prompt, question, answer, or transcript content
|
|
269
|
+
is included. Synchronous throws and returned native Promise rejections are contained.
|
|
270
|
+
All notification subscribers still receive delivery; registry state and native
|
|
271
|
+
input ownership continue normally. Diagnostic listener failures do not recursively
|
|
272
|
+
warn. This warning never interprets listener return values as question answers.
|
|
@@ -63,25 +63,90 @@ later shows an interactive update prompt inside the TUI, Elwood skips that
|
|
|
63
63
|
prompt through PTY input, including Codex's cursor-addressed update screen.
|
|
64
64
|
Elwood never selects "Update now" inside the live TUI (an in-TUI update restarts
|
|
65
65
|
Codex out from under the session); the real update is the preflight `codex update`
|
|
66
|
-
above
|
|
67
|
-
the
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
this
|
|
66
|
+
above; interactive selection is limited to verified safe choices. When an update action is visible,
|
|
67
|
+
the safe choice must follow it in the numbered option list and must not itself
|
|
68
|
+
perform the update. A skip-shaped row before `Update now` is left unanswered.
|
|
69
|
+
Initial selection and every retry require a validated first-party update banner in
|
|
70
|
+
that same current frame, together with a safe numbered choice. A bannerless frame
|
|
71
|
+
never authorizes automation, even when its option numbers and labels match an
|
|
72
|
+
older update appearance. Recognition still holds queued input through partial or
|
|
73
|
+
bannerless replacements until positive native composer clearance; withholding a
|
|
74
|
+
selection does not release that hold. A clipped first-party banner without a safe
|
|
75
|
+
option is blocking evidence only. Generic agent prose containing "update available"
|
|
76
|
+
does not activate the blocker.
|
|
77
|
+
|
|
78
|
+
Codex can paint this menu before its input loop accepts the first key, so the safe
|
|
79
|
+
numbered choice is retried for a bounded interval. Retain only the current validated
|
|
80
|
+
first-party option block, with at most 32 options and 200 characters per label;
|
|
81
|
+
exceeding either bound withholds automation without releasing input. A later
|
|
82
|
+
validated first-party banner with a safe option block within both bounds retires
|
|
83
|
+
the overflowed appearance and may start one fresh bounded attempt, even for the
|
|
84
|
+
same version pair. Redraws of that valid block cannot renew the attempt again.
|
|
85
|
+
Before each write, compare the current block with the captured appearance. Changed labels,
|
|
86
|
+
removed safe bindings, or renumbering invalidate the old retry even before the next
|
|
87
|
+
frame observer runs. A bannered safe choice replacing a removed safe number starts
|
|
88
|
+
a new appearance rather than extending an accumulated union of old bindings.
|
|
89
|
+
A banner-only or action-only repaint cannot renew grace; a later unambiguous
|
|
90
|
+
banner with a current safe choice may establish a fresh bounded attempt.
|
|
91
|
+
Choices must form one current native numbered block: numbered pre-banner rows
|
|
92
|
+
(including clipped prefixes), duplicate or restarted numbering, unknown option labels,
|
|
93
|
+
and unrelated rows within or after the block withhold automation. Native update/skip/later labels,
|
|
94
|
+
the captured install-command continuation, release-notes header, and Enter footer
|
|
95
|
+
remain accepted; a recognized banner still blocks even when its option block is
|
|
96
|
+
ambiguous. Such a recognized-but-ambiguous frame permanently revokes its
|
|
97
|
+
active attempt; later bannerless choices cannot restore it. Fresh unambiguous
|
|
98
|
+
first-party banner evidence with a valid current safe choice starts a new attempt,
|
|
99
|
+
never the revoked one. Banner-only or action-only repaints remain blocked after
|
|
100
|
+
revocation and cannot reauthorize later bannerless choices or renew CLI grace.
|
|
79
101
|
It stops without another write once that generation clears or changes, and fails the
|
|
80
102
|
startup operation if the update prompt remains but its safe option disappears or the
|
|
81
|
-
retry interval is exhausted.
|
|
103
|
+
retry interval is exhausted. An unknown or blank replacement permanently revokes
|
|
104
|
+
its attempt; bannerless choices cannot reauthorize it, and fresh first-party banner
|
|
105
|
+
evidence is required. Authoritative positive native composer clearance preserves
|
|
106
|
+
the completed attempt’s settlement. Live sessions decide clearance after the current
|
|
107
|
+
frame’s retained input hold is classified; composer text alone cannot restore
|
|
108
|
+
eligibility. One unambiguous changed first-party version banner supersedes the prior appearance
|
|
109
|
+
without a clear frame. Captured retries reject the changed banner before another
|
|
110
|
+
write; the new appearance may start its own bounded attempt. Generation-tagged
|
|
111
|
+
attention (§5.4) renews the CLI grace once for a replaced banner, or for fresh
|
|
112
|
+
unambiguous first-party banner evidence with a current safe choice after revocation,
|
|
113
|
+
even when the version pair is unchanged. Duplicate or stale generations and
|
|
114
|
+
ordinary same-banner redraws cannot extend it. Each appearance of the
|
|
115
|
+
update screen is its own generation: an exhausted attempt stays latched until that
|
|
116
|
+
screen clears, so one
|
|
117
|
+
persistent screen gets one bounded attempt rather than a fresh retry loop per frame,
|
|
118
|
+
and a completion from an earlier generation never re-arms the current one. Once a later
|
|
119
|
+
appearance has superseded it, an earlier attempt's late success or rejected write
|
|
120
|
+
settles as a quiet cancellation: only the current generation reports `startup_prompt`
|
|
121
|
+
or `startup_prompt_write_failed`. A write rejected after its screen has merely cleared
|
|
122
|
+
is quiet too (nothing is left to retry or block on), while a screen that clears after
|
|
123
|
+
the key was written reports `startup_prompt` only after positive native composer
|
|
124
|
+
clearance. A missing reader, unknown replacement, partial frame, or retained input
|
|
125
|
+
hold settles quietly as cancellation even when the digit write completed. A rejected PTY write, or a safe option that has not
|
|
126
|
+
painted yet, stays retryable within the generation. A blocked update screen therefore becomes a bounded run
|
|
82
127
|
failure even when the caller supplied no whole-run timeout; delayed input cannot
|
|
83
128
|
reach the restored composer or a replacement dialog. This prevents a queued Enter
|
|
84
|
-
from selecting Codex's default "Update now" action (C-CODEX-12).
|
|
129
|
+
from selecting Codex's default "Update now" action (C-CODEX-12). Closing the session
|
|
130
|
+
cancels update retry timers and prevents pending automated keys from reaching the
|
|
131
|
+
PTY. A disposed responder starts no new attempt, and late completion or rejection
|
|
132
|
+
settles quietly without startup success activity or a write-failure warning.
|
|
133
|
+
|
|
134
|
+
Update automation eligibility and queued-input blocking have separate lifetimes.
|
|
135
|
+
After a recognized update screen is replaced by an unknown dialog or partial frame,
|
|
136
|
+
queued input remains held until the live terminal positively identifies its native
|
|
137
|
+
composer and visible input cursor in a completed render with no working-title
|
|
138
|
+
signal. The title may be absent or contain an ordinary directory name. A bare caret
|
|
139
|
+
or pending render cannot release the hold. A continuously visible pre-update
|
|
140
|
+
composer cannot clear new replacement text above it, even with its old cursor
|
|
141
|
+
visible. Once verified composer evidence is lost, a newly appearing native
|
|
142
|
+
composer may clear the hold with newly loaded resume history. This retained hold does not start
|
|
143
|
+
for an unrecognized dialog without a prior update appearance. It reports
|
|
144
|
+
`codex-unidentified-dialog` only when no more specific blocking rule identifies
|
|
145
|
+
the replacement; a recognized trust gate keeps its own diagnostic rule (C-CODEX-12,
|
|
146
|
+
C-ATTN-03). Pending automated trust owns partial repaints without emitting the
|
|
147
|
+
generic retained-update label. A current human or unknown gate takes diagnostic
|
|
148
|
+
precedence over a retained trust label.
|
|
149
|
+
|
|
85
150
|
`strictVersionCheck` makes unparseable Codex versions fatal instead of
|
|
86
151
|
warning-and-continuing.
|
|
87
152
|
|
|
@@ -97,9 +162,11 @@ When true, Elwood detects Codex's first-party directory trust prompt in the
|
|
|
97
162
|
rendered terminal and chooses the trust/continue option through PTY input,
|
|
98
163
|
emitting `startup_prompt` activity with label `workspace_trust`. The default is
|
|
99
164
|
false because trusting a workspace is a security-sensitive decision. Independent
|
|
100
|
-
of `autotrust`,
|
|
101
|
-
|
|
102
|
-
|
|
165
|
+
of `autotrust`, Elwood launches Codex with session-wide hook trust bypassed.
|
|
166
|
+
This trusts ALL configured Codex hooks, including third-party hooks, so the
|
|
167
|
+
required Elwood hook bridge can function. If a `Hooks need review` prompt still
|
|
168
|
+
appears, it is answered once, emitting `startup_prompt` activity with label
|
|
169
|
+
`hook_trust`.
|
|
103
170
|
|
|
104
171
|
`persona` behaves exactly as specified for Claude in §5.1: enqueued before
|
|
105
172
|
control returns to the caller, delivered as the first user message on the first
|
|
@@ -51,6 +51,9 @@ type ElwoodWarningEvent =
|
|
|
51
51
|
// still meets the minimum, so the session started from it. Safe diagnostics
|
|
52
52
|
// only: the installed version in use and an allowlisted error code (a probe
|
|
53
53
|
// timeout/`errno`); never terminal transcripts, prompts, tokens, or secrets.
|
|
54
|
+
// `errorCode: "update_active"` means no local update command ran: another
|
|
55
|
+
// updater still held the adapter's lease after the bounded wait, or its
|
|
56
|
+
// surviving process group still does (§9.2).
|
|
54
57
|
readonly installedVersion: string;
|
|
55
58
|
readonly errorCode: string;
|
|
56
59
|
readonly raw: string;
|
|
@@ -66,6 +69,18 @@ type ElwoodWarningEvent =
|
|
|
66
69
|
readonly recoveryCommand: string;
|
|
67
70
|
readonly raw: string;
|
|
68
71
|
}
|
|
72
|
+
| {
|
|
73
|
+
// Claude's proactive renewal notice; the session remains usable.
|
|
74
|
+
readonly elwoodSessionId: string;
|
|
75
|
+
readonly agent: "claude";
|
|
76
|
+
readonly source: "terminal";
|
|
77
|
+
readonly code: "login_expiring";
|
|
78
|
+
readonly severity: "warning";
|
|
79
|
+
readonly message: string;
|
|
80
|
+
readonly expiresInDays: number;
|
|
81
|
+
readonly recoveryCommand: "/login";
|
|
82
|
+
readonly raw: string;
|
|
83
|
+
}
|
|
69
84
|
| {
|
|
70
85
|
// Claude's login lapsed AFTER the session was usable (C-CLAUDE-18). Content-
|
|
71
86
|
// free: the message and raw are FIXED canonical strings and the recovery
|
|
@@ -134,6 +149,16 @@ type ElwoodWarningEvent =
|
|
|
134
149
|
readonly transcriptPath: string;
|
|
135
150
|
readonly raw: string;
|
|
136
151
|
}
|
|
152
|
+
| {
|
|
153
|
+
readonly elwoodSessionId: string;
|
|
154
|
+
readonly agent: "codex";
|
|
155
|
+
readonly source: "terminal";
|
|
156
|
+
readonly code: "transcript_listener_error";
|
|
157
|
+
readonly severity: "warning";
|
|
158
|
+
readonly message: string;
|
|
159
|
+
readonly channel: "codex:transcript" | "activity";
|
|
160
|
+
readonly raw: string;
|
|
161
|
+
}
|
|
137
162
|
| {
|
|
138
163
|
readonly elwoodSessionId: string;
|
|
139
164
|
readonly agent: "claude" | "codex";
|
|
@@ -213,6 +238,45 @@ type ElwoodWarningEvent =
|
|
|
213
238
|
readonly message: string;
|
|
214
239
|
readonly raw: string;
|
|
215
240
|
}
|
|
241
|
+
| {
|
|
242
|
+
readonly elwoodSessionId: string;
|
|
243
|
+
readonly agent: "claude" | "codex";
|
|
244
|
+
readonly source: "lifecycle";
|
|
245
|
+
readonly code: "hook_observer_failed";
|
|
246
|
+
readonly severity: "warning";
|
|
247
|
+
readonly message: string;
|
|
248
|
+
readonly phase: "hook" | "activity" | "hook_error" | "transcript" | "lifecycle";
|
|
249
|
+
readonly raw: string;
|
|
250
|
+
}
|
|
251
|
+
| {
|
|
252
|
+
readonly elwoodSessionId: string;
|
|
253
|
+
readonly agent: "codex";
|
|
254
|
+
readonly source: "lifecycle";
|
|
255
|
+
readonly code: "question_automation_disabled";
|
|
256
|
+
readonly severity: "warning";
|
|
257
|
+
readonly message: string;
|
|
258
|
+
readonly raw: string;
|
|
259
|
+
}
|
|
260
|
+
| {
|
|
261
|
+
readonly elwoodSessionId: string;
|
|
262
|
+
readonly agent: "claude" | "codex";
|
|
263
|
+
readonly source: "lifecycle";
|
|
264
|
+
readonly code: "question_observer_failed";
|
|
265
|
+
readonly severity: "warning";
|
|
266
|
+
readonly message: "A question notification failed; native question ownership was preserved.";
|
|
267
|
+
readonly phase: "question" | "activity";
|
|
268
|
+
readonly raw: `question_observer_failed phase=${"question" | "activity"}`;
|
|
269
|
+
}
|
|
270
|
+
| {
|
|
271
|
+
readonly elwoodSessionId: string;
|
|
272
|
+
readonly agent: "codex";
|
|
273
|
+
readonly source: "lifecycle";
|
|
274
|
+
readonly code: "initial_ready_observer_failed";
|
|
275
|
+
readonly severity: "warning";
|
|
276
|
+
readonly message: string;
|
|
277
|
+
readonly phase: "lifecycle";
|
|
278
|
+
readonly raw: string;
|
|
279
|
+
}
|
|
216
280
|
| {
|
|
217
281
|
// Recording the one-shot initial-ready transition threw (a lifecycle-event
|
|
218
282
|
// listener), so Elwood released the control queue directly (anti-starvation)
|
|
@@ -228,14 +292,48 @@ type ElwoodWarningEvent =
|
|
|
228
292
|
};
|
|
229
293
|
```
|
|
230
294
|
|
|
295
|
+
Claude's `Your login expires in N day(s) · run /login to renew` notice produces
|
|
296
|
+
`login_expiring` with the CLI-reported nonnegative safe-integer `expiresInDays`.
|
|
297
|
+
It is recognized in the native welcome region (with `⚠`) or below a verified
|
|
298
|
+
empty native composer, including on resume and before readiness. Conversation
|
|
299
|
+
and draft quotations are not sources.
|
|
300
|
+
Footer recognition requires the visible native input cursor on that composer in
|
|
301
|
+
the current completed render; text geometry alone is insufficient.
|
|
302
|
+
Welcome recognition permanently ends after
|
|
303
|
+
the first observed conversation/composer boundary; footer recognition continues.
|
|
304
|
+
Wrapped notice rows are joined. Each distinct countdown value is emitted once
|
|
305
|
+
per live session, even if the notice
|
|
306
|
+
disappears and returns. Early observations reach listeners registered immediately
|
|
307
|
+
after `startClaude` or `resumeClaude` returns. Message and raw
|
|
308
|
+
contain only canonical renewal text and the parsed duration, never surrounding
|
|
309
|
+
terminal content. The warning does not change status, block input, run `/login`,
|
|
310
|
+
or infer an exact expiry timestamp. Actual loss of authentication retains the
|
|
311
|
+
separate `login_expired` contract. Like all warnings, it is live-only.
|
|
312
|
+
|
|
313
|
+
MCP terminal warnings require the native `⚠` banner marker and canonical banner
|
|
314
|
+
wording in the startup region before any composer or conversation row. Bare
|
|
315
|
+
canonical text and matching text inside a user/assistant turn are not diagnostic
|
|
316
|
+
sources; they must not emit warnings or recovery commands. Recognition is
|
|
317
|
+
startup-only: a resumed session never recognizes them, and a new session stops
|
|
318
|
+
when it first writes caller input or when any assistant-marker row renders. After that no frame is a
|
|
319
|
+
warning source, so a copied welcome region whose conversation marker has scrolled
|
|
320
|
+
away cannot regain authority. Every assistant-marker row ends recognition,
|
|
321
|
+
including one that resembles a status spinner: recognition fails toward fewer
|
|
322
|
+
warnings, never forged ones.
|
|
323
|
+
|
|
231
324
|
A startup prompt Elwood auto-answers is marked settled and emits its
|
|
232
325
|
`startup_prompt` activity ONLY after its PTY `sendInput` write actually fulfills.
|
|
233
|
-
|
|
326
|
+
For trust prompts, live revalidation additionally confirms the native dialog has
|
|
327
|
+
cleared (§5.4); a fulfilled write into a still-visible gate is not success.
|
|
328
|
+
If that write is rejected while the session remains live,
|
|
234
329
|
Elwood emits NO `startup_prompt` activity for that attempt and instead surfaces a
|
|
235
330
|
bounded, content-free `startup_prompt_write_failed` warning carrying only the
|
|
236
331
|
prompt label; the prompt is left un-settled (retryable) so a later frame
|
|
237
332
|
re-attempts it. This prevents a failed write from being reported as an answered
|
|
238
333
|
prompt and from becoming permanently unanswerable (C-CLAUDE-16, C-CODEX-17).
|
|
334
|
+
Claude session disposal cancels pending browser-tools automation without activity,
|
|
335
|
+
write-failure warnings, or retries, including a warning buffered before disposal
|
|
336
|
+
but not yet delivered (C-CLAUDE-22).
|
|
239
337
|
|
|
240
338
|
When Elwood recognizes an allowlisted trust prompt but its affirmative option has
|
|
241
339
|
not rendered in the current frame yet, it emits a transient `attention` activity
|
|
@@ -243,7 +341,10 @@ not rendered in the current frame yet, it emits a transient `attention` activity
|
|
|
243
341
|
state, not a wedge: under the say-yes policy Elwood keeps watching and answers the
|
|
244
342
|
prompt on a later frame once the option paints, so there is deliberately NO
|
|
245
343
|
warning emitted for it — a warning here would read as a "not auto-answered" signal
|
|
246
|
-
even after the prompt is successfully answered (C-CLAUDE-14).
|
|
344
|
+
even after the prompt is successfully answered (C-CLAUDE-14). The wait is bounded:
|
|
345
|
+
if the gate cannot be verified and cleared within five seconds of first being
|
|
346
|
+
seen, the session becomes recoverably `blocked` with its `attention` event and
|
|
347
|
+
queued input stays held (§5.4, C-TRUST-01).
|
|
247
348
|
|
|
248
349
|
The `transcript_records_dropped` warning is emitted when committed transcript
|
|
249
350
|
records cannot be parsed as JSON, when a single un-terminated record exceeds a
|
|
@@ -301,8 +402,9 @@ flush runs behind an error boundary and lifecycle completion is guaranteed. Like
|
|
|
301
402
|
every warning these carry no raw conversation content: only a bounded `cause` or
|
|
302
403
|
`phase` label, an error code or short reason, and the transcript path — no counts
|
|
303
404
|
and no byte magnitude. They are live-only: emitted as a `warning` + `activity`
|
|
304
|
-
event, never persisted
|
|
305
|
-
|
|
405
|
+
event, never persisted or replayed to a late subscriber. Codex listener-error
|
|
406
|
+
diagnostics have the per-watcher bound described below; other warnings are not
|
|
407
|
+
deduplicated across time. To keep telemetry off the hot read path, drops are COALESCED per scan
|
|
306
408
|
pass: many malformed records in one bounded scan surface at most one
|
|
307
409
|
`transcript_records_dropped` warning per `(transcript path, cause)` for that pass,
|
|
308
410
|
rather than one synchronous fan-out per record — so pathological input cannot stall
|
|
@@ -348,6 +450,27 @@ itself. Once the session's PTY
|
|
|
348
450
|
exits, the watcher becomes permanently terminal: no scan, emit, or observation
|
|
349
451
|
occurs after `finish()`, so no transcript activity is ever delivered past
|
|
350
452
|
`terminal:exit`.
|
|
453
|
+
If a Codex transcript listener synchronously initiates shutdown, the current
|
|
454
|
+
bounded scan finishes delivering its records before the final flush and terminal
|
|
455
|
+
exit notification. Reentrant PTY exit notifications do not duplicate finalization.
|
|
456
|
+
The same ordering covers transcript diagnostics and their activity projection.
|
|
457
|
+
Shutdown requested during an observed natural exit joins its finalization without
|
|
458
|
+
signaling the already-exited PTY or waiting for another exit notification.
|
|
459
|
+
|
|
460
|
+
`hook_observer_failed` reports the first contained notification failure in one
|
|
461
|
+
Claude or Codex hook invocation or bridge-error delivery. Its message is fixed
|
|
462
|
+
and `raw` is `hook_observer_failed phase=<phase>`; neither
|
|
463
|
+
listener error text nor hook payloads are included. Both warning and activity
|
|
464
|
+
delivery are attempted independently, without retrying or recursively warning.
|
|
465
|
+
Observer Promise rejections are contained without delaying the hook reply; a
|
|
466
|
+
warning may follow that reply when the first observed failure is asynchronous.
|
|
467
|
+
Only the newest 1,024 pending observer registrations retain diagnostic state
|
|
468
|
+
(§6.4); older rejections remain consumed without a late warning.
|
|
469
|
+
Codex initial-ready status/activity Promise rejections outside a hook report one
|
|
470
|
+
content-free `initial_ready_observer_failed` warning with
|
|
471
|
+
`raw: "initial_ready_observer_failed phase=lifecycle"`. Readiness triggered within
|
|
472
|
+
`SessionStart` shares that hook's observer boundary and warning limit. Neither
|
|
473
|
+
diagnostic delays the ready transition or queue release.
|
|
351
474
|
|
|
352
475
|
Warnings are LIVE-ONLY. A warning is emitted once, when observed, as a `warning`
|
|
353
476
|
event and a projected `activity` event, and is never persisted, never replayed to
|
|
@@ -388,13 +511,26 @@ the SAME content-free `transcript_records_dropped` warning as Claude's (now
|
|
|
388
511
|
`agent: "codex" | "claude"`), carrying only the bounded `cause` (`"unparseable"`,
|
|
389
512
|
`"oversized"`, or `"unread_backlog"`) and the transcript path — never a count and
|
|
390
513
|
never raw transcript content — as a live event, exactly like Claude's. A
|
|
391
|
-
scan that throws
|
|
514
|
+
scan that throws from an internal reader failure MUST be
|
|
392
515
|
contained rather than escaping the poll timer as an uncaught exception: the Codex
|
|
393
516
|
watcher stops itself and surfaces the SAME content-free `transcript_poll_stopped`
|
|
394
517
|
warning as Claude's (now `agent: "codex" | "claude"`), carrying only an
|
|
395
518
|
allowlisted error `reason` and the `phase`. Drops and read errors are live-only
|
|
396
519
|
signals; Elwood keeps no running total and continues nothing across resume.
|
|
397
520
|
|
|
521
|
+
Codex transcript delivery isolates synchronous public listener exceptions separately
|
|
522
|
+
for `codex:transcript` and projected `activity`. Both deliveries are attempted for
|
|
523
|
+
every record, later records in the same scan are delivered, and periodic polling
|
|
524
|
+
continues after a listener failure. Only the first failure per channel per watcher
|
|
525
|
+
emits a live `transcript_listener_error` warning (at most two per watcher). Delivery
|
|
526
|
+
of this diagnostic is deferred to a microtask after the current synchronous scan
|
|
527
|
+
or final flush; final-flush diagnostics may therefore follow `terminal:exit`. The
|
|
528
|
+
warning carries only its bounded `channel` label and fixed message/raw text, never
|
|
529
|
+
the thrown value or transcript content. Warning
|
|
530
|
+
listener exceptions are contained and do not interrupt transcript delivery. This also
|
|
531
|
+
applies during the final flush; these listener failures do not emit
|
|
532
|
+
`transcript_poll_stopped`, which remains reserved for actual reader failures.
|
|
533
|
+
|
|
398
534
|
As with Claude, the Codex transcript is the single source of truth for committed
|
|
399
535
|
`assistant_message`, `tool_call`, and `tool_result` activity. The Codex `Stop`,
|
|
400
536
|
`PreToolUse`, and `PostToolUse` hooks MUST NOT also project those activities from
|
|
@@ -423,3 +559,5 @@ the transcript watcher before emitting `terminal:exit` or terminal lifecycle
|
|
|
423
559
|
status. Parent applications should not receive delayed transcript activity after
|
|
424
560
|
the session has already emitted `terminal:exit`, `exited`, `stopped`, or
|
|
425
561
|
`killed`.
|
|
562
|
+
|
|
563
|
+
Native question snapshots and answering are shared controls; see [§5.10](5.10-questions.md).
|