@with-logic/elwood 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +396 -2
- package/CONTRIBUTING.md +29 -18
- package/README.md +50 -19
- package/dist/bridge/parse.d.ts.map +1 -1
- package/dist/bridge/parse.js +2 -1
- package/dist/bridge/parse.js.map +1 -1
- package/dist/bridge/server.d.ts.map +1 -1
- package/dist/bridge/server.js +6 -2
- package/dist/bridge/server.js.map +1 -1
- package/dist/claude/attach-images.d.ts +3 -1
- package/dist/claude/attach-images.d.ts.map +1 -1
- package/dist/claude/attach-images.js +11 -10
- package/dist/claude/attach-images.js.map +1 -1
- package/dist/claude/composer/empty-input.d.ts +4 -0
- package/dist/claude/composer/empty-input.d.ts.map +1 -0
- package/dist/claude/composer/empty-input.js +28 -0
- package/dist/claude/composer/empty-input.js.map +1 -0
- package/dist/claude/composer/footer.d.ts +3 -0
- package/dist/claude/composer/footer.d.ts.map +1 -0
- package/dist/claude/composer/footer.js +3 -0
- package/dist/claude/composer/footer.js.map +1 -0
- package/dist/claude/composer/staged-input.d.ts +7 -0
- package/dist/claude/composer/staged-input.d.ts.map +1 -0
- package/dist/claude/composer/staged-input.js +18 -0
- package/dist/claude/composer/staged-input.js.map +1 -0
- package/dist/claude/hooks/common-result.d.ts +5 -0
- package/dist/claude/hooks/common-result.d.ts.map +1 -0
- package/dist/claude/hooks/common-result.js +3 -0
- package/dist/claude/hooks/common-result.js.map +1 -0
- package/dist/claude/hooks/dispatch.d.ts +2 -1
- package/dist/claude/hooks/dispatch.d.ts.map +1 -1
- package/dist/claude/hooks/dispatch.js +3 -1
- package/dist/claude/hooks/dispatch.js.map +1 -1
- package/dist/claude/hooks/events-extra.d.ts +5 -4
- package/dist/claude/hooks/events-extra.d.ts.map +1 -1
- package/dist/claude/hooks/index.d.ts +10 -10
- package/dist/claude/hooks/index.d.ts.map +1 -1
- package/dist/claude/hooks/index.js +1 -4
- package/dist/claude/hooks/index.js.map +1 -1
- package/dist/claude/hooks/inputs/control.d.ts +25 -0
- package/dist/claude/hooks/inputs/control.d.ts.map +1 -0
- package/dist/claude/hooks/inputs/control.js +3 -0
- package/dist/claude/hooks/inputs/control.js.map +1 -0
- package/dist/claude/hooks/stop-failure.d.ts +10 -0
- package/dist/claude/hooks/stop-failure.d.ts.map +1 -0
- package/dist/claude/hooks/stop-failure.js +18 -0
- package/dist/claude/hooks/stop-failure.js.map +1 -0
- package/dist/claude/hooks/tool-types.d.ts +12 -10
- package/dist/claude/hooks/tool-types.d.ts.map +1 -1
- package/dist/claude/login/notice.d.ts +3 -0
- package/dist/claude/login/notice.d.ts.map +1 -0
- package/dist/claude/login/notice.js +3 -0
- package/dist/claude/login/notice.js.map +1 -0
- package/dist/claude/login/renewal.d.ts +13 -0
- package/dist/claude/login/renewal.d.ts.map +1 -0
- package/dist/claude/login/renewal.js +97 -0
- package/dist/claude/login/renewal.js.map +1 -0
- package/dist/claude/model-composer.d.ts +2 -0
- package/dist/claude/model-composer.d.ts.map +1 -0
- package/dist/claude/model-composer.js +12 -0
- package/dist/claude/model-composer.js.map +1 -0
- package/dist/claude/model-picker.d.ts.map +1 -1
- package/dist/claude/model-picker.js +42 -8
- package/dist/claude/model-picker.js.map +1 -1
- package/dist/claude/model-switch-confirmation.d.ts +6 -0
- package/dist/claude/model-switch-confirmation.d.ts.map +1 -1
- package/dist/claude/model-switch-confirmation.js +77 -4
- package/dist/claude/model-switch-confirmation.js.map +1 -1
- package/dist/claude/preflight.d.ts.map +1 -1
- package/dist/claude/preflight.js +2 -4
- package/dist/claude/preflight.js.map +1 -1
- package/dist/claude/questions/answer.d.ts +9 -0
- package/dist/claude/questions/answer.d.ts.map +1 -0
- package/dist/claude/questions/answer.js +84 -0
- package/dist/claude/questions/answer.js.map +1 -0
- package/dist/claude/questions/bind-answers.d.ts +14 -0
- package/dist/claude/questions/bind-answers.d.ts.map +1 -0
- package/dist/claude/questions/bind-answers.js +36 -0
- package/dist/claude/questions/bind-answers.js.map +1 -0
- package/dist/claude/questions/candidate.d.ts +23 -0
- package/dist/claude/questions/candidate.d.ts.map +1 -0
- package/dist/claude/questions/candidate.js +47 -0
- package/dist/claude/questions/candidate.js.map +1 -0
- package/dist/claude/questions/correlation.d.ts +15 -0
- package/dist/claude/questions/correlation.d.ts.map +1 -0
- package/dist/claude/questions/correlation.js +23 -0
- package/dist/claude/questions/correlation.js.map +1 -0
- package/dist/claude/questions/hook-decisions.d.ts +19 -0
- package/dist/claude/questions/hook-decisions.d.ts.map +1 -0
- package/dist/claude/questions/hook-decisions.js +52 -0
- package/dist/claude/questions/hook-decisions.js.map +1 -0
- package/dist/claude/questions/index.d.ts +27 -0
- package/dist/claude/questions/index.d.ts.map +1 -0
- package/dist/claude/questions/index.js +161 -0
- package/dist/claude/questions/index.js.map +1 -0
- package/dist/claude/questions/navigation.d.ts +24 -0
- package/dist/claude/questions/navigation.d.ts.map +1 -0
- package/dist/claude/questions/navigation.js +37 -0
- package/dist/claude/questions/navigation.js.map +1 -0
- package/dist/claude/questions/rows.d.ts +19 -0
- package/dist/claude/questions/rows.d.ts.map +1 -0
- package/dist/claude/questions/rows.js +64 -0
- package/dist/claude/questions/rows.js.map +1 -0
- package/dist/claude/questions/screen.d.ts +29 -0
- package/dist/claude/questions/screen.d.ts.map +1 -0
- package/dist/claude/questions/screen.js +103 -0
- package/dist/claude/questions/screen.js.map +1 -0
- package/dist/claude/screen-table.d.ts +19 -2
- package/dist/claude/screen-table.d.ts.map +1 -1
- package/dist/claude/screen-table.js +48 -4
- package/dist/claude/screen-table.js.map +1 -1
- package/dist/claude/serialize.d.ts.map +1 -1
- package/dist/claude/serialize.js +22 -6
- package/dist/claude/serialize.js.map +1 -1
- package/dist/claude/session/build.d.ts +1 -12
- package/dist/claude/session/build.d.ts.map +1 -1
- package/dist/claude/session/build.js +42 -55
- package/dist/claude/session/build.js.map +1 -1
- package/dist/claude/session/hook-handler.d.ts +3 -2
- package/dist/claude/session/hook-handler.d.ts.map +1 -1
- package/dist/claude/session/hook-handler.js +44 -18
- package/dist/claude/session/hook-handler.js.map +1 -1
- package/dist/claude/session/index.d.ts +2 -1
- package/dist/claude/session/index.d.ts.map +1 -1
- package/dist/claude/session/index.js +23 -8
- package/dist/claude/session/index.js.map +1 -1
- package/dist/claude/session/instance.d.ts +17 -5
- package/dist/claude/session/instance.d.ts.map +1 -1
- package/dist/claude/session/instance.js +25 -12
- package/dist/claude/session/instance.js.map +1 -1
- package/dist/claude/session/interface.d.ts +2 -1
- package/dist/claude/session/interface.d.ts.map +1 -1
- package/dist/claude/session/questions.d.ts +9 -0
- package/dist/claude/session/questions.d.ts.map +1 -0
- package/dist/claude/session/questions.js +19 -0
- package/dist/claude/session/questions.js.map +1 -0
- package/dist/claude/session/resume.d.ts.map +1 -1
- package/dist/claude/session/resume.js +35 -26
- package/dist/claude/session/resume.js.map +1 -1
- package/dist/claude/session/runtime.d.ts +10 -0
- package/dist/claude/session/runtime.d.ts.map +1 -1
- package/dist/claude/session/runtime.js +8 -5
- package/dist/claude/session/runtime.js.map +1 -1
- package/dist/claude/session/startup-warnings.d.ts +5 -0
- package/dist/claude/session/startup-warnings.d.ts.map +1 -0
- package/dist/claude/session/startup-warnings.js +7 -0
- package/dist/claude/session/startup-warnings.js.map +1 -0
- package/dist/claude/session/transcript.d.ts +2 -0
- package/dist/claude/session/transcript.d.ts.map +1 -1
- package/dist/claude/session/transcript.js +21 -3
- package/dist/claude/session/transcript.js.map +1 -1
- package/dist/claude/startup-prompts.d.ts +35 -3
- package/dist/claude/startup-prompts.d.ts.map +1 -1
- package/dist/claude/startup-prompts.js +81 -15
- package/dist/claude/startup-prompts.js.map +1 -1
- package/dist/claude/transcript/index.d.ts.map +1 -1
- package/dist/claude/transcript/index.js +3 -2
- package/dist/claude/transcript/index.js.map +1 -1
- package/dist/claude/validate/event-fields.d.ts +6 -0
- package/dist/claude/validate/event-fields.d.ts.map +1 -0
- package/dist/claude/validate/event-fields.js +103 -0
- package/dist/claude/validate/event-fields.js.map +1 -0
- package/dist/claude/validate/input.d.ts.map +1 -1
- package/dist/claude/validate/input.js +12 -41
- package/dist/claude/validate/input.js.map +1 -1
- package/dist/claude/validate/shapes.d.ts +1 -1
- package/dist/claude/validate/shapes.d.ts.map +1 -1
- package/dist/claude/validate/shapes.js +1 -1
- package/dist/claude/validate/shapes.js.map +1 -1
- package/dist/claude/validate/tool-shapes.d.ts +102 -0
- package/dist/claude/validate/tool-shapes.d.ts.map +1 -0
- package/dist/claude/validate/tool-shapes.js +83 -0
- package/dist/claude/validate/tool-shapes.js.map +1 -0
- package/dist/claude/validate/tool-update.d.ts +2 -11
- package/dist/claude/validate/tool-update.d.ts.map +1 -1
- package/dist/claude/validate/tool-update.js +11 -112
- package/dist/claude/validate/tool-update.js.map +1 -1
- package/dist/claude/validate/tool-values.d.ts +7 -0
- package/dist/claude/validate/tool-values.d.ts.map +1 -0
- package/dist/claude/validate/tool-values.js +30 -0
- package/dist/claude/validate/tool-values.js.map +1 -0
- package/dist/cli/args/options.d.ts.map +1 -1
- package/dist/cli/args/options.js +1 -0
- package/dist/cli/args/options.js.map +1 -1
- package/dist/cli/args-commands.d.ts.map +1 -1
- package/dist/cli/args-commands.js +3 -0
- package/dist/cli/args-commands.js.map +1 -1
- package/dist/cli/config/store.d.ts.map +1 -1
- package/dist/cli/config/store.js +2 -1
- package/dist/cli/config/store.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +15 -11
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/effort.d.ts +5 -0
- package/dist/cli/interactive/effort.d.ts.map +1 -0
- package/dist/cli/interactive/effort.js +13 -0
- package/dist/cli/interactive/effort.js.map +1 -0
- package/dist/cli/interactive/launch.d.ts.map +1 -1
- package/dist/cli/interactive/launch.js +1 -1
- package/dist/cli/interactive/launch.js.map +1 -1
- package/dist/cli/lifecycle/index.d.ts +3 -6
- package/dist/cli/lifecycle/index.d.ts.map +1 -1
- package/dist/cli/lifecycle/index.js +6 -13
- package/dist/cli/lifecycle/index.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +9 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/models/combined.d.ts +6 -0
- package/dist/cli/models/combined.d.ts.map +1 -0
- package/dist/cli/models/combined.js +92 -0
- package/dist/cli/models/combined.js.map +1 -0
- package/dist/cli/models/index.d.ts +2 -0
- package/dist/cli/models/index.d.ts.map +1 -1
- package/dist/cli/models/index.js +15 -4
- package/dist/cli/models/index.js.map +1 -1
- package/dist/cli/models/render.d.ts +4 -0
- package/dist/cli/models/render.d.ts.map +1 -1
- package/dist/cli/models/render.js +28 -1
- package/dist/cli/models/render.js.map +1 -1
- package/dist/cli/models/result.d.ts +13 -0
- package/dist/cli/models/result.d.ts.map +1 -0
- package/dist/cli/models/result.js +2 -0
- package/dist/cli/models/result.js.map +1 -0
- package/dist/cli/models/settings.d.ts +63 -0
- package/dist/cli/models/settings.d.ts.map +1 -0
- package/dist/cli/models/settings.js +24 -0
- package/dist/cli/models/settings.js.map +1 -0
- package/dist/cli/models/signals.d.ts +11 -0
- package/dist/cli/models/signals.d.ts.map +1 -0
- package/dist/cli/models/signals.js +21 -0
- package/dist/cli/models/signals.js.map +1 -0
- package/dist/cli/request/index.d.ts.map +1 -1
- package/dist/cli/request/index.js +2 -1
- package/dist/cli/request/index.js.map +1 -1
- package/dist/cli/request/validation.d.ts.map +1 -1
- package/dist/cli/request/validation.js +0 -4
- package/dist/cli/request/validation.js.map +1 -1
- package/dist/cli/run/index.d.ts.map +1 -1
- package/dist/cli/run/index.js +3 -1
- package/dist/cli/run/index.js.map +1 -1
- package/dist/cli/run/output.d.ts.map +1 -1
- package/dist/cli/run/output.js +4 -6
- package/dist/cli/run/output.js.map +1 -1
- package/dist/cli/run/subscribe.js +1 -1
- package/dist/cli/run/subscribe.js.map +1 -1
- package/dist/cli/session/index.d.ts +2 -0
- package/dist/cli/session/index.d.ts.map +1 -1
- package/dist/cli/session/index.js +3 -0
- package/dist/cli/session/index.js.map +1 -1
- package/dist/cli/session/launch.d.ts +0 -3
- package/dist/cli/session/launch.d.ts.map +1 -1
- package/dist/cli/session/launch.js +0 -11
- package/dist/cli/session/launch.js.map +1 -1
- package/dist/cli/sessions/list.d.ts.map +1 -1
- package/dist/cli/sessions/list.js +5 -4
- package/dist/cli/sessions/list.js.map +1 -1
- package/dist/cli/types.d.ts +2 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/update-attention.d.ts +2 -1
- package/dist/cli/update-attention.d.ts.map +1 -1
- package/dist/cli/update-attention.js +11 -2
- package/dist/cli/update-attention.js.map +1 -1
- package/dist/codex/accepted-turn.d.ts +4 -0
- package/dist/codex/accepted-turn.d.ts.map +1 -0
- package/dist/codex/accepted-turn.js +17 -0
- package/dist/codex/accepted-turn.js.map +1 -0
- package/dist/codex/config/transaction.d.ts +22 -0
- package/dist/codex/config/transaction.d.ts.map +1 -1
- package/dist/codex/config/transaction.js +61 -31
- package/dist/codex/config/transaction.js.map +1 -1
- package/dist/codex/hooks/index.d.ts +6 -1
- package/dist/codex/hooks/index.d.ts.map +1 -1
- package/dist/codex/hooks/validate-result.d.ts.map +1 -1
- package/dist/codex/hooks/validate-result.js +2 -1
- package/dist/codex/hooks/validate-result.js.map +1 -1
- package/dist/codex/hooks/validate.d.ts.map +1 -1
- package/dist/codex/hooks/validate.js +1 -3
- package/dist/codex/hooks/validate.js.map +1 -1
- package/dist/codex/hooks/values.d.ts +3 -0
- package/dist/codex/hooks/values.d.ts.map +1 -0
- package/dist/codex/hooks/values.js +5 -0
- package/dist/codex/hooks/values.js.map +1 -0
- package/dist/codex/images/attach.d.ts +3 -1
- package/dist/codex/images/attach.d.ts.map +1 -1
- package/dist/codex/images/attach.js +10 -11
- package/dist/codex/images/attach.js.map +1 -1
- package/dist/codex/images/clipboard.d.ts.map +1 -1
- package/dist/codex/images/clipboard.js +11 -3
- package/dist/codex/images/clipboard.js.map +1 -1
- package/dist/codex/model-picker.d.ts.map +1 -1
- package/dist/codex/model-picker.js +23 -5
- package/dist/codex/model-picker.js.map +1 -1
- package/dist/codex/preflight.d.ts.map +1 -1
- package/dist/codex/preflight.js +2 -2
- package/dist/codex/preflight.js.map +1 -1
- package/dist/codex/questions/acceptance.d.ts +18 -0
- package/dist/codex/questions/acceptance.d.ts.map +1 -0
- package/dist/codex/questions/acceptance.js +70 -0
- package/dist/codex/questions/acceptance.js.map +1 -0
- package/dist/codex/questions/adapter.d.ts +26 -0
- package/dist/codex/questions/adapter.d.ts.map +1 -0
- package/dist/codex/questions/adapter.js +163 -0
- package/dist/codex/questions/adapter.js.map +1 -0
- package/dist/codex/questions/candidate-acceptance.d.ts +5 -0
- package/dist/codex/questions/candidate-acceptance.d.ts.map +1 -0
- package/dist/codex/questions/candidate-acceptance.js +8 -0
- package/dist/codex/questions/candidate-acceptance.js.map +1 -0
- package/dist/codex/questions/candidate-authority.d.ts +10 -0
- package/dist/codex/questions/candidate-authority.d.ts.map +1 -0
- package/dist/codex/questions/candidate-authority.js +25 -0
- package/dist/codex/questions/candidate-authority.js.map +1 -0
- package/dist/codex/questions/candidate-disable.d.ts +5 -0
- package/dist/codex/questions/candidate-disable.d.ts.map +1 -0
- package/dist/codex/questions/candidate-disable.js +14 -0
- package/dist/codex/questions/candidate-disable.js.map +1 -0
- package/dist/codex/questions/candidate-publication.d.ts +7 -0
- package/dist/codex/questions/candidate-publication.d.ts.map +1 -0
- package/dist/codex/questions/candidate-publication.js +8 -0
- package/dist/codex/questions/candidate-publication.js.map +1 -0
- package/dist/codex/questions/candidate-reservation.d.ts +6 -0
- package/dist/codex/questions/candidate-reservation.d.ts.map +1 -0
- package/dist/codex/questions/candidate-reservation.js +7 -0
- package/dist/codex/questions/candidate-reservation.js.map +1 -0
- package/dist/codex/questions/candidate-store.d.ts +53 -0
- package/dist/codex/questions/candidate-store.d.ts.map +1 -0
- package/dist/codex/questions/candidate-store.js +188 -0
- package/dist/codex/questions/candidate-store.js.map +1 -0
- package/dist/codex/questions/candidate.d.ts +40 -0
- package/dist/codex/questions/candidate.d.ts.map +1 -0
- package/dist/codex/questions/candidate.js +39 -0
- package/dist/codex/questions/candidate.js.map +1 -0
- package/dist/codex/questions/candidates.d.ts +16 -0
- package/dist/codex/questions/candidates.d.ts.map +1 -0
- package/dist/codex/questions/candidates.js +113 -0
- package/dist/codex/questions/candidates.js.map +1 -0
- package/dist/codex/questions/chrome.d.ts +10 -0
- package/dist/codex/questions/chrome.d.ts.map +1 -0
- package/dist/codex/questions/chrome.js +21 -0
- package/dist/codex/questions/chrome.js.map +1 -0
- package/dist/codex/questions/definitions.d.ts +19 -0
- package/dist/codex/questions/definitions.d.ts.map +1 -0
- package/dist/codex/questions/definitions.js +86 -0
- package/dist/codex/questions/definitions.js.map +1 -0
- package/dist/codex/questions/draft.d.ts +25 -0
- package/dist/codex/questions/draft.d.ts.map +1 -0
- package/dist/codex/questions/draft.js +76 -0
- package/dist/codex/questions/draft.js.map +1 -0
- package/dist/codex/questions/driver-support.d.ts +6 -0
- package/dist/codex/questions/driver-support.d.ts.map +1 -0
- package/dist/codex/questions/driver-support.js +7 -0
- package/dist/codex/questions/driver-support.js.map +1 -0
- package/dist/codex/questions/driver.d.ts +10 -0
- package/dist/codex/questions/driver.d.ts.map +1 -0
- package/dist/codex/questions/driver.js +139 -0
- package/dist/codex/questions/driver.js.map +1 -0
- package/dist/codex/questions/frame.d.ts +36 -0
- package/dist/codex/questions/frame.d.ts.map +1 -0
- package/dist/codex/questions/frame.js +138 -0
- package/dist/codex/questions/frame.js.map +1 -0
- package/dist/codex/questions/labels.d.ts +6 -0
- package/dist/codex/questions/labels.d.ts.map +1 -0
- package/dist/codex/questions/labels.js +6 -0
- package/dist/codex/questions/labels.js.map +1 -0
- package/dist/codex/questions/limits.d.ts +18 -0
- package/dist/codex/questions/limits.d.ts.map +1 -0
- package/dist/codex/questions/limits.js +61 -0
- package/dist/codex/questions/limits.js.map +1 -0
- package/dist/codex/questions/native-pending.d.ts +7 -0
- package/dist/codex/questions/native-pending.d.ts.map +1 -0
- package/dist/codex/questions/native-pending.js +37 -0
- package/dist/codex/questions/native-pending.js.map +1 -0
- package/dist/codex/questions/owned-editor.d.ts +12 -0
- package/dist/codex/questions/owned-editor.d.ts.map +1 -0
- package/dist/codex/questions/owned-editor.js +37 -0
- package/dist/codex/questions/owned-editor.js.map +1 -0
- package/dist/codex/questions/pending-submissions.d.ts +12 -0
- package/dist/codex/questions/pending-submissions.d.ts.map +1 -0
- package/dist/codex/questions/pending-submissions.js +42 -0
- package/dist/codex/questions/pending-submissions.js.map +1 -0
- package/dist/codex/questions/records.d.ts +29 -0
- package/dist/codex/questions/records.d.ts.map +1 -0
- package/dist/codex/questions/records.js +113 -0
- package/dist/codex/questions/records.js.map +1 -0
- package/dist/codex/questions/selection.d.ts +3 -0
- package/dist/codex/questions/selection.d.ts.map +1 -0
- package/dist/codex/questions/selection.js +18 -0
- package/dist/codex/questions/selection.js.map +1 -0
- package/dist/codex/questions/session.d.ts +6 -0
- package/dist/codex/questions/session.d.ts.map +1 -0
- package/dist/codex/questions/session.js +21 -0
- package/dist/codex/questions/session.js.map +1 -0
- package/dist/codex/screen/clearance.d.ts +17 -0
- package/dist/codex/screen/clearance.d.ts.map +1 -0
- package/dist/codex/screen/clearance.js +170 -0
- package/dist/codex/screen/clearance.js.map +1 -0
- package/dist/codex/screen/empty-input.d.ts +4 -0
- package/dist/codex/screen/empty-input.d.ts.map +1 -0
- package/dist/codex/screen/empty-input.js +10 -0
- package/dist/codex/screen/empty-input.js.map +1 -0
- package/dist/codex/screen/live-clearance.d.ts +6 -0
- package/dist/codex/screen/live-clearance.d.ts.map +1 -0
- package/dist/codex/screen/live-clearance.js +34 -0
- package/dist/codex/screen/live-clearance.js.map +1 -0
- package/dist/codex/screen/retained-clearance.d.ts +19 -0
- package/dist/codex/screen/retained-clearance.d.ts.map +1 -0
- package/dist/codex/screen/retained-clearance.js +67 -0
- package/dist/codex/screen/retained-clearance.js.map +1 -0
- package/dist/codex/screen/staged-input.d.ts +7 -0
- package/dist/codex/screen/staged-input.d.ts.map +1 -0
- package/dist/codex/screen/staged-input.js +40 -0
- package/dist/codex/screen/staged-input.js.map +1 -0
- package/dist/codex/screen/working.d.ts +4 -0
- package/dist/codex/screen/working.d.ts.map +1 -0
- package/dist/codex/screen/working.js +5 -0
- package/dist/codex/screen/working.js.map +1 -0
- package/dist/codex/screen-table.d.ts +4 -1
- package/dist/codex/screen-table.d.ts.map +1 -1
- package/dist/codex/screen-table.js +44 -11
- package/dist/codex/screen-table.js.map +1 -1
- package/dist/codex/session/build.d.ts +1 -0
- package/dist/codex/session/build.d.ts.map +1 -1
- package/dist/codex/session/build.js +62 -68
- package/dist/codex/session/build.js.map +1 -1
- package/dist/codex/session/caller-input.d.ts +18 -0
- package/dist/codex/session/caller-input.d.ts.map +1 -0
- package/dist/codex/session/caller-input.js +50 -0
- package/dist/codex/session/caller-input.js.map +1 -0
- package/dist/codex/session/cleanup.d.ts +2 -1
- package/dist/codex/session/cleanup.d.ts.map +1 -1
- package/dist/codex/session/cleanup.js +3 -2
- package/dist/codex/session/cleanup.js.map +1 -1
- package/dist/codex/session/cli-exit.d.ts +24 -0
- package/dist/codex/session/cli-exit.d.ts.map +1 -0
- package/dist/codex/session/cli-exit.js +43 -0
- package/dist/codex/session/cli-exit.js.map +1 -0
- package/dist/codex/session/hooks.d.ts +3 -0
- package/dist/codex/session/hooks.d.ts.map +1 -1
- package/dist/codex/session/hooks.js +66 -13
- package/dist/codex/session/hooks.js.map +1 -1
- package/dist/codex/session/index.d.ts +2 -1
- package/dist/codex/session/index.d.ts.map +1 -1
- package/dist/codex/session/index.js +23 -8
- package/dist/codex/session/index.js.map +1 -1
- package/dist/codex/session/initial-ready.d.ts +6 -0
- package/dist/codex/session/initial-ready.d.ts.map +1 -0
- package/dist/codex/session/initial-ready.js +9 -0
- package/dist/codex/session/initial-ready.js.map +1 -0
- package/dist/codex/session/instance.d.ts +19 -4
- package/dist/codex/session/instance.d.ts.map +1 -1
- package/dist/codex/session/instance.js +60 -30
- package/dist/codex/session/instance.js.map +1 -1
- package/dist/codex/session/resume.d.ts.map +1 -1
- package/dist/codex/session/resume.js +35 -26
- package/dist/codex/session/resume.js.map +1 -1
- package/dist/codex/session/runtime.d.ts.map +1 -1
- package/dist/codex/session/runtime.js +1 -2
- package/dist/codex/session/runtime.js.map +1 -1
- package/dist/codex/session/startup-warnings.d.ts +11 -0
- package/dist/codex/session/startup-warnings.d.ts.map +1 -0
- package/dist/codex/session/startup-warnings.js +9 -0
- package/dist/codex/session/startup-warnings.js.map +1 -0
- package/dist/codex/session/transcript.d.ts +3 -1
- package/dist/codex/session/transcript.d.ts.map +1 -1
- package/dist/codex/session/transcript.js +51 -8
- package/dist/codex/session/transcript.js.map +1 -1
- package/dist/codex/session/types.d.ts +4 -3
- package/dist/codex/session/types.d.ts.map +1 -1
- package/dist/codex/session/update-attention.d.ts +4 -0
- package/dist/codex/session/update-attention.d.ts.map +1 -0
- package/dist/codex/session/update-attention.js +18 -0
- package/dist/codex/session/update-attention.js.map +1 -0
- package/dist/codex/session/warnings.d.ts +2 -1
- package/dist/codex/session/warnings.d.ts.map +1 -1
- package/dist/codex/session/warnings.js +2 -1
- package/dist/codex/session/warnings.js.map +1 -1
- package/dist/codex/simple.d.ts +1 -0
- package/dist/codex/simple.d.ts.map +1 -1
- package/dist/codex/simple.js +2 -0
- package/dist/codex/simple.js.map +1 -1
- package/dist/codex/startup-prompts.d.ts +29 -14
- package/dist/codex/startup-prompts.d.ts.map +1 -1
- package/dist/codex/startup-prompts.js +113 -93
- package/dist/codex/startup-prompts.js.map +1 -1
- package/dist/codex/startup-warnings.d.ts +10 -0
- package/dist/codex/startup-warnings.d.ts.map +1 -0
- package/dist/codex/startup-warnings.js +65 -0
- package/dist/codex/startup-warnings.js.map +1 -0
- package/dist/codex/transcript/summary.d.ts +1 -1
- package/dist/codex/transcript/summary.d.ts.map +1 -1
- package/dist/codex/transcript/summary.js +18 -7
- package/dist/codex/transcript/summary.js.map +1 -1
- package/dist/codex/transcript/types.d.ts +23 -12
- package/dist/codex/transcript/types.d.ts.map +1 -1
- package/dist/codex/transcript/watcher.d.ts.map +1 -1
- package/dist/codex/transcript/watcher.js +2 -1
- package/dist/codex/transcript/watcher.js.map +1 -1
- package/dist/codex/update/classification.d.ts +27 -0
- package/dist/codex/update/classification.d.ts.map +1 -0
- package/dist/codex/update/classification.js +28 -0
- package/dist/codex/update/classification.js.map +1 -0
- package/dist/codex/update/evidence.d.ts +22 -0
- package/dist/codex/update/evidence.d.ts.map +1 -0
- package/dist/codex/update/evidence.js +69 -0
- package/dist/codex/update/evidence.js.map +1 -0
- package/dist/codex/update/layout.d.ts +7 -0
- package/dist/codex/update/layout.d.ts.map +1 -0
- package/dist/codex/update/layout.js +65 -0
- package/dist/codex/update/layout.js.map +1 -0
- package/dist/codex/update/recognition.d.ts +3 -0
- package/dist/codex/update/recognition.d.ts.map +1 -0
- package/dist/codex/update/recognition.js +7 -0
- package/dist/codex/update/recognition.js.map +1 -0
- package/dist/codex/update/selection.d.ts +7 -0
- package/dist/codex/update/selection.d.ts.map +1 -0
- package/dist/codex/update/selection.js +10 -0
- package/dist/codex/update/selection.js.map +1 -0
- package/dist/codex/update/skip-attempt.d.ts +25 -0
- package/dist/codex/update/skip-attempt.d.ts.map +1 -0
- package/dist/codex/update/skip-attempt.js +64 -0
- package/dist/codex/update/skip-attempt.js.map +1 -0
- package/dist/codex/update/tracker.d.ts +37 -0
- package/dist/codex/update/tracker.d.ts.map +1 -0
- package/dist/codex/update/tracker.js +156 -0
- package/dist/codex/update/tracker.js.map +1 -0
- package/dist/codex/update-identity.d.ts +23 -0
- package/dist/codex/update-identity.d.ts.map +1 -0
- package/dist/codex/update-identity.js +46 -0
- package/dist/codex/update-identity.js.map +1 -0
- package/dist/codex/update-prompt.d.ts +26 -17
- package/dist/codex/update-prompt.d.ts.map +1 -1
- package/dist/codex/update-prompt.js +65 -62
- package/dist/codex/update-prompt.js.map +1 -1
- package/dist/core/activity/index.d.ts +24 -3
- package/dist/core/activity/index.d.ts.map +1 -1
- package/dist/core/activity/index.js.map +1 -1
- package/dist/core/activity/meta.d.ts +6 -1
- package/dist/core/activity/meta.d.ts.map +1 -1
- package/dist/core/activity/meta.js.map +1 -1
- package/dist/core/activity/transcript.d.ts +4 -1
- package/dist/core/activity/transcript.d.ts.map +1 -1
- package/dist/core/activity/transcript.js +28 -18
- package/dist/core/activity/transcript.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/async-mutex.d.ts +14 -8
- package/dist/core/async-mutex.d.ts.map +1 -1
- package/dist/core/async-mutex.js +48 -12
- package/dist/core/async-mutex.js.map +1 -1
- package/dist/core/attention.d.ts +6 -2
- package/dist/core/attention.d.ts.map +1 -1
- package/dist/core/attention.js +23 -9
- package/dist/core/attention.js.map +1 -1
- package/dist/core/control-queue/admission-scan.d.ts +10 -0
- package/dist/core/control-queue/admission-scan.d.ts.map +1 -0
- package/dist/core/control-queue/admission-scan.js +28 -0
- package/dist/core/control-queue/admission-scan.js.map +1 -0
- package/dist/core/control-queue/admission.d.ts +15 -0
- package/dist/core/control-queue/admission.d.ts.map +1 -0
- package/dist/core/control-queue/admission.js +70 -0
- package/dist/core/control-queue/admission.js.map +1 -0
- package/dist/core/control-queue/budget.d.ts +15 -0
- package/dist/core/control-queue/budget.d.ts.map +1 -0
- package/dist/core/control-queue/budget.js +33 -0
- package/dist/core/control-queue/budget.js.map +1 -0
- package/dist/core/control-queue/index.d.ts +6 -3
- package/dist/core/control-queue/index.d.ts.map +1 -1
- package/dist/core/control-queue/index.js +52 -28
- package/dist/core/control-queue/index.js.map +1 -1
- package/dist/core/control-queue/scan.d.ts +10 -0
- package/dist/core/control-queue/scan.d.ts.map +1 -0
- package/dist/core/control-queue/scan.js +24 -0
- package/dist/core/control-queue/scan.js.map +1 -0
- package/dist/core/control-queue/state.d.ts +19 -3
- package/dist/core/control-queue/state.d.ts.map +1 -1
- package/dist/core/control-queue/state.js +87 -15
- package/dist/core/control-queue/state.js.map +1 -1
- package/dist/core/control-queue/submission.d.ts +8 -0
- package/dist/core/control-queue/submission.d.ts.map +1 -0
- package/dist/core/control-queue/submission.js +41 -0
- package/dist/core/control-queue/submission.js.map +1 -0
- package/dist/core/control-queue/traits.d.ts +6 -9
- package/dist/core/control-queue/traits.d.ts.map +1 -1
- package/dist/core/control-queue/traits.js +2 -15
- package/dist/core/control-queue/traits.js.map +1 -1
- package/dist/core/control-queue/types.d.ts +28 -2
- package/dist/core/control-queue/types.d.ts.map +1 -1
- package/dist/core/errors.d.ts +7 -2
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +7 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/freeze-hook-event.d.ts +6 -0
- package/dist/core/freeze-hook-event.d.ts.map +1 -0
- package/dist/core/freeze-hook-event.js +16 -0
- package/dist/core/freeze-hook-event.js.map +1 -0
- package/dist/core/hook-dispatch.d.ts +3 -2
- package/dist/core/hook-dispatch.d.ts.map +1 -1
- package/dist/core/hook-dispatch.js +14 -6
- package/dist/core/hook-dispatch.js.map +1 -1
- package/dist/core/hook-observation.d.ts +24 -0
- package/dist/core/hook-observation.d.ts.map +1 -0
- package/dist/core/hook-observation.js +68 -0
- package/dist/core/hook-observation.js.map +1 -0
- package/dist/core/hook-result.d.ts +12 -2
- package/dist/core/hook-result.d.ts.map +1 -1
- package/dist/core/hook-result.js +10 -9
- package/dist/core/hook-result.js.map +1 -1
- package/dist/core/hook-timeout.d.ts.map +1 -1
- package/dist/core/hook-timeout.js +3 -2
- package/dist/core/hook-timeout.js.map +1 -1
- package/dist/core/images/capture.d.ts +14 -0
- package/dist/core/images/capture.d.ts.map +1 -0
- package/dist/core/images/capture.js +35 -0
- package/dist/core/images/capture.js.map +1 -0
- package/dist/core/images/chip-wait.d.ts +14 -16
- package/dist/core/images/chip-wait.d.ts.map +1 -1
- package/dist/core/images/chip-wait.js +31 -34
- package/dist/core/images/chip-wait.js.map +1 -1
- package/dist/core/images/queued-budget.d.ts +18 -0
- package/dist/core/images/queued-budget.d.ts.map +1 -0
- package/dist/core/images/queued-budget.js +41 -0
- package/dist/core/images/queued-budget.js.map +1 -0
- package/dist/core/inert-record.d.ts +3 -0
- package/dist/core/inert-record.d.ts.map +1 -0
- package/dist/core/inert-record.js +6 -0
- package/dist/core/inert-record.js.map +1 -0
- package/dist/core/input/abort.d.ts +33 -2
- package/dist/core/input/abort.d.ts.map +1 -1
- package/dist/core/input/abort.js +42 -2
- package/dist/core/input/abort.js.map +1 -1
- package/dist/core/input/clear-ack.d.ts +10 -0
- package/dist/core/input/clear-ack.d.ts.map +1 -0
- package/dist/core/input/clear-ack.js +26 -0
- package/dist/core/input/clear-ack.js.map +1 -0
- package/dist/core/input/composer-cleanup.d.ts +33 -0
- package/dist/core/input/composer-cleanup.d.ts.map +1 -0
- package/dist/core/input/composer-cleanup.js +127 -0
- package/dist/core/input/composer-cleanup.js.map +1 -0
- package/dist/core/input/constants.d.ts +12 -0
- package/dist/core/input/constants.d.ts.map +1 -0
- package/dist/core/input/constants.js +12 -0
- package/dist/core/input/constants.js.map +1 -0
- package/dist/core/input/empty-frame.d.ts +4 -0
- package/dist/core/input/empty-frame.d.ts.map +1 -0
- package/dist/core/input/empty-frame.js +15 -0
- package/dist/core/input/empty-frame.js.map +1 -0
- package/dist/core/input/index.d.ts +8 -25
- package/dist/core/input/index.d.ts.map +1 -1
- package/dist/core/input/index.js +67 -102
- package/dist/core/input/index.js.map +1 -1
- package/dist/core/input/paste-guard.d.ts +34 -0
- package/dist/core/input/paste-guard.d.ts.map +1 -0
- package/dist/core/input/paste-guard.js +2 -0
- package/dist/core/input/paste-guard.js.map +1 -0
- package/dist/core/input/paste-nudge.d.ts +10 -0
- package/dist/core/input/paste-nudge.d.ts.map +1 -0
- package/dist/core/input/paste-nudge.js +91 -0
- package/dist/core/input/paste-nudge.js.map +1 -0
- package/dist/core/input/render-observation.d.ts +3 -0
- package/dist/core/input/render-observation.d.ts.map +1 -0
- package/dist/core/input/render-observation.js +38 -0
- package/dist/core/input/render-observation.js.map +1 -0
- package/dist/core/input/render-wakeup.d.ts +10 -0
- package/dist/core/input/render-wakeup.d.ts.map +1 -0
- package/dist/core/input/render-wakeup.js +45 -0
- package/dist/core/input/render-wakeup.js.map +1 -0
- package/dist/core/input/sanitize.d.ts +11 -0
- package/dist/core/input/sanitize.d.ts.map +1 -0
- package/dist/core/input/sanitize.js +19 -0
- package/dist/core/input/sanitize.js.map +1 -0
- package/dist/core/input/staged-composer.d.ts +12 -0
- package/dist/core/input/staged-composer.d.ts.map +1 -0
- package/dist/core/input/staged-composer.js +56 -0
- package/dist/core/input/staged-composer.js.map +1 -0
- package/dist/core/input/submission-cancel.d.ts +6 -0
- package/dist/core/input/submission-cancel.d.ts.map +1 -0
- package/dist/core/input/submission-cancel.js +18 -0
- package/dist/core/input/submission-cancel.js.map +1 -0
- package/dist/core/json-shape.d.ts +2 -0
- package/dist/core/json-shape.d.ts.map +1 -0
- package/dist/core/json-shape.js +6 -0
- package/dist/core/json-shape.js.map +1 -0
- package/dist/core/json-snapshot.d.ts +10 -0
- package/dist/core/json-snapshot.d.ts.map +1 -0
- package/dist/core/json-snapshot.js +84 -0
- package/dist/core/json-snapshot.js.map +1 -0
- package/dist/core/loops/scheduler.d.ts +1 -1
- package/dist/core/loops/scheduler.d.ts.map +1 -1
- package/dist/core/loops/scheduler.js +1 -2
- package/dist/core/loops/scheduler.js.map +1 -1
- package/dist/core/models/dialog-region.d.ts +16 -0
- package/dist/core/models/dialog-region.d.ts.map +1 -0
- package/dist/core/models/dialog-region.js +133 -0
- package/dist/core/models/dialog-region.js.map +1 -0
- package/dist/core/models/input.d.ts +1 -1
- package/dist/core/models/input.d.ts.map +1 -1
- package/dist/core/models/input.js.map +1 -1
- package/dist/core/models/intervention.d.ts +3 -0
- package/dist/core/models/intervention.d.ts.map +1 -0
- package/dist/core/models/intervention.js +12 -0
- package/dist/core/models/intervention.js.map +1 -0
- package/dist/core/models/picker.d.ts +14 -1
- package/dist/core/models/picker.d.ts.map +1 -1
- package/dist/core/models/picker.js +27 -6
- package/dist/core/models/picker.js.map +1 -1
- package/dist/core/models/rows.d.ts +42 -2
- package/dist/core/models/rows.d.ts.map +1 -1
- package/dist/core/models/rows.js +30 -3
- package/dist/core/models/rows.js.map +1 -1
- package/dist/core/models/tui-screen.d.ts +11 -1
- package/dist/core/models/tui-screen.d.ts.map +1 -1
- package/dist/core/models/tui-screen.js +22 -4
- package/dist/core/models/tui-screen.js.map +1 -1
- package/dist/core/module-require.d.ts +1 -1
- package/dist/core/module-require.js +1 -1
- package/dist/core/persona.d.ts +5 -4
- package/dist/core/persona.d.ts.map +1 -1
- package/dist/core/persona.js +18 -3
- package/dist/core/persona.js.map +1 -1
- package/dist/core/predicates.d.ts +9 -1
- package/dist/core/predicates.d.ts.map +1 -1
- package/dist/core/predicates.js +12 -2
- package/dist/core/predicates.js.map +1 -1
- package/dist/core/questions/abort.d.ts +2 -0
- package/dist/core/questions/abort.d.ts.map +1 -0
- package/dist/core/questions/abort.js +21 -0
- package/dist/core/questions/abort.js.map +1 -0
- package/dist/core/questions/activity-fields.d.ts +5 -0
- package/dist/core/questions/activity-fields.d.ts.map +1 -0
- package/dist/core/questions/activity-fields.js +15 -0
- package/dist/core/questions/activity-fields.js.map +1 -0
- package/dist/core/questions/activity.d.ts +6 -0
- package/dist/core/questions/activity.d.ts.map +1 -0
- package/dist/core/questions/activity.js +2 -0
- package/dist/core/questions/activity.js.map +1 -0
- package/dist/core/questions/adapter.d.ts +15 -0
- package/dist/core/questions/adapter.d.ts.map +1 -0
- package/dist/core/questions/adapter.js +2 -0
- package/dist/core/questions/adapter.js.map +1 -0
- package/dist/core/questions/attempt.d.ts +26 -0
- package/dist/core/questions/attempt.d.ts.map +1 -0
- package/dist/core/questions/attempt.js +85 -0
- package/dist/core/questions/attempt.js.map +1 -0
- package/dist/core/questions/controller.d.ts +24 -0
- package/dist/core/questions/controller.d.ts.map +1 -0
- package/dist/core/questions/controller.js +83 -0
- package/dist/core/questions/controller.js.map +1 -0
- package/dist/core/questions/correlation.d.ts +8 -0
- package/dist/core/questions/correlation.d.ts.map +1 -0
- package/dist/core/questions/correlation.js +11 -0
- package/dist/core/questions/correlation.js.map +1 -0
- package/dist/core/questions/cursor-provenance.d.ts +12 -0
- package/dist/core/questions/cursor-provenance.d.ts.map +1 -0
- package/dist/core/questions/cursor-provenance.js +19 -0
- package/dist/core/questions/cursor-provenance.js.map +1 -0
- package/dist/core/questions/deadline.d.ts +2 -0
- package/dist/core/questions/deadline.d.ts.map +1 -0
- package/dist/core/questions/deadline.js +11 -0
- package/dist/core/questions/deadline.js.map +1 -0
- package/dist/core/questions/dispatch.d.ts +17 -0
- package/dist/core/questions/dispatch.d.ts.map +1 -0
- package/dist/core/questions/dispatch.js +46 -0
- package/dist/core/questions/dispatch.js.map +1 -0
- package/dist/core/questions/errors.d.ts +8 -0
- package/dist/core/questions/errors.d.ts.map +1 -0
- package/dist/core/questions/errors.js +10 -0
- package/dist/core/questions/errors.js.map +1 -0
- package/dist/core/questions/input.d.ts +13 -0
- package/dist/core/questions/input.d.ts.map +1 -0
- package/dist/core/questions/input.js +93 -0
- package/dist/core/questions/input.js.map +1 -0
- package/dist/core/questions/io.d.ts +23 -0
- package/dist/core/questions/io.d.ts.map +1 -0
- package/dist/core/questions/io.js +2 -0
- package/dist/core/questions/io.js.map +1 -0
- package/dist/core/questions/notification-errors.d.ts +14 -0
- package/dist/core/questions/notification-errors.d.ts.map +1 -0
- package/dist/core/questions/notification-errors.js +45 -0
- package/dist/core/questions/notification-errors.js.map +1 -0
- package/dist/core/questions/observers.d.ts +17 -0
- package/dist/core/questions/observers.d.ts.map +1 -0
- package/dist/core/questions/observers.js +57 -0
- package/dist/core/questions/observers.js.map +1 -0
- package/dist/core/questions/registry.d.ts +35 -0
- package/dist/core/questions/registry.d.ts.map +1 -0
- package/dist/core/questions/registry.js +158 -0
- package/dist/core/questions/registry.js.map +1 -0
- package/dist/core/questions/transaction.d.ts +23 -0
- package/dist/core/questions/transaction.d.ts.map +1 -0
- package/dist/core/questions/transaction.js +97 -0
- package/dist/core/questions/transaction.js.map +1 -0
- package/dist/core/questions/types.d.ts +62 -0
- package/dist/core/questions/types.d.ts.map +1 -0
- package/dist/core/questions/types.js +2 -0
- package/dist/core/questions/types.js.map +1 -0
- package/dist/core/questions/validate.d.ts +16 -0
- package/dist/core/questions/validate.d.ts.map +1 -0
- package/dist/core/questions/validate.js +95 -0
- package/dist/core/questions/validate.js.map +1 -0
- package/dist/core/rendered-observers.d.ts +7 -2
- package/dist/core/rendered-observers.d.ts.map +1 -1
- package/dist/core/rendered-observers.js +44 -10
- package/dist/core/rendered-observers.js.map +1 -1
- package/dist/core/screen-facts.d.ts +8 -3
- package/dist/core/screen-facts.d.ts.map +1 -1
- package/dist/core/screen-facts.js +6 -3
- package/dist/core/screen-facts.js.map +1 -1
- package/dist/core/simple/boundary-observer.d.ts +30 -0
- package/dist/core/simple/boundary-observer.d.ts.map +1 -0
- package/dist/core/simple/boundary-observer.js +111 -0
- package/dist/core/simple/boundary-observer.js.map +1 -0
- package/dist/core/simple/boundary-signal.d.ts +31 -0
- package/dist/core/simple/boundary-signal.d.ts.map +1 -0
- package/dist/core/simple/boundary-signal.js +19 -0
- package/dist/core/simple/boundary-signal.js.map +1 -0
- package/dist/core/simple/captured-input.d.ts +19 -0
- package/dist/core/simple/captured-input.d.ts.map +1 -0
- package/dist/core/simple/captured-input.js +78 -0
- package/dist/core/simple/captured-input.js.map +1 -0
- package/dist/core/simple/close.d.ts +6 -0
- package/dist/core/simple/close.d.ts.map +1 -0
- package/dist/core/simple/close.js +20 -0
- package/dist/core/simple/close.js.map +1 -0
- package/dist/core/simple/events.d.ts +2 -2
- package/dist/core/simple/events.js +2 -2
- package/dist/core/simple/loop-boundary.d.ts +12 -0
- package/dist/core/simple/loop-boundary.d.ts.map +1 -0
- package/dist/core/simple/loop-boundary.js +68 -0
- package/dist/core/simple/loop-boundary.js.map +1 -0
- package/dist/core/simple/loop-hold.d.ts +7 -0
- package/dist/core/simple/loop-hold.d.ts.map +1 -0
- package/dist/core/simple/loop-hold.js +9 -0
- package/dist/core/simple/loop-hold.js.map +1 -0
- package/dist/core/simple/native-boundary.d.ts +15 -0
- package/dist/core/simple/native-boundary.d.ts.map +1 -0
- package/dist/core/simple/native-boundary.js +18 -0
- package/dist/core/simple/native-boundary.js.map +1 -0
- package/dist/core/simple/native-idle.d.ts +17 -0
- package/dist/core/simple/native-idle.d.ts.map +1 -0
- package/dist/core/simple/native-idle.js +25 -0
- package/dist/core/simple/native-idle.js.map +1 -0
- package/dist/core/simple/observe-boundary.d.ts +28 -0
- package/dist/core/simple/observe-boundary.d.ts.map +1 -0
- package/dist/core/simple/observe-boundary.js +13 -0
- package/dist/core/simple/observe-boundary.js.map +1 -0
- package/dist/core/simple/owned-loop.d.ts +8 -0
- package/dist/core/simple/owned-loop.d.ts.map +1 -0
- package/dist/core/simple/owned-loop.js +42 -0
- package/dist/core/simple/owned-loop.js.map +1 -0
- package/dist/core/simple/session.d.ts +7 -7
- package/dist/core/simple/session.d.ts.map +1 -1
- package/dist/core/simple/session.js +20 -33
- package/dist/core/simple/session.js.map +1 -1
- package/dist/core/simple/submission-context.d.ts +13 -0
- package/dist/core/simple/submission-context.d.ts.map +1 -0
- package/dist/core/simple/submission-context.js +35 -0
- package/dist/core/simple/submission-context.js.map +1 -0
- package/dist/core/simple/turn/bounds.d.ts +22 -0
- package/dist/core/simple/turn/bounds.d.ts.map +1 -0
- package/dist/core/simple/turn/bounds.js +22 -0
- package/dist/core/simple/turn/bounds.js.map +1 -0
- package/dist/core/simple/turn/defaults.d.ts +24 -0
- package/dist/core/simple/turn/defaults.d.ts.map +1 -0
- package/dist/core/simple/turn/defaults.js +34 -0
- package/dist/core/simple/turn/defaults.js.map +1 -0
- package/dist/core/simple/turn-acceptance.d.ts +20 -3
- package/dist/core/simple/turn-acceptance.d.ts.map +1 -1
- package/dist/core/simple/turn-acceptance.js +55 -5
- package/dist/core/simple/turn-acceptance.js.map +1 -1
- package/dist/core/simple/turn-boundary.d.ts +7 -2
- package/dist/core/simple/turn-boundary.d.ts.map +1 -1
- package/dist/core/simple/turn-boundary.js +17 -5
- package/dist/core/simple/turn-boundary.js.map +1 -1
- package/dist/core/simple/turn-gate.d.ts.map +1 -1
- package/dist/core/simple/turn-gate.js +1 -11
- package/dist/core/simple/turn-gate.js.map +1 -1
- package/dist/core/simple/turn-identity.d.ts +28 -0
- package/dist/core/simple/turn-identity.d.ts.map +1 -0
- package/dist/core/simple/turn-identity.js +74 -0
- package/dist/core/simple/turn-identity.js.map +1 -0
- package/dist/core/simple/turn-types.d.ts +11 -4
- package/dist/core/simple/turn-types.d.ts.map +1 -1
- package/dist/core/simple/turn-types.js +1 -6
- package/dist/core/simple/turn-types.js.map +1 -1
- package/dist/core/simple/turn.d.ts +7 -30
- package/dist/core/simple/turn.d.ts.map +1 -1
- package/dist/core/simple/turn.js +75 -75
- package/dist/core/simple/turn.js.map +1 -1
- package/dist/core/startup/barrier.d.ts +37 -0
- package/dist/core/startup/barrier.d.ts.map +1 -0
- package/dist/core/startup/barrier.js +59 -0
- package/dist/core/startup/barrier.js.map +1 -0
- package/dist/core/startup/frame.d.ts +2 -0
- package/dist/core/startup/frame.d.ts.map +1 -1
- package/dist/core/startup/frame.js +12 -0
- package/dist/core/startup/frame.js.map +1 -1
- package/dist/core/startup/warnings.d.ts +5 -0
- package/dist/core/startup/warnings.d.ts.map +1 -0
- package/dist/core/startup/warnings.js +14 -0
- package/dist/core/startup/warnings.js.map +1 -0
- package/dist/core/startup/write.d.ts +13 -11
- package/dist/core/startup/write.d.ts.map +1 -1
- package/dist/core/startup/write.js +12 -5
- package/dist/core/startup/write.js.map +1 -1
- package/dist/core/stop-input.d.ts +19 -0
- package/dist/core/stop-input.d.ts.map +1 -0
- package/dist/core/stop-input.js +47 -0
- package/dist/core/stop-input.js.map +1 -0
- package/dist/core/terminal-options.d.ts +13 -3
- package/dist/core/terminal-options.d.ts.map +1 -1
- package/dist/core/terminal-options.js +17 -7
- package/dist/core/terminal-options.js.map +1 -1
- package/dist/core/terminal-replay.d.ts +1 -0
- package/dist/core/terminal-replay.d.ts.map +1 -1
- package/dist/core/terminal-replay.js +6 -0
- package/dist/core/terminal-replay.js.map +1 -1
- package/dist/core/timers.d.ts +15 -0
- package/dist/core/timers.d.ts.map +1 -0
- package/dist/core/timers.js +17 -0
- package/dist/core/timers.js.map +1 -0
- package/dist/core/trust/allowlist.d.ts +24 -1
- package/dist/core/trust/allowlist.d.ts.map +1 -1
- package/dist/core/trust/allowlist.js +39 -12
- package/dist/core/trust/allowlist.js.map +1 -1
- package/dist/core/trust/blocking.d.ts +21 -10
- package/dist/core/trust/blocking.d.ts.map +1 -1
- package/dist/core/trust/blocking.js +64 -18
- package/dist/core/trust/blocking.js.map +1 -1
- package/dist/core/trust/clearance.d.ts +20 -0
- package/dist/core/trust/clearance.d.ts.map +1 -0
- package/dist/core/trust/clearance.js +25 -0
- package/dist/core/trust/clearance.js.map +1 -0
- package/dist/core/trust/copy.d.ts +19 -0
- package/dist/core/trust/copy.d.ts.map +1 -0
- package/dist/core/trust/copy.js +23 -0
- package/dist/core/trust/copy.js.map +1 -0
- package/dist/core/trust/dialog.d.ts +28 -0
- package/dist/core/trust/dialog.d.ts.map +1 -0
- package/dist/core/trust/dialog.js +96 -0
- package/dist/core/trust/dialog.js.map +1 -0
- package/dist/core/trust/options.d.ts +9 -0
- package/dist/core/trust/options.d.ts.map +1 -0
- package/dist/core/trust/options.js +9 -0
- package/dist/core/trust/options.js.map +1 -0
- package/dist/core/trust/prompts.d.ts +16 -37
- package/dist/core/trust/prompts.d.ts.map +1 -1
- package/dist/core/trust/prompts.js +10 -18
- package/dist/core/trust/prompts.js.map +1 -1
- package/dist/core/trust/responder.d.ts +27 -45
- package/dist/core/trust/responder.d.ts.map +1 -1
- package/dist/core/trust/responder.js +178 -108
- package/dist/core/trust/responder.js.map +1 -1
- package/dist/core/trust/types.d.ts +36 -0
- package/dist/core/trust/types.d.ts.map +1 -0
- package/dist/core/trust/types.js +17 -0
- package/dist/core/trust/types.js.map +1 -0
- package/dist/core/trust/view.d.ts +31 -0
- package/dist/core/trust/view.d.ts.map +1 -0
- package/dist/core/trust/view.js +52 -0
- package/dist/core/trust/view.js.map +1 -0
- package/dist/core/trust/write.d.ts +31 -0
- package/dist/core/trust/write.d.ts.map +1 -0
- package/dist/core/trust/write.js +148 -0
- package/dist/core/trust/write.js.map +1 -0
- package/dist/core/turn-state.d.ts +6 -0
- package/dist/core/turn-state.d.ts.map +1 -1
- package/dist/core/turn-state.js +31 -1
- package/dist/core/turn-state.js.map +1 -1
- package/dist/core/types.d.ts +4 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/warnings/auth.d.ts +25 -0
- package/dist/core/warnings/auth.d.ts.map +1 -0
- package/dist/core/warnings/auth.js +2 -0
- package/dist/core/warnings/auth.js.map +1 -0
- package/dist/core/warnings/index.d.ts +9 -16
- package/dist/core/warnings/index.d.ts.map +1 -1
- package/dist/core/warnings/index.js +2 -3
- package/dist/core/warnings/index.js.map +1 -1
- package/dist/core/warnings/lifecycle.d.ts +25 -1
- package/dist/core/warnings/lifecycle.d.ts.map +1 -1
- package/dist/core/warnings/lifecycle.js +1 -1
- package/dist/core/warnings/questions.d.ts +23 -0
- package/dist/core/warnings/questions.d.ts.map +1 -0
- package/dist/core/warnings/questions.js +2 -0
- package/dist/core/warnings/questions.js.map +1 -0
- package/dist/core/warnings/session.d.ts +3 -2
- package/dist/core/warnings/session.d.ts.map +1 -1
- package/dist/core/warnings/session.js +3 -2
- package/dist/core/warnings/session.js.map +1 -1
- package/dist/core/warnings/transcript.d.ts +12 -0
- package/dist/core/warnings/transcript.d.ts.map +1 -0
- package/dist/core/warnings/transcript.js +2 -0
- package/dist/core/warnings/transcript.js.map +1 -0
- package/dist/core/warnings/update.d.ts +11 -2
- package/dist/core/warnings/update.d.ts.map +1 -1
- package/dist/core/warnings/update.js +27 -4
- package/dist/core/warnings/update.js.map +1 -1
- package/dist/events/emitter.d.ts +18 -2
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +61 -14
- package/dist/events/emitter.js.map +1 -1
- package/dist/events/observer-errors.d.ts +9 -0
- package/dist/events/observer-errors.d.ts.map +1 -0
- package/dist/events/observer-errors.js +68 -0
- package/dist/events/observer-errors.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/pty/node.d.ts.map +1 -1
- package/dist/pty/node.js +4 -0
- package/dist/pty/node.js.map +1 -1
- package/dist/pty/types.d.ts +5 -0
- package/dist/pty/types.d.ts.map +1 -1
- package/dist/runtime/probe-cleanup.d.ts +34 -0
- package/dist/runtime/probe-cleanup.d.ts.map +1 -0
- package/dist/runtime/probe-cleanup.js +139 -0
- package/dist/runtime/probe-cleanup.js.map +1 -0
- package/dist/runtime/probe.d.ts.map +1 -1
- package/dist/runtime/probe.js +18 -25
- package/dist/runtime/probe.js.map +1 -1
- package/dist/runtime/readiness/initial-ready.d.ts +13 -11
- package/dist/runtime/readiness/initial-ready.d.ts.map +1 -1
- package/dist/runtime/readiness/initial-ready.js +23 -18
- package/dist/runtime/readiness/initial-ready.js.map +1 -1
- package/dist/runtime/seams.d.ts +2 -1
- package/dist/runtime/seams.d.ts.map +1 -1
- package/dist/runtime/seams.js.map +1 -1
- package/dist/runtime/session/attention-clearance.d.ts +5 -0
- package/dist/runtime/session/attention-clearance.d.ts.map +1 -0
- package/dist/runtime/session/attention-clearance.js +20 -0
- package/dist/runtime/session/attention-clearance.js.map +1 -0
- package/dist/runtime/session/base.d.ts +17 -4
- package/dist/runtime/session/base.d.ts.map +1 -1
- package/dist/runtime/session/base.js +68 -14
- package/dist/runtime/session/base.js.map +1 -1
- package/dist/runtime/session/commands.d.ts +17 -3
- package/dist/runtime/session/commands.d.ts.map +1 -1
- package/dist/runtime/session/commands.js +60 -13
- package/dist/runtime/session/commands.js.map +1 -1
- package/dist/runtime/session/foreign-picker.d.ts +8 -0
- package/dist/runtime/session/foreign-picker.d.ts.map +1 -0
- package/dist/runtime/session/foreign-picker.js +18 -0
- package/dist/runtime/session/foreign-picker.js.map +1 -0
- package/dist/runtime/session/frames.d.ts +27 -0
- package/dist/runtime/session/frames.d.ts.map +1 -0
- package/dist/runtime/session/frames.js +80 -0
- package/dist/runtime/session/frames.js.map +1 -0
- package/dist/runtime/session/image-attach.d.ts +3 -15
- package/dist/runtime/session/image-attach.d.ts.map +1 -1
- package/dist/runtime/session/image-attach.js +9 -27
- package/dist/runtime/session/image-attach.js.map +1 -1
- package/dist/runtime/session/lifecycle.d.ts +20 -14
- package/dist/runtime/session/lifecycle.d.ts.map +1 -1
- package/dist/runtime/session/lifecycle.js +49 -47
- package/dist/runtime/session/lifecycle.js.map +1 -1
- package/dist/runtime/session/loops.d.ts +10 -1
- package/dist/runtime/session/loops.d.ts.map +1 -1
- package/dist/runtime/session/loops.js +61 -19
- package/dist/runtime/session/loops.js.map +1 -1
- package/dist/runtime/session/native-submission.d.ts +10 -0
- package/dist/runtime/session/native-submission.d.ts.map +1 -0
- package/dist/runtime/session/native-submission.js +62 -0
- package/dist/runtime/session/native-submission.js.map +1 -0
- package/dist/runtime/session/not-running.d.ts +13 -0
- package/dist/runtime/session/not-running.d.ts.map +1 -0
- package/dist/runtime/session/not-running.js +28 -0
- package/dist/runtime/session/not-running.js.map +1 -0
- package/dist/runtime/session/paste-recovery.d.ts +15 -0
- package/dist/runtime/session/paste-recovery.d.ts.map +1 -0
- package/dist/runtime/session/paste-recovery.js +30 -0
- package/dist/runtime/session/paste-recovery.js.map +1 -0
- package/dist/runtime/session/picker-cleanup.d.ts +56 -0
- package/dist/runtime/session/picker-cleanup.d.ts.map +1 -0
- package/dist/runtime/session/picker-cleanup.js +126 -0
- package/dist/runtime/session/picker-cleanup.js.map +1 -0
- package/dist/runtime/session/picker-input.d.ts +17 -0
- package/dist/runtime/session/picker-input.d.ts.map +1 -0
- package/dist/runtime/session/picker-input.js +74 -0
- package/dist/runtime/session/picker-input.js.map +1 -0
- package/dist/runtime/session/picker.d.ts +56 -0
- package/dist/runtime/session/picker.d.ts.map +1 -0
- package/dist/runtime/session/picker.js +143 -0
- package/dist/runtime/session/picker.js.map +1 -0
- package/dist/runtime/session/questions.d.ts +23 -0
- package/dist/runtime/session/questions.d.ts.map +1 -0
- package/dist/runtime/session/questions.js +25 -0
- package/dist/runtime/session/questions.js.map +1 -0
- package/dist/runtime/session/readiness.d.ts +6 -3
- package/dist/runtime/session/readiness.d.ts.map +1 -1
- package/dist/runtime/session/readiness.js +19 -8
- package/dist/runtime/session/readiness.js.map +1 -1
- package/dist/runtime/session/shutdown-binding.d.ts +9 -0
- package/dist/runtime/session/shutdown-binding.d.ts.map +1 -1
- package/dist/runtime/session/shutdown-binding.js +57 -8
- package/dist/runtime/session/shutdown-binding.js.map +1 -1
- package/dist/runtime/session/shutdown.d.ts +2 -5
- package/dist/runtime/session/shutdown.d.ts.map +1 -1
- package/dist/runtime/session/shutdown.js +12 -13
- package/dist/runtime/session/shutdown.js.map +1 -1
- package/dist/runtime/session/status-wiring.d.ts +9 -4
- package/dist/runtime/session/status-wiring.d.ts.map +1 -1
- package/dist/runtime/session/status-wiring.js +8 -5
- package/dist/runtime/session/status-wiring.js.map +1 -1
- package/dist/runtime/session/stop-completion.d.ts +23 -0
- package/dist/runtime/session/stop-completion.d.ts.map +1 -0
- package/dist/runtime/session/stop-completion.js +32 -0
- package/dist/runtime/session/stop-completion.js.map +1 -0
- package/dist/runtime/session/turn-submission.d.ts +9 -0
- package/dist/runtime/session/turn-submission.d.ts.map +1 -0
- package/dist/runtime/session/turn-submission.js +19 -0
- package/dist/runtime/session/turn-submission.js.map +1 -0
- package/dist/runtime/shutdown/terminal.d.ts +10 -0
- package/dist/runtime/shutdown/terminal.d.ts.map +1 -0
- package/dist/runtime/shutdown/terminal.js +38 -0
- package/dist/runtime/shutdown/terminal.js.map +1 -0
- package/dist/runtime/startup/buffer.d.ts +1 -1
- package/dist/runtime/startup/buffer.d.ts.map +1 -1
- package/dist/runtime/startup/buffer.js +14 -8
- package/dist/runtime/startup/buffer.js.map +1 -1
- package/dist/runtime/status-evidence.d.ts +7 -3
- package/dist/runtime/status-evidence.d.ts.map +1 -1
- package/dist/runtime/status-evidence.js +12 -10
- package/dist/runtime/status-evidence.js.map +1 -1
- package/dist/runtime/update/lock.d.ts +7 -0
- package/dist/runtime/update/lock.d.ts.map +1 -1
- package/dist/runtime/update/lock.js +102 -121
- package/dist/runtime/update/lock.js.map +1 -1
- package/dist/runtime/update/owner.d.ts +54 -0
- package/dist/runtime/update/owner.d.ts.map +1 -0
- package/dist/runtime/update/owner.js +131 -0
- package/dist/runtime/update/owner.js.map +1 -0
- package/dist/runtime/update/retained-lease.d.ts +13 -0
- package/dist/runtime/update/retained-lease.d.ts.map +1 -0
- package/dist/runtime/update/retained-lease.js +40 -0
- package/dist/runtime/update/retained-lease.js.map +1 -0
- package/dist/runtime/update/waiting.d.ts +4 -0
- package/dist/runtime/update/waiting.d.ts.map +1 -0
- package/dist/runtime/update/waiting.js +95 -0
- package/dist/runtime/update/waiting.js.map +1 -0
- package/dist/state/canonical-path.d.ts +2 -0
- package/dist/state/canonical-path.d.ts.map +1 -0
- package/dist/state/canonical-path.js +22 -0
- package/dist/state/canonical-path.js.map +1 -0
- package/dist/state/launch-ownership.d.ts +21 -0
- package/dist/state/launch-ownership.d.ts.map +1 -0
- package/dist/state/launch-ownership.js +154 -0
- package/dist/state/launch-ownership.js.map +1 -0
- package/dist/state/launch-publication.d.ts +7 -0
- package/dist/state/launch-publication.d.ts.map +1 -0
- package/dist/state/launch-publication.js +53 -0
- package/dist/state/launch-publication.js.map +1 -0
- package/dist/state/private-read.js +2 -1
- package/dist/state/private-read.js.map +1 -1
- package/dist/state/private-session.d.ts +1 -1
- package/dist/state/private-session.d.ts.map +1 -1
- package/dist/state/private-session.js +4 -1
- package/dist/state/private-session.js.map +1 -1
- package/dist/state/runtime-paths.d.ts +10 -9
- package/dist/state/runtime-paths.d.ts.map +1 -1
- package/dist/state/runtime-paths.js +14 -12
- package/dist/state/runtime-paths.js.map +1 -1
- package/dist/state/socket-home.d.ts +8 -4
- package/dist/state/socket-home.d.ts.map +1 -1
- package/dist/state/socket-home.js +31 -7
- package/dist/state/socket-home.js.map +1 -1
- package/dist/state/startup-ownership.d.ts +4 -0
- package/dist/state/startup-ownership.d.ts.map +1 -0
- package/dist/state/startup-ownership.js +14 -0
- package/dist/state/startup-ownership.js.map +1 -0
- package/dist/state/store.d.ts +1 -1
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +2 -2
- package/dist/state/store.js.map +1 -1
- package/dist/terminal/coordinates.d.ts +7 -0
- package/dist/terminal/coordinates.d.ts.map +1 -0
- package/dist/terminal/coordinates.js +6 -0
- package/dist/terminal/coordinates.js.map +1 -0
- package/dist/terminal/cursor.d.ts +40 -0
- package/dist/terminal/cursor.d.ts.map +1 -0
- package/dist/terminal/cursor.js +116 -0
- package/dist/terminal/cursor.js.map +1 -0
- package/dist/terminal/headless.d.ts +7 -5
- package/dist/terminal/headless.d.ts.map +1 -1
- package/dist/terminal/headless.js +47 -35
- package/dist/terminal/headless.js.map +1 -1
- package/dist/terminal/pty-output.d.ts +37 -0
- package/dist/terminal/pty-output.d.ts.map +1 -0
- package/dist/terminal/pty-output.js +109 -0
- package/dist/terminal/pty-output.js.map +1 -0
- package/dist/terminal/render-queue.d.ts +30 -0
- package/dist/terminal/render-queue.d.ts.map +1 -0
- package/dist/terminal/render-queue.js +105 -0
- package/dist/terminal/render-queue.js.map +1 -0
- package/dist/terminal/snapshot.d.ts +5 -0
- package/dist/terminal/snapshot.d.ts.map +1 -0
- package/dist/terminal/snapshot.js +13 -0
- package/dist/terminal/snapshot.js.map +1 -0
- package/docs/api.md +8 -1
- package/docs/cli-behavior.md +930 -43
- package/docs/cli-output.md +44 -10
- package/docs/cli.md +18 -11
- package/docs/codex/cli.md +44 -0
- package/docs/login-recovery.md +24 -0
- package/docs/native-question-proofs.md +57 -0
- package/docs/performance.md +73 -0
- package/docs/questions.md +181 -0
- package/package.json +1 -1
- package/prd/04-architecture.md +15 -0
- package/prd/05-api/5.1-starting-claude.md +11 -1
- package/prd/05-api/5.10-questions.md +117 -0
- package/prd/05-api/5.3-claude-session-api.md +293 -24
- package/prd/05-api/5.4-events.md +159 -32
- package/prd/05-api/5.5-starting-codex.md +85 -18
- package/prd/05-api/5.7-codex-session-api.md +143 -5
- package/prd/05-api/5.8-session-api.md +58 -6
- package/prd/05-api/5.9-loops.md +11 -1
- package/prd/05-api/README.md +2 -0
- package/prd/06-claude-hook-bridge.md +115 -0
- package/prd/07-claude-policy.md +2 -0
- package/prd/07a-codex-hook-bridge.md +90 -0
- package/prd/08-state.md +51 -10
- package/prd/09-lifecycle.md +79 -3
- package/prd/10-errors.md +9 -2
- package/prd/12a-cli.md +50 -17
- package/prd/13-latitude.md +89 -0
- package/prd/14-conformance.md +86 -32
- package/prd/16-maintainer-review.md +75 -0
- package/prd/README.md +1 -0
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared `[Image #N]` chip confirmation used by both adapter attach paths. An
|
|
3
3
|
* attach is CONFIRMED only when the composer's image-chip count increases; an
|
|
4
|
-
* unconfirmed image (timeout)
|
|
5
|
-
* `image_attach_failed
|
|
6
|
-
*
|
|
4
|
+
* unconfirmed image (timeout) or abort (session closing) REJECTS with
|
|
5
|
+
* `image_attach_failed`. A detected permanent render failure rejects immediately
|
|
6
|
+
* with that error, without waiting for confirmation timeout. No text is submitted
|
|
7
|
+
* for an unconfirmed image.
|
|
8
|
+
* Implements PRD §5.3 (C-API-44/45/46/56).
|
|
7
9
|
*/
|
|
10
|
+
import { type InputTerminal } from "../input/abort.ts";
|
|
8
11
|
/** The terminal surface an attach needs: send bytes and read the rendered screen. */
|
|
9
|
-
export type AttachTerminal = {
|
|
12
|
+
export type AttachTerminal = Required<Pick<InputTerminal, "settled" | "renderFailed">> & {
|
|
10
13
|
sendInput(data: string): void | Promise<void>;
|
|
11
14
|
snapshot(): {
|
|
12
15
|
readonly text: string;
|
|
@@ -15,18 +18,12 @@ export type AttachTerminal = {
|
|
|
15
18
|
/** True while a blocking human-decision dialog is on screen (C-API-37 safety). */
|
|
16
19
|
export type BlockedGuard = () => boolean;
|
|
17
20
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
+
* Observe received output and wait for dialogs before an image key. Capture the
|
|
22
|
+
* chip baseline in the same turn as that key, so the observation cannot confirm
|
|
23
|
+
* this image using an older chip. Cancellation or permanent render failure rejects
|
|
24
|
+
* with `image_attach_failed`; a failed Codex session must release its clipboard lease.
|
|
21
25
|
*/
|
|
22
|
-
export declare function
|
|
23
|
-
/**
|
|
24
|
-
* Sends `data` to the terminal only once no blocking dialog is on screen — a
|
|
25
|
-
* paste path or Ctrl+V must never reach a permission/trust dialog and alter a
|
|
26
|
-
* human decision. Rejects with `image_attach_failed` if the signal aborts while
|
|
27
|
-
* held (the session closed) (C-API-37/44).
|
|
28
|
-
*/
|
|
29
|
-
export declare function sendWhenUnblocked(terminal: AttachTerminal, data: string, blocked: BlockedGuard | undefined, signal: AbortSignal): Promise<void>;
|
|
26
|
+
export declare function sendObservedImage(terminal: AttachTerminal, data: string, blocked: BlockedGuard | undefined, signal: AbortSignal): Promise<number>;
|
|
30
27
|
export type ChipWaitOptions = {
|
|
31
28
|
readonly settleMs: number;
|
|
32
29
|
readonly timeoutMs: number;
|
|
@@ -37,7 +34,8 @@ export declare function imageChipCount(text: string): number;
|
|
|
37
34
|
/**
|
|
38
35
|
* Resolves once the chip count rises above `before`; rejects with
|
|
39
36
|
* `image_attach_failed` on the confirmation timeout or an aborted signal, so an
|
|
40
|
-
* unconfirmed attach never silently degrades to a text-only turn.
|
|
37
|
+
* unconfirmed attach never silently degrades to a text-only turn. A detected permanent
|
|
38
|
+
* render failure rejects immediately with that error rather than awaiting the timeout.
|
|
41
39
|
*/
|
|
42
40
|
export declare function waitForImageChip(terminal: AttachTerminal, before: number, signal: AbortSignal, options: ChipWaitOptions): Promise<void>;
|
|
43
41
|
//# sourceMappingURL=chip-wait.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip-wait.d.ts","sourceRoot":"","sources":["../../../src/core/images/chip-wait.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chip-wait.d.ts","sourceRoot":"","sources":["../../../src/core/images/chip-wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,aAAa,EAAe,MAAM,mBAAmB,CAAC;AAIpE,qFAAqF;AACrF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,cAAc,CAAC,CAAC,GAAG;IACvF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,QAAQ,IAAI;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC;AAEzC;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CAajB;AAWD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AASF,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -1,45 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared `[Image #N]` chip confirmation used by both adapter attach paths. An
|
|
3
3
|
* attach is CONFIRMED only when the composer's image-chip count increases; an
|
|
4
|
-
* unconfirmed image (timeout)
|
|
5
|
-
* `image_attach_failed
|
|
6
|
-
*
|
|
4
|
+
* unconfirmed image (timeout) or abort (session closing) REJECTS with
|
|
5
|
+
* `image_attach_failed`. A detected permanent render failure rejects immediately
|
|
6
|
+
* with that error, without waiting for confirmation timeout. No text is submitted
|
|
7
|
+
* for an unconfirmed image.
|
|
8
|
+
* Implements PRD §5.3 (C-API-44/45/46/56).
|
|
7
9
|
*/
|
|
8
10
|
import { elwoodError } from "../errors.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const clearComposerKeys = "\u0015\u000b";
|
|
11
|
+
import { writeUnsafe } from "../input/abort.js";
|
|
12
|
+
import { stageComposer } from "../input/composer-cleanup.js";
|
|
13
|
+
import { unsafeWriteRetryMs } from "../input/constants.js";
|
|
13
14
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* Observe received output and wait for dialogs before an image key. Capture the
|
|
16
|
+
* chip baseline in the same turn as that key, so the observation cannot confirm
|
|
17
|
+
* this image using an older chip. Cancellation or permanent render failure rejects
|
|
18
|
+
* with `image_attach_failed`; a failed Codex session must release its clipboard lease.
|
|
17
19
|
*/
|
|
18
|
-
export async function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
export async function sendObservedImage(terminal, data, blocked, signal) {
|
|
21
|
+
const guard = blocked === undefined ? undefined : { blocked };
|
|
22
|
+
for (;;) {
|
|
23
|
+
assertAttachNotAbortedOrRenderFailed(terminal, signal);
|
|
24
|
+
const unsafe = await writeUnsafe(terminal, guard, signal);
|
|
25
|
+
assertAttachNotAbortedOrRenderFailed(terminal, signal);
|
|
26
|
+
if (!unsafe)
|
|
27
|
+
break;
|
|
28
|
+
await delay(unsafeWriteRetryMs);
|
|
24
29
|
}
|
|
30
|
+
const before = imageChipCount(terminal.snapshot().text);
|
|
31
|
+
stageComposer(terminal);
|
|
32
|
+
await terminal.sendInput(data);
|
|
33
|
+
return before;
|
|
25
34
|
}
|
|
26
|
-
|
|
27
|
-
* Sends `data` to the terminal only once no blocking dialog is on screen — a
|
|
28
|
-
* paste path or Ctrl+V must never reach a permission/trust dialog and alter a
|
|
29
|
-
* human decision. Rejects with `image_attach_failed` if the signal aborts while
|
|
30
|
-
* held (the session closed) (C-API-37/44).
|
|
31
|
-
*/
|
|
32
|
-
export async function sendWhenUnblocked(terminal, data, blocked, signal) {
|
|
33
|
-
while (blocked?.()) {
|
|
34
|
-
if (signal.aborted)
|
|
35
|
-
throw elwoodError("image_attach_failed", "Image attach aborted.");
|
|
36
|
-
await delay(blockedPollMs);
|
|
37
|
-
}
|
|
38
|
-
// Re-check AFTER the loop: an abort that lands as the dialog clears in the same
|
|
39
|
-
// poll must not let a paste/Ctrl+V reach the PTY on a closing session.
|
|
35
|
+
function assertAttachNotAbortedOrRenderFailed(terminal, signal) {
|
|
40
36
|
if (signal.aborted)
|
|
41
37
|
throw elwoodError("image_attach_failed", "Image attach aborted.");
|
|
42
|
-
|
|
38
|
+
if (terminal.renderFailed)
|
|
39
|
+
throw elwoodError("image_attach_failed", "Image attach cannot observe a failed terminal render.");
|
|
43
40
|
}
|
|
44
41
|
// Both CLIs render the image chip on the composer PROMPT line (Codex `›`, Claude
|
|
45
42
|
// `❯`), e.g. `› [Image #1]`. Counting chips only on lines bearing a prompt marker
|
|
@@ -57,14 +54,14 @@ export function imageChipCount(text) {
|
|
|
57
54
|
/**
|
|
58
55
|
* Resolves once the chip count rises above `before`; rejects with
|
|
59
56
|
* `image_attach_failed` on the confirmation timeout or an aborted signal, so an
|
|
60
|
-
* unconfirmed attach never silently degrades to a text-only turn.
|
|
57
|
+
* unconfirmed attach never silently degrades to a text-only turn. A detected permanent
|
|
58
|
+
* render failure rejects immediately with that error rather than awaiting the timeout.
|
|
61
59
|
*/
|
|
62
60
|
export async function waitForImageChip(terminal, before, signal, options) {
|
|
63
61
|
await delay(options.settleMs);
|
|
64
62
|
const attempts = Math.max(1, Math.ceil(options.timeoutMs / options.pollMs));
|
|
65
63
|
for (let i = 0; i < attempts; i++) {
|
|
66
|
-
|
|
67
|
-
throw elwoodError("image_attach_failed", "Image attach aborted.");
|
|
64
|
+
assertAttachNotAbortedOrRenderFailed(terminal, signal);
|
|
68
65
|
if (imageChipCount(terminal.snapshot().text) > before)
|
|
69
66
|
return;
|
|
70
67
|
await delay(options.pollMs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip-wait.js","sourceRoot":"","sources":["../../../src/core/images/chip-wait.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chip-wait.js","sourceRoot":"","sources":["../../../src/core/images/chip-wait.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A per-session aggregate byte budget for image clones held across ALL not-yet-attached
|
|
3
|
+
* queued submissions. Reserved synchronously when a submission's bytes are cloned and
|
|
4
|
+
* released when it settles, so a slow paste can't let a caller retain gigabytes of
|
|
5
|
+
* queued clones (C-API-44).
|
|
6
|
+
*/
|
|
7
|
+
export declare class QueuedImageBudget {
|
|
8
|
+
private usedBytes;
|
|
9
|
+
private readonly maxQueuedBytes;
|
|
10
|
+
constructor(maxQueuedBytes?: number);
|
|
11
|
+
reserve(bytes: number): void;
|
|
12
|
+
release(bytes: number): void;
|
|
13
|
+
}
|
|
14
|
+
/** The budget every image submission on `session` reserves against (created on first use). */
|
|
15
|
+
export declare function sessionImageBudget(session: object): QueuedImageBudget;
|
|
16
|
+
/** Makes `budget` the one `session` reserves against, replacing the session's own. */
|
|
17
|
+
export declare function shareImageBudget(session: object, budget: QueuedImageBudget): void;
|
|
18
|
+
//# sourceMappingURL=queued-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queued-budget.d.ts","sourceRoot":"","sources":["../../../src/core/images/queued-budget.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAC5B,cAAc,SAA6B;IAGvD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG7B;AAMD,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAMrE;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAEjF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** Bounds queued image ownership across sends (PRD §5.3, C-API-44). */
|
|
2
|
+
import { elwoodError } from "../errors.js";
|
|
3
|
+
import { imageLimits } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* A per-session aggregate byte budget for image clones held across ALL not-yet-attached
|
|
6
|
+
* queued submissions. Reserved synchronously when a submission's bytes are cloned and
|
|
7
|
+
* released when it settles, so a slow paste can't let a caller retain gigabytes of
|
|
8
|
+
* queued clones (C-API-44).
|
|
9
|
+
*/
|
|
10
|
+
export class QueuedImageBudget {
|
|
11
|
+
usedBytes = 0;
|
|
12
|
+
maxQueuedBytes;
|
|
13
|
+
constructor(maxQueuedBytes = imageLimits.maxQueuedBytes) {
|
|
14
|
+
this.maxQueuedBytes = maxQueuedBytes;
|
|
15
|
+
}
|
|
16
|
+
reserve(bytes) {
|
|
17
|
+
if (this.usedBytes + bytes > this.maxQueuedBytes)
|
|
18
|
+
throw elwoodError("invalid_image", "Too many queued image bytes for this session.");
|
|
19
|
+
this.usedBytes += bytes;
|
|
20
|
+
}
|
|
21
|
+
release(bytes) {
|
|
22
|
+
this.usedBytes = Math.max(0, this.usedBytes - bytes);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// ONE budget per session object. A facade registers its own before it exposes the session it
|
|
26
|
+
// launched, so both surfaces reserve against the same ceiling rather than 200 MiB each.
|
|
27
|
+
const sessionBudgets = new WeakMap();
|
|
28
|
+
/** The budget every image submission on `session` reserves against (created on first use). */
|
|
29
|
+
export function sessionImageBudget(session) {
|
|
30
|
+
const existing = sessionBudgets.get(session);
|
|
31
|
+
if (existing !== undefined)
|
|
32
|
+
return existing;
|
|
33
|
+
const created = new QueuedImageBudget();
|
|
34
|
+
sessionBudgets.set(session, created);
|
|
35
|
+
return created;
|
|
36
|
+
}
|
|
37
|
+
/** Makes `budget` the one `session` reserves against, replacing the session's own. */
|
|
38
|
+
export function shareImageBudget(session, budget) {
|
|
39
|
+
sessionBudgets.set(session, budget);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=queued-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queued-budget.js","sourceRoot":"","sources":["../../../src/core/images/queued-budget.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACpB,SAAS,GAAG,CAAC,CAAC;IACL,cAAc,CAAS;IACxC,YAAY,cAAc,GAAG,WAAW,CAAC,cAAc;QACrD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,KAAa;QACnB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc;YAC9C,MAAM,WAAW,CAAC,eAAe,EAAE,+CAA+C,CAAC,CAAC;QACtF,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,KAAa;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;IACvD,CAAC;CACF;AAED,6FAA6F;AAC7F,wFAAwF;AACxF,MAAM,cAAc,GAAG,IAAI,OAAO,EAA6B,CAAC;AAEhE,8FAA8F;AAC9F,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACxC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAyB;IACzE,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inert-record.d.ts","sourceRoot":"","sources":["../../src/core/inert-record.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAG1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inert-record.js","sourceRoot":"","sources":["../../src/core/inert-record.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,UAAU,WAAW,CAAmB,MAAS;IACrD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,10 +1,41 @@
|
|
|
1
|
-
/** Abort-aware timing and composer cleanup for queued input (PRD §5.3/§5.9). */
|
|
2
|
-
/**
|
|
1
|
+
/** Abort-aware timing, dialog holds, and composer cleanup for queued input (PRD §5.3/§5.9, C-API-56). */
|
|
2
|
+
/**
|
|
3
|
+
* The narrow terminal surface the queued-input helpers drive. `settled` resolves once
|
|
4
|
+
* every PTY byte received so far has been rendered and observed, and `renderFailed`
|
|
5
|
+
* reports a render that did not happen; write-only test doubles omit both.
|
|
6
|
+
*/
|
|
3
7
|
export type InputTerminal = {
|
|
4
8
|
sendInput(data: string | Uint8Array): void | Promise<void>;
|
|
9
|
+
settled?(): Promise<void>;
|
|
10
|
+
readonly renderFailed?: boolean;
|
|
5
11
|
};
|
|
6
12
|
export declare function waitForInput(ms: number, signal?: AbortSignal): Promise<void>;
|
|
13
|
+
/** One bounded attempt to observe received output: sustained output or a render backlog can exceed it. */
|
|
14
|
+
export declare const observeBudgetMs = 1000;
|
|
15
|
+
/**
|
|
16
|
+
* Hold a queued write while it is unsafe (see `writeUnsafe`). The caller writes in the
|
|
17
|
+
* same turn this resolves, before any further PTY output can be delivered (C-API-56).
|
|
18
|
+
* Cancellation interrupts the wait; the caller then rejects instead of writing.
|
|
19
|
+
*/
|
|
20
|
+
export declare function holdWhileUnsafe(terminal: InputTerminal, guard?: {
|
|
21
|
+
readonly blocked?: () => boolean;
|
|
22
|
+
}, signal?: AbortSignal): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* True while a write must be withheld. `blocked` reads the last OBSERVED frame, and
|
|
25
|
+
* rendering is asynchronous (§4.1): a dialog can be received yet unrendered, where
|
|
26
|
+
* writing would type into it. So first observe everything received. When that cannot
|
|
27
|
+
* be done — observation does not complete within the budget, a render has failed,
|
|
28
|
+
* or the wait was cancelled — the screen cannot be
|
|
29
|
+
* vouched for and the answer is `true`: fail closed, never write through.
|
|
30
|
+
* Awaited ownership uses `waitForRender` to wait cancellably for the shared pass,
|
|
31
|
+
* rather than repeatedly timing out and retrying an unchanged render backlog.
|
|
32
|
+
*/
|
|
33
|
+
export declare function writeUnsafe(terminal: InputTerminal, guard?: {
|
|
34
|
+
readonly blocked?: () => boolean;
|
|
35
|
+
}, signal?: AbortSignal, waitForRender?: boolean): Promise<boolean>;
|
|
7
36
|
export declare function throwIfInputAborted(signal?: AbortSignal): void;
|
|
8
37
|
export declare function inputAbortError(signal: AbortSignal): Error;
|
|
38
|
+
/** Raw takeover of awaited turn input reports submission failure, preserving other errors (§5.3). */
|
|
39
|
+
export declare function submissionError(error: unknown): unknown;
|
|
9
40
|
export declare function clearStagedComposer(terminal: InputTerminal): Promise<void>;
|
|
10
41
|
//# sourceMappingURL=abort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../../src/core/input/abort.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../../src/core/input/abort.ts"],"names":[],"mappings":"AAAA,yGAAyG;AAOzG;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB5E;AAUD,0GAA0G;AAC1G,eAAO,MAAM,eAAe,OAAQ,CAAC;AAErC;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,aAAa,EACvB,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;CAAE,EAC5C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,aAAa,EACvB,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;CAAE,EAC5C,MAAM,CAAC,EAAE,WAAW,EACpB,aAAa,UAAQ,GACpB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAE9D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAE1D;AAED,qGAAqG;AACrG,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIvD;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhF"}
|
package/dist/core/input/abort.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
/** Abort-aware timing and composer cleanup for queued input (PRD §5.3/§5.9). */
|
|
1
|
+
/** Abort-aware timing, dialog holds, and composer cleanup for queued input (PRD §5.3/§5.9, C-API-56). */
|
|
2
|
+
import { elwoodError } from "../errors.js";
|
|
3
|
+
import { isPickerIntervention } from "../models/intervention.js";
|
|
4
|
+
import { composerClearKeys, unsafeWriteRetryMs } from "./constants.js";
|
|
5
|
+
import { observeRender } from "./render-observation.js";
|
|
2
6
|
export function waitForInput(ms, signal) {
|
|
3
7
|
if (signal === undefined)
|
|
4
8
|
return delayUnref(ms);
|
|
@@ -26,6 +30,36 @@ function delayUnref(ms) {
|
|
|
26
30
|
timer.unref?.();
|
|
27
31
|
});
|
|
28
32
|
}
|
|
33
|
+
/** One bounded attempt to observe received output: sustained output or a render backlog can exceed it. */
|
|
34
|
+
export const observeBudgetMs = 1_000;
|
|
35
|
+
/**
|
|
36
|
+
* Hold a queued write while it is unsafe (see `writeUnsafe`). The caller writes in the
|
|
37
|
+
* same turn this resolves, before any further PTY output can be delivered (C-API-56).
|
|
38
|
+
* Cancellation interrupts the wait; the caller then rejects instead of writing.
|
|
39
|
+
*/
|
|
40
|
+
export async function holdWhileUnsafe(terminal, guard, signal) {
|
|
41
|
+
while (!signal?.aborted && (await writeUnsafe(terminal, guard, signal))) {
|
|
42
|
+
await delayUnref(unsafeWriteRetryMs);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* True while a write must be withheld. `blocked` reads the last OBSERVED frame, and
|
|
47
|
+
* rendering is asynchronous (§4.1): a dialog can be received yet unrendered, where
|
|
48
|
+
* writing would type into it. So first observe everything received. When that cannot
|
|
49
|
+
* be done — observation does not complete within the budget, a render has failed,
|
|
50
|
+
* or the wait was cancelled — the screen cannot be
|
|
51
|
+
* vouched for and the answer is `true`: fail closed, never write through.
|
|
52
|
+
* Awaited ownership uses `waitForRender` to wait cancellably for the shared pass,
|
|
53
|
+
* rather than repeatedly timing out and retrying an unchanged render backlog.
|
|
54
|
+
*/
|
|
55
|
+
export async function writeUnsafe(terminal, guard, signal, waitForRender = false) {
|
|
56
|
+
if (signal?.aborted)
|
|
57
|
+
return true; // an abort listener added now would never fire
|
|
58
|
+
if (terminal.settled &&
|
|
59
|
+
!(await observeRender(terminal.settled(), signal, waitForRender ? undefined : observeBudgetMs)))
|
|
60
|
+
return true;
|
|
61
|
+
return terminal.renderFailed === true || guard?.blocked?.() === true;
|
|
62
|
+
}
|
|
29
63
|
export function throwIfInputAborted(signal) {
|
|
30
64
|
if (signal?.aborted)
|
|
31
65
|
throw inputAbortError(signal);
|
|
@@ -33,9 +67,15 @@ export function throwIfInputAborted(signal) {
|
|
|
33
67
|
export function inputAbortError(signal) {
|
|
34
68
|
return signal.reason instanceof Error ? signal.reason : new Error("Submission aborted.");
|
|
35
69
|
}
|
|
70
|
+
/** Raw takeover of awaited turn input reports submission failure, preserving other errors (§5.3). */
|
|
71
|
+
export function submissionError(error) {
|
|
72
|
+
return isPickerIntervention(error)
|
|
73
|
+
? elwoodError("wait_timeout", "Raw input replaced the staged turn input.")
|
|
74
|
+
: error;
|
|
75
|
+
}
|
|
36
76
|
export async function clearStagedComposer(terminal) {
|
|
37
77
|
try {
|
|
38
|
-
await terminal.sendInput(
|
|
78
|
+
await terminal.sendInput(composerClearKeys);
|
|
39
79
|
}
|
|
40
80
|
catch {
|
|
41
81
|
// Best-effort: preserve the cancellation as the primary outcome.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../src/core/input/abort.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../src/core/input/abort.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Observe native consumption of owned clear keys before releasing input (C-API-56). */
|
|
2
|
+
import { type InputTerminal } from "./abort.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Positive empty-composer evidence: reuse one token for each completed frame and
|
|
5
|
+
* return a distinct token only for a later completed frame, never for each poll.
|
|
6
|
+
* Return undefined when there is no completed, positively empty native composer.
|
|
7
|
+
*/
|
|
8
|
+
export type EmptyComposerObserver = () => object | undefined;
|
|
9
|
+
export declare function clearAndObserveComposer(terminal: InputTerminal, blocked: () => boolean, observeEmpty: EmptyComposerObserver, signal: AbortSignal): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=clear-ack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-ack.d.ts","sourceRoot":"","sources":["../../../src/core/input/clear-ack.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,YAAY,CAAC;AAGpB;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,MAAM,GAAG,SAAS,CAAC;AAE7D,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,MAAM,OAAO,EACtB,YAAY,EAAE,qBAAqB,EACnC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Observe native consumption of owned clear keys before releasing input (C-API-56). */
|
|
2
|
+
import { observeBudgetMs, throwIfInputAborted, waitForInput, writeUnsafe, } from "./abort.js";
|
|
3
|
+
import { composerClearKeys, unsafeWriteRetryMs } from "./constants.js";
|
|
4
|
+
export async function clearAndObserveComposer(terminal, blocked, observeEmpty, signal) {
|
|
5
|
+
const before = observeEmpty();
|
|
6
|
+
throwIfInputAborted(signal);
|
|
7
|
+
await terminal.sendInput(composerClearKeys);
|
|
8
|
+
const deadline = new AbortController();
|
|
9
|
+
const timer = setTimeout(() => deadline.abort(new Error("Composer clear was not observed.")), observeBudgetMs);
|
|
10
|
+
const waiting = AbortSignal.any([signal, deadline.signal]);
|
|
11
|
+
try {
|
|
12
|
+
for (;;) {
|
|
13
|
+
throwIfInputAborted(waiting);
|
|
14
|
+
if (await writeUnsafe(terminal, { blocked }, waiting))
|
|
15
|
+
throw new Error("Composer observation is unsafe.");
|
|
16
|
+
const after = observeEmpty();
|
|
17
|
+
if (after !== undefined && after !== before)
|
|
18
|
+
return;
|
|
19
|
+
await waitForInput(unsafeWriteRetryMs, waiting);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
clearTimeout(timer);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=clear-ack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-ack.js","sourceRoot":"","sources":["../../../src/core/input/clear-ack.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EAEL,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASvE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAuB,EACvB,OAAsB,EACtB,YAAmC,EACnC,MAAmB;IAEnB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,EACnE,eAAe,CAChB,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,SAAS,CAAC;YACR,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;YAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM;gBAAE,OAAO;YACpD,MAAM,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type InputTerminal } from "./abort.ts";
|
|
2
|
+
import { type EmptyComposerObserver } from "./clear-ack.ts";
|
|
3
|
+
/** Register ComposerCleanup before staging; unregistered terminals deliberately record no ownership. */
|
|
4
|
+
export declare function stageComposer(terminal: InputTerminal): AbortSignal | undefined;
|
|
5
|
+
/** Mark submission after staging; this is also a no-op without prior registration. */
|
|
6
|
+
export declare function submittedComposer(terminal: InputTerminal): void;
|
|
7
|
+
/**
|
|
8
|
+
* Registered session cleanup is deferred beyond attachment finalizers, including
|
|
9
|
+
* clipboard restoration. Unregistered direct callers instead attempt an immediate,
|
|
10
|
+
* observed, unblocked best-effort clear; they have no retained ownership token.
|
|
11
|
+
*/
|
|
12
|
+
export declare function requestComposerCleanup(terminal: InputTerminal, blocked?: () => boolean): Promise<void>;
|
|
13
|
+
export declare class ComposerCleanup {
|
|
14
|
+
private draft;
|
|
15
|
+
private baseline;
|
|
16
|
+
private stagedGeneration;
|
|
17
|
+
private readonly terminal;
|
|
18
|
+
private readonly blocked;
|
|
19
|
+
private readonly closing;
|
|
20
|
+
private readonly rawInputSignal;
|
|
21
|
+
private readonly observeEmpty;
|
|
22
|
+
/** Register this owner before any stage/submit hooks or queued operation. */
|
|
23
|
+
constructor(terminal: InputTerminal, blocked: () => boolean, closing: AbortSignal, rawInputSignal: () => AbortSignal, observeEmpty: EmptyComposerObserver);
|
|
24
|
+
stage(): AbortSignal;
|
|
25
|
+
submitted(): void;
|
|
26
|
+
defer(): void;
|
|
27
|
+
/** Preparation may cancel before work; once invoked exactly once, work owns its task lifetime. */
|
|
28
|
+
run(work: () => Promise<void>, preparationSignal: AbortSignal): Promise<void>;
|
|
29
|
+
private reconcileDraftOwnership;
|
|
30
|
+
private flush;
|
|
31
|
+
private clear;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=composer-cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer-cleanup.d.ts","sourceRoot":"","sources":["../../../src/core/input/composer-cleanup.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAInB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAMrF,wGAAwG;AACxG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,WAAW,GAAG,SAAS,CAE9E;AACD,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAE/D;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,MAAM,OAAO,GACtB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,6EAA6E;gBAE3E,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,MAAM,OAAO,EACtB,OAAO,EAAE,WAAW,EACpB,cAAc,EAAE,MAAM,WAAW,EACjC,YAAY,EAAE,qBAAqB;IAkBrC,KAAK,IAAI,WAAW;IAMpB,SAAS,IAAI,IAAI;IAMjB,KAAK,IAAI,IAAI;IAIb,kGAAkG;IAC5F,GAAG,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnF,OAAO,CAAC,uBAAuB;YAKjB,KAAK;YAiBL,KAAK;CAYpB"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/** Deferred draft cleanup owns a safe queue boundary, never caller-owned edits (PRD §5.3, C-API-56). */
|
|
2
|
+
import { elwoodError } from "../errors.js";
|
|
3
|
+
import { clearStagedComposer, throwIfInputAborted, waitForInput, writeUnsafe, } from "./abort.js";
|
|
4
|
+
import { clearAndObserveComposer } from "./clear-ack.js";
|
|
5
|
+
import { unsafeWriteRetryMs } from "./constants.js";
|
|
6
|
+
const owners = new WeakMap();
|
|
7
|
+
/** Register ComposerCleanup before staging; unregistered terminals deliberately record no ownership. */
|
|
8
|
+
export function stageComposer(terminal) {
|
|
9
|
+
return owners.get(terminal)?.stage();
|
|
10
|
+
}
|
|
11
|
+
/** Mark submission after staging; this is also a no-op without prior registration. */
|
|
12
|
+
export function submittedComposer(terminal) {
|
|
13
|
+
owners.get(terminal)?.submitted();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Registered session cleanup is deferred beyond attachment finalizers, including
|
|
17
|
+
* clipboard restoration. Unregistered direct callers instead attempt an immediate,
|
|
18
|
+
* observed, unblocked best-effort clear; they have no retained ownership token.
|
|
19
|
+
*/
|
|
20
|
+
export async function requestComposerCleanup(terminal, blocked) {
|
|
21
|
+
const owner = owners.get(terminal);
|
|
22
|
+
if (owner)
|
|
23
|
+
owner.defer();
|
|
24
|
+
else if (!(await writeUnsafe(terminal, { blocked: () => blocked?.() === true })))
|
|
25
|
+
await clearStagedComposer(terminal);
|
|
26
|
+
}
|
|
27
|
+
export class ComposerCleanup {
|
|
28
|
+
draft;
|
|
29
|
+
baseline;
|
|
30
|
+
stagedGeneration;
|
|
31
|
+
terminal;
|
|
32
|
+
blocked;
|
|
33
|
+
closing;
|
|
34
|
+
rawInputSignal;
|
|
35
|
+
observeEmpty;
|
|
36
|
+
/** Register this owner before any stage/submit hooks or queued operation. */
|
|
37
|
+
constructor(terminal, blocked, closing, rawInputSignal, observeEmpty) {
|
|
38
|
+
this.terminal = terminal;
|
|
39
|
+
this.blocked = blocked;
|
|
40
|
+
this.closing = closing;
|
|
41
|
+
this.rawInputSignal = rawInputSignal;
|
|
42
|
+
this.observeEmpty = observeEmpty;
|
|
43
|
+
this.baseline = rawInputSignal();
|
|
44
|
+
owners.set(terminal, this);
|
|
45
|
+
closing.addEventListener("abort", () => {
|
|
46
|
+
this.draft = undefined;
|
|
47
|
+
}, { once: true });
|
|
48
|
+
}
|
|
49
|
+
stage() {
|
|
50
|
+
this.stagedGeneration = this.rawInputSignal();
|
|
51
|
+
if (this.stagedGeneration === this.baseline)
|
|
52
|
+
this.draft ??= { rawInputSignal: this.stagedGeneration, pending: false };
|
|
53
|
+
return this.stagedGeneration;
|
|
54
|
+
}
|
|
55
|
+
submitted() {
|
|
56
|
+
// Only an uninterrupted submission establishes a fresh composer after raw edits.
|
|
57
|
+
if (this.stagedGeneration === this.rawInputSignal())
|
|
58
|
+
this.baseline = this.stagedGeneration;
|
|
59
|
+
this.stagedGeneration = undefined;
|
|
60
|
+
this.draft = undefined;
|
|
61
|
+
}
|
|
62
|
+
defer() {
|
|
63
|
+
if (this.reconcileDraftOwnership())
|
|
64
|
+
this.draft.pending = true;
|
|
65
|
+
}
|
|
66
|
+
/** Preparation may cancel before work; once invoked exactly once, work owns its task lifetime. */
|
|
67
|
+
async run(work, preparationSignal) {
|
|
68
|
+
await this.flush(preparationSignal);
|
|
69
|
+
throwIfInputAborted(preparationSignal);
|
|
70
|
+
try {
|
|
71
|
+
await work();
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
this.defer();
|
|
75
|
+
// Never wait for a dialog in a failed operation or retain the clipboard lock for it.
|
|
76
|
+
if (this.reconcileDraftOwnership() &&
|
|
77
|
+
!(await writeUnsafe(this.terminal, { blocked: this.blocked }, this.closing))) {
|
|
78
|
+
try {
|
|
79
|
+
await this.clear();
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
/* The next operation must retry or reject. */
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
reconcileDraftOwnership() {
|
|
89
|
+
if (this.closing.aborted || this.draft?.rawInputSignal.aborted)
|
|
90
|
+
this.draft = undefined;
|
|
91
|
+
return this.draft !== undefined;
|
|
92
|
+
}
|
|
93
|
+
async flush(signal) {
|
|
94
|
+
while (this.reconcileDraftOwnership() && this.draft.pending) {
|
|
95
|
+
const observe = AbortSignal.any([signal, this.closing, this.draft.rawInputSignal]);
|
|
96
|
+
try {
|
|
97
|
+
if (!(await writeUnsafe(this.terminal, { blocked: this.blocked }, observe))) {
|
|
98
|
+
await this.clear(observe);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
await waitForInput(unsafeWriteRetryMs, observe);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (this.reconcileDraftOwnership())
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
throwIfInputAborted(signal);
|
|
109
|
+
throwIfInputAborted(this.closing);
|
|
110
|
+
}
|
|
111
|
+
async clear(preparationSignal = this.closing) {
|
|
112
|
+
if (!this.reconcileDraftOwnership())
|
|
113
|
+
return;
|
|
114
|
+
const draft = this.draft;
|
|
115
|
+
const signal = AbortSignal.any([preparationSignal, this.closing, draft.rawInputSignal]);
|
|
116
|
+
try {
|
|
117
|
+
await clearAndObserveComposer(this.terminal, this.blocked, this.observeEmpty, signal);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
throwIfInputAborted(signal);
|
|
121
|
+
throw elwoodError("wait_timeout", "Could not clear the staged composer draft.");
|
|
122
|
+
}
|
|
123
|
+
if (this.draft === draft)
|
|
124
|
+
this.draft = undefined;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=composer-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer-cleanup.js","sourceRoot":"","sources":["../../../src/core/input/composer-cleanup.ts"],"names":[],"mappings":"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"}
|