@with-logic/elwood 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +396 -2
- package/CONTRIBUTING.md +29 -18
- package/README.md +50 -19
- package/dist/bridge/parse.d.ts.map +1 -1
- package/dist/bridge/parse.js +2 -1
- package/dist/bridge/parse.js.map +1 -1
- package/dist/bridge/server.d.ts.map +1 -1
- package/dist/bridge/server.js +6 -2
- package/dist/bridge/server.js.map +1 -1
- package/dist/claude/attach-images.d.ts +3 -1
- package/dist/claude/attach-images.d.ts.map +1 -1
- package/dist/claude/attach-images.js +11 -10
- package/dist/claude/attach-images.js.map +1 -1
- package/dist/claude/composer/empty-input.d.ts +4 -0
- package/dist/claude/composer/empty-input.d.ts.map +1 -0
- package/dist/claude/composer/empty-input.js +28 -0
- package/dist/claude/composer/empty-input.js.map +1 -0
- package/dist/claude/composer/footer.d.ts +3 -0
- package/dist/claude/composer/footer.d.ts.map +1 -0
- package/dist/claude/composer/footer.js +3 -0
- package/dist/claude/composer/footer.js.map +1 -0
- package/dist/claude/composer/staged-input.d.ts +7 -0
- package/dist/claude/composer/staged-input.d.ts.map +1 -0
- package/dist/claude/composer/staged-input.js +18 -0
- package/dist/claude/composer/staged-input.js.map +1 -0
- package/dist/claude/hooks/common-result.d.ts +5 -0
- package/dist/claude/hooks/common-result.d.ts.map +1 -0
- package/dist/claude/hooks/common-result.js +3 -0
- package/dist/claude/hooks/common-result.js.map +1 -0
- package/dist/claude/hooks/dispatch.d.ts +2 -1
- package/dist/claude/hooks/dispatch.d.ts.map +1 -1
- package/dist/claude/hooks/dispatch.js +3 -1
- package/dist/claude/hooks/dispatch.js.map +1 -1
- package/dist/claude/hooks/events-extra.d.ts +5 -4
- package/dist/claude/hooks/events-extra.d.ts.map +1 -1
- package/dist/claude/hooks/index.d.ts +10 -10
- package/dist/claude/hooks/index.d.ts.map +1 -1
- package/dist/claude/hooks/index.js +1 -4
- package/dist/claude/hooks/index.js.map +1 -1
- package/dist/claude/hooks/inputs/control.d.ts +25 -0
- package/dist/claude/hooks/inputs/control.d.ts.map +1 -0
- package/dist/claude/hooks/inputs/control.js +3 -0
- package/dist/claude/hooks/inputs/control.js.map +1 -0
- package/dist/claude/hooks/stop-failure.d.ts +10 -0
- package/dist/claude/hooks/stop-failure.d.ts.map +1 -0
- package/dist/claude/hooks/stop-failure.js +18 -0
- package/dist/claude/hooks/stop-failure.js.map +1 -0
- package/dist/claude/hooks/tool-types.d.ts +12 -10
- package/dist/claude/hooks/tool-types.d.ts.map +1 -1
- package/dist/claude/login/notice.d.ts +3 -0
- package/dist/claude/login/notice.d.ts.map +1 -0
- package/dist/claude/login/notice.js +3 -0
- package/dist/claude/login/notice.js.map +1 -0
- package/dist/claude/login/renewal.d.ts +13 -0
- package/dist/claude/login/renewal.d.ts.map +1 -0
- package/dist/claude/login/renewal.js +97 -0
- package/dist/claude/login/renewal.js.map +1 -0
- package/dist/claude/model-composer.d.ts +2 -0
- package/dist/claude/model-composer.d.ts.map +1 -0
- package/dist/claude/model-composer.js +12 -0
- package/dist/claude/model-composer.js.map +1 -0
- package/dist/claude/model-picker.d.ts.map +1 -1
- package/dist/claude/model-picker.js +42 -8
- package/dist/claude/model-picker.js.map +1 -1
- package/dist/claude/model-switch-confirmation.d.ts +6 -0
- package/dist/claude/model-switch-confirmation.d.ts.map +1 -1
- package/dist/claude/model-switch-confirmation.js +77 -4
- package/dist/claude/model-switch-confirmation.js.map +1 -1
- package/dist/claude/preflight.d.ts.map +1 -1
- package/dist/claude/preflight.js +2 -4
- package/dist/claude/preflight.js.map +1 -1
- package/dist/claude/questions/answer.d.ts +9 -0
- package/dist/claude/questions/answer.d.ts.map +1 -0
- package/dist/claude/questions/answer.js +84 -0
- package/dist/claude/questions/answer.js.map +1 -0
- package/dist/claude/questions/bind-answers.d.ts +14 -0
- package/dist/claude/questions/bind-answers.d.ts.map +1 -0
- package/dist/claude/questions/bind-answers.js +36 -0
- package/dist/claude/questions/bind-answers.js.map +1 -0
- package/dist/claude/questions/candidate.d.ts +23 -0
- package/dist/claude/questions/candidate.d.ts.map +1 -0
- package/dist/claude/questions/candidate.js +47 -0
- package/dist/claude/questions/candidate.js.map +1 -0
- package/dist/claude/questions/correlation.d.ts +15 -0
- package/dist/claude/questions/correlation.d.ts.map +1 -0
- package/dist/claude/questions/correlation.js +23 -0
- package/dist/claude/questions/correlation.js.map +1 -0
- package/dist/claude/questions/hook-decisions.d.ts +19 -0
- package/dist/claude/questions/hook-decisions.d.ts.map +1 -0
- package/dist/claude/questions/hook-decisions.js +52 -0
- package/dist/claude/questions/hook-decisions.js.map +1 -0
- package/dist/claude/questions/index.d.ts +27 -0
- package/dist/claude/questions/index.d.ts.map +1 -0
- package/dist/claude/questions/index.js +161 -0
- package/dist/claude/questions/index.js.map +1 -0
- package/dist/claude/questions/navigation.d.ts +24 -0
- package/dist/claude/questions/navigation.d.ts.map +1 -0
- package/dist/claude/questions/navigation.js +37 -0
- package/dist/claude/questions/navigation.js.map +1 -0
- package/dist/claude/questions/rows.d.ts +19 -0
- package/dist/claude/questions/rows.d.ts.map +1 -0
- package/dist/claude/questions/rows.js +64 -0
- package/dist/claude/questions/rows.js.map +1 -0
- package/dist/claude/questions/screen.d.ts +29 -0
- package/dist/claude/questions/screen.d.ts.map +1 -0
- package/dist/claude/questions/screen.js +103 -0
- package/dist/claude/questions/screen.js.map +1 -0
- package/dist/claude/screen-table.d.ts +19 -2
- package/dist/claude/screen-table.d.ts.map +1 -1
- package/dist/claude/screen-table.js +48 -4
- package/dist/claude/screen-table.js.map +1 -1
- package/dist/claude/serialize.d.ts.map +1 -1
- package/dist/claude/serialize.js +22 -6
- package/dist/claude/serialize.js.map +1 -1
- package/dist/claude/session/build.d.ts +1 -12
- package/dist/claude/session/build.d.ts.map +1 -1
- package/dist/claude/session/build.js +42 -55
- package/dist/claude/session/build.js.map +1 -1
- package/dist/claude/session/hook-handler.d.ts +3 -2
- package/dist/claude/session/hook-handler.d.ts.map +1 -1
- package/dist/claude/session/hook-handler.js +44 -18
- package/dist/claude/session/hook-handler.js.map +1 -1
- package/dist/claude/session/index.d.ts +2 -1
- package/dist/claude/session/index.d.ts.map +1 -1
- package/dist/claude/session/index.js +23 -8
- package/dist/claude/session/index.js.map +1 -1
- package/dist/claude/session/instance.d.ts +17 -5
- package/dist/claude/session/instance.d.ts.map +1 -1
- package/dist/claude/session/instance.js +25 -12
- package/dist/claude/session/instance.js.map +1 -1
- package/dist/claude/session/interface.d.ts +2 -1
- package/dist/claude/session/interface.d.ts.map +1 -1
- package/dist/claude/session/questions.d.ts +9 -0
- package/dist/claude/session/questions.d.ts.map +1 -0
- package/dist/claude/session/questions.js +19 -0
- package/dist/claude/session/questions.js.map +1 -0
- package/dist/claude/session/resume.d.ts.map +1 -1
- package/dist/claude/session/resume.js +35 -26
- package/dist/claude/session/resume.js.map +1 -1
- package/dist/claude/session/runtime.d.ts +10 -0
- package/dist/claude/session/runtime.d.ts.map +1 -1
- package/dist/claude/session/runtime.js +8 -5
- package/dist/claude/session/runtime.js.map +1 -1
- package/dist/claude/session/startup-warnings.d.ts +5 -0
- package/dist/claude/session/startup-warnings.d.ts.map +1 -0
- package/dist/claude/session/startup-warnings.js +7 -0
- package/dist/claude/session/startup-warnings.js.map +1 -0
- package/dist/claude/session/transcript.d.ts +2 -0
- package/dist/claude/session/transcript.d.ts.map +1 -1
- package/dist/claude/session/transcript.js +21 -3
- package/dist/claude/session/transcript.js.map +1 -1
- package/dist/claude/startup-prompts.d.ts +35 -3
- package/dist/claude/startup-prompts.d.ts.map +1 -1
- package/dist/claude/startup-prompts.js +81 -15
- package/dist/claude/startup-prompts.js.map +1 -1
- package/dist/claude/transcript/index.d.ts.map +1 -1
- package/dist/claude/transcript/index.js +3 -2
- package/dist/claude/transcript/index.js.map +1 -1
- package/dist/claude/validate/event-fields.d.ts +6 -0
- package/dist/claude/validate/event-fields.d.ts.map +1 -0
- package/dist/claude/validate/event-fields.js +103 -0
- package/dist/claude/validate/event-fields.js.map +1 -0
- package/dist/claude/validate/input.d.ts.map +1 -1
- package/dist/claude/validate/input.js +12 -41
- package/dist/claude/validate/input.js.map +1 -1
- package/dist/claude/validate/shapes.d.ts +1 -1
- package/dist/claude/validate/shapes.d.ts.map +1 -1
- package/dist/claude/validate/shapes.js +1 -1
- package/dist/claude/validate/shapes.js.map +1 -1
- package/dist/claude/validate/tool-shapes.d.ts +102 -0
- package/dist/claude/validate/tool-shapes.d.ts.map +1 -0
- package/dist/claude/validate/tool-shapes.js +83 -0
- package/dist/claude/validate/tool-shapes.js.map +1 -0
- package/dist/claude/validate/tool-update.d.ts +2 -11
- package/dist/claude/validate/tool-update.d.ts.map +1 -1
- package/dist/claude/validate/tool-update.js +11 -112
- package/dist/claude/validate/tool-update.js.map +1 -1
- package/dist/claude/validate/tool-values.d.ts +7 -0
- package/dist/claude/validate/tool-values.d.ts.map +1 -0
- package/dist/claude/validate/tool-values.js +30 -0
- package/dist/claude/validate/tool-values.js.map +1 -0
- package/dist/cli/args/options.d.ts.map +1 -1
- package/dist/cli/args/options.js +1 -0
- package/dist/cli/args/options.js.map +1 -1
- package/dist/cli/args-commands.d.ts.map +1 -1
- package/dist/cli/args-commands.js +3 -0
- package/dist/cli/args-commands.js.map +1 -1
- package/dist/cli/config/store.d.ts.map +1 -1
- package/dist/cli/config/store.js +2 -1
- package/dist/cli/config/store.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +15 -11
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/effort.d.ts +5 -0
- package/dist/cli/interactive/effort.d.ts.map +1 -0
- package/dist/cli/interactive/effort.js +13 -0
- package/dist/cli/interactive/effort.js.map +1 -0
- package/dist/cli/interactive/launch.d.ts.map +1 -1
- package/dist/cli/interactive/launch.js +1 -1
- package/dist/cli/interactive/launch.js.map +1 -1
- package/dist/cli/lifecycle/index.d.ts +3 -6
- package/dist/cli/lifecycle/index.d.ts.map +1 -1
- package/dist/cli/lifecycle/index.js +6 -13
- package/dist/cli/lifecycle/index.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +9 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/models/combined.d.ts +6 -0
- package/dist/cli/models/combined.d.ts.map +1 -0
- package/dist/cli/models/combined.js +92 -0
- package/dist/cli/models/combined.js.map +1 -0
- package/dist/cli/models/index.d.ts +2 -0
- package/dist/cli/models/index.d.ts.map +1 -1
- package/dist/cli/models/index.js +15 -4
- package/dist/cli/models/index.js.map +1 -1
- package/dist/cli/models/render.d.ts +4 -0
- package/dist/cli/models/render.d.ts.map +1 -1
- package/dist/cli/models/render.js +28 -1
- package/dist/cli/models/render.js.map +1 -1
- package/dist/cli/models/result.d.ts +13 -0
- package/dist/cli/models/result.d.ts.map +1 -0
- package/dist/cli/models/result.js +2 -0
- package/dist/cli/models/result.js.map +1 -0
- package/dist/cli/models/settings.d.ts +63 -0
- package/dist/cli/models/settings.d.ts.map +1 -0
- package/dist/cli/models/settings.js +24 -0
- package/dist/cli/models/settings.js.map +1 -0
- package/dist/cli/models/signals.d.ts +11 -0
- package/dist/cli/models/signals.d.ts.map +1 -0
- package/dist/cli/models/signals.js +21 -0
- package/dist/cli/models/signals.js.map +1 -0
- package/dist/cli/request/index.d.ts.map +1 -1
- package/dist/cli/request/index.js +2 -1
- package/dist/cli/request/index.js.map +1 -1
- package/dist/cli/request/validation.d.ts.map +1 -1
- package/dist/cli/request/validation.js +0 -4
- package/dist/cli/request/validation.js.map +1 -1
- package/dist/cli/run/index.d.ts.map +1 -1
- package/dist/cli/run/index.js +3 -1
- package/dist/cli/run/index.js.map +1 -1
- package/dist/cli/run/output.d.ts.map +1 -1
- package/dist/cli/run/output.js +4 -6
- package/dist/cli/run/output.js.map +1 -1
- package/dist/cli/run/subscribe.js +1 -1
- package/dist/cli/run/subscribe.js.map +1 -1
- package/dist/cli/session/index.d.ts +2 -0
- package/dist/cli/session/index.d.ts.map +1 -1
- package/dist/cli/session/index.js +3 -0
- package/dist/cli/session/index.js.map +1 -1
- package/dist/cli/session/launch.d.ts +0 -3
- package/dist/cli/session/launch.d.ts.map +1 -1
- package/dist/cli/session/launch.js +0 -11
- package/dist/cli/session/launch.js.map +1 -1
- package/dist/cli/sessions/list.d.ts.map +1 -1
- package/dist/cli/sessions/list.js +5 -4
- package/dist/cli/sessions/list.js.map +1 -1
- package/dist/cli/types.d.ts +2 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/update-attention.d.ts +2 -1
- package/dist/cli/update-attention.d.ts.map +1 -1
- package/dist/cli/update-attention.js +11 -2
- package/dist/cli/update-attention.js.map +1 -1
- package/dist/codex/accepted-turn.d.ts +4 -0
- package/dist/codex/accepted-turn.d.ts.map +1 -0
- package/dist/codex/accepted-turn.js +17 -0
- package/dist/codex/accepted-turn.js.map +1 -0
- package/dist/codex/config/transaction.d.ts +22 -0
- package/dist/codex/config/transaction.d.ts.map +1 -1
- package/dist/codex/config/transaction.js +61 -31
- package/dist/codex/config/transaction.js.map +1 -1
- package/dist/codex/hooks/index.d.ts +6 -1
- package/dist/codex/hooks/index.d.ts.map +1 -1
- package/dist/codex/hooks/validate-result.d.ts.map +1 -1
- package/dist/codex/hooks/validate-result.js +2 -1
- package/dist/codex/hooks/validate-result.js.map +1 -1
- package/dist/codex/hooks/validate.d.ts.map +1 -1
- package/dist/codex/hooks/validate.js +1 -3
- package/dist/codex/hooks/validate.js.map +1 -1
- package/dist/codex/hooks/values.d.ts +3 -0
- package/dist/codex/hooks/values.d.ts.map +1 -0
- package/dist/codex/hooks/values.js +5 -0
- package/dist/codex/hooks/values.js.map +1 -0
- package/dist/codex/images/attach.d.ts +3 -1
- package/dist/codex/images/attach.d.ts.map +1 -1
- package/dist/codex/images/attach.js +10 -11
- package/dist/codex/images/attach.js.map +1 -1
- package/dist/codex/images/clipboard.d.ts.map +1 -1
- package/dist/codex/images/clipboard.js +11 -3
- package/dist/codex/images/clipboard.js.map +1 -1
- package/dist/codex/model-picker.d.ts.map +1 -1
- package/dist/codex/model-picker.js +23 -5
- package/dist/codex/model-picker.js.map +1 -1
- package/dist/codex/preflight.d.ts.map +1 -1
- package/dist/codex/preflight.js +2 -2
- package/dist/codex/preflight.js.map +1 -1
- package/dist/codex/questions/acceptance.d.ts +18 -0
- package/dist/codex/questions/acceptance.d.ts.map +1 -0
- package/dist/codex/questions/acceptance.js +70 -0
- package/dist/codex/questions/acceptance.js.map +1 -0
- package/dist/codex/questions/adapter.d.ts +26 -0
- package/dist/codex/questions/adapter.d.ts.map +1 -0
- package/dist/codex/questions/adapter.js +163 -0
- package/dist/codex/questions/adapter.js.map +1 -0
- package/dist/codex/questions/candidate-acceptance.d.ts +5 -0
- package/dist/codex/questions/candidate-acceptance.d.ts.map +1 -0
- package/dist/codex/questions/candidate-acceptance.js +8 -0
- package/dist/codex/questions/candidate-acceptance.js.map +1 -0
- package/dist/codex/questions/candidate-authority.d.ts +10 -0
- package/dist/codex/questions/candidate-authority.d.ts.map +1 -0
- package/dist/codex/questions/candidate-authority.js +25 -0
- package/dist/codex/questions/candidate-authority.js.map +1 -0
- package/dist/codex/questions/candidate-disable.d.ts +5 -0
- package/dist/codex/questions/candidate-disable.d.ts.map +1 -0
- package/dist/codex/questions/candidate-disable.js +14 -0
- package/dist/codex/questions/candidate-disable.js.map +1 -0
- package/dist/codex/questions/candidate-publication.d.ts +7 -0
- package/dist/codex/questions/candidate-publication.d.ts.map +1 -0
- package/dist/codex/questions/candidate-publication.js +8 -0
- package/dist/codex/questions/candidate-publication.js.map +1 -0
- package/dist/codex/questions/candidate-reservation.d.ts +6 -0
- package/dist/codex/questions/candidate-reservation.d.ts.map +1 -0
- package/dist/codex/questions/candidate-reservation.js +7 -0
- package/dist/codex/questions/candidate-reservation.js.map +1 -0
- package/dist/codex/questions/candidate-store.d.ts +53 -0
- package/dist/codex/questions/candidate-store.d.ts.map +1 -0
- package/dist/codex/questions/candidate-store.js +188 -0
- package/dist/codex/questions/candidate-store.js.map +1 -0
- package/dist/codex/questions/candidate.d.ts +40 -0
- package/dist/codex/questions/candidate.d.ts.map +1 -0
- package/dist/codex/questions/candidate.js +39 -0
- package/dist/codex/questions/candidate.js.map +1 -0
- package/dist/codex/questions/candidates.d.ts +16 -0
- package/dist/codex/questions/candidates.d.ts.map +1 -0
- package/dist/codex/questions/candidates.js +113 -0
- package/dist/codex/questions/candidates.js.map +1 -0
- package/dist/codex/questions/chrome.d.ts +10 -0
- package/dist/codex/questions/chrome.d.ts.map +1 -0
- package/dist/codex/questions/chrome.js +21 -0
- package/dist/codex/questions/chrome.js.map +1 -0
- package/dist/codex/questions/definitions.d.ts +19 -0
- package/dist/codex/questions/definitions.d.ts.map +1 -0
- package/dist/codex/questions/definitions.js +86 -0
- package/dist/codex/questions/definitions.js.map +1 -0
- package/dist/codex/questions/draft.d.ts +25 -0
- package/dist/codex/questions/draft.d.ts.map +1 -0
- package/dist/codex/questions/draft.js +76 -0
- package/dist/codex/questions/draft.js.map +1 -0
- package/dist/codex/questions/driver-support.d.ts +6 -0
- package/dist/codex/questions/driver-support.d.ts.map +1 -0
- package/dist/codex/questions/driver-support.js +7 -0
- package/dist/codex/questions/driver-support.js.map +1 -0
- package/dist/codex/questions/driver.d.ts +10 -0
- package/dist/codex/questions/driver.d.ts.map +1 -0
- package/dist/codex/questions/driver.js +139 -0
- package/dist/codex/questions/driver.js.map +1 -0
- package/dist/codex/questions/frame.d.ts +36 -0
- package/dist/codex/questions/frame.d.ts.map +1 -0
- package/dist/codex/questions/frame.js +138 -0
- package/dist/codex/questions/frame.js.map +1 -0
- package/dist/codex/questions/labels.d.ts +6 -0
- package/dist/codex/questions/labels.d.ts.map +1 -0
- package/dist/codex/questions/labels.js +6 -0
- package/dist/codex/questions/labels.js.map +1 -0
- package/dist/codex/questions/limits.d.ts +18 -0
- package/dist/codex/questions/limits.d.ts.map +1 -0
- package/dist/codex/questions/limits.js +61 -0
- package/dist/codex/questions/limits.js.map +1 -0
- package/dist/codex/questions/native-pending.d.ts +7 -0
- package/dist/codex/questions/native-pending.d.ts.map +1 -0
- package/dist/codex/questions/native-pending.js +37 -0
- package/dist/codex/questions/native-pending.js.map +1 -0
- package/dist/codex/questions/owned-editor.d.ts +12 -0
- package/dist/codex/questions/owned-editor.d.ts.map +1 -0
- package/dist/codex/questions/owned-editor.js +37 -0
- package/dist/codex/questions/owned-editor.js.map +1 -0
- package/dist/codex/questions/pending-submissions.d.ts +12 -0
- package/dist/codex/questions/pending-submissions.d.ts.map +1 -0
- package/dist/codex/questions/pending-submissions.js +42 -0
- package/dist/codex/questions/pending-submissions.js.map +1 -0
- package/dist/codex/questions/records.d.ts +29 -0
- package/dist/codex/questions/records.d.ts.map +1 -0
- package/dist/codex/questions/records.js +113 -0
- package/dist/codex/questions/records.js.map +1 -0
- package/dist/codex/questions/selection.d.ts +3 -0
- package/dist/codex/questions/selection.d.ts.map +1 -0
- package/dist/codex/questions/selection.js +18 -0
- package/dist/codex/questions/selection.js.map +1 -0
- package/dist/codex/questions/session.d.ts +6 -0
- package/dist/codex/questions/session.d.ts.map +1 -0
- package/dist/codex/questions/session.js +21 -0
- package/dist/codex/questions/session.js.map +1 -0
- package/dist/codex/screen/clearance.d.ts +17 -0
- package/dist/codex/screen/clearance.d.ts.map +1 -0
- package/dist/codex/screen/clearance.js +170 -0
- package/dist/codex/screen/clearance.js.map +1 -0
- package/dist/codex/screen/empty-input.d.ts +4 -0
- package/dist/codex/screen/empty-input.d.ts.map +1 -0
- package/dist/codex/screen/empty-input.js +10 -0
- package/dist/codex/screen/empty-input.js.map +1 -0
- package/dist/codex/screen/live-clearance.d.ts +6 -0
- package/dist/codex/screen/live-clearance.d.ts.map +1 -0
- package/dist/codex/screen/live-clearance.js +34 -0
- package/dist/codex/screen/live-clearance.js.map +1 -0
- package/dist/codex/screen/retained-clearance.d.ts +19 -0
- package/dist/codex/screen/retained-clearance.d.ts.map +1 -0
- package/dist/codex/screen/retained-clearance.js +67 -0
- package/dist/codex/screen/retained-clearance.js.map +1 -0
- package/dist/codex/screen/staged-input.d.ts +7 -0
- package/dist/codex/screen/staged-input.d.ts.map +1 -0
- package/dist/codex/screen/staged-input.js +40 -0
- package/dist/codex/screen/staged-input.js.map +1 -0
- package/dist/codex/screen/working.d.ts +4 -0
- package/dist/codex/screen/working.d.ts.map +1 -0
- package/dist/codex/screen/working.js +5 -0
- package/dist/codex/screen/working.js.map +1 -0
- package/dist/codex/screen-table.d.ts +4 -1
- package/dist/codex/screen-table.d.ts.map +1 -1
- package/dist/codex/screen-table.js +44 -11
- package/dist/codex/screen-table.js.map +1 -1
- package/dist/codex/session/build.d.ts +1 -0
- package/dist/codex/session/build.d.ts.map +1 -1
- package/dist/codex/session/build.js +62 -68
- package/dist/codex/session/build.js.map +1 -1
- package/dist/codex/session/caller-input.d.ts +18 -0
- package/dist/codex/session/caller-input.d.ts.map +1 -0
- package/dist/codex/session/caller-input.js +50 -0
- package/dist/codex/session/caller-input.js.map +1 -0
- package/dist/codex/session/cleanup.d.ts +2 -1
- package/dist/codex/session/cleanup.d.ts.map +1 -1
- package/dist/codex/session/cleanup.js +3 -2
- package/dist/codex/session/cleanup.js.map +1 -1
- package/dist/codex/session/cli-exit.d.ts +24 -0
- package/dist/codex/session/cli-exit.d.ts.map +1 -0
- package/dist/codex/session/cli-exit.js +43 -0
- package/dist/codex/session/cli-exit.js.map +1 -0
- package/dist/codex/session/hooks.d.ts +3 -0
- package/dist/codex/session/hooks.d.ts.map +1 -1
- package/dist/codex/session/hooks.js +66 -13
- package/dist/codex/session/hooks.js.map +1 -1
- package/dist/codex/session/index.d.ts +2 -1
- package/dist/codex/session/index.d.ts.map +1 -1
- package/dist/codex/session/index.js +23 -8
- package/dist/codex/session/index.js.map +1 -1
- package/dist/codex/session/initial-ready.d.ts +6 -0
- package/dist/codex/session/initial-ready.d.ts.map +1 -0
- package/dist/codex/session/initial-ready.js +9 -0
- package/dist/codex/session/initial-ready.js.map +1 -0
- package/dist/codex/session/instance.d.ts +19 -4
- package/dist/codex/session/instance.d.ts.map +1 -1
- package/dist/codex/session/instance.js +60 -30
- package/dist/codex/session/instance.js.map +1 -1
- package/dist/codex/session/resume.d.ts.map +1 -1
- package/dist/codex/session/resume.js +35 -26
- package/dist/codex/session/resume.js.map +1 -1
- package/dist/codex/session/runtime.d.ts.map +1 -1
- package/dist/codex/session/runtime.js +1 -2
- package/dist/codex/session/runtime.js.map +1 -1
- package/dist/codex/session/startup-warnings.d.ts +11 -0
- package/dist/codex/session/startup-warnings.d.ts.map +1 -0
- package/dist/codex/session/startup-warnings.js +9 -0
- package/dist/codex/session/startup-warnings.js.map +1 -0
- package/dist/codex/session/transcript.d.ts +3 -1
- package/dist/codex/session/transcript.d.ts.map +1 -1
- package/dist/codex/session/transcript.js +51 -8
- package/dist/codex/session/transcript.js.map +1 -1
- package/dist/codex/session/types.d.ts +4 -3
- package/dist/codex/session/types.d.ts.map +1 -1
- package/dist/codex/session/update-attention.d.ts +4 -0
- package/dist/codex/session/update-attention.d.ts.map +1 -0
- package/dist/codex/session/update-attention.js +18 -0
- package/dist/codex/session/update-attention.js.map +1 -0
- package/dist/codex/session/warnings.d.ts +2 -1
- package/dist/codex/session/warnings.d.ts.map +1 -1
- package/dist/codex/session/warnings.js +2 -1
- package/dist/codex/session/warnings.js.map +1 -1
- package/dist/codex/simple.d.ts +1 -0
- package/dist/codex/simple.d.ts.map +1 -1
- package/dist/codex/simple.js +2 -0
- package/dist/codex/simple.js.map +1 -1
- package/dist/codex/startup-prompts.d.ts +29 -14
- package/dist/codex/startup-prompts.d.ts.map +1 -1
- package/dist/codex/startup-prompts.js +113 -93
- package/dist/codex/startup-prompts.js.map +1 -1
- package/dist/codex/startup-warnings.d.ts +10 -0
- package/dist/codex/startup-warnings.d.ts.map +1 -0
- package/dist/codex/startup-warnings.js +65 -0
- package/dist/codex/startup-warnings.js.map +1 -0
- package/dist/codex/transcript/summary.d.ts +1 -1
- package/dist/codex/transcript/summary.d.ts.map +1 -1
- package/dist/codex/transcript/summary.js +18 -7
- package/dist/codex/transcript/summary.js.map +1 -1
- package/dist/codex/transcript/types.d.ts +23 -12
- package/dist/codex/transcript/types.d.ts.map +1 -1
- package/dist/codex/transcript/watcher.d.ts.map +1 -1
- package/dist/codex/transcript/watcher.js +2 -1
- package/dist/codex/transcript/watcher.js.map +1 -1
- package/dist/codex/update/classification.d.ts +27 -0
- package/dist/codex/update/classification.d.ts.map +1 -0
- package/dist/codex/update/classification.js +28 -0
- package/dist/codex/update/classification.js.map +1 -0
- package/dist/codex/update/evidence.d.ts +22 -0
- package/dist/codex/update/evidence.d.ts.map +1 -0
- package/dist/codex/update/evidence.js +69 -0
- package/dist/codex/update/evidence.js.map +1 -0
- package/dist/codex/update/layout.d.ts +7 -0
- package/dist/codex/update/layout.d.ts.map +1 -0
- package/dist/codex/update/layout.js +65 -0
- package/dist/codex/update/layout.js.map +1 -0
- package/dist/codex/update/recognition.d.ts +3 -0
- package/dist/codex/update/recognition.d.ts.map +1 -0
- package/dist/codex/update/recognition.js +7 -0
- package/dist/codex/update/recognition.js.map +1 -0
- package/dist/codex/update/selection.d.ts +7 -0
- package/dist/codex/update/selection.d.ts.map +1 -0
- package/dist/codex/update/selection.js +10 -0
- package/dist/codex/update/selection.js.map +1 -0
- package/dist/codex/update/skip-attempt.d.ts +25 -0
- package/dist/codex/update/skip-attempt.d.ts.map +1 -0
- package/dist/codex/update/skip-attempt.js +64 -0
- package/dist/codex/update/skip-attempt.js.map +1 -0
- package/dist/codex/update/tracker.d.ts +37 -0
- package/dist/codex/update/tracker.d.ts.map +1 -0
- package/dist/codex/update/tracker.js +156 -0
- package/dist/codex/update/tracker.js.map +1 -0
- package/dist/codex/update-identity.d.ts +23 -0
- package/dist/codex/update-identity.d.ts.map +1 -0
- package/dist/codex/update-identity.js +46 -0
- package/dist/codex/update-identity.js.map +1 -0
- package/dist/codex/update-prompt.d.ts +26 -17
- package/dist/codex/update-prompt.d.ts.map +1 -1
- package/dist/codex/update-prompt.js +65 -62
- package/dist/codex/update-prompt.js.map +1 -1
- package/dist/core/activity/index.d.ts +24 -3
- package/dist/core/activity/index.d.ts.map +1 -1
- package/dist/core/activity/index.js.map +1 -1
- package/dist/core/activity/meta.d.ts +6 -1
- package/dist/core/activity/meta.d.ts.map +1 -1
- package/dist/core/activity/meta.js.map +1 -1
- package/dist/core/activity/transcript.d.ts +4 -1
- package/dist/core/activity/transcript.d.ts.map +1 -1
- package/dist/core/activity/transcript.js +28 -18
- package/dist/core/activity/transcript.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/async-mutex.d.ts +14 -8
- package/dist/core/async-mutex.d.ts.map +1 -1
- package/dist/core/async-mutex.js +48 -12
- package/dist/core/async-mutex.js.map +1 -1
- package/dist/core/attention.d.ts +6 -2
- package/dist/core/attention.d.ts.map +1 -1
- package/dist/core/attention.js +23 -9
- package/dist/core/attention.js.map +1 -1
- package/dist/core/control-queue/admission-scan.d.ts +10 -0
- package/dist/core/control-queue/admission-scan.d.ts.map +1 -0
- package/dist/core/control-queue/admission-scan.js +28 -0
- package/dist/core/control-queue/admission-scan.js.map +1 -0
- package/dist/core/control-queue/admission.d.ts +15 -0
- package/dist/core/control-queue/admission.d.ts.map +1 -0
- package/dist/core/control-queue/admission.js +70 -0
- package/dist/core/control-queue/admission.js.map +1 -0
- package/dist/core/control-queue/budget.d.ts +15 -0
- package/dist/core/control-queue/budget.d.ts.map +1 -0
- package/dist/core/control-queue/budget.js +33 -0
- package/dist/core/control-queue/budget.js.map +1 -0
- package/dist/core/control-queue/index.d.ts +6 -3
- package/dist/core/control-queue/index.d.ts.map +1 -1
- package/dist/core/control-queue/index.js +52 -28
- package/dist/core/control-queue/index.js.map +1 -1
- package/dist/core/control-queue/scan.d.ts +10 -0
- package/dist/core/control-queue/scan.d.ts.map +1 -0
- package/dist/core/control-queue/scan.js +24 -0
- package/dist/core/control-queue/scan.js.map +1 -0
- package/dist/core/control-queue/state.d.ts +19 -3
- package/dist/core/control-queue/state.d.ts.map +1 -1
- package/dist/core/control-queue/state.js +87 -15
- package/dist/core/control-queue/state.js.map +1 -1
- package/dist/core/control-queue/submission.d.ts +8 -0
- package/dist/core/control-queue/submission.d.ts.map +1 -0
- package/dist/core/control-queue/submission.js +41 -0
- package/dist/core/control-queue/submission.js.map +1 -0
- package/dist/core/control-queue/traits.d.ts +6 -9
- package/dist/core/control-queue/traits.d.ts.map +1 -1
- package/dist/core/control-queue/traits.js +2 -15
- package/dist/core/control-queue/traits.js.map +1 -1
- package/dist/core/control-queue/types.d.ts +28 -2
- package/dist/core/control-queue/types.d.ts.map +1 -1
- package/dist/core/errors.d.ts +7 -2
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +7 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/freeze-hook-event.d.ts +6 -0
- package/dist/core/freeze-hook-event.d.ts.map +1 -0
- package/dist/core/freeze-hook-event.js +16 -0
- package/dist/core/freeze-hook-event.js.map +1 -0
- package/dist/core/hook-dispatch.d.ts +3 -2
- package/dist/core/hook-dispatch.d.ts.map +1 -1
- package/dist/core/hook-dispatch.js +14 -6
- package/dist/core/hook-dispatch.js.map +1 -1
- package/dist/core/hook-observation.d.ts +24 -0
- package/dist/core/hook-observation.d.ts.map +1 -0
- package/dist/core/hook-observation.js +68 -0
- package/dist/core/hook-observation.js.map +1 -0
- package/dist/core/hook-result.d.ts +12 -2
- package/dist/core/hook-result.d.ts.map +1 -1
- package/dist/core/hook-result.js +10 -9
- package/dist/core/hook-result.js.map +1 -1
- package/dist/core/hook-timeout.d.ts.map +1 -1
- package/dist/core/hook-timeout.js +3 -2
- package/dist/core/hook-timeout.js.map +1 -1
- package/dist/core/images/capture.d.ts +14 -0
- package/dist/core/images/capture.d.ts.map +1 -0
- package/dist/core/images/capture.js +35 -0
- package/dist/core/images/capture.js.map +1 -0
- package/dist/core/images/chip-wait.d.ts +14 -16
- package/dist/core/images/chip-wait.d.ts.map +1 -1
- package/dist/core/images/chip-wait.js +31 -34
- package/dist/core/images/chip-wait.js.map +1 -1
- package/dist/core/images/queued-budget.d.ts +18 -0
- package/dist/core/images/queued-budget.d.ts.map +1 -0
- package/dist/core/images/queued-budget.js +41 -0
- package/dist/core/images/queued-budget.js.map +1 -0
- package/dist/core/inert-record.d.ts +3 -0
- package/dist/core/inert-record.d.ts.map +1 -0
- package/dist/core/inert-record.js +6 -0
- package/dist/core/inert-record.js.map +1 -0
- package/dist/core/input/abort.d.ts +33 -2
- package/dist/core/input/abort.d.ts.map +1 -1
- package/dist/core/input/abort.js +42 -2
- package/dist/core/input/abort.js.map +1 -1
- package/dist/core/input/clear-ack.d.ts +10 -0
- package/dist/core/input/clear-ack.d.ts.map +1 -0
- package/dist/core/input/clear-ack.js +26 -0
- package/dist/core/input/clear-ack.js.map +1 -0
- package/dist/core/input/composer-cleanup.d.ts +33 -0
- package/dist/core/input/composer-cleanup.d.ts.map +1 -0
- package/dist/core/input/composer-cleanup.js +127 -0
- package/dist/core/input/composer-cleanup.js.map +1 -0
- package/dist/core/input/constants.d.ts +12 -0
- package/dist/core/input/constants.d.ts.map +1 -0
- package/dist/core/input/constants.js +12 -0
- package/dist/core/input/constants.js.map +1 -0
- package/dist/core/input/empty-frame.d.ts +4 -0
- package/dist/core/input/empty-frame.d.ts.map +1 -0
- package/dist/core/input/empty-frame.js +15 -0
- package/dist/core/input/empty-frame.js.map +1 -0
- package/dist/core/input/index.d.ts +8 -25
- package/dist/core/input/index.d.ts.map +1 -1
- package/dist/core/input/index.js +67 -102
- package/dist/core/input/index.js.map +1 -1
- package/dist/core/input/paste-guard.d.ts +34 -0
- package/dist/core/input/paste-guard.d.ts.map +1 -0
- package/dist/core/input/paste-guard.js +2 -0
- package/dist/core/input/paste-guard.js.map +1 -0
- package/dist/core/input/paste-nudge.d.ts +10 -0
- package/dist/core/input/paste-nudge.d.ts.map +1 -0
- package/dist/core/input/paste-nudge.js +91 -0
- package/dist/core/input/paste-nudge.js.map +1 -0
- package/dist/core/input/render-observation.d.ts +3 -0
- package/dist/core/input/render-observation.d.ts.map +1 -0
- package/dist/core/input/render-observation.js +38 -0
- package/dist/core/input/render-observation.js.map +1 -0
- package/dist/core/input/render-wakeup.d.ts +10 -0
- package/dist/core/input/render-wakeup.d.ts.map +1 -0
- package/dist/core/input/render-wakeup.js +45 -0
- package/dist/core/input/render-wakeup.js.map +1 -0
- package/dist/core/input/sanitize.d.ts +11 -0
- package/dist/core/input/sanitize.d.ts.map +1 -0
- package/dist/core/input/sanitize.js +19 -0
- package/dist/core/input/sanitize.js.map +1 -0
- package/dist/core/input/staged-composer.d.ts +12 -0
- package/dist/core/input/staged-composer.d.ts.map +1 -0
- package/dist/core/input/staged-composer.js +56 -0
- package/dist/core/input/staged-composer.js.map +1 -0
- package/dist/core/input/submission-cancel.d.ts +6 -0
- package/dist/core/input/submission-cancel.d.ts.map +1 -0
- package/dist/core/input/submission-cancel.js +18 -0
- package/dist/core/input/submission-cancel.js.map +1 -0
- package/dist/core/json-shape.d.ts +2 -0
- package/dist/core/json-shape.d.ts.map +1 -0
- package/dist/core/json-shape.js +6 -0
- package/dist/core/json-shape.js.map +1 -0
- package/dist/core/json-snapshot.d.ts +10 -0
- package/dist/core/json-snapshot.d.ts.map +1 -0
- package/dist/core/json-snapshot.js +84 -0
- package/dist/core/json-snapshot.js.map +1 -0
- package/dist/core/loops/scheduler.d.ts +1 -1
- package/dist/core/loops/scheduler.d.ts.map +1 -1
- package/dist/core/loops/scheduler.js +1 -2
- package/dist/core/loops/scheduler.js.map +1 -1
- package/dist/core/models/dialog-region.d.ts +16 -0
- package/dist/core/models/dialog-region.d.ts.map +1 -0
- package/dist/core/models/dialog-region.js +133 -0
- package/dist/core/models/dialog-region.js.map +1 -0
- package/dist/core/models/input.d.ts +1 -1
- package/dist/core/models/input.d.ts.map +1 -1
- package/dist/core/models/input.js.map +1 -1
- package/dist/core/models/intervention.d.ts +3 -0
- package/dist/core/models/intervention.d.ts.map +1 -0
- package/dist/core/models/intervention.js +12 -0
- package/dist/core/models/intervention.js.map +1 -0
- package/dist/core/models/picker.d.ts +14 -1
- package/dist/core/models/picker.d.ts.map +1 -1
- package/dist/core/models/picker.js +27 -6
- package/dist/core/models/picker.js.map +1 -1
- package/dist/core/models/rows.d.ts +42 -2
- package/dist/core/models/rows.d.ts.map +1 -1
- package/dist/core/models/rows.js +30 -3
- package/dist/core/models/rows.js.map +1 -1
- package/dist/core/models/tui-screen.d.ts +11 -1
- package/dist/core/models/tui-screen.d.ts.map +1 -1
- package/dist/core/models/tui-screen.js +22 -4
- package/dist/core/models/tui-screen.js.map +1 -1
- package/dist/core/module-require.d.ts +1 -1
- package/dist/core/module-require.js +1 -1
- package/dist/core/persona.d.ts +5 -4
- package/dist/core/persona.d.ts.map +1 -1
- package/dist/core/persona.js +18 -3
- package/dist/core/persona.js.map +1 -1
- package/dist/core/predicates.d.ts +9 -1
- package/dist/core/predicates.d.ts.map +1 -1
- package/dist/core/predicates.js +12 -2
- package/dist/core/predicates.js.map +1 -1
- package/dist/core/questions/abort.d.ts +2 -0
- package/dist/core/questions/abort.d.ts.map +1 -0
- package/dist/core/questions/abort.js +21 -0
- package/dist/core/questions/abort.js.map +1 -0
- package/dist/core/questions/activity-fields.d.ts +5 -0
- package/dist/core/questions/activity-fields.d.ts.map +1 -0
- package/dist/core/questions/activity-fields.js +15 -0
- package/dist/core/questions/activity-fields.js.map +1 -0
- package/dist/core/questions/activity.d.ts +6 -0
- package/dist/core/questions/activity.d.ts.map +1 -0
- package/dist/core/questions/activity.js +2 -0
- package/dist/core/questions/activity.js.map +1 -0
- package/dist/core/questions/adapter.d.ts +15 -0
- package/dist/core/questions/adapter.d.ts.map +1 -0
- package/dist/core/questions/adapter.js +2 -0
- package/dist/core/questions/adapter.js.map +1 -0
- package/dist/core/questions/attempt.d.ts +26 -0
- package/dist/core/questions/attempt.d.ts.map +1 -0
- package/dist/core/questions/attempt.js +85 -0
- package/dist/core/questions/attempt.js.map +1 -0
- package/dist/core/questions/controller.d.ts +24 -0
- package/dist/core/questions/controller.d.ts.map +1 -0
- package/dist/core/questions/controller.js +83 -0
- package/dist/core/questions/controller.js.map +1 -0
- package/dist/core/questions/correlation.d.ts +8 -0
- package/dist/core/questions/correlation.d.ts.map +1 -0
- package/dist/core/questions/correlation.js +11 -0
- package/dist/core/questions/correlation.js.map +1 -0
- package/dist/core/questions/cursor-provenance.d.ts +12 -0
- package/dist/core/questions/cursor-provenance.d.ts.map +1 -0
- package/dist/core/questions/cursor-provenance.js +19 -0
- package/dist/core/questions/cursor-provenance.js.map +1 -0
- package/dist/core/questions/deadline.d.ts +2 -0
- package/dist/core/questions/deadline.d.ts.map +1 -0
- package/dist/core/questions/deadline.js +11 -0
- package/dist/core/questions/deadline.js.map +1 -0
- package/dist/core/questions/dispatch.d.ts +17 -0
- package/dist/core/questions/dispatch.d.ts.map +1 -0
- package/dist/core/questions/dispatch.js +46 -0
- package/dist/core/questions/dispatch.js.map +1 -0
- package/dist/core/questions/errors.d.ts +8 -0
- package/dist/core/questions/errors.d.ts.map +1 -0
- package/dist/core/questions/errors.js +10 -0
- package/dist/core/questions/errors.js.map +1 -0
- package/dist/core/questions/input.d.ts +13 -0
- package/dist/core/questions/input.d.ts.map +1 -0
- package/dist/core/questions/input.js +93 -0
- package/dist/core/questions/input.js.map +1 -0
- package/dist/core/questions/io.d.ts +23 -0
- package/dist/core/questions/io.d.ts.map +1 -0
- package/dist/core/questions/io.js +2 -0
- package/dist/core/questions/io.js.map +1 -0
- package/dist/core/questions/notification-errors.d.ts +14 -0
- package/dist/core/questions/notification-errors.d.ts.map +1 -0
- package/dist/core/questions/notification-errors.js +45 -0
- package/dist/core/questions/notification-errors.js.map +1 -0
- package/dist/core/questions/observers.d.ts +17 -0
- package/dist/core/questions/observers.d.ts.map +1 -0
- package/dist/core/questions/observers.js +57 -0
- package/dist/core/questions/observers.js.map +1 -0
- package/dist/core/questions/registry.d.ts +35 -0
- package/dist/core/questions/registry.d.ts.map +1 -0
- package/dist/core/questions/registry.js +158 -0
- package/dist/core/questions/registry.js.map +1 -0
- package/dist/core/questions/transaction.d.ts +23 -0
- package/dist/core/questions/transaction.d.ts.map +1 -0
- package/dist/core/questions/transaction.js +97 -0
- package/dist/core/questions/transaction.js.map +1 -0
- package/dist/core/questions/types.d.ts +62 -0
- package/dist/core/questions/types.d.ts.map +1 -0
- package/dist/core/questions/types.js +2 -0
- package/dist/core/questions/types.js.map +1 -0
- package/dist/core/questions/validate.d.ts +16 -0
- package/dist/core/questions/validate.d.ts.map +1 -0
- package/dist/core/questions/validate.js +95 -0
- package/dist/core/questions/validate.js.map +1 -0
- package/dist/core/rendered-observers.d.ts +7 -2
- package/dist/core/rendered-observers.d.ts.map +1 -1
- package/dist/core/rendered-observers.js +44 -10
- package/dist/core/rendered-observers.js.map +1 -1
- package/dist/core/screen-facts.d.ts +8 -3
- package/dist/core/screen-facts.d.ts.map +1 -1
- package/dist/core/screen-facts.js +6 -3
- package/dist/core/screen-facts.js.map +1 -1
- package/dist/core/simple/boundary-observer.d.ts +30 -0
- package/dist/core/simple/boundary-observer.d.ts.map +1 -0
- package/dist/core/simple/boundary-observer.js +111 -0
- package/dist/core/simple/boundary-observer.js.map +1 -0
- package/dist/core/simple/boundary-signal.d.ts +31 -0
- package/dist/core/simple/boundary-signal.d.ts.map +1 -0
- package/dist/core/simple/boundary-signal.js +19 -0
- package/dist/core/simple/boundary-signal.js.map +1 -0
- package/dist/core/simple/captured-input.d.ts +19 -0
- package/dist/core/simple/captured-input.d.ts.map +1 -0
- package/dist/core/simple/captured-input.js +78 -0
- package/dist/core/simple/captured-input.js.map +1 -0
- package/dist/core/simple/close.d.ts +6 -0
- package/dist/core/simple/close.d.ts.map +1 -0
- package/dist/core/simple/close.js +20 -0
- package/dist/core/simple/close.js.map +1 -0
- package/dist/core/simple/events.d.ts +2 -2
- package/dist/core/simple/events.js +2 -2
- package/dist/core/simple/loop-boundary.d.ts +12 -0
- package/dist/core/simple/loop-boundary.d.ts.map +1 -0
- package/dist/core/simple/loop-boundary.js +68 -0
- package/dist/core/simple/loop-boundary.js.map +1 -0
- package/dist/core/simple/loop-hold.d.ts +7 -0
- package/dist/core/simple/loop-hold.d.ts.map +1 -0
- package/dist/core/simple/loop-hold.js +9 -0
- package/dist/core/simple/loop-hold.js.map +1 -0
- package/dist/core/simple/native-boundary.d.ts +15 -0
- package/dist/core/simple/native-boundary.d.ts.map +1 -0
- package/dist/core/simple/native-boundary.js +18 -0
- package/dist/core/simple/native-boundary.js.map +1 -0
- package/dist/core/simple/native-idle.d.ts +17 -0
- package/dist/core/simple/native-idle.d.ts.map +1 -0
- package/dist/core/simple/native-idle.js +25 -0
- package/dist/core/simple/native-idle.js.map +1 -0
- package/dist/core/simple/observe-boundary.d.ts +28 -0
- package/dist/core/simple/observe-boundary.d.ts.map +1 -0
- package/dist/core/simple/observe-boundary.js +13 -0
- package/dist/core/simple/observe-boundary.js.map +1 -0
- package/dist/core/simple/owned-loop.d.ts +8 -0
- package/dist/core/simple/owned-loop.d.ts.map +1 -0
- package/dist/core/simple/owned-loop.js +42 -0
- package/dist/core/simple/owned-loop.js.map +1 -0
- package/dist/core/simple/session.d.ts +7 -7
- package/dist/core/simple/session.d.ts.map +1 -1
- package/dist/core/simple/session.js +20 -33
- package/dist/core/simple/session.js.map +1 -1
- package/dist/core/simple/submission-context.d.ts +13 -0
- package/dist/core/simple/submission-context.d.ts.map +1 -0
- package/dist/core/simple/submission-context.js +35 -0
- package/dist/core/simple/submission-context.js.map +1 -0
- package/dist/core/simple/turn/bounds.d.ts +22 -0
- package/dist/core/simple/turn/bounds.d.ts.map +1 -0
- package/dist/core/simple/turn/bounds.js +22 -0
- package/dist/core/simple/turn/bounds.js.map +1 -0
- package/dist/core/simple/turn/defaults.d.ts +24 -0
- package/dist/core/simple/turn/defaults.d.ts.map +1 -0
- package/dist/core/simple/turn/defaults.js +34 -0
- package/dist/core/simple/turn/defaults.js.map +1 -0
- package/dist/core/simple/turn-acceptance.d.ts +20 -3
- package/dist/core/simple/turn-acceptance.d.ts.map +1 -1
- package/dist/core/simple/turn-acceptance.js +55 -5
- package/dist/core/simple/turn-acceptance.js.map +1 -1
- package/dist/core/simple/turn-boundary.d.ts +7 -2
- package/dist/core/simple/turn-boundary.d.ts.map +1 -1
- package/dist/core/simple/turn-boundary.js +17 -5
- package/dist/core/simple/turn-boundary.js.map +1 -1
- package/dist/core/simple/turn-gate.d.ts.map +1 -1
- package/dist/core/simple/turn-gate.js +1 -11
- package/dist/core/simple/turn-gate.js.map +1 -1
- package/dist/core/simple/turn-identity.d.ts +28 -0
- package/dist/core/simple/turn-identity.d.ts.map +1 -0
- package/dist/core/simple/turn-identity.js +74 -0
- package/dist/core/simple/turn-identity.js.map +1 -0
- package/dist/core/simple/turn-types.d.ts +11 -4
- package/dist/core/simple/turn-types.d.ts.map +1 -1
- package/dist/core/simple/turn-types.js +1 -6
- package/dist/core/simple/turn-types.js.map +1 -1
- package/dist/core/simple/turn.d.ts +7 -30
- package/dist/core/simple/turn.d.ts.map +1 -1
- package/dist/core/simple/turn.js +75 -75
- package/dist/core/simple/turn.js.map +1 -1
- package/dist/core/startup/barrier.d.ts +37 -0
- package/dist/core/startup/barrier.d.ts.map +1 -0
- package/dist/core/startup/barrier.js +59 -0
- package/dist/core/startup/barrier.js.map +1 -0
- package/dist/core/startup/frame.d.ts +2 -0
- package/dist/core/startup/frame.d.ts.map +1 -1
- package/dist/core/startup/frame.js +12 -0
- package/dist/core/startup/frame.js.map +1 -1
- package/dist/core/startup/warnings.d.ts +5 -0
- package/dist/core/startup/warnings.d.ts.map +1 -0
- package/dist/core/startup/warnings.js +14 -0
- package/dist/core/startup/warnings.js.map +1 -0
- package/dist/core/startup/write.d.ts +13 -11
- package/dist/core/startup/write.d.ts.map +1 -1
- package/dist/core/startup/write.js +12 -5
- package/dist/core/startup/write.js.map +1 -1
- package/dist/core/stop-input.d.ts +19 -0
- package/dist/core/stop-input.d.ts.map +1 -0
- package/dist/core/stop-input.js +47 -0
- package/dist/core/stop-input.js.map +1 -0
- package/dist/core/terminal-options.d.ts +13 -3
- package/dist/core/terminal-options.d.ts.map +1 -1
- package/dist/core/terminal-options.js +17 -7
- package/dist/core/terminal-options.js.map +1 -1
- package/dist/core/terminal-replay.d.ts +1 -0
- package/dist/core/terminal-replay.d.ts.map +1 -1
- package/dist/core/terminal-replay.js +6 -0
- package/dist/core/terminal-replay.js.map +1 -1
- package/dist/core/timers.d.ts +15 -0
- package/dist/core/timers.d.ts.map +1 -0
- package/dist/core/timers.js +17 -0
- package/dist/core/timers.js.map +1 -0
- package/dist/core/trust/allowlist.d.ts +24 -1
- package/dist/core/trust/allowlist.d.ts.map +1 -1
- package/dist/core/trust/allowlist.js +39 -12
- package/dist/core/trust/allowlist.js.map +1 -1
- package/dist/core/trust/blocking.d.ts +21 -10
- package/dist/core/trust/blocking.d.ts.map +1 -1
- package/dist/core/trust/blocking.js +64 -18
- package/dist/core/trust/blocking.js.map +1 -1
- package/dist/core/trust/clearance.d.ts +20 -0
- package/dist/core/trust/clearance.d.ts.map +1 -0
- package/dist/core/trust/clearance.js +25 -0
- package/dist/core/trust/clearance.js.map +1 -0
- package/dist/core/trust/copy.d.ts +19 -0
- package/dist/core/trust/copy.d.ts.map +1 -0
- package/dist/core/trust/copy.js +23 -0
- package/dist/core/trust/copy.js.map +1 -0
- package/dist/core/trust/dialog.d.ts +28 -0
- package/dist/core/trust/dialog.d.ts.map +1 -0
- package/dist/core/trust/dialog.js +96 -0
- package/dist/core/trust/dialog.js.map +1 -0
- package/dist/core/trust/options.d.ts +9 -0
- package/dist/core/trust/options.d.ts.map +1 -0
- package/dist/core/trust/options.js +9 -0
- package/dist/core/trust/options.js.map +1 -0
- package/dist/core/trust/prompts.d.ts +16 -37
- package/dist/core/trust/prompts.d.ts.map +1 -1
- package/dist/core/trust/prompts.js +10 -18
- package/dist/core/trust/prompts.js.map +1 -1
- package/dist/core/trust/responder.d.ts +27 -45
- package/dist/core/trust/responder.d.ts.map +1 -1
- package/dist/core/trust/responder.js +178 -108
- package/dist/core/trust/responder.js.map +1 -1
- package/dist/core/trust/types.d.ts +36 -0
- package/dist/core/trust/types.d.ts.map +1 -0
- package/dist/core/trust/types.js +17 -0
- package/dist/core/trust/types.js.map +1 -0
- package/dist/core/trust/view.d.ts +31 -0
- package/dist/core/trust/view.d.ts.map +1 -0
- package/dist/core/trust/view.js +52 -0
- package/dist/core/trust/view.js.map +1 -0
- package/dist/core/trust/write.d.ts +31 -0
- package/dist/core/trust/write.d.ts.map +1 -0
- package/dist/core/trust/write.js +148 -0
- package/dist/core/trust/write.js.map +1 -0
- package/dist/core/turn-state.d.ts +6 -0
- package/dist/core/turn-state.d.ts.map +1 -1
- package/dist/core/turn-state.js +31 -1
- package/dist/core/turn-state.js.map +1 -1
- package/dist/core/types.d.ts +4 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/warnings/auth.d.ts +25 -0
- package/dist/core/warnings/auth.d.ts.map +1 -0
- package/dist/core/warnings/auth.js +2 -0
- package/dist/core/warnings/auth.js.map +1 -0
- package/dist/core/warnings/index.d.ts +9 -16
- package/dist/core/warnings/index.d.ts.map +1 -1
- package/dist/core/warnings/index.js +2 -3
- package/dist/core/warnings/index.js.map +1 -1
- package/dist/core/warnings/lifecycle.d.ts +25 -1
- package/dist/core/warnings/lifecycle.d.ts.map +1 -1
- package/dist/core/warnings/lifecycle.js +1 -1
- package/dist/core/warnings/questions.d.ts +23 -0
- package/dist/core/warnings/questions.d.ts.map +1 -0
- package/dist/core/warnings/questions.js +2 -0
- package/dist/core/warnings/questions.js.map +1 -0
- package/dist/core/warnings/session.d.ts +3 -2
- package/dist/core/warnings/session.d.ts.map +1 -1
- package/dist/core/warnings/session.js +3 -2
- package/dist/core/warnings/session.js.map +1 -1
- package/dist/core/warnings/transcript.d.ts +12 -0
- package/dist/core/warnings/transcript.d.ts.map +1 -0
- package/dist/core/warnings/transcript.js +2 -0
- package/dist/core/warnings/transcript.js.map +1 -0
- package/dist/core/warnings/update.d.ts +11 -2
- package/dist/core/warnings/update.d.ts.map +1 -1
- package/dist/core/warnings/update.js +27 -4
- package/dist/core/warnings/update.js.map +1 -1
- package/dist/events/emitter.d.ts +18 -2
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +61 -14
- package/dist/events/emitter.js.map +1 -1
- package/dist/events/observer-errors.d.ts +9 -0
- package/dist/events/observer-errors.d.ts.map +1 -0
- package/dist/events/observer-errors.js +68 -0
- package/dist/events/observer-errors.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/pty/node.d.ts.map +1 -1
- package/dist/pty/node.js +4 -0
- package/dist/pty/node.js.map +1 -1
- package/dist/pty/types.d.ts +5 -0
- package/dist/pty/types.d.ts.map +1 -1
- package/dist/runtime/probe-cleanup.d.ts +34 -0
- package/dist/runtime/probe-cleanup.d.ts.map +1 -0
- package/dist/runtime/probe-cleanup.js +139 -0
- package/dist/runtime/probe-cleanup.js.map +1 -0
- package/dist/runtime/probe.d.ts.map +1 -1
- package/dist/runtime/probe.js +18 -25
- package/dist/runtime/probe.js.map +1 -1
- package/dist/runtime/readiness/initial-ready.d.ts +13 -11
- package/dist/runtime/readiness/initial-ready.d.ts.map +1 -1
- package/dist/runtime/readiness/initial-ready.js +23 -18
- package/dist/runtime/readiness/initial-ready.js.map +1 -1
- package/dist/runtime/seams.d.ts +2 -1
- package/dist/runtime/seams.d.ts.map +1 -1
- package/dist/runtime/seams.js.map +1 -1
- package/dist/runtime/session/attention-clearance.d.ts +5 -0
- package/dist/runtime/session/attention-clearance.d.ts.map +1 -0
- package/dist/runtime/session/attention-clearance.js +20 -0
- package/dist/runtime/session/attention-clearance.js.map +1 -0
- package/dist/runtime/session/base.d.ts +17 -4
- package/dist/runtime/session/base.d.ts.map +1 -1
- package/dist/runtime/session/base.js +68 -14
- package/dist/runtime/session/base.js.map +1 -1
- package/dist/runtime/session/commands.d.ts +17 -3
- package/dist/runtime/session/commands.d.ts.map +1 -1
- package/dist/runtime/session/commands.js +60 -13
- package/dist/runtime/session/commands.js.map +1 -1
- package/dist/runtime/session/foreign-picker.d.ts +8 -0
- package/dist/runtime/session/foreign-picker.d.ts.map +1 -0
- package/dist/runtime/session/foreign-picker.js +18 -0
- package/dist/runtime/session/foreign-picker.js.map +1 -0
- package/dist/runtime/session/frames.d.ts +27 -0
- package/dist/runtime/session/frames.d.ts.map +1 -0
- package/dist/runtime/session/frames.js +80 -0
- package/dist/runtime/session/frames.js.map +1 -0
- package/dist/runtime/session/image-attach.d.ts +3 -15
- package/dist/runtime/session/image-attach.d.ts.map +1 -1
- package/dist/runtime/session/image-attach.js +9 -27
- package/dist/runtime/session/image-attach.js.map +1 -1
- package/dist/runtime/session/lifecycle.d.ts +20 -14
- package/dist/runtime/session/lifecycle.d.ts.map +1 -1
- package/dist/runtime/session/lifecycle.js +49 -47
- package/dist/runtime/session/lifecycle.js.map +1 -1
- package/dist/runtime/session/loops.d.ts +10 -1
- package/dist/runtime/session/loops.d.ts.map +1 -1
- package/dist/runtime/session/loops.js +61 -19
- package/dist/runtime/session/loops.js.map +1 -1
- package/dist/runtime/session/native-submission.d.ts +10 -0
- package/dist/runtime/session/native-submission.d.ts.map +1 -0
- package/dist/runtime/session/native-submission.js +62 -0
- package/dist/runtime/session/native-submission.js.map +1 -0
- package/dist/runtime/session/not-running.d.ts +13 -0
- package/dist/runtime/session/not-running.d.ts.map +1 -0
- package/dist/runtime/session/not-running.js +28 -0
- package/dist/runtime/session/not-running.js.map +1 -0
- package/dist/runtime/session/paste-recovery.d.ts +15 -0
- package/dist/runtime/session/paste-recovery.d.ts.map +1 -0
- package/dist/runtime/session/paste-recovery.js +30 -0
- package/dist/runtime/session/paste-recovery.js.map +1 -0
- package/dist/runtime/session/picker-cleanup.d.ts +56 -0
- package/dist/runtime/session/picker-cleanup.d.ts.map +1 -0
- package/dist/runtime/session/picker-cleanup.js +126 -0
- package/dist/runtime/session/picker-cleanup.js.map +1 -0
- package/dist/runtime/session/picker-input.d.ts +17 -0
- package/dist/runtime/session/picker-input.d.ts.map +1 -0
- package/dist/runtime/session/picker-input.js +74 -0
- package/dist/runtime/session/picker-input.js.map +1 -0
- package/dist/runtime/session/picker.d.ts +56 -0
- package/dist/runtime/session/picker.d.ts.map +1 -0
- package/dist/runtime/session/picker.js +143 -0
- package/dist/runtime/session/picker.js.map +1 -0
- package/dist/runtime/session/questions.d.ts +23 -0
- package/dist/runtime/session/questions.d.ts.map +1 -0
- package/dist/runtime/session/questions.js +25 -0
- package/dist/runtime/session/questions.js.map +1 -0
- package/dist/runtime/session/readiness.d.ts +6 -3
- package/dist/runtime/session/readiness.d.ts.map +1 -1
- package/dist/runtime/session/readiness.js +19 -8
- package/dist/runtime/session/readiness.js.map +1 -1
- package/dist/runtime/session/shutdown-binding.d.ts +9 -0
- package/dist/runtime/session/shutdown-binding.d.ts.map +1 -1
- package/dist/runtime/session/shutdown-binding.js +57 -8
- package/dist/runtime/session/shutdown-binding.js.map +1 -1
- package/dist/runtime/session/shutdown.d.ts +2 -5
- package/dist/runtime/session/shutdown.d.ts.map +1 -1
- package/dist/runtime/session/shutdown.js +12 -13
- package/dist/runtime/session/shutdown.js.map +1 -1
- package/dist/runtime/session/status-wiring.d.ts +9 -4
- package/dist/runtime/session/status-wiring.d.ts.map +1 -1
- package/dist/runtime/session/status-wiring.js +8 -5
- package/dist/runtime/session/status-wiring.js.map +1 -1
- package/dist/runtime/session/stop-completion.d.ts +23 -0
- package/dist/runtime/session/stop-completion.d.ts.map +1 -0
- package/dist/runtime/session/stop-completion.js +32 -0
- package/dist/runtime/session/stop-completion.js.map +1 -0
- package/dist/runtime/session/turn-submission.d.ts +9 -0
- package/dist/runtime/session/turn-submission.d.ts.map +1 -0
- package/dist/runtime/session/turn-submission.js +19 -0
- package/dist/runtime/session/turn-submission.js.map +1 -0
- package/dist/runtime/shutdown/terminal.d.ts +10 -0
- package/dist/runtime/shutdown/terminal.d.ts.map +1 -0
- package/dist/runtime/shutdown/terminal.js +38 -0
- package/dist/runtime/shutdown/terminal.js.map +1 -0
- package/dist/runtime/startup/buffer.d.ts +1 -1
- package/dist/runtime/startup/buffer.d.ts.map +1 -1
- package/dist/runtime/startup/buffer.js +14 -8
- package/dist/runtime/startup/buffer.js.map +1 -1
- package/dist/runtime/status-evidence.d.ts +7 -3
- package/dist/runtime/status-evidence.d.ts.map +1 -1
- package/dist/runtime/status-evidence.js +12 -10
- package/dist/runtime/status-evidence.js.map +1 -1
- package/dist/runtime/update/lock.d.ts +7 -0
- package/dist/runtime/update/lock.d.ts.map +1 -1
- package/dist/runtime/update/lock.js +102 -121
- package/dist/runtime/update/lock.js.map +1 -1
- package/dist/runtime/update/owner.d.ts +54 -0
- package/dist/runtime/update/owner.d.ts.map +1 -0
- package/dist/runtime/update/owner.js +131 -0
- package/dist/runtime/update/owner.js.map +1 -0
- package/dist/runtime/update/retained-lease.d.ts +13 -0
- package/dist/runtime/update/retained-lease.d.ts.map +1 -0
- package/dist/runtime/update/retained-lease.js +40 -0
- package/dist/runtime/update/retained-lease.js.map +1 -0
- package/dist/runtime/update/waiting.d.ts +4 -0
- package/dist/runtime/update/waiting.d.ts.map +1 -0
- package/dist/runtime/update/waiting.js +95 -0
- package/dist/runtime/update/waiting.js.map +1 -0
- package/dist/state/canonical-path.d.ts +2 -0
- package/dist/state/canonical-path.d.ts.map +1 -0
- package/dist/state/canonical-path.js +22 -0
- package/dist/state/canonical-path.js.map +1 -0
- package/dist/state/launch-ownership.d.ts +21 -0
- package/dist/state/launch-ownership.d.ts.map +1 -0
- package/dist/state/launch-ownership.js +154 -0
- package/dist/state/launch-ownership.js.map +1 -0
- package/dist/state/launch-publication.d.ts +7 -0
- package/dist/state/launch-publication.d.ts.map +1 -0
- package/dist/state/launch-publication.js +53 -0
- package/dist/state/launch-publication.js.map +1 -0
- package/dist/state/private-read.js +2 -1
- package/dist/state/private-read.js.map +1 -1
- package/dist/state/private-session.d.ts +1 -1
- package/dist/state/private-session.d.ts.map +1 -1
- package/dist/state/private-session.js +4 -1
- package/dist/state/private-session.js.map +1 -1
- package/dist/state/runtime-paths.d.ts +10 -9
- package/dist/state/runtime-paths.d.ts.map +1 -1
- package/dist/state/runtime-paths.js +14 -12
- package/dist/state/runtime-paths.js.map +1 -1
- package/dist/state/socket-home.d.ts +8 -4
- package/dist/state/socket-home.d.ts.map +1 -1
- package/dist/state/socket-home.js +31 -7
- package/dist/state/socket-home.js.map +1 -1
- package/dist/state/startup-ownership.d.ts +4 -0
- package/dist/state/startup-ownership.d.ts.map +1 -0
- package/dist/state/startup-ownership.js +14 -0
- package/dist/state/startup-ownership.js.map +1 -0
- package/dist/state/store.d.ts +1 -1
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +2 -2
- package/dist/state/store.js.map +1 -1
- package/dist/terminal/coordinates.d.ts +7 -0
- package/dist/terminal/coordinates.d.ts.map +1 -0
- package/dist/terminal/coordinates.js +6 -0
- package/dist/terminal/coordinates.js.map +1 -0
- package/dist/terminal/cursor.d.ts +40 -0
- package/dist/terminal/cursor.d.ts.map +1 -0
- package/dist/terminal/cursor.js +116 -0
- package/dist/terminal/cursor.js.map +1 -0
- package/dist/terminal/headless.d.ts +7 -5
- package/dist/terminal/headless.d.ts.map +1 -1
- package/dist/terminal/headless.js +47 -35
- package/dist/terminal/headless.js.map +1 -1
- package/dist/terminal/pty-output.d.ts +37 -0
- package/dist/terminal/pty-output.d.ts.map +1 -0
- package/dist/terminal/pty-output.js +109 -0
- package/dist/terminal/pty-output.js.map +1 -0
- package/dist/terminal/render-queue.d.ts +30 -0
- package/dist/terminal/render-queue.d.ts.map +1 -0
- package/dist/terminal/render-queue.js +105 -0
- package/dist/terminal/render-queue.js.map +1 -0
- package/dist/terminal/snapshot.d.ts +5 -0
- package/dist/terminal/snapshot.d.ts.map +1 -0
- package/dist/terminal/snapshot.js +13 -0
- package/dist/terminal/snapshot.js.map +1 -0
- package/docs/api.md +8 -1
- package/docs/cli-behavior.md +930 -43
- package/docs/cli-output.md +44 -10
- package/docs/cli.md +18 -11
- package/docs/codex/cli.md +44 -0
- package/docs/login-recovery.md +24 -0
- package/docs/native-question-proofs.md +57 -0
- package/docs/performance.md +73 -0
- package/docs/questions.md +181 -0
- package/package.json +1 -1
- package/prd/04-architecture.md +15 -0
- package/prd/05-api/5.1-starting-claude.md +11 -1
- package/prd/05-api/5.10-questions.md +117 -0
- package/prd/05-api/5.3-claude-session-api.md +293 -24
- package/prd/05-api/5.4-events.md +159 -32
- package/prd/05-api/5.5-starting-codex.md +85 -18
- package/prd/05-api/5.7-codex-session-api.md +143 -5
- package/prd/05-api/5.8-session-api.md +58 -6
- package/prd/05-api/5.9-loops.md +11 -1
- package/prd/05-api/README.md +2 -0
- package/prd/06-claude-hook-bridge.md +115 -0
- package/prd/07-claude-policy.md +2 -0
- package/prd/07a-codex-hook-bridge.md +90 -0
- package/prd/08-state.md +51 -10
- package/prd/09-lifecycle.md +79 -3
- package/prd/10-errors.md +9 -2
- package/prd/12a-cli.md +50 -17
- package/prd/13-latitude.md +89 -0
- package/prd/14-conformance.md +86 -32
- package/prd/16-maintainer-review.md +75 -0
- package/prd/README.md +1 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
2
|
+
import { errnoCode } from "../core/errors.js";
|
|
3
|
+
import { boundedErrorToken, isReapErrorCode, } from "../core/warnings/reasons.js";
|
|
4
|
+
const cleanupWindowMs = 1_000;
|
|
5
|
+
const leaderFallbackAfterMs = 500;
|
|
6
|
+
const cleanupRetryMs = 25;
|
|
7
|
+
const deferredRetryMs = 1_000;
|
|
8
|
+
const retained = new Set();
|
|
9
|
+
let retryTimer;
|
|
10
|
+
/**
|
|
11
|
+
* Whether a process group has fully exited. Signal 0 delivers nothing — it only asks the
|
|
12
|
+
* kernel whether the group could be signaled — so observing a group can never disturb it.
|
|
13
|
+
* Only `ESRCH` proves absence: any other error (notably `EPERM`, a group this user may not
|
|
14
|
+
* signal) means something is still there, so the group counts as live and the lease it
|
|
15
|
+
* holds is kept. Guessing "gone" here would let a second updater run against a live one.
|
|
16
|
+
*/
|
|
17
|
+
export function processGroupGone(processGroupId) {
|
|
18
|
+
try {
|
|
19
|
+
process.kill(-processGroupId, 0);
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return errnoCode(error) === "ESRCH";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Observes an aborted updater's groups for a short window without signaling them, and
|
|
28
|
+
* returns those still live. A group that exits on its own in that window never retains the
|
|
29
|
+
* lease, so an update whose descendants are merely slow to finish costs one second rather
|
|
30
|
+
* than a lease the next host has to wait out.
|
|
31
|
+
*/
|
|
32
|
+
export async function waitForProbeGroups(processGroupIds) {
|
|
33
|
+
// Monotonic, like the abort window it mirrors: this is a promised bound on how long a
|
|
34
|
+
// start is delayed, so a backward system-clock adjustment must not extend it, nor a
|
|
35
|
+
// forward one cut the observation short and hand the lease over early.
|
|
36
|
+
const deadline = performance.now() + cleanupWindowMs;
|
|
37
|
+
let live = processGroupIds.filter((id) => !processGroupGone(id));
|
|
38
|
+
while (live.length > 0 && performance.now() < deadline) {
|
|
39
|
+
await delay(cleanupRetryMs);
|
|
40
|
+
live = live.filter((id) => !processGroupGone(id));
|
|
41
|
+
}
|
|
42
|
+
return live;
|
|
43
|
+
}
|
|
44
|
+
export async function abortProbe(child) {
|
|
45
|
+
// Abort only follows timeout/output from a successfully spawned process, and
|
|
46
|
+
// a detached child leads the process group named by its own pid.
|
|
47
|
+
const processGroupId = child.pid;
|
|
48
|
+
child.stdin?.destroy();
|
|
49
|
+
child.stdout?.destroy();
|
|
50
|
+
child.stderr?.destroy();
|
|
51
|
+
// Nothing in the cleanup window may prolong host shutdown: not the child handle, and
|
|
52
|
+
// not the retry timers. The window is measured on a clock that cannot be adjusted.
|
|
53
|
+
child.unref();
|
|
54
|
+
const reaper = new ProbeReaper(child, processGroupId);
|
|
55
|
+
const started = performance.now();
|
|
56
|
+
for (;;) {
|
|
57
|
+
const elapsedMs = performance.now() - started;
|
|
58
|
+
// Past the window the AWAITED cleanup only observes, never signals: a loaded event loop
|
|
59
|
+
// can resume this loop late, and the bound is a promise about when the caller stops
|
|
60
|
+
// waiting AND when this loop stops signaling. It is not a promise that the group is
|
|
61
|
+
// never signaled again: a retained reaper may still retry below, but only while the
|
|
62
|
+
// leader is unreaped, which is what keeps a reissued id safe.
|
|
63
|
+
if (elapsedMs >= cleanupWindowMs) {
|
|
64
|
+
if (processGroupGone(processGroupId))
|
|
65
|
+
return {};
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
// Confirmed cleanup is not a failure, whichever signal achieved it.
|
|
69
|
+
if (reaper.reap(elapsedMs >= leaderFallbackAfterMs))
|
|
70
|
+
return {};
|
|
71
|
+
await delay(cleanupRetryMs, undefined, { ref: false });
|
|
72
|
+
}
|
|
73
|
+
// Only an UNRESOLVED abort gets here — confirmed cleanup has already returned above — and
|
|
74
|
+
// it is what retains cleanup ownership; update leases additionally preserve exclusion
|
|
75
|
+
// after parent exit. Neither keeps the event loop pinned.
|
|
76
|
+
retained.add(reaper);
|
|
77
|
+
retryTimer ??= setInterval(reapRetained, deferredRetryMs);
|
|
78
|
+
retryTimer.unref();
|
|
79
|
+
return {
|
|
80
|
+
cleanupErrorCode: reaper.errorCode ?? "ETIMEDOUT",
|
|
81
|
+
cleanupProcessGroupId: processGroupId,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* A process-group id is provably ours only while Node has not reaped the group's
|
|
86
|
+
* leader: the unreaped pid cannot be reissued, so no unrelated group can take the
|
|
87
|
+
* number. After that the id may be recycled, so the reaper only observes it. A
|
|
88
|
+
* successful SIGKILL also latches; later polls only confirm disappearance.
|
|
89
|
+
*/
|
|
90
|
+
class ProbeReaper {
|
|
91
|
+
errorCode;
|
|
92
|
+
groupKillSucceeded = false;
|
|
93
|
+
leaderReaped = false;
|
|
94
|
+
child;
|
|
95
|
+
processGroupId;
|
|
96
|
+
constructor(child, processGroupId) {
|
|
97
|
+
this.child = child;
|
|
98
|
+
this.processGroupId = processGroupId;
|
|
99
|
+
}
|
|
100
|
+
reap(fallBackToLeader = true) {
|
|
101
|
+
if (processGroupGone(this.processGroupId))
|
|
102
|
+
return true;
|
|
103
|
+
// Reaped is terminal, so it is latched and the handle dropped: from here the id can be
|
|
104
|
+
// reissued and is only ever observed, and a reaper waiting out a long-lived descendant
|
|
105
|
+
// has no further use for the child, its streams, or the closures they hold.
|
|
106
|
+
if (this.child !== undefined &&
|
|
107
|
+
(this.child.exitCode !== null || this.child.signalCode !== null)) {
|
|
108
|
+
this.leaderReaped = true;
|
|
109
|
+
this.child = undefined;
|
|
110
|
+
}
|
|
111
|
+
if (this.groupKillSucceeded || this.leaderReaped || this.child === undefined)
|
|
112
|
+
return false;
|
|
113
|
+
try {
|
|
114
|
+
process.kill(-this.processGroupId, "SIGKILL");
|
|
115
|
+
this.groupKillSucceeded = true;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
if (errnoCode(error) === "ESRCH")
|
|
119
|
+
return true;
|
|
120
|
+
this.errorCode = boundedErrorToken(error, isReapErrorCode);
|
|
121
|
+
// The native handle targets the direct child even when group signaling fails, so
|
|
122
|
+
// it starts only after the group-only phase. Group retries continue beside it
|
|
123
|
+
// until the leader is observed reaped, after which the id is never signaled.
|
|
124
|
+
if (fallBackToLeader)
|
|
125
|
+
this.child?.kill("SIGKILL");
|
|
126
|
+
}
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function reapRetained() {
|
|
131
|
+
for (const reaper of retained)
|
|
132
|
+
if (reaper.reap())
|
|
133
|
+
retained.delete(reaper);
|
|
134
|
+
if (retained.size === 0) {
|
|
135
|
+
clearInterval(retryTimer);
|
|
136
|
+
retryTimer = undefined;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=probe-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe-cleanup.js","sourceRoot":"","sources":["../../src/runtime/probe-cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/runtime/probe.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/runtime/probe.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAoCD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAoDzF"}
|
package/dist/runtime/probe.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { spawn } from "node:child_process";
|
|
8
8
|
import { completeUtf8Length } from "../core/utf8.js";
|
|
9
|
-
import {
|
|
9
|
+
import { abortProbe } from "./probe-cleanup.js";
|
|
10
10
|
const defaultProbeTimeoutMs = 15_000;
|
|
11
11
|
const maxProbeOutputBytes = 1_000_000;
|
|
12
12
|
let probeTimeoutMs = defaultProbeTimeoutMs;
|
|
@@ -42,6 +42,9 @@ class CappedBuffer {
|
|
|
42
42
|
const bytes = Buffer.concat(this.chunks);
|
|
43
43
|
return bytes.subarray(0, completeUtf8Length(bytes)).toString("utf8");
|
|
44
44
|
}
|
|
45
|
+
release() {
|
|
46
|
+
this.chunks = [];
|
|
47
|
+
}
|
|
45
48
|
}
|
|
46
49
|
export function runProbe(command, args) {
|
|
47
50
|
return new Promise((resolve) => {
|
|
@@ -60,9 +63,20 @@ export function runProbe(command, args) {
|
|
|
60
63
|
return;
|
|
61
64
|
settled = true;
|
|
62
65
|
clearTimeout(timer);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
// The result already owns the decoded text. An unresolved probe's reaper retains the
|
|
67
|
+
// child and its listeners, and through them these captures, so the chunks are dropped
|
|
68
|
+
// here rather than left for the reaper to outlive. The listeners themselves stay: a
|
|
69
|
+
// late `close` still has to find `settled` already true, which is the guard below.
|
|
70
|
+
out.release();
|
|
71
|
+
err.release();
|
|
72
|
+
if (!kill) {
|
|
73
|
+
resolve(result);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
void abortProbe(child).then((cleanup) => resolve({
|
|
77
|
+
...result,
|
|
78
|
+
error: { ...result.error, ...cleanup },
|
|
79
|
+
}));
|
|
66
80
|
};
|
|
67
81
|
const onData = (buffer) => (chunk) => {
|
|
68
82
|
buffer.append(chunk);
|
|
@@ -85,27 +99,6 @@ export function runProbe(command, args) {
|
|
|
85
99
|
timer.unref?.();
|
|
86
100
|
});
|
|
87
101
|
}
|
|
88
|
-
/**
|
|
89
|
-
* Aborts a probe Elwood gave up on. `detached: true` made the shell its own
|
|
90
|
-
* process-group leader, so SIGKILLing the GROUP (not just the shell pid) also
|
|
91
|
-
* reaches grandchildren such as an installer spawned under `claude update` via
|
|
92
|
-
* `zsh -l -i -c`; a survivor would otherwise inherit the stdio pipes, keep them
|
|
93
|
-
* open, and pin the host event loop long after the probe "timed out". The pipes
|
|
94
|
-
* are destroyed here for the same reason: nothing a killed probe still writes is
|
|
95
|
-
* wanted, and an open pipe alone keeps the loop alive.
|
|
96
|
-
*/
|
|
97
|
-
function abortProbe(child) {
|
|
98
|
-
try {
|
|
99
|
-
// A spawn failure settles via `error` on the next tick, before any timer or
|
|
100
|
-
// data can request a kill, so a killed child always has a pid.
|
|
101
|
-
process.kill(-child.pid, "SIGKILL");
|
|
102
|
-
}
|
|
103
|
-
catch (error) {
|
|
104
|
-
rethrowUnlessGroupGone(error);
|
|
105
|
-
}
|
|
106
|
-
child.stdout?.destroy();
|
|
107
|
-
child.stderr?.destroy();
|
|
108
|
-
}
|
|
109
102
|
function mapError(error) {
|
|
110
103
|
return { code: error.code, message: error.message };
|
|
111
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/runtime/probe.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/runtime/probe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared hook-backed initial-readiness marker with a starvation deadline.
|
|
3
|
-
* Implements PRD §5.3, C-API-19, and C-API-28.
|
|
3
|
+
* Implements PRD §5.3/§9.4, C-API-19, and C-API-28.
|
|
4
4
|
*
|
|
5
5
|
* On a COLD start both adapters gate the first queued message on a pre-input
|
|
6
6
|
* readiness hook — Claude's `InstructionsLoaded`, Codex's `SessionStart` — the CLI's
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* placeholder before input is accepted, so releasing the first queued message on it
|
|
10
10
|
* would swallow the message. On RESUME the input loop is live when the composer paints,
|
|
11
11
|
* so `markReadyOnResumeComposer` releases readiness on the first composer marker
|
|
12
|
-
* (verified accepted, not swallowed)
|
|
13
|
-
*
|
|
12
|
+
* (verified accepted, not swallowed), subject to `createReadinessGate`'s composite
|
|
13
|
+
* hold: human/automation gates and their working or partial clearance frames. The hooks differ on resume:
|
|
14
14
|
* Codex does NOT re-fire `SessionStart` (so the composer is the fast signal), while
|
|
15
15
|
* Claude's `InstructionsLoaded` DOES re-fire — so a resumed Claude is a hook/composer
|
|
16
16
|
* race, whichever arrives first (readiness is idempotent). `armDeadline` is the ultimate
|
|
@@ -18,22 +18,23 @@
|
|
|
18
18
|
* queue forever.
|
|
19
19
|
*/
|
|
20
20
|
export type InitialReady = {
|
|
21
|
+
/** Permanently cancel readiness, including frames drained after process exit. */
|
|
21
22
|
readonly cancel: () => void;
|
|
22
23
|
readonly replay: () => void;
|
|
23
24
|
readonly armDeadline: () => void;
|
|
24
25
|
/** Fire readiness now (one-shot) — the pre-input readiness hook path. */
|
|
25
26
|
readonly mark: () => void;
|
|
26
27
|
/**
|
|
27
|
-
* Re-attempt a
|
|
28
|
-
*
|
|
29
|
-
* once the dialog clears, the deferred readiness fires so the queue is never
|
|
30
|
-
* drained INTO the dialog and is never permanently starved BY it (C-API-28).
|
|
28
|
+
* Re-attempt a deferred hook/deadline mark once the composite readiness hold
|
|
29
|
+
* releases: a dialog must clear to a nonblocking idle composer (C-API-28).
|
|
31
30
|
*/
|
|
32
|
-
readonly
|
|
31
|
+
readonly retryWhenReleased: (readinessHeld: boolean) => void;
|
|
33
32
|
};
|
|
34
33
|
/** The rendered-frame facts the resume-composer readiness path inspects. */
|
|
35
34
|
export type ComposerReadyFacts = {
|
|
36
35
|
readonly composer_visible: boolean;
|
|
36
|
+
/** Present on rendered readings; work must not release deferred initial readiness. */
|
|
37
|
+
readonly working_visible?: boolean;
|
|
37
38
|
readonly blocking_prompt_visible: boolean;
|
|
38
39
|
};
|
|
39
40
|
/**
|
|
@@ -41,9 +42,10 @@ export type ComposerReadyFacts = {
|
|
|
41
42
|
* visible AND no blocking dialog is on screen. The dialog's option caret (`›`/`❯`) is
|
|
42
43
|
* byte-identical to the composer marker, so a dialog frame must NOT latch readiness —
|
|
43
44
|
* otherwise a draining queued message's Enter could approve the dialog; readiness waits
|
|
44
|
-
* for the
|
|
45
|
+
* for the composite hold owned by `createReadinessGate` to release on verified idle.
|
|
46
|
+
* Cold start (`resumed: false`) never fires here, so the
|
|
45
47
|
* composer stays an unsafe signal there (C-API-28).
|
|
46
48
|
*/
|
|
47
|
-
export declare function markReadyOnResumeComposer(ready: Pick<InitialReady, "mark">, resumed: boolean, facts: ComposerReadyFacts): void;
|
|
48
|
-
export declare function initialReady(callback: () => void, maxWaitMs?: number,
|
|
49
|
+
export declare function markReadyOnResumeComposer(ready: Pick<InitialReady, "mark">, resumed: boolean, facts: ComposerReadyFacts, readinessHeld?: boolean): void;
|
|
50
|
+
export declare function initialReady(callback: () => void, maxWaitMs?: number, isReadinessHeld?: () => boolean): InitialReady;
|
|
49
51
|
//# sourceMappingURL=initial-ready.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initial-ready.d.ts","sourceRoot":"","sources":["../../../src/runtime/readiness/initial-ready.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B
|
|
1
|
+
{"version":3,"file":"initial-ready.d.ts","sourceRoot":"","sources":["../../../src/runtime/readiness/initial-ready.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,YAAY,GAAG;IACzB,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9D,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,sFAAsF;IACtF,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;CAC3C,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,aAAa,UAAQ,GACpB,IAAI,CAGN;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,IAAI,EACpB,SAAS,SAAS,EAClB,eAAe,GAAE,MAAM,OAAqB,GAC3C,YAAY,CA+Cd"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared hook-backed initial-readiness marker with a starvation deadline.
|
|
3
|
-
* Implements PRD §5.3, C-API-19, and C-API-28.
|
|
3
|
+
* Implements PRD §5.3/§9.4, C-API-19, and C-API-28.
|
|
4
4
|
*
|
|
5
5
|
* On a COLD start both adapters gate the first queued message on a pre-input
|
|
6
6
|
* readiness hook — Claude's `InstructionsLoaded`, Codex's `SessionStart` — the CLI's
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* placeholder before input is accepted, so releasing the first queued message on it
|
|
10
10
|
* would swallow the message. On RESUME the input loop is live when the composer paints,
|
|
11
11
|
* so `markReadyOnResumeComposer` releases readiness on the first composer marker
|
|
12
|
-
* (verified accepted, not swallowed)
|
|
13
|
-
*
|
|
12
|
+
* (verified accepted, not swallowed), subject to `createReadinessGate`'s composite
|
|
13
|
+
* hold: human/automation gates and their working or partial clearance frames. The hooks differ on resume:
|
|
14
14
|
* Codex does NOT re-fire `SessionStart` (so the composer is the fast signal), while
|
|
15
15
|
* Claude's `InstructionsLoaded` DOES re-fire — so a resumed Claude is a hook/composer
|
|
16
16
|
* race, whichever arrives first (readiness is idempotent). `armDeadline` is the ultimate
|
|
@@ -22,29 +22,31 @@
|
|
|
22
22
|
* visible AND no blocking dialog is on screen. The dialog's option caret (`›`/`❯`) is
|
|
23
23
|
* byte-identical to the composer marker, so a dialog frame must NOT latch readiness —
|
|
24
24
|
* otherwise a draining queued message's Enter could approve the dialog; readiness waits
|
|
25
|
-
* for the
|
|
25
|
+
* for the composite hold owned by `createReadinessGate` to release on verified idle.
|
|
26
|
+
* Cold start (`resumed: false`) never fires here, so the
|
|
26
27
|
* composer stays an unsafe signal there (C-API-28).
|
|
27
28
|
*/
|
|
28
|
-
export function markReadyOnResumeComposer(ready, resumed, facts) {
|
|
29
|
-
if (resumed && facts.composer_visible && !facts.blocking_prompt_visible)
|
|
29
|
+
export function markReadyOnResumeComposer(ready, resumed, facts, readinessHeld = false) {
|
|
30
|
+
if (resumed && facts.composer_visible && !facts.blocking_prompt_visible && !readinessHeld)
|
|
30
31
|
ready.mark();
|
|
31
32
|
}
|
|
32
|
-
export function initialReady(callback, maxWaitMs = 10_000,
|
|
33
|
+
export function initialReady(callback, maxWaitMs = 10_000, isReadinessHeld = () => false) {
|
|
33
34
|
let ready = false;
|
|
34
|
-
let
|
|
35
|
+
let cancelled = false;
|
|
36
|
+
let deferredByHold = false;
|
|
35
37
|
let deadline;
|
|
36
38
|
const mark = () => {
|
|
37
|
-
if (ready)
|
|
39
|
+
if (ready || cancelled)
|
|
38
40
|
return;
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
// request and re-fire it from
|
|
41
|
+
// createReadinessGate owns the composite hold: human/automation gates and
|
|
42
|
+
// their working or partial clearance frames, including startup. Remember the
|
|
43
|
+
// request and re-fire it from retryWhenReleased once that hold releases — never
|
|
42
44
|
// latch here, so readiness is neither drained into the dialog nor starved by it.
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
+
if (isReadinessHeld()) {
|
|
46
|
+
deferredByHold = true;
|
|
45
47
|
return;
|
|
46
48
|
}
|
|
47
|
-
|
|
49
|
+
deferredByHold = false;
|
|
48
50
|
// Latch AFTER the callback returns, so if it throws (a throwing status/activity
|
|
49
51
|
// listener) readiness is NOT consumed and a later hook/deadline/frame retries —
|
|
50
52
|
// a failed transition must never permanently starve the queue (C-API-28).
|
|
@@ -53,20 +55,23 @@ export function initialReady(callback, maxWaitMs = 10_000, isBlocked = () => fal
|
|
|
53
55
|
};
|
|
54
56
|
return {
|
|
55
57
|
cancel: () => {
|
|
58
|
+
cancelled = true;
|
|
56
59
|
if (deadline)
|
|
57
60
|
clearTimeout(deadline);
|
|
58
61
|
},
|
|
59
62
|
mark,
|
|
60
|
-
|
|
61
|
-
if (!ready &&
|
|
63
|
+
retryWhenReleased: (readinessHeld) => {
|
|
64
|
+
if (!ready && deferredByHold && !readinessHeld)
|
|
62
65
|
mark();
|
|
63
66
|
},
|
|
64
|
-
replay: () => void (ready && callback()),
|
|
67
|
+
replay: () => void (!cancelled && ready && callback()),
|
|
65
68
|
// Arms on the first frame regardless of hook arrival, so a missing or failed
|
|
66
69
|
// readiness hook cannot starve readiness forever. The deadline's mark is contained
|
|
67
70
|
// (a throwing callback on a timer would otherwise be an uncaught exception); if it
|
|
68
71
|
// fails, `ready` stays false so a later hook or composer frame still retries.
|
|
69
72
|
armDeadline: () => {
|
|
73
|
+
if (cancelled)
|
|
74
|
+
return;
|
|
70
75
|
deadline ??= setTimeout(() => {
|
|
71
76
|
try {
|
|
72
77
|
mark();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initial-ready.js","sourceRoot":"","sources":["../../../src/runtime/readiness/initial-ready.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"initial-ready.js","sourceRoot":"","sources":["../../../src/runtime/readiness/initial-ready.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAwBH;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAiC,EACjC,OAAgB,EAChB,KAAyB,EACzB,aAAa,GAAG,KAAK;IAErB,IAAI,OAAO,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,aAAa;QACvF,KAAK,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,QAAoB,EACpB,SAAS,GAAG,MAAM,EAClB,kBAAiC,GAAG,EAAE,CAAC,KAAK;IAE5C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,QAAmD,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,KAAK,IAAI,SAAS;YAAE,OAAO;QAC/B,0EAA0E;QAC1E,6EAA6E;QAC7E,gFAAgF;QAChF,iFAAiF;QACjF,IAAI,eAAe,EAAE,EAAE,CAAC;YACtB,cAAc,GAAG,IAAI,CAAC;YACtB,OAAO;QACT,CAAC;QACD,cAAc,GAAG,KAAK,CAAC;QACvB,gFAAgF;QAChF,gFAAgF;QAChF,0EAA0E;QAC1E,QAAQ,EAAE,CAAC;QACX,KAAK,GAAG,IAAI,CAAC;IACf,CAAC,CAAC;IACF,OAAO;QACL,MAAM,EAAE,GAAG,EAAE;YACX,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,QAAQ;gBAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QACD,IAAI;QACJ,iBAAiB,EAAE,CAAC,aAAa,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,IAAI,cAAc,IAAI,CAAC,aAAa;gBAAE,IAAI,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;QACtD,6EAA6E;QAC7E,mFAAmF;QACnF,mFAAmF;QACnF,8EAA8E;QAC9E,WAAW,EAAE,GAAG,EAAE;YAChB,IAAI,SAAS;gBAAE,OAAO;YACtB,QAAQ,KAAK,UAAU,CAAC,GAAG,EAAE;gBAC3B,IAAI,CAAC;oBACH,IAAI,EAAE,CAAC;gBACT,CAAC;gBAAC,MAAM,CAAC;oBACP,qEAAqE;gBACvE,CAAC;YACH,CAAC,EAAE,SAAS,CAAC,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/runtime/seams.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Implements PRD §13 testability without changing public behavior.
|
|
4
4
|
*/
|
|
5
5
|
import type { PtyFactory } from "../pty/types.ts";
|
|
6
|
+
import type { ProbeCleanup } from "./probe-cleanup.ts";
|
|
6
7
|
export type CommandResult = {
|
|
7
8
|
readonly status: number | null;
|
|
8
9
|
readonly stdout: string;
|
|
@@ -10,7 +11,7 @@ export type CommandResult = {
|
|
|
10
11
|
readonly error?: {
|
|
11
12
|
readonly code?: string | undefined;
|
|
12
13
|
readonly message: string;
|
|
13
|
-
};
|
|
14
|
+
} & ProbeCleanup;
|
|
14
15
|
};
|
|
15
16
|
/**
|
|
16
17
|
* Runs a subprocess and returns its result. Production is async (`spawn`) so a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seams.d.ts","sourceRoot":"","sources":["../../src/runtime/seams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"seams.d.ts","sourceRoot":"","sources":["../../src/runtime/seams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY,CAAC;CAClG,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,KACpB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAM5C,wBAAgB,iBAAiB,IAAI,UAAU,CAE9C;AAED,wBAAgB,oBAAoB,IAAI,aAAa,CAEpD;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAE/D;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seams.js","sourceRoot":"","sources":["../../src/runtime/seams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"seams.js","sourceRoot":"","sources":["../../src/runtime/seams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAoBjE,IAAI,UAAU,GAAsB,IAAI,CAAC;AACzC,IAAI,aAAa,GAAkB,QAAQ,CAAC;AAC5C,IAAI,QAAQ,GAAW,OAAO,CAAC,QAAQ,CAAC;AAExC,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,IAAI,cAAc,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAmB;IACvD,UAAU,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAqB;IAC5D,aAAa,GAAG,MAAM,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,QAAQ,GAAG,KAAK,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,UAAU,GAAG,IAAI,CAAC;IAClB,aAAa,GAAG,QAAQ,CAAC;IACzB,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC5B,yBAAyB,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Preserve an attention episode until verified idle evidence (PRD §5.3, C-ATTN-02). */
|
|
2
|
+
import type { ScreenFactReading } from "../../core/screen-facts.ts";
|
|
3
|
+
import type { TrustClearance } from "../../core/trust/clearance.ts";
|
|
4
|
+
export declare function createAttentionClearance(isIdleComposer: TrustClearance): (reading: ScreenFactReading, text: string, trustInputBlocking: boolean) => ScreenFactReading;
|
|
5
|
+
//# sourceMappingURL=attention-clearance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attention-clearance.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/attention-clearance.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,cAAc,IAGnE,SAAS,iBAAiB,EAC1B,MAAM,MAAM,EACZ,oBAAoB,OAAO,KAC1B,iBAAiB,CAarB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function createAttentionClearance(isIdleComposer) {
|
|
2
|
+
let held = false;
|
|
3
|
+
return (reading, text, trustInputBlocking) => {
|
|
4
|
+
const { facts } = reading;
|
|
5
|
+
if (facts.blocking_prompt_visible || trustInputBlocking)
|
|
6
|
+
held = true;
|
|
7
|
+
if (!(held && facts.composer_visible))
|
|
8
|
+
return reading;
|
|
9
|
+
if (!(facts.blocking_prompt_visible || facts.working_visible) && isIdleComposer(text)) {
|
|
10
|
+
if (!trustInputBlocking)
|
|
11
|
+
held = false;
|
|
12
|
+
return reading;
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
facts: { ...facts, composer_visible: false },
|
|
16
|
+
matched: reading.matched.filter((rule) => rule.fact !== "composer_visible"),
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=attention-clearance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attention-clearance.js","sourceRoot":"","sources":["../../../src/runtime/session/attention-clearance.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,wBAAwB,CAAC,cAA8B;IACrE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO,CACL,OAA0B,EAC1B,IAAY,EACZ,kBAA2B,EACR,EAAE;QACrB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC1B,IAAI,KAAK,CAAC,uBAAuB,IAAI,kBAAkB;YAAE,IAAI,GAAG,IAAI,CAAC;QACrE,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC;YAAE,OAAO,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,KAAK,CAAC,uBAAuB,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC,kBAAkB;gBAAE,IAAI,GAAG,KAAK,CAAC;YACtC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO;YACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE;YAC5C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB,CAAC;SAC5E,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -16,16 +16,26 @@ import type { PersistedLoopDefinition } from "../../state/loop-store.ts";
|
|
|
16
16
|
import type { SessionRuntime } from "../../state/runtime-paths.ts";
|
|
17
17
|
import type { SessionRecord } from "../../state/store.ts";
|
|
18
18
|
import type { ElwoodTerminal } from "../../terminal/headless.ts";
|
|
19
|
-
import {
|
|
19
|
+
import { QuestionSessionBase } from "./questions.ts";
|
|
20
20
|
import type { SessionStatusEmitter } from "./status-wiring.ts";
|
|
21
21
|
type Timeout = {
|
|
22
22
|
readonly timeoutMs?: number;
|
|
23
23
|
};
|
|
24
|
-
export declare abstract class AgentSessionBase extends
|
|
24
|
+
export declare abstract class AgentSessionBase extends QuestionSessionBase {
|
|
25
25
|
protected abstract readonly picker: ModelPickerSpec;
|
|
26
26
|
private readonly commands;
|
|
27
|
-
private readonly imageBudget;
|
|
28
27
|
protected constructor(agent: ElwoodAgentKind, record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, terminal: ElwoodTerminal, statusEvents: SessionStatusEmitter, terminalReplay: TerminalReplayBuffer, loopDefinitions: readonly PersistedLoopDefinition[]);
|
|
28
|
+
/** Every queued writer also holds on a model dialog that outlived its cleanup (C-API-55). */
|
|
29
|
+
protected isInputBlocked(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Writes that are NOT part of a picker transaction (`/login` recovery) must additionally
|
|
32
|
+
* stand off a model dialog a human opened. It is deliberately not part of
|
|
33
|
+
* `isInputBlocked`: that feeds readiness, and suppressing readiness while any picker is
|
|
34
|
+
* visible would deadlock Elwood's own picker, whose dialog is on screen by design.
|
|
35
|
+
*/
|
|
36
|
+
protected foreignDialogBlocksWrite(): boolean;
|
|
37
|
+
/** Ordinary queued text and attachments cannot drive a model dialog that they did not open. */
|
|
38
|
+
protected queuedInputBlocked(): boolean;
|
|
29
39
|
sendPrompt(prompt: string, options?: SendOptions): Promise<void>;
|
|
30
40
|
sendMessage(message: string, options?: SendOptions): Promise<void>;
|
|
31
41
|
sendGuidance(message: string, options?: SendOptions): Promise<void>;
|
|
@@ -34,10 +44,13 @@ export declare abstract class AgentSessionBase extends SessionLifecycle {
|
|
|
34
44
|
interrupt(options?: Timeout): Promise<void>;
|
|
35
45
|
compact(options?: Timeout): Promise<void>;
|
|
36
46
|
listModels(options?: Timeout): Promise<readonly AgentModelOption[]>;
|
|
37
|
-
setModel(id: string, options?: Timeout): Promise<void>;
|
|
47
|
+
setModel(id: string, options?: Timeout, around?: (flow: () => Promise<void>, signal: AbortSignal) => Promise<void>): Promise<void>;
|
|
38
48
|
createLoop(request: ElwoodLoopRequest): Promise<ElwoodLoopSnapshot>;
|
|
39
49
|
listLoops(): Promise<readonly ElwoodLoopSnapshot[]>;
|
|
40
50
|
cancelLoop(loopId: string): Promise<void>;
|
|
51
|
+
/** A stable completed frame only when the native composer is positively empty (C-API-56). */
|
|
52
|
+
protected emptyComposerFrame(): object | undefined;
|
|
53
|
+
protected composerIsEmpty(text: string): boolean;
|
|
41
54
|
/** Attach `paths` to the composer before the queued text is submitted (C-API-44). */
|
|
42
55
|
protected abstract attachImages(paths: readonly string[], signal: AbortSignal): Promise<void>;
|
|
43
56
|
/** Re-apply a resize that was held during startup (a best-effort restore). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/runtime/session/base.ts"],"names":[],"mappings":"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"}
|