@with-logic/elwood 0.1.3 → 0.2.1
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 +389 -2
- package/CONTRIBUTING.md +29 -18
- package/README.md +34 -7
- package/dist/bridge/parse.d.ts.map +1 -1
- package/dist/bridge/parse.js +2 -1
- package/dist/bridge/parse.js.map +1 -1
- package/dist/bridge/server.d.ts.map +1 -1
- package/dist/bridge/server.js +6 -2
- package/dist/bridge/server.js.map +1 -1
- package/dist/claude/attach-images.d.ts +3 -1
- package/dist/claude/attach-images.d.ts.map +1 -1
- package/dist/claude/attach-images.js +11 -10
- package/dist/claude/attach-images.js.map +1 -1
- package/dist/claude/composer/empty-input.d.ts +4 -0
- package/dist/claude/composer/empty-input.d.ts.map +1 -0
- package/dist/claude/composer/empty-input.js +28 -0
- package/dist/claude/composer/empty-input.js.map +1 -0
- package/dist/claude/composer/footer.d.ts +3 -0
- package/dist/claude/composer/footer.d.ts.map +1 -0
- package/dist/claude/composer/footer.js +3 -0
- package/dist/claude/composer/footer.js.map +1 -0
- package/dist/claude/composer/staged-input.d.ts +7 -0
- package/dist/claude/composer/staged-input.d.ts.map +1 -0
- package/dist/claude/composer/staged-input.js +18 -0
- package/dist/claude/composer/staged-input.js.map +1 -0
- package/dist/claude/hooks/common-result.d.ts +5 -0
- package/dist/claude/hooks/common-result.d.ts.map +1 -0
- package/dist/claude/hooks/common-result.js +3 -0
- package/dist/claude/hooks/common-result.js.map +1 -0
- package/dist/claude/hooks/dispatch.d.ts +2 -1
- package/dist/claude/hooks/dispatch.d.ts.map +1 -1
- package/dist/claude/hooks/dispatch.js +3 -1
- package/dist/claude/hooks/dispatch.js.map +1 -1
- package/dist/claude/hooks/events-extra.d.ts +5 -4
- package/dist/claude/hooks/events-extra.d.ts.map +1 -1
- package/dist/claude/hooks/index.d.ts +10 -10
- package/dist/claude/hooks/index.d.ts.map +1 -1
- package/dist/claude/hooks/index.js +1 -4
- package/dist/claude/hooks/index.js.map +1 -1
- package/dist/claude/hooks/inputs/control.d.ts +25 -0
- package/dist/claude/hooks/inputs/control.d.ts.map +1 -0
- package/dist/claude/hooks/inputs/control.js +3 -0
- package/dist/claude/hooks/inputs/control.js.map +1 -0
- package/dist/claude/hooks/stop-failure.d.ts +10 -0
- package/dist/claude/hooks/stop-failure.d.ts.map +1 -0
- package/dist/claude/hooks/stop-failure.js +18 -0
- package/dist/claude/hooks/stop-failure.js.map +1 -0
- package/dist/claude/hooks/tool-types.d.ts +12 -10
- package/dist/claude/hooks/tool-types.d.ts.map +1 -1
- package/dist/claude/login/notice.d.ts +3 -0
- package/dist/claude/login/notice.d.ts.map +1 -0
- package/dist/claude/login/notice.js +3 -0
- package/dist/claude/login/notice.js.map +1 -0
- package/dist/claude/login/renewal.d.ts +13 -0
- package/dist/claude/login/renewal.d.ts.map +1 -0
- package/dist/claude/login/renewal.js +97 -0
- package/dist/claude/login/renewal.js.map +1 -0
- package/dist/claude/model-composer.d.ts +2 -0
- package/dist/claude/model-composer.d.ts.map +1 -0
- package/dist/claude/model-composer.js +12 -0
- package/dist/claude/model-composer.js.map +1 -0
- package/dist/claude/model-picker.d.ts.map +1 -1
- package/dist/claude/model-picker.js +42 -8
- package/dist/claude/model-picker.js.map +1 -1
- package/dist/claude/model-switch-confirmation.d.ts +6 -0
- package/dist/claude/model-switch-confirmation.d.ts.map +1 -1
- package/dist/claude/model-switch-confirmation.js +77 -4
- package/dist/claude/model-switch-confirmation.js.map +1 -1
- package/dist/claude/preflight.d.ts.map +1 -1
- package/dist/claude/preflight.js +2 -4
- package/dist/claude/preflight.js.map +1 -1
- package/dist/claude/questions/answer.d.ts +9 -0
- package/dist/claude/questions/answer.d.ts.map +1 -0
- package/dist/claude/questions/answer.js +84 -0
- package/dist/claude/questions/answer.js.map +1 -0
- package/dist/claude/questions/bind-answers.d.ts +14 -0
- package/dist/claude/questions/bind-answers.d.ts.map +1 -0
- package/dist/claude/questions/bind-answers.js +36 -0
- package/dist/claude/questions/bind-answers.js.map +1 -0
- package/dist/claude/questions/candidate.d.ts +23 -0
- package/dist/claude/questions/candidate.d.ts.map +1 -0
- package/dist/claude/questions/candidate.js +47 -0
- package/dist/claude/questions/candidate.js.map +1 -0
- package/dist/claude/questions/correlation.d.ts +15 -0
- package/dist/claude/questions/correlation.d.ts.map +1 -0
- package/dist/claude/questions/correlation.js +23 -0
- package/dist/claude/questions/correlation.js.map +1 -0
- package/dist/claude/questions/hook-decisions.d.ts +19 -0
- package/dist/claude/questions/hook-decisions.d.ts.map +1 -0
- package/dist/claude/questions/hook-decisions.js +52 -0
- package/dist/claude/questions/hook-decisions.js.map +1 -0
- package/dist/claude/questions/index.d.ts +27 -0
- package/dist/claude/questions/index.d.ts.map +1 -0
- package/dist/claude/questions/index.js +161 -0
- package/dist/claude/questions/index.js.map +1 -0
- package/dist/claude/questions/navigation.d.ts +24 -0
- package/dist/claude/questions/navigation.d.ts.map +1 -0
- package/dist/claude/questions/navigation.js +37 -0
- package/dist/claude/questions/navigation.js.map +1 -0
- package/dist/claude/questions/rows.d.ts +19 -0
- package/dist/claude/questions/rows.d.ts.map +1 -0
- package/dist/claude/questions/rows.js +64 -0
- package/dist/claude/questions/rows.js.map +1 -0
- package/dist/claude/questions/screen.d.ts +29 -0
- package/dist/claude/questions/screen.d.ts.map +1 -0
- package/dist/claude/questions/screen.js +103 -0
- package/dist/claude/questions/screen.js.map +1 -0
- package/dist/claude/screen-table.d.ts +19 -2
- package/dist/claude/screen-table.d.ts.map +1 -1
- package/dist/claude/screen-table.js +48 -4
- package/dist/claude/screen-table.js.map +1 -1
- package/dist/claude/serialize.d.ts.map +1 -1
- package/dist/claude/serialize.js +22 -6
- package/dist/claude/serialize.js.map +1 -1
- package/dist/claude/session/build.d.ts +1 -12
- package/dist/claude/session/build.d.ts.map +1 -1
- package/dist/claude/session/build.js +42 -55
- package/dist/claude/session/build.js.map +1 -1
- package/dist/claude/session/hook-handler.d.ts +3 -2
- package/dist/claude/session/hook-handler.d.ts.map +1 -1
- package/dist/claude/session/hook-handler.js +44 -18
- package/dist/claude/session/hook-handler.js.map +1 -1
- package/dist/claude/session/index.d.ts +2 -1
- package/dist/claude/session/index.d.ts.map +1 -1
- package/dist/claude/session/index.js +23 -8
- package/dist/claude/session/index.js.map +1 -1
- package/dist/claude/session/instance.d.ts +17 -5
- package/dist/claude/session/instance.d.ts.map +1 -1
- package/dist/claude/session/instance.js +25 -12
- package/dist/claude/session/instance.js.map +1 -1
- package/dist/claude/session/interface.d.ts +2 -1
- package/dist/claude/session/interface.d.ts.map +1 -1
- package/dist/claude/session/questions.d.ts +9 -0
- package/dist/claude/session/questions.d.ts.map +1 -0
- package/dist/claude/session/questions.js +19 -0
- package/dist/claude/session/questions.js.map +1 -0
- package/dist/claude/session/resume.d.ts.map +1 -1
- package/dist/claude/session/resume.js +35 -26
- package/dist/claude/session/resume.js.map +1 -1
- package/dist/claude/session/runtime.d.ts +10 -0
- package/dist/claude/session/runtime.d.ts.map +1 -1
- package/dist/claude/session/runtime.js +8 -5
- package/dist/claude/session/runtime.js.map +1 -1
- package/dist/claude/session/startup-warnings.d.ts +5 -0
- package/dist/claude/session/startup-warnings.d.ts.map +1 -0
- package/dist/claude/session/startup-warnings.js +7 -0
- package/dist/claude/session/startup-warnings.js.map +1 -0
- package/dist/claude/session/transcript.d.ts +2 -0
- package/dist/claude/session/transcript.d.ts.map +1 -1
- package/dist/claude/session/transcript.js +21 -3
- package/dist/claude/session/transcript.js.map +1 -1
- package/dist/claude/startup-prompts.d.ts +35 -3
- package/dist/claude/startup-prompts.d.ts.map +1 -1
- package/dist/claude/startup-prompts.js +81 -15
- package/dist/claude/startup-prompts.js.map +1 -1
- package/dist/claude/transcript/index.d.ts.map +1 -1
- package/dist/claude/transcript/index.js +3 -2
- package/dist/claude/transcript/index.js.map +1 -1
- package/dist/claude/validate/event-fields.d.ts +6 -0
- package/dist/claude/validate/event-fields.d.ts.map +1 -0
- package/dist/claude/validate/event-fields.js +103 -0
- package/dist/claude/validate/event-fields.js.map +1 -0
- package/dist/claude/validate/input.d.ts.map +1 -1
- package/dist/claude/validate/input.js +12 -41
- package/dist/claude/validate/input.js.map +1 -1
- package/dist/claude/validate/shapes.d.ts +1 -1
- package/dist/claude/validate/shapes.d.ts.map +1 -1
- package/dist/claude/validate/shapes.js +1 -1
- package/dist/claude/validate/shapes.js.map +1 -1
- package/dist/claude/validate/tool-shapes.d.ts +102 -0
- package/dist/claude/validate/tool-shapes.d.ts.map +1 -0
- package/dist/claude/validate/tool-shapes.js +83 -0
- package/dist/claude/validate/tool-shapes.js.map +1 -0
- package/dist/claude/validate/tool-update.d.ts +2 -11
- package/dist/claude/validate/tool-update.d.ts.map +1 -1
- package/dist/claude/validate/tool-update.js +11 -112
- package/dist/claude/validate/tool-update.js.map +1 -1
- package/dist/claude/validate/tool-values.d.ts +7 -0
- package/dist/claude/validate/tool-values.d.ts.map +1 -0
- package/dist/claude/validate/tool-values.js +30 -0
- package/dist/claude/validate/tool-values.js.map +1 -0
- package/dist/cli/args/options.d.ts.map +1 -1
- package/dist/cli/args/options.js +1 -0
- package/dist/cli/args/options.js.map +1 -1
- package/dist/cli/args-commands.d.ts.map +1 -1
- package/dist/cli/args-commands.js +3 -0
- package/dist/cli/args-commands.js.map +1 -1
- package/dist/cli/config/store.d.ts.map +1 -1
- package/dist/cli/config/store.js +2 -1
- package/dist/cli/config/store.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +2 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/effort.d.ts +5 -0
- package/dist/cli/interactive/effort.d.ts.map +1 -0
- package/dist/cli/interactive/effort.js +13 -0
- package/dist/cli/interactive/effort.js.map +1 -0
- package/dist/cli/interactive/launch.d.ts.map +1 -1
- package/dist/cli/interactive/launch.js +1 -1
- package/dist/cli/interactive/launch.js.map +1 -1
- package/dist/cli/lifecycle/index.d.ts +3 -6
- package/dist/cli/lifecycle/index.d.ts.map +1 -1
- package/dist/cli/lifecycle/index.js +6 -13
- package/dist/cli/lifecycle/index.js.map +1 -1
- package/dist/cli/models/settings.d.ts +2 -0
- package/dist/cli/models/settings.d.ts.map +1 -1
- package/dist/cli/request/index.d.ts.map +1 -1
- package/dist/cli/request/index.js +1 -0
- package/dist/cli/request/index.js.map +1 -1
- package/dist/cli/run/index.d.ts.map +1 -1
- package/dist/cli/run/index.js +3 -1
- package/dist/cli/run/index.js.map +1 -1
- package/dist/cli/run/output.d.ts.map +1 -1
- package/dist/cli/run/output.js +1 -0
- package/dist/cli/run/output.js.map +1 -1
- package/dist/cli/run/subscribe.js +1 -1
- package/dist/cli/run/subscribe.js.map +1 -1
- package/dist/cli/session/index.d.ts +2 -0
- package/dist/cli/session/index.d.ts.map +1 -1
- package/dist/cli/session/index.js +3 -0
- package/dist/cli/session/index.js.map +1 -1
- package/dist/cli/session/launch.d.ts +0 -3
- package/dist/cli/session/launch.d.ts.map +1 -1
- package/dist/cli/session/launch.js +0 -11
- package/dist/cli/session/launch.js.map +1 -1
- package/dist/cli/sessions/list.d.ts.map +1 -1
- package/dist/cli/sessions/list.js +5 -4
- package/dist/cli/sessions/list.js.map +1 -1
- package/dist/cli/types.d.ts +2 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/update-attention.d.ts +2 -1
- package/dist/cli/update-attention.d.ts.map +1 -1
- package/dist/cli/update-attention.js +11 -2
- package/dist/cli/update-attention.js.map +1 -1
- package/dist/codex/accepted-turn.d.ts +4 -0
- package/dist/codex/accepted-turn.d.ts.map +1 -0
- package/dist/codex/accepted-turn.js +17 -0
- package/dist/codex/accepted-turn.js.map +1 -0
- package/dist/codex/config/transaction.d.ts +22 -0
- package/dist/codex/config/transaction.d.ts.map +1 -1
- package/dist/codex/config/transaction.js +61 -31
- package/dist/codex/config/transaction.js.map +1 -1
- package/dist/codex/hooks/index.d.ts +6 -1
- package/dist/codex/hooks/index.d.ts.map +1 -1
- package/dist/codex/hooks/validate-result.d.ts.map +1 -1
- package/dist/codex/hooks/validate-result.js +2 -1
- package/dist/codex/hooks/validate-result.js.map +1 -1
- package/dist/codex/hooks/validate.d.ts.map +1 -1
- package/dist/codex/hooks/validate.js +1 -3
- package/dist/codex/hooks/validate.js.map +1 -1
- package/dist/codex/hooks/values.d.ts +3 -0
- package/dist/codex/hooks/values.d.ts.map +1 -0
- package/dist/codex/hooks/values.js +5 -0
- package/dist/codex/hooks/values.js.map +1 -0
- package/dist/codex/images/attach.d.ts +3 -1
- package/dist/codex/images/attach.d.ts.map +1 -1
- package/dist/codex/images/attach.js +10 -11
- package/dist/codex/images/attach.js.map +1 -1
- package/dist/codex/images/clipboard.d.ts.map +1 -1
- package/dist/codex/images/clipboard.js +11 -3
- package/dist/codex/images/clipboard.js.map +1 -1
- package/dist/codex/model-picker.d.ts.map +1 -1
- package/dist/codex/model-picker.js +23 -5
- package/dist/codex/model-picker.js.map +1 -1
- package/dist/codex/preflight.d.ts.map +1 -1
- package/dist/codex/preflight.js +2 -2
- package/dist/codex/preflight.js.map +1 -1
- package/dist/codex/questions/acceptance.d.ts +18 -0
- package/dist/codex/questions/acceptance.d.ts.map +1 -0
- package/dist/codex/questions/acceptance.js +70 -0
- package/dist/codex/questions/acceptance.js.map +1 -0
- package/dist/codex/questions/adapter.d.ts +26 -0
- package/dist/codex/questions/adapter.d.ts.map +1 -0
- package/dist/codex/questions/adapter.js +163 -0
- package/dist/codex/questions/adapter.js.map +1 -0
- package/dist/codex/questions/candidate-acceptance.d.ts +5 -0
- package/dist/codex/questions/candidate-acceptance.d.ts.map +1 -0
- package/dist/codex/questions/candidate-acceptance.js +8 -0
- package/dist/codex/questions/candidate-acceptance.js.map +1 -0
- package/dist/codex/questions/candidate-authority.d.ts +10 -0
- package/dist/codex/questions/candidate-authority.d.ts.map +1 -0
- package/dist/codex/questions/candidate-authority.js +25 -0
- package/dist/codex/questions/candidate-authority.js.map +1 -0
- package/dist/codex/questions/candidate-disable.d.ts +5 -0
- package/dist/codex/questions/candidate-disable.d.ts.map +1 -0
- package/dist/codex/questions/candidate-disable.js +14 -0
- package/dist/codex/questions/candidate-disable.js.map +1 -0
- package/dist/codex/questions/candidate-publication.d.ts +7 -0
- package/dist/codex/questions/candidate-publication.d.ts.map +1 -0
- package/dist/codex/questions/candidate-publication.js +8 -0
- package/dist/codex/questions/candidate-publication.js.map +1 -0
- package/dist/codex/questions/candidate-reservation.d.ts +6 -0
- package/dist/codex/questions/candidate-reservation.d.ts.map +1 -0
- package/dist/codex/questions/candidate-reservation.js +7 -0
- package/dist/codex/questions/candidate-reservation.js.map +1 -0
- package/dist/codex/questions/candidate-store.d.ts +53 -0
- package/dist/codex/questions/candidate-store.d.ts.map +1 -0
- package/dist/codex/questions/candidate-store.js +188 -0
- package/dist/codex/questions/candidate-store.js.map +1 -0
- package/dist/codex/questions/candidate.d.ts +40 -0
- package/dist/codex/questions/candidate.d.ts.map +1 -0
- package/dist/codex/questions/candidate.js +39 -0
- package/dist/codex/questions/candidate.js.map +1 -0
- package/dist/codex/questions/candidates.d.ts +16 -0
- package/dist/codex/questions/candidates.d.ts.map +1 -0
- package/dist/codex/questions/candidates.js +113 -0
- package/dist/codex/questions/candidates.js.map +1 -0
- package/dist/codex/questions/chrome.d.ts +10 -0
- package/dist/codex/questions/chrome.d.ts.map +1 -0
- package/dist/codex/questions/chrome.js +21 -0
- package/dist/codex/questions/chrome.js.map +1 -0
- package/dist/codex/questions/definitions.d.ts +19 -0
- package/dist/codex/questions/definitions.d.ts.map +1 -0
- package/dist/codex/questions/definitions.js +86 -0
- package/dist/codex/questions/definitions.js.map +1 -0
- package/dist/codex/questions/draft.d.ts +25 -0
- package/dist/codex/questions/draft.d.ts.map +1 -0
- package/dist/codex/questions/draft.js +76 -0
- package/dist/codex/questions/draft.js.map +1 -0
- package/dist/codex/questions/driver-support.d.ts +6 -0
- package/dist/codex/questions/driver-support.d.ts.map +1 -0
- package/dist/codex/questions/driver-support.js +7 -0
- package/dist/codex/questions/driver-support.js.map +1 -0
- package/dist/codex/questions/driver.d.ts +10 -0
- package/dist/codex/questions/driver.d.ts.map +1 -0
- package/dist/codex/questions/driver.js +139 -0
- package/dist/codex/questions/driver.js.map +1 -0
- package/dist/codex/questions/frame.d.ts +36 -0
- package/dist/codex/questions/frame.d.ts.map +1 -0
- package/dist/codex/questions/frame.js +138 -0
- package/dist/codex/questions/frame.js.map +1 -0
- package/dist/codex/questions/labels.d.ts +6 -0
- package/dist/codex/questions/labels.d.ts.map +1 -0
- package/dist/codex/questions/labels.js +6 -0
- package/dist/codex/questions/labels.js.map +1 -0
- package/dist/codex/questions/limits.d.ts +18 -0
- package/dist/codex/questions/limits.d.ts.map +1 -0
- package/dist/codex/questions/limits.js +61 -0
- package/dist/codex/questions/limits.js.map +1 -0
- package/dist/codex/questions/native-pending.d.ts +7 -0
- package/dist/codex/questions/native-pending.d.ts.map +1 -0
- package/dist/codex/questions/native-pending.js +37 -0
- package/dist/codex/questions/native-pending.js.map +1 -0
- package/dist/codex/questions/owned-editor.d.ts +12 -0
- package/dist/codex/questions/owned-editor.d.ts.map +1 -0
- package/dist/codex/questions/owned-editor.js +37 -0
- package/dist/codex/questions/owned-editor.js.map +1 -0
- package/dist/codex/questions/pending-submissions.d.ts +12 -0
- package/dist/codex/questions/pending-submissions.d.ts.map +1 -0
- package/dist/codex/questions/pending-submissions.js +42 -0
- package/dist/codex/questions/pending-submissions.js.map +1 -0
- package/dist/codex/questions/records.d.ts +29 -0
- package/dist/codex/questions/records.d.ts.map +1 -0
- package/dist/codex/questions/records.js +113 -0
- package/dist/codex/questions/records.js.map +1 -0
- package/dist/codex/questions/selection.d.ts +3 -0
- package/dist/codex/questions/selection.d.ts.map +1 -0
- package/dist/codex/questions/selection.js +18 -0
- package/dist/codex/questions/selection.js.map +1 -0
- package/dist/codex/questions/session.d.ts +6 -0
- package/dist/codex/questions/session.d.ts.map +1 -0
- package/dist/codex/questions/session.js +21 -0
- package/dist/codex/questions/session.js.map +1 -0
- package/dist/codex/screen/clearance.d.ts +17 -0
- package/dist/codex/screen/clearance.d.ts.map +1 -0
- package/dist/codex/screen/clearance.js +170 -0
- package/dist/codex/screen/clearance.js.map +1 -0
- package/dist/codex/screen/empty-input.d.ts +4 -0
- package/dist/codex/screen/empty-input.d.ts.map +1 -0
- package/dist/codex/screen/empty-input.js +10 -0
- package/dist/codex/screen/empty-input.js.map +1 -0
- package/dist/codex/screen/live-clearance.d.ts +6 -0
- package/dist/codex/screen/live-clearance.d.ts.map +1 -0
- package/dist/codex/screen/live-clearance.js +34 -0
- package/dist/codex/screen/live-clearance.js.map +1 -0
- package/dist/codex/screen/retained-clearance.d.ts +19 -0
- package/dist/codex/screen/retained-clearance.d.ts.map +1 -0
- package/dist/codex/screen/retained-clearance.js +67 -0
- package/dist/codex/screen/retained-clearance.js.map +1 -0
- package/dist/codex/screen/staged-input.d.ts +7 -0
- package/dist/codex/screen/staged-input.d.ts.map +1 -0
- package/dist/codex/screen/staged-input.js +40 -0
- package/dist/codex/screen/staged-input.js.map +1 -0
- package/dist/codex/screen/working.d.ts +4 -0
- package/dist/codex/screen/working.d.ts.map +1 -0
- package/dist/codex/screen/working.js +5 -0
- package/dist/codex/screen/working.js.map +1 -0
- package/dist/codex/screen-table.d.ts +4 -1
- package/dist/codex/screen-table.d.ts.map +1 -1
- package/dist/codex/screen-table.js +44 -11
- package/dist/codex/screen-table.js.map +1 -1
- package/dist/codex/session/build.d.ts +1 -0
- package/dist/codex/session/build.d.ts.map +1 -1
- package/dist/codex/session/build.js +62 -68
- package/dist/codex/session/build.js.map +1 -1
- package/dist/codex/session/caller-input.d.ts +18 -0
- package/dist/codex/session/caller-input.d.ts.map +1 -0
- package/dist/codex/session/caller-input.js +50 -0
- package/dist/codex/session/caller-input.js.map +1 -0
- package/dist/codex/session/cleanup.d.ts +2 -1
- package/dist/codex/session/cleanup.d.ts.map +1 -1
- package/dist/codex/session/cleanup.js +3 -2
- package/dist/codex/session/cleanup.js.map +1 -1
- package/dist/codex/session/cli-exit.d.ts +24 -0
- package/dist/codex/session/cli-exit.d.ts.map +1 -0
- package/dist/codex/session/cli-exit.js +43 -0
- package/dist/codex/session/cli-exit.js.map +1 -0
- package/dist/codex/session/hooks.d.ts +3 -0
- package/dist/codex/session/hooks.d.ts.map +1 -1
- package/dist/codex/session/hooks.js +66 -13
- package/dist/codex/session/hooks.js.map +1 -1
- package/dist/codex/session/index.d.ts +2 -1
- package/dist/codex/session/index.d.ts.map +1 -1
- package/dist/codex/session/index.js +23 -8
- package/dist/codex/session/index.js.map +1 -1
- package/dist/codex/session/initial-ready.d.ts +6 -0
- package/dist/codex/session/initial-ready.d.ts.map +1 -0
- package/dist/codex/session/initial-ready.js +9 -0
- package/dist/codex/session/initial-ready.js.map +1 -0
- package/dist/codex/session/instance.d.ts +19 -4
- package/dist/codex/session/instance.d.ts.map +1 -1
- package/dist/codex/session/instance.js +60 -30
- package/dist/codex/session/instance.js.map +1 -1
- package/dist/codex/session/resume.d.ts.map +1 -1
- package/dist/codex/session/resume.js +35 -26
- package/dist/codex/session/resume.js.map +1 -1
- package/dist/codex/session/runtime.d.ts.map +1 -1
- package/dist/codex/session/runtime.js +1 -2
- package/dist/codex/session/runtime.js.map +1 -1
- package/dist/codex/session/startup-warnings.d.ts +11 -0
- package/dist/codex/session/startup-warnings.d.ts.map +1 -0
- package/dist/codex/session/startup-warnings.js +9 -0
- package/dist/codex/session/startup-warnings.js.map +1 -0
- package/dist/codex/session/transcript.d.ts +3 -1
- package/dist/codex/session/transcript.d.ts.map +1 -1
- package/dist/codex/session/transcript.js +51 -8
- package/dist/codex/session/transcript.js.map +1 -1
- package/dist/codex/session/types.d.ts +4 -3
- package/dist/codex/session/types.d.ts.map +1 -1
- package/dist/codex/session/update-attention.d.ts +4 -0
- package/dist/codex/session/update-attention.d.ts.map +1 -0
- package/dist/codex/session/update-attention.js +18 -0
- package/dist/codex/session/update-attention.js.map +1 -0
- package/dist/codex/session/warnings.d.ts +2 -1
- package/dist/codex/session/warnings.d.ts.map +1 -1
- package/dist/codex/session/warnings.js +2 -1
- package/dist/codex/session/warnings.js.map +1 -1
- package/dist/codex/simple.d.ts +1 -0
- package/dist/codex/simple.d.ts.map +1 -1
- package/dist/codex/simple.js +2 -0
- package/dist/codex/simple.js.map +1 -1
- package/dist/codex/startup-prompts.d.ts +29 -14
- package/dist/codex/startup-prompts.d.ts.map +1 -1
- package/dist/codex/startup-prompts.js +113 -93
- package/dist/codex/startup-prompts.js.map +1 -1
- package/dist/codex/startup-warnings.d.ts +10 -0
- package/dist/codex/startup-warnings.d.ts.map +1 -0
- package/dist/codex/startup-warnings.js +65 -0
- package/dist/codex/startup-warnings.js.map +1 -0
- package/dist/codex/transcript/summary.d.ts +1 -1
- package/dist/codex/transcript/summary.d.ts.map +1 -1
- package/dist/codex/transcript/summary.js +18 -7
- package/dist/codex/transcript/summary.js.map +1 -1
- package/dist/codex/transcript/types.d.ts +23 -12
- package/dist/codex/transcript/types.d.ts.map +1 -1
- package/dist/codex/transcript/watcher.d.ts.map +1 -1
- package/dist/codex/transcript/watcher.js +2 -1
- package/dist/codex/transcript/watcher.js.map +1 -1
- package/dist/codex/update/classification.d.ts +27 -0
- package/dist/codex/update/classification.d.ts.map +1 -0
- package/dist/codex/update/classification.js +28 -0
- package/dist/codex/update/classification.js.map +1 -0
- package/dist/codex/update/evidence.d.ts +22 -0
- package/dist/codex/update/evidence.d.ts.map +1 -0
- package/dist/codex/update/evidence.js +69 -0
- package/dist/codex/update/evidence.js.map +1 -0
- package/dist/codex/update/layout.d.ts +7 -0
- package/dist/codex/update/layout.d.ts.map +1 -0
- package/dist/codex/update/layout.js +65 -0
- package/dist/codex/update/layout.js.map +1 -0
- package/dist/codex/update/recognition.d.ts +3 -0
- package/dist/codex/update/recognition.d.ts.map +1 -0
- package/dist/codex/update/recognition.js +7 -0
- package/dist/codex/update/recognition.js.map +1 -0
- package/dist/codex/update/selection.d.ts +7 -0
- package/dist/codex/update/selection.d.ts.map +1 -0
- package/dist/codex/update/selection.js +10 -0
- package/dist/codex/update/selection.js.map +1 -0
- package/dist/codex/update/skip-attempt.d.ts +25 -0
- package/dist/codex/update/skip-attempt.d.ts.map +1 -0
- package/dist/codex/update/skip-attempt.js +64 -0
- package/dist/codex/update/skip-attempt.js.map +1 -0
- package/dist/codex/update/tracker.d.ts +37 -0
- package/dist/codex/update/tracker.d.ts.map +1 -0
- package/dist/codex/update/tracker.js +156 -0
- package/dist/codex/update/tracker.js.map +1 -0
- package/dist/codex/update-identity.d.ts +23 -0
- package/dist/codex/update-identity.d.ts.map +1 -0
- package/dist/codex/update-identity.js +46 -0
- package/dist/codex/update-identity.js.map +1 -0
- package/dist/codex/update-prompt.d.ts +26 -17
- package/dist/codex/update-prompt.d.ts.map +1 -1
- package/dist/codex/update-prompt.js +65 -62
- package/dist/codex/update-prompt.js.map +1 -1
- package/dist/core/activity/index.d.ts +24 -3
- package/dist/core/activity/index.d.ts.map +1 -1
- package/dist/core/activity/index.js.map +1 -1
- package/dist/core/activity/meta.d.ts +6 -1
- package/dist/core/activity/meta.d.ts.map +1 -1
- package/dist/core/activity/meta.js.map +1 -1
- package/dist/core/activity/transcript.d.ts +4 -1
- package/dist/core/activity/transcript.d.ts.map +1 -1
- package/dist/core/activity/transcript.js +28 -18
- package/dist/core/activity/transcript.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/async-mutex.d.ts +14 -8
- package/dist/core/async-mutex.d.ts.map +1 -1
- package/dist/core/async-mutex.js +48 -12
- package/dist/core/async-mutex.js.map +1 -1
- package/dist/core/attention.d.ts +6 -2
- package/dist/core/attention.d.ts.map +1 -1
- package/dist/core/attention.js +23 -9
- package/dist/core/attention.js.map +1 -1
- package/dist/core/control-queue/admission-scan.d.ts +10 -0
- package/dist/core/control-queue/admission-scan.d.ts.map +1 -0
- package/dist/core/control-queue/admission-scan.js +28 -0
- package/dist/core/control-queue/admission-scan.js.map +1 -0
- package/dist/core/control-queue/admission.d.ts +15 -0
- package/dist/core/control-queue/admission.d.ts.map +1 -0
- package/dist/core/control-queue/admission.js +70 -0
- package/dist/core/control-queue/admission.js.map +1 -0
- package/dist/core/control-queue/budget.d.ts +15 -0
- package/dist/core/control-queue/budget.d.ts.map +1 -0
- package/dist/core/control-queue/budget.js +33 -0
- package/dist/core/control-queue/budget.js.map +1 -0
- package/dist/core/control-queue/index.d.ts +6 -3
- package/dist/core/control-queue/index.d.ts.map +1 -1
- package/dist/core/control-queue/index.js +52 -28
- package/dist/core/control-queue/index.js.map +1 -1
- package/dist/core/control-queue/scan.d.ts +10 -0
- package/dist/core/control-queue/scan.d.ts.map +1 -0
- package/dist/core/control-queue/scan.js +24 -0
- package/dist/core/control-queue/scan.js.map +1 -0
- package/dist/core/control-queue/state.d.ts +19 -3
- package/dist/core/control-queue/state.d.ts.map +1 -1
- package/dist/core/control-queue/state.js +87 -15
- package/dist/core/control-queue/state.js.map +1 -1
- package/dist/core/control-queue/submission.d.ts +8 -0
- package/dist/core/control-queue/submission.d.ts.map +1 -0
- package/dist/core/control-queue/submission.js +41 -0
- package/dist/core/control-queue/submission.js.map +1 -0
- package/dist/core/control-queue/traits.d.ts +6 -9
- package/dist/core/control-queue/traits.d.ts.map +1 -1
- package/dist/core/control-queue/traits.js +2 -15
- package/dist/core/control-queue/traits.js.map +1 -1
- package/dist/core/control-queue/types.d.ts +28 -2
- package/dist/core/control-queue/types.d.ts.map +1 -1
- package/dist/core/errors.d.ts +7 -2
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +7 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/freeze-hook-event.d.ts +6 -0
- package/dist/core/freeze-hook-event.d.ts.map +1 -0
- package/dist/core/freeze-hook-event.js +16 -0
- package/dist/core/freeze-hook-event.js.map +1 -0
- package/dist/core/hook-dispatch.d.ts +3 -2
- package/dist/core/hook-dispatch.d.ts.map +1 -1
- package/dist/core/hook-dispatch.js +14 -6
- package/dist/core/hook-dispatch.js.map +1 -1
- package/dist/core/hook-observation.d.ts +24 -0
- package/dist/core/hook-observation.d.ts.map +1 -0
- package/dist/core/hook-observation.js +68 -0
- package/dist/core/hook-observation.js.map +1 -0
- package/dist/core/hook-result.d.ts +12 -2
- package/dist/core/hook-result.d.ts.map +1 -1
- package/dist/core/hook-result.js +10 -9
- package/dist/core/hook-result.js.map +1 -1
- package/dist/core/hook-timeout.d.ts.map +1 -1
- package/dist/core/hook-timeout.js +3 -2
- package/dist/core/hook-timeout.js.map +1 -1
- package/dist/core/images/capture.d.ts +14 -0
- package/dist/core/images/capture.d.ts.map +1 -0
- package/dist/core/images/capture.js +35 -0
- package/dist/core/images/capture.js.map +1 -0
- package/dist/core/images/chip-wait.d.ts +14 -16
- package/dist/core/images/chip-wait.d.ts.map +1 -1
- package/dist/core/images/chip-wait.js +31 -34
- package/dist/core/images/chip-wait.js.map +1 -1
- package/dist/core/images/queued-budget.d.ts +18 -0
- package/dist/core/images/queued-budget.d.ts.map +1 -0
- package/dist/core/images/queued-budget.js +41 -0
- package/dist/core/images/queued-budget.js.map +1 -0
- package/dist/core/inert-record.d.ts +3 -0
- package/dist/core/inert-record.d.ts.map +1 -0
- package/dist/core/inert-record.js +6 -0
- package/dist/core/inert-record.js.map +1 -0
- package/dist/core/input/abort.d.ts +33 -2
- package/dist/core/input/abort.d.ts.map +1 -1
- package/dist/core/input/abort.js +42 -2
- package/dist/core/input/abort.js.map +1 -1
- package/dist/core/input/clear-ack.d.ts +10 -0
- package/dist/core/input/clear-ack.d.ts.map +1 -0
- package/dist/core/input/clear-ack.js +26 -0
- package/dist/core/input/clear-ack.js.map +1 -0
- package/dist/core/input/composer-cleanup.d.ts +33 -0
- package/dist/core/input/composer-cleanup.d.ts.map +1 -0
- package/dist/core/input/composer-cleanup.js +127 -0
- package/dist/core/input/composer-cleanup.js.map +1 -0
- package/dist/core/input/constants.d.ts +12 -0
- package/dist/core/input/constants.d.ts.map +1 -0
- package/dist/core/input/constants.js +12 -0
- package/dist/core/input/constants.js.map +1 -0
- package/dist/core/input/empty-frame.d.ts +4 -0
- package/dist/core/input/empty-frame.d.ts.map +1 -0
- package/dist/core/input/empty-frame.js +15 -0
- package/dist/core/input/empty-frame.js.map +1 -0
- package/dist/core/input/index.d.ts +8 -25
- package/dist/core/input/index.d.ts.map +1 -1
- package/dist/core/input/index.js +67 -102
- package/dist/core/input/index.js.map +1 -1
- package/dist/core/input/paste-guard.d.ts +34 -0
- package/dist/core/input/paste-guard.d.ts.map +1 -0
- package/dist/core/input/paste-guard.js +2 -0
- package/dist/core/input/paste-guard.js.map +1 -0
- package/dist/core/input/paste-nudge.d.ts +10 -0
- package/dist/core/input/paste-nudge.d.ts.map +1 -0
- package/dist/core/input/paste-nudge.js +91 -0
- package/dist/core/input/paste-nudge.js.map +1 -0
- package/dist/core/input/render-observation.d.ts +3 -0
- package/dist/core/input/render-observation.d.ts.map +1 -0
- package/dist/core/input/render-observation.js +38 -0
- package/dist/core/input/render-observation.js.map +1 -0
- package/dist/core/input/render-wakeup.d.ts +10 -0
- package/dist/core/input/render-wakeup.d.ts.map +1 -0
- package/dist/core/input/render-wakeup.js +45 -0
- package/dist/core/input/render-wakeup.js.map +1 -0
- package/dist/core/input/sanitize.d.ts +11 -0
- package/dist/core/input/sanitize.d.ts.map +1 -0
- package/dist/core/input/sanitize.js +19 -0
- package/dist/core/input/sanitize.js.map +1 -0
- package/dist/core/input/staged-composer.d.ts +12 -0
- package/dist/core/input/staged-composer.d.ts.map +1 -0
- package/dist/core/input/staged-composer.js +56 -0
- package/dist/core/input/staged-composer.js.map +1 -0
- package/dist/core/input/submission-cancel.d.ts +6 -0
- package/dist/core/input/submission-cancel.d.ts.map +1 -0
- package/dist/core/input/submission-cancel.js +18 -0
- package/dist/core/input/submission-cancel.js.map +1 -0
- package/dist/core/json-shape.d.ts +2 -0
- package/dist/core/json-shape.d.ts.map +1 -0
- package/dist/core/json-shape.js +6 -0
- package/dist/core/json-shape.js.map +1 -0
- package/dist/core/json-snapshot.d.ts +10 -0
- package/dist/core/json-snapshot.d.ts.map +1 -0
- package/dist/core/json-snapshot.js +84 -0
- package/dist/core/json-snapshot.js.map +1 -0
- package/dist/core/loops/scheduler.d.ts +1 -1
- package/dist/core/loops/scheduler.d.ts.map +1 -1
- package/dist/core/loops/scheduler.js +1 -2
- package/dist/core/loops/scheduler.js.map +1 -1
- package/dist/core/models/dialog-region.d.ts +16 -0
- package/dist/core/models/dialog-region.d.ts.map +1 -0
- package/dist/core/models/dialog-region.js +133 -0
- package/dist/core/models/dialog-region.js.map +1 -0
- package/dist/core/models/input.d.ts +1 -1
- package/dist/core/models/input.d.ts.map +1 -1
- package/dist/core/models/input.js.map +1 -1
- package/dist/core/models/intervention.d.ts +3 -0
- package/dist/core/models/intervention.d.ts.map +1 -0
- package/dist/core/models/intervention.js +12 -0
- package/dist/core/models/intervention.js.map +1 -0
- package/dist/core/models/picker.d.ts +14 -1
- package/dist/core/models/picker.d.ts.map +1 -1
- package/dist/core/models/picker.js +27 -6
- package/dist/core/models/picker.js.map +1 -1
- package/dist/core/models/rows.d.ts +42 -2
- package/dist/core/models/rows.d.ts.map +1 -1
- package/dist/core/models/rows.js +30 -3
- package/dist/core/models/rows.js.map +1 -1
- package/dist/core/models/tui-screen.d.ts +11 -1
- package/dist/core/models/tui-screen.d.ts.map +1 -1
- package/dist/core/models/tui-screen.js +22 -4
- package/dist/core/models/tui-screen.js.map +1 -1
- package/dist/core/module-require.d.ts +1 -1
- package/dist/core/module-require.js +1 -1
- package/dist/core/persona.d.ts +5 -4
- package/dist/core/persona.d.ts.map +1 -1
- package/dist/core/persona.js +18 -3
- package/dist/core/persona.js.map +1 -1
- package/dist/core/predicates.d.ts +9 -1
- package/dist/core/predicates.d.ts.map +1 -1
- package/dist/core/predicates.js +12 -2
- package/dist/core/predicates.js.map +1 -1
- package/dist/core/questions/abort.d.ts +2 -0
- package/dist/core/questions/abort.d.ts.map +1 -0
- package/dist/core/questions/abort.js +21 -0
- package/dist/core/questions/abort.js.map +1 -0
- package/dist/core/questions/activity-fields.d.ts +5 -0
- package/dist/core/questions/activity-fields.d.ts.map +1 -0
- package/dist/core/questions/activity-fields.js +15 -0
- package/dist/core/questions/activity-fields.js.map +1 -0
- package/dist/core/questions/activity.d.ts +6 -0
- package/dist/core/questions/activity.d.ts.map +1 -0
- package/dist/core/questions/activity.js +2 -0
- package/dist/core/questions/activity.js.map +1 -0
- package/dist/core/questions/adapter.d.ts +15 -0
- package/dist/core/questions/adapter.d.ts.map +1 -0
- package/dist/core/questions/adapter.js +2 -0
- package/dist/core/questions/adapter.js.map +1 -0
- package/dist/core/questions/attempt.d.ts +26 -0
- package/dist/core/questions/attempt.d.ts.map +1 -0
- package/dist/core/questions/attempt.js +85 -0
- package/dist/core/questions/attempt.js.map +1 -0
- package/dist/core/questions/controller.d.ts +24 -0
- package/dist/core/questions/controller.d.ts.map +1 -0
- package/dist/core/questions/controller.js +83 -0
- package/dist/core/questions/controller.js.map +1 -0
- package/dist/core/questions/correlation.d.ts +8 -0
- package/dist/core/questions/correlation.d.ts.map +1 -0
- package/dist/core/questions/correlation.js +11 -0
- package/dist/core/questions/correlation.js.map +1 -0
- package/dist/core/questions/cursor-provenance.d.ts +12 -0
- package/dist/core/questions/cursor-provenance.d.ts.map +1 -0
- package/dist/core/questions/cursor-provenance.js +19 -0
- package/dist/core/questions/cursor-provenance.js.map +1 -0
- package/dist/core/questions/deadline.d.ts +2 -0
- package/dist/core/questions/deadline.d.ts.map +1 -0
- package/dist/core/questions/deadline.js +11 -0
- package/dist/core/questions/deadline.js.map +1 -0
- package/dist/core/questions/dispatch.d.ts +17 -0
- package/dist/core/questions/dispatch.d.ts.map +1 -0
- package/dist/core/questions/dispatch.js +46 -0
- package/dist/core/questions/dispatch.js.map +1 -0
- package/dist/core/questions/errors.d.ts +8 -0
- package/dist/core/questions/errors.d.ts.map +1 -0
- package/dist/core/questions/errors.js +10 -0
- package/dist/core/questions/errors.js.map +1 -0
- package/dist/core/questions/input.d.ts +13 -0
- package/dist/core/questions/input.d.ts.map +1 -0
- package/dist/core/questions/input.js +93 -0
- package/dist/core/questions/input.js.map +1 -0
- package/dist/core/questions/io.d.ts +23 -0
- package/dist/core/questions/io.d.ts.map +1 -0
- package/dist/core/questions/io.js +2 -0
- package/dist/core/questions/io.js.map +1 -0
- package/dist/core/questions/notification-errors.d.ts +14 -0
- package/dist/core/questions/notification-errors.d.ts.map +1 -0
- package/dist/core/questions/notification-errors.js +45 -0
- package/dist/core/questions/notification-errors.js.map +1 -0
- package/dist/core/questions/observers.d.ts +17 -0
- package/dist/core/questions/observers.d.ts.map +1 -0
- package/dist/core/questions/observers.js +57 -0
- package/dist/core/questions/observers.js.map +1 -0
- package/dist/core/questions/registry.d.ts +35 -0
- package/dist/core/questions/registry.d.ts.map +1 -0
- package/dist/core/questions/registry.js +158 -0
- package/dist/core/questions/registry.js.map +1 -0
- package/dist/core/questions/transaction.d.ts +23 -0
- package/dist/core/questions/transaction.d.ts.map +1 -0
- package/dist/core/questions/transaction.js +97 -0
- package/dist/core/questions/transaction.js.map +1 -0
- package/dist/core/questions/types.d.ts +62 -0
- package/dist/core/questions/types.d.ts.map +1 -0
- package/dist/core/questions/types.js +2 -0
- package/dist/core/questions/types.js.map +1 -0
- package/dist/core/questions/validate.d.ts +16 -0
- package/dist/core/questions/validate.d.ts.map +1 -0
- package/dist/core/questions/validate.js +95 -0
- package/dist/core/questions/validate.js.map +1 -0
- package/dist/core/rendered-observers.d.ts +7 -2
- package/dist/core/rendered-observers.d.ts.map +1 -1
- package/dist/core/rendered-observers.js +44 -10
- package/dist/core/rendered-observers.js.map +1 -1
- package/dist/core/screen-facts.d.ts +8 -3
- package/dist/core/screen-facts.d.ts.map +1 -1
- package/dist/core/screen-facts.js +6 -3
- package/dist/core/screen-facts.js.map +1 -1
- package/dist/core/simple/boundary-observer.d.ts +30 -0
- package/dist/core/simple/boundary-observer.d.ts.map +1 -0
- package/dist/core/simple/boundary-observer.js +111 -0
- package/dist/core/simple/boundary-observer.js.map +1 -0
- package/dist/core/simple/boundary-signal.d.ts +31 -0
- package/dist/core/simple/boundary-signal.d.ts.map +1 -0
- package/dist/core/simple/boundary-signal.js +19 -0
- package/dist/core/simple/boundary-signal.js.map +1 -0
- package/dist/core/simple/captured-input.d.ts +19 -0
- package/dist/core/simple/captured-input.d.ts.map +1 -0
- package/dist/core/simple/captured-input.js +78 -0
- package/dist/core/simple/captured-input.js.map +1 -0
- package/dist/core/simple/close.d.ts +6 -0
- package/dist/core/simple/close.d.ts.map +1 -0
- package/dist/core/simple/close.js +20 -0
- package/dist/core/simple/close.js.map +1 -0
- package/dist/core/simple/events.d.ts +2 -2
- package/dist/core/simple/events.js +2 -2
- package/dist/core/simple/loop-boundary.d.ts +12 -0
- package/dist/core/simple/loop-boundary.d.ts.map +1 -0
- package/dist/core/simple/loop-boundary.js +68 -0
- package/dist/core/simple/loop-boundary.js.map +1 -0
- package/dist/core/simple/loop-hold.d.ts +7 -0
- package/dist/core/simple/loop-hold.d.ts.map +1 -0
- package/dist/core/simple/loop-hold.js +9 -0
- package/dist/core/simple/loop-hold.js.map +1 -0
- package/dist/core/simple/native-boundary.d.ts +15 -0
- package/dist/core/simple/native-boundary.d.ts.map +1 -0
- package/dist/core/simple/native-boundary.js +18 -0
- package/dist/core/simple/native-boundary.js.map +1 -0
- package/dist/core/simple/native-idle.d.ts +17 -0
- package/dist/core/simple/native-idle.d.ts.map +1 -0
- package/dist/core/simple/native-idle.js +25 -0
- package/dist/core/simple/native-idle.js.map +1 -0
- package/dist/core/simple/observe-boundary.d.ts +28 -0
- package/dist/core/simple/observe-boundary.d.ts.map +1 -0
- package/dist/core/simple/observe-boundary.js +13 -0
- package/dist/core/simple/observe-boundary.js.map +1 -0
- package/dist/core/simple/owned-loop.d.ts +8 -0
- package/dist/core/simple/owned-loop.d.ts.map +1 -0
- package/dist/core/simple/owned-loop.js +42 -0
- package/dist/core/simple/owned-loop.js.map +1 -0
- package/dist/core/simple/session.d.ts +7 -7
- package/dist/core/simple/session.d.ts.map +1 -1
- package/dist/core/simple/session.js +20 -33
- package/dist/core/simple/session.js.map +1 -1
- package/dist/core/simple/submission-context.d.ts +13 -0
- package/dist/core/simple/submission-context.d.ts.map +1 -0
- package/dist/core/simple/submission-context.js +35 -0
- package/dist/core/simple/submission-context.js.map +1 -0
- package/dist/core/simple/turn/bounds.d.ts +22 -0
- package/dist/core/simple/turn/bounds.d.ts.map +1 -0
- package/dist/core/simple/turn/bounds.js +22 -0
- package/dist/core/simple/turn/bounds.js.map +1 -0
- package/dist/core/simple/turn/defaults.d.ts +24 -0
- package/dist/core/simple/turn/defaults.d.ts.map +1 -0
- package/dist/core/simple/turn/defaults.js +34 -0
- package/dist/core/simple/turn/defaults.js.map +1 -0
- package/dist/core/simple/turn-acceptance.d.ts +20 -3
- package/dist/core/simple/turn-acceptance.d.ts.map +1 -1
- package/dist/core/simple/turn-acceptance.js +55 -5
- package/dist/core/simple/turn-acceptance.js.map +1 -1
- package/dist/core/simple/turn-boundary.d.ts +7 -2
- package/dist/core/simple/turn-boundary.d.ts.map +1 -1
- package/dist/core/simple/turn-boundary.js +17 -5
- package/dist/core/simple/turn-boundary.js.map +1 -1
- package/dist/core/simple/turn-gate.d.ts.map +1 -1
- package/dist/core/simple/turn-gate.js +1 -11
- package/dist/core/simple/turn-gate.js.map +1 -1
- package/dist/core/simple/turn-identity.d.ts +28 -0
- package/dist/core/simple/turn-identity.d.ts.map +1 -0
- package/dist/core/simple/turn-identity.js +74 -0
- package/dist/core/simple/turn-identity.js.map +1 -0
- package/dist/core/simple/turn-types.d.ts +11 -4
- package/dist/core/simple/turn-types.d.ts.map +1 -1
- package/dist/core/simple/turn-types.js +1 -6
- package/dist/core/simple/turn-types.js.map +1 -1
- package/dist/core/simple/turn.d.ts +7 -30
- package/dist/core/simple/turn.d.ts.map +1 -1
- package/dist/core/simple/turn.js +75 -75
- package/dist/core/simple/turn.js.map +1 -1
- package/dist/core/startup/barrier.d.ts +37 -0
- package/dist/core/startup/barrier.d.ts.map +1 -0
- package/dist/core/startup/barrier.js +59 -0
- package/dist/core/startup/barrier.js.map +1 -0
- package/dist/core/startup/frame.d.ts +2 -0
- package/dist/core/startup/frame.d.ts.map +1 -1
- package/dist/core/startup/frame.js +12 -0
- package/dist/core/startup/frame.js.map +1 -1
- package/dist/core/startup/warnings.d.ts +5 -0
- package/dist/core/startup/warnings.d.ts.map +1 -0
- package/dist/core/startup/warnings.js +14 -0
- package/dist/core/startup/warnings.js.map +1 -0
- package/dist/core/startup/write.d.ts +13 -11
- package/dist/core/startup/write.d.ts.map +1 -1
- package/dist/core/startup/write.js +12 -5
- package/dist/core/startup/write.js.map +1 -1
- package/dist/core/stop-input.d.ts +19 -0
- package/dist/core/stop-input.d.ts.map +1 -0
- package/dist/core/stop-input.js +47 -0
- package/dist/core/stop-input.js.map +1 -0
- package/dist/core/terminal-options.d.ts +13 -3
- package/dist/core/terminal-options.d.ts.map +1 -1
- package/dist/core/terminal-options.js +17 -7
- package/dist/core/terminal-options.js.map +1 -1
- package/dist/core/terminal-replay.d.ts +1 -0
- package/dist/core/terminal-replay.d.ts.map +1 -1
- package/dist/core/terminal-replay.js +6 -0
- package/dist/core/terminal-replay.js.map +1 -1
- package/dist/core/timers.d.ts +15 -0
- package/dist/core/timers.d.ts.map +1 -0
- package/dist/core/timers.js +17 -0
- package/dist/core/timers.js.map +1 -0
- package/dist/core/trust/allowlist.d.ts +24 -1
- package/dist/core/trust/allowlist.d.ts.map +1 -1
- package/dist/core/trust/allowlist.js +39 -12
- package/dist/core/trust/allowlist.js.map +1 -1
- package/dist/core/trust/blocking.d.ts +21 -10
- package/dist/core/trust/blocking.d.ts.map +1 -1
- package/dist/core/trust/blocking.js +64 -18
- package/dist/core/trust/blocking.js.map +1 -1
- package/dist/core/trust/clearance.d.ts +20 -0
- package/dist/core/trust/clearance.d.ts.map +1 -0
- package/dist/core/trust/clearance.js +25 -0
- package/dist/core/trust/clearance.js.map +1 -0
- package/dist/core/trust/copy.d.ts +19 -0
- package/dist/core/trust/copy.d.ts.map +1 -0
- package/dist/core/trust/copy.js +23 -0
- package/dist/core/trust/copy.js.map +1 -0
- package/dist/core/trust/dialog.d.ts +28 -0
- package/dist/core/trust/dialog.d.ts.map +1 -0
- package/dist/core/trust/dialog.js +96 -0
- package/dist/core/trust/dialog.js.map +1 -0
- package/dist/core/trust/options.d.ts +9 -0
- package/dist/core/trust/options.d.ts.map +1 -0
- package/dist/core/trust/options.js +9 -0
- package/dist/core/trust/options.js.map +1 -0
- package/dist/core/trust/prompts.d.ts +16 -37
- package/dist/core/trust/prompts.d.ts.map +1 -1
- package/dist/core/trust/prompts.js +10 -18
- package/dist/core/trust/prompts.js.map +1 -1
- package/dist/core/trust/responder.d.ts +27 -45
- package/dist/core/trust/responder.d.ts.map +1 -1
- package/dist/core/trust/responder.js +178 -108
- package/dist/core/trust/responder.js.map +1 -1
- package/dist/core/trust/types.d.ts +36 -0
- package/dist/core/trust/types.d.ts.map +1 -0
- package/dist/core/trust/types.js +17 -0
- package/dist/core/trust/types.js.map +1 -0
- package/dist/core/trust/view.d.ts +31 -0
- package/dist/core/trust/view.d.ts.map +1 -0
- package/dist/core/trust/view.js +52 -0
- package/dist/core/trust/view.js.map +1 -0
- package/dist/core/trust/write.d.ts +31 -0
- package/dist/core/trust/write.d.ts.map +1 -0
- package/dist/core/trust/write.js +148 -0
- package/dist/core/trust/write.js.map +1 -0
- package/dist/core/turn-state.d.ts +6 -0
- package/dist/core/turn-state.d.ts.map +1 -1
- package/dist/core/turn-state.js +31 -1
- package/dist/core/turn-state.js.map +1 -1
- package/dist/core/types.d.ts +4 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/warnings/auth.d.ts +25 -0
- package/dist/core/warnings/auth.d.ts.map +1 -0
- package/dist/core/warnings/auth.js +2 -0
- package/dist/core/warnings/auth.js.map +1 -0
- package/dist/core/warnings/index.d.ts +9 -16
- package/dist/core/warnings/index.d.ts.map +1 -1
- package/dist/core/warnings/index.js +2 -3
- package/dist/core/warnings/index.js.map +1 -1
- package/dist/core/warnings/lifecycle.d.ts +25 -1
- package/dist/core/warnings/lifecycle.d.ts.map +1 -1
- package/dist/core/warnings/lifecycle.js +1 -1
- package/dist/core/warnings/questions.d.ts +23 -0
- package/dist/core/warnings/questions.d.ts.map +1 -0
- package/dist/core/warnings/questions.js +2 -0
- package/dist/core/warnings/questions.js.map +1 -0
- package/dist/core/warnings/session.d.ts +3 -2
- package/dist/core/warnings/session.d.ts.map +1 -1
- package/dist/core/warnings/session.js +3 -2
- package/dist/core/warnings/session.js.map +1 -1
- package/dist/core/warnings/transcript.d.ts +12 -0
- package/dist/core/warnings/transcript.d.ts.map +1 -0
- package/dist/core/warnings/transcript.js +2 -0
- package/dist/core/warnings/transcript.js.map +1 -0
- package/dist/core/warnings/update.d.ts +11 -2
- package/dist/core/warnings/update.d.ts.map +1 -1
- package/dist/core/warnings/update.js +27 -4
- package/dist/core/warnings/update.js.map +1 -1
- package/dist/events/emitter.d.ts +18 -2
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +61 -14
- package/dist/events/emitter.js.map +1 -1
- package/dist/events/observer-errors.d.ts +9 -0
- package/dist/events/observer-errors.d.ts.map +1 -0
- package/dist/events/observer-errors.js +68 -0
- package/dist/events/observer-errors.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/pty/node.d.ts.map +1 -1
- package/dist/pty/node.js +4 -0
- package/dist/pty/node.js.map +1 -1
- package/dist/pty/types.d.ts +5 -0
- package/dist/pty/types.d.ts.map +1 -1
- package/dist/runtime/probe-cleanup.d.ts +34 -0
- package/dist/runtime/probe-cleanup.d.ts.map +1 -0
- package/dist/runtime/probe-cleanup.js +139 -0
- package/dist/runtime/probe-cleanup.js.map +1 -0
- package/dist/runtime/probe.d.ts.map +1 -1
- package/dist/runtime/probe.js +18 -25
- package/dist/runtime/probe.js.map +1 -1
- package/dist/runtime/readiness/initial-ready.d.ts +13 -11
- package/dist/runtime/readiness/initial-ready.d.ts.map +1 -1
- package/dist/runtime/readiness/initial-ready.js +23 -18
- package/dist/runtime/readiness/initial-ready.js.map +1 -1
- package/dist/runtime/seams.d.ts +2 -1
- package/dist/runtime/seams.d.ts.map +1 -1
- package/dist/runtime/seams.js.map +1 -1
- package/dist/runtime/session/attention-clearance.d.ts +5 -0
- package/dist/runtime/session/attention-clearance.d.ts.map +1 -0
- package/dist/runtime/session/attention-clearance.js +20 -0
- package/dist/runtime/session/attention-clearance.js.map +1 -0
- package/dist/runtime/session/base.d.ts +17 -4
- package/dist/runtime/session/base.d.ts.map +1 -1
- package/dist/runtime/session/base.js +70 -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 +151 -0
- package/dist/terminal/cursor.js.map +1 -0
- package/dist/terminal/headless.d.ts +7 -5
- package/dist/terminal/headless.d.ts.map +1 -1
- package/dist/terminal/headless.js +47 -35
- package/dist/terminal/headless.js.map +1 -1
- package/dist/terminal/pty-output.d.ts +37 -0
- package/dist/terminal/pty-output.d.ts.map +1 -0
- package/dist/terminal/pty-output.js +109 -0
- package/dist/terminal/pty-output.js.map +1 -0
- package/dist/terminal/render-queue.d.ts +30 -0
- package/dist/terminal/render-queue.d.ts.map +1 -0
- package/dist/terminal/render-queue.js +105 -0
- package/dist/terminal/render-queue.js.map +1 -0
- package/dist/terminal/snapshot.d.ts +5 -0
- package/dist/terminal/snapshot.d.ts.map +1 -0
- package/dist/terminal/snapshot.js +13 -0
- package/dist/terminal/snapshot.js.map +1 -0
- package/docs/api.md +8 -1
- package/docs/cli-behavior.md +930 -43
- package/docs/cli-output.md +4 -0
- package/docs/cli.md +15 -9
- package/docs/codex/cli.md +44 -0
- package/docs/embedding.md +7 -0
- package/docs/login-recovery.md +24 -0
- package/docs/native-question-proofs.md +57 -0
- package/docs/performance/terminal-engines.md +88 -0
- package/docs/performance.md +193 -0
- package/docs/questions.md +181 -0
- package/package.json +1 -1
- package/prd/04-architecture.md +15 -0
- package/prd/05-api/5.1-starting-claude.md +11 -1
- package/prd/05-api/5.10-questions.md +117 -0
- package/prd/05-api/5.3-claude-session-api.md +293 -24
- package/prd/05-api/5.4-events.md +159 -32
- package/prd/05-api/5.5-starting-codex.md +85 -18
- package/prd/05-api/5.7-codex-session-api.md +143 -5
- package/prd/05-api/5.8-session-api.md +58 -6
- package/prd/05-api/5.9-loops.md +11 -1
- package/prd/05-api/README.md +2 -0
- package/prd/06-claude-hook-bridge.md +115 -0
- package/prd/07-claude-policy.md +2 -0
- package/prd/07a-codex-hook-bridge.md +90 -0
- package/prd/08-state.md +51 -10
- package/prd/09-lifecycle.md +79 -3
- package/prd/10-errors.md +9 -2
- package/prd/12a-cli.md +13 -7
- package/prd/13-latitude.md +89 -0
- package/prd/14-conformance.md +84 -30
- package/prd/16-maintainer-review.md +75 -0
- package/prd/README.md +1 -0
package/docs/cli-output.md
CHANGED
|
@@ -212,3 +212,7 @@ fi
|
|
|
212
212
|
Do not use `jq -r .response` alone as a success check. Error documents can
|
|
213
213
|
carry a partial `response`, and streamed text can be partial when the process
|
|
214
214
|
exits nonzero.
|
|
215
|
+
|
|
216
|
+
For retained text runs, `--show-session-id` opts into a session-ID footer on stderr.
|
|
217
|
+
Without it, use `elwood sessions` to find the ID. JSON and JSONL always keep their
|
|
218
|
+
existing `sessionId` field.
|
package/docs/cli.md
CHANGED
|
@@ -15,8 +15,9 @@ elwood run --output json < prompt.txt
|
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
`elwood "prompt"` runs in the current directory, waits for one complete turn,
|
|
18
|
-
prints the combined assistant text to stdout, then
|
|
19
|
-
|
|
18
|
+
prints the combined assistant text to stdout, then stops the agent and preserves
|
|
19
|
+
its Elwood session state for later listing or resumption. Use `--ephemeral` to
|
|
20
|
+
remove that state afterward. It does not undo files the agent changed or remove history owned by
|
|
20
21
|
the agent CLI. `elwood run "prompt"` is the same command in explicit form.
|
|
21
22
|
|
|
22
23
|
Positional words are joined with spaces. Non-empty piped stdin is appended after
|
|
@@ -141,11 +142,13 @@ combined with `--stream`, `--verbose`, `--debug`, or `--output jsonl`.
|
|
|
141
142
|
|
|
142
143
|
## Continuation and cleanup
|
|
143
144
|
|
|
144
|
-
New runs
|
|
145
|
-
|
|
145
|
+
New and resumed runs preserve state by default; `--keep` explicitly selects
|
|
146
|
+
that default. Text output contains only the agent response. Add
|
|
147
|
+
`--show-session-id` to print the retained ID on stderr, or run `elwood sessions`
|
|
148
|
+
to find it later. JSON and JSONL include it in the terminal record:
|
|
146
149
|
|
|
147
150
|
```sh
|
|
148
|
-
first=$(elwood --
|
|
151
|
+
first=$(elwood --output json "Remember that the release color is teal")
|
|
149
152
|
id=$(printf '%s' "$first" | jq -r .sessionId)
|
|
150
153
|
elwood --resume "$id" "What is the release color?"
|
|
151
154
|
elwood --resume "$id" --ephemeral "Finish this conversation"
|
|
@@ -166,10 +169,13 @@ remain. It is supported only for new sessions, never with `--resume`.
|
|
|
166
169
|
## Trust and security
|
|
167
170
|
|
|
168
171
|
Headless mode is non-interactive. With the default `--trust`, Elwood answers
|
|
169
|
-
only its allowlisted workspace-directory and extension trust dialogs
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
172
|
+
only its allowlisted workspace-directory and extension trust dialogs.
|
|
173
|
+
`--no-trust` disables those approvals. Codex hook trust is always bypassed for
|
|
174
|
+
the entire session, including third-party hooks configured in Codex, because
|
|
175
|
+
Elwood needs its own hook bridge to run. This bypass is independent of `--trust`.
|
|
176
|
+
Other recognized dialogs fail as `blocked_prompt`. The same error applies when
|
|
177
|
+
safe trust automation cannot clear a gate within five seconds; queued prompt
|
|
178
|
+
input is never sent into that gate.
|
|
173
179
|
|
|
174
180
|
Piped text and image paths are prompt input with the same authority as text
|
|
175
181
|
typed by the caller. Do not combine untrusted input with broad filesystem
|
package/docs/codex/cli.md
CHANGED
|
@@ -40,6 +40,50 @@ Useful CLI capabilities for Elwood:
|
|
|
40
40
|
terminal output and also project recognized warnings into typed `warning`
|
|
41
41
|
events with remediation commands.
|
|
42
42
|
|
|
43
|
+
## Commentary and final replies
|
|
44
|
+
|
|
45
|
+
Subscribe to `activity` to display Codex's committed user-facing progress:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
session.on("activity", (event) => {
|
|
49
|
+
if (event.kind === "assistant_progress" && event.text) {
|
|
50
|
+
appendProgress(event.text);
|
|
51
|
+
} else if (event.kind === "assistant_message" && event.text) {
|
|
52
|
+
appendFinalReply(event.text);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Progress uses `source: "transcript"`, `label: "assistant"`, the session ID,
|
|
58
|
+
transcript path and optional native turn ID. It preserves string content and
|
|
59
|
+
ordered array-form `output_text` blocks from `response_item` messages explicitly
|
|
60
|
+
marked `phase: "commentary"`. Analysis and unknown phases never become progress.
|
|
61
|
+
Readable reasoning retains its separate `reasoning` channel; encrypted reasoning
|
|
62
|
+
is never normalized into text.
|
|
63
|
+
|
|
64
|
+
Response items are the canonical progress source. Explicit non-final legacy
|
|
65
|
+
`agent_message` mirrors remain raw transcript events with `other` summaries and
|
|
66
|
+
no normalized text, avoiding duplicate publication and false final replies.
|
|
67
|
+
Legacy unphased and final-answer behavior is preserved.
|
|
68
|
+
|
|
69
|
+
Keep progress separate from final-reply handlers: it must not clear working
|
|
70
|
+
state, consume reply context, finalize a trace, or route mentions to other
|
|
71
|
+
agents. Progress does not end a turn or change session status. Ergonomic
|
|
72
|
+
`send()` and `stream()` keep collecting their existing final-answer content;
|
|
73
|
+
use `on("activity", ...)` for progress. These are live observations, not token
|
|
74
|
+
deltas or replayed history, and their text may contain sensitive conversation
|
|
75
|
+
content just like final replies.
|
|
76
|
+
|
|
77
|
+
## Native questions
|
|
78
|
+
|
|
79
|
+
Codex modal and queued question tools surface through Elwood's shared
|
|
80
|
+
`question` event, normalized `question` activity, `listQuestions()` and
|
|
81
|
+
`answerQuestions()`. Modal question sets are one request; queued asynchronous
|
|
82
|
+
questions are independently answerable requests and can coexist with ongoing
|
|
83
|
+
work. Question-bearing asynchronous messages remain distinct from final replies,
|
|
84
|
+
even when their native record says `phase: "final_answer"`. See
|
|
85
|
+
[native questions](../questions.md) for consumer usage and lifecycle details.
|
|
86
|
+
|
|
43
87
|
## Resume Implications
|
|
44
88
|
|
|
45
89
|
Codex stores transcripts locally under Codex-owned state. Elwood should persist
|
package/docs/embedding.md
CHANGED
|
@@ -80,3 +80,10 @@ cap does not constrain your state layout.
|
|
|
80
80
|
before the user starts a session — use `listClaudeModels`/`listCodexModels`.
|
|
81
81
|
They spin up a throwaway session, list, and always tear it down, so they cost
|
|
82
82
|
a few seconds each; cache the result in the parent app if you call them often.
|
|
83
|
+
|
|
84
|
+
## Scaling concurrent sessions
|
|
85
|
+
|
|
86
|
+
See [performance.md](performance.md) for the fifty-session workload, measured
|
|
87
|
+
CPU improvement, and the existing `terminal.xterm.options.scrollback` history
|
|
88
|
+
budget. Headless history and the browser terminal's history are separate;
|
|
89
|
+
choose both budgets and avoid polling fresh snapshots for hidden sessions.
|
package/docs/login-recovery.md
CHANGED
|
@@ -13,6 +13,30 @@ surfaces this so a session never wedges silently:
|
|
|
13
13
|
matching `warning` activity) carrying `recoveryCommand: "/login"`, and leaves
|
|
14
14
|
the session alive so you can recover without restarting.
|
|
15
15
|
|
|
16
|
+
## Advance renewal notices
|
|
17
|
+
|
|
18
|
+
Claude can show `Your login expires in 3 days · run /login to renew` while the
|
|
19
|
+
session is still usable. Elwood exposes this separately from `login_expired`:
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
session.on("warning", (warning) => {
|
|
23
|
+
if (warning.code === "login_expiring") {
|
|
24
|
+
// Notify a human or schedule renewal according to your application's policy.
|
|
25
|
+
showRenewalNotice(warning.expiresInDays, warning.recoveryCommand);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Subscribe immediately after `startClaude` or `resumeClaude` returns to receive
|
|
31
|
+
startup observations. The same payload appears in `activity` with
|
|
32
|
+
`kind: "warning"`, `label: "login_expiring"`, and the typed warning in `raw`.
|
|
33
|
+
The CLI-reported `expiresInDays` is a duration, not an exact expiry timestamp.
|
|
34
|
+
Each distinct countdown value emits once per live session. Warnings are never
|
|
35
|
+
persisted or replayed to later subscribers. Native welcome banners and empty
|
|
36
|
+
composer footers are recognized; arbitrary transcript text is ignored. Elwood
|
|
37
|
+
does not change status or initiate login. A consumer can offer the existing
|
|
38
|
+
`session.login()` flow when the human is ready.
|
|
39
|
+
|
|
16
40
|
## Driving `/login`
|
|
17
41
|
|
|
18
42
|
`ClaudeSession.login(options)` drives the interactive `/login` flow. The
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Native question proofs
|
|
2
|
+
|
|
3
|
+
These opt-in tests exercise `listQuestions()` and `answerQuestions()` against
|
|
4
|
+
real authenticated CLI processes. Each entrypoint uses two valid-model turns.
|
|
5
|
+
Run them separately after `npm run check`; they consume model quota.
|
|
6
|
+
|
|
7
|
+
## Claude: C-E2E-18
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
ELWOOD_NATIVE_QUESTIONS_PROOF=1 node --no-warnings --test --test-concurrency=1 tests/e2e/claude-questions.e2e.ts
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The proof pins Claude Code 2.1.305 and uses `haiku`. It prefers that exact binary
|
|
14
|
+
in `~/.local/share/claude/versions/`, falling back to the installed binary only
|
|
15
|
+
when its version matches. It copies credentials into a private temporary home
|
|
16
|
+
and writes a minimal temporary configuration. Parent configuration is checked
|
|
17
|
+
for changes; it is not copied into the proof's home. The parent CLI installation
|
|
18
|
+
remains unchanged.
|
|
19
|
+
|
|
20
|
+
The first turn submits grouped single and multiple choices. The second submits
|
|
21
|
+
multiline alternative text. Both compare the native `AskUserQuestion`
|
|
22
|
+
PostToolUse answers, require an answered closure and an empty pending list,
|
|
23
|
+
and keep the original `send()` waiting for the final assistant reply.
|
|
24
|
+
|
|
25
|
+
Question events and normalized activities must correspond exactly and contain
|
|
26
|
+
no submitted answer marker. The proof recursively checks Elwood-owned state
|
|
27
|
+
before and after shutdown. Diagnostic artifacts use private, exclusive files
|
|
28
|
+
inside the sandbox. Teardown removes the sandbox and verifies that parent
|
|
29
|
+
configuration, authentication and process environment remain unchanged.
|
|
30
|
+
|
|
31
|
+
## Codex: C-E2E-19
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
ELWOOD_NATIVE_QUESTIONS_PROOF=1 node --no-warnings --test --test-concurrency=1 tests/e2e/codex-questions.e2e.ts
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The proof pins Codex 0.163.0 and uses `gpt-6-luna` with low effort. The first
|
|
38
|
+
turn asks three queued questions in one asynchronous call. It answers Note,
|
|
39
|
+
Literal, then Color through the public API, checking the other requests remain
|
|
40
|
+
available and the original turn remains running. The second turn submits one
|
|
41
|
+
three-question Plan modal, including None of the above and a named choice with
|
|
42
|
+
additional notes.
|
|
43
|
+
|
|
44
|
+
Both long answers exceed 700 characters and include CRLF and CR line endings,
|
|
45
|
+
interior tabs, indented caret rows, interior trailing spaces and outer Unicode
|
|
46
|
+
whitespace. Complete committed native free-text answers and notes must match
|
|
47
|
+
after newline normalization and outer Unicode White_Space trimming. Queued
|
|
48
|
+
selected labels are trimmed; modal selected labels remain exact (PRD §5.10).
|
|
49
|
+
The literal answers
|
|
50
|
+
`Type your answer` and `Add notes` must also match exactly; a clipped viewport
|
|
51
|
+
or placeholder rendering is not accepted as proof of the submitted value.
|
|
52
|
+
|
|
53
|
+
The proof compares complete queued reply envelopes and grouped modal answer
|
|
54
|
+
arrays, requires four answered request closures and final-only ergonomic
|
|
55
|
+
replies, and applies the same telemetry/state privacy and parent-state checks
|
|
56
|
+
as the Claude proof. Native transcripts and diagnostic captures stay inside
|
|
57
|
+
private sandbox directories that teardown removes.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Terminal engine assessment — October 24, 2026
|
|
2
|
+
|
|
3
|
+
Keep xterm for the current optimization. A private Ghostty WASM probe showed
|
|
4
|
+
a useful parser/formatter CPU reduction, but does not yet implement Elwood's
|
|
5
|
+
terminal contract. Replacing the engine requires an explicit API migration: the
|
|
6
|
+
public `terminal.xterm` exposes the complete headless xterm Terminal, including proposed
|
|
7
|
+
APIs. Running both engines would retain both parsing and buffer costs.
|
|
8
|
+
|
|
9
|
+
## Probe scope and provenance
|
|
10
|
+
|
|
11
|
+
The experiment instantiated the official full `ghostty-vt.wasm` in Node 26.3.1
|
|
12
|
+
with one WASM instance containing 50 terminals. Both engines parsed the same
|
|
13
|
+
80 full-screen redraws at 120 columns by 40 rows. The snapshot variant decoded
|
|
14
|
+
Ghostty's plain formatter output and checked final round markers. UTF-8 copy
|
|
15
|
+
and decoding were included. This was a standalone diagnostic, not the full
|
|
16
|
+
Elwood runtime workload; no hook/watch/classification or browser costs were
|
|
17
|
+
included. The trace did not fill scrollback.
|
|
18
|
+
|
|
19
|
+
The official nightly release was associated with source revision
|
|
20
|
+
`22f100c6367045bb5fc86172f837047dee2f7670`, library `0.1.0-dev`.
|
|
21
|
+
The 1,189,559-byte WASM SHA-256 was
|
|
22
|
+
`e23598cefe95b42d441221a45d22d435c9c1915bca7475fe735e7617eac1a0d1`.
|
|
23
|
+
Its embedded type metadata had a null commit field: the binary hash pins the
|
|
24
|
+
measured bytes; the source association comes from release metadata. The `tip`
|
|
25
|
+
URL moves and must not be treated as an immutable version. No dependency or
|
|
26
|
+
WASM binary was added to Elwood.
|
|
27
|
+
|
|
28
|
+
Sources: [official release](https://github.com/ghostty-org/ghostty/releases/tag/tip),
|
|
29
|
+
[WASM API](https://github.com/ghostty-org/ghostty/blob/22f100c6367045bb5fc86172f837047dee2f7670/include/ghostty/vt/wasm.h),
|
|
30
|
+
[official example](https://github.com/ghostty-org/ghostty/blob/22f100c6367045bb5fc86172f837047dee2f7670/example/wasm-vt/index.html).
|
|
31
|
+
|
|
32
|
+
## Standalone measurements
|
|
33
|
+
|
|
34
|
+
Three alternating fresh processes per engine used shared input/output scratch
|
|
35
|
+
for all Ghostty terminals. The xterm side included Elwood's headless write queue
|
|
36
|
+
and cursor tracking from commit `34ab7dd5`. The snapshot paths differ: xterm extracts the full physical
|
|
37
|
+
viewport; Ghostty formats plain text. These numbers compare the prototypes,
|
|
38
|
+
not equivalent complete engines.
|
|
39
|
+
|
|
40
|
+
| Diagnostic median | xterm path | Ghostty WASM path |
|
|
41
|
+
|---|---:|---:|
|
|
42
|
+
| Parsing path CPU | 326.275 ms | 176.598 ms |
|
|
43
|
+
| Parsing plus snapshot/formatter CPU | 559.623 ms | 343.816 ms |
|
|
44
|
+
| Parsing plus snapshot/formatter RSS | 131.6 MiB | 139.5 MiB |
|
|
45
|
+
|
|
46
|
+
Parsing CPU samples were 345.918 / 326.275 / 229.376 ms for xterm and
|
|
47
|
+
225.668 / 147.451 / 176.598 ms for Ghostty. Snapshot/formatter samples were
|
|
48
|
+
575.996 / 559.623 / 429.162 ms and 356.796 / 343.816 / 322.240 ms.
|
|
49
|
+
The host was busy; all paired CPU comparisons favored the prototype, but the
|
|
50
|
+
variation is substantial. The approximately 39% lower median CPU in the
|
|
51
|
+
formatter comparison is not a whole-Elwood speedup.
|
|
52
|
+
|
|
53
|
+
Ghostty's shared linear memory reached 23.625 MiB; WASM allocations must not
|
|
54
|
+
be inferred from JS heap alone. Process RSS was not lower in the formatter
|
|
55
|
+
comparison. No lower-memory replacement conclusion follows from this trace.
|
|
56
|
+
An earlier per-terminal scratch variant allocated about 16 MiB unnecessarily;
|
|
57
|
+
only the shared-scratch measurements above are used for this comparison.
|
|
58
|
+
|
|
59
|
+
## Compatibility work required before replacement
|
|
60
|
+
|
|
61
|
+
Elwood needs exactly one line per physical viewport row, cursor coordinates
|
|
62
|
+
through scrollback and reflow, and cell-column prefix extraction for wide and
|
|
63
|
+
combining characters. Question editors require cursor-cell dimming to distinguish
|
|
64
|
+
placeholder text from real answers. Plain formatter output does not prove those
|
|
65
|
+
properties.
|
|
66
|
+
|
|
67
|
+
A replacement must also preserve parser-completion ordering, input ownership,
|
|
68
|
+
protocol replies, title updates, synchronized-output holds, resize events,
|
|
69
|
+
wrap-pending cursor positions and failure/disposal behavior. The WASM prototype
|
|
70
|
+
did not install the write-to-PTY callback; query responses were therefore absent.
|
|
71
|
+
Its marker checks establish only the diagnostic trace, not native CLI safety.
|
|
72
|
+
|
|
73
|
+
The next useful engine experiment would compare full viewport/cursor/style and
|
|
74
|
+
protocol-event fixtures through a compatibility adapter. A native addon should
|
|
75
|
+
follow only if measured WASM boundary costs justify its build/distribution cost.
|
|
76
|
+
Sources: [render state](https://github.com/ghostty-org/ghostty/blob/22f100c6367045bb5fc86172f837047dee2f7670/include/ghostty/vt/render.h),
|
|
77
|
+
[grid references](https://github.com/ghostty-org/ghostty/blob/22f100c6367045bb5fc86172f837047dee2f7670/include/ghostty/vt/grid_ref.h),
|
|
78
|
+
[terminal effects](https://github.com/ghostty-org/ghostty/blob/22f100c6367045bb5fc86172f837047dee2f7670/include/ghostty/vt/terminal.h).
|
|
79
|
+
|
|
80
|
+
## Other candidates
|
|
81
|
+
|
|
82
|
+
[libvterm 0.3.3](https://www.leonerd.org.uk/code/libvterm/) provides a screen and
|
|
83
|
+
output callbacks, but its released screen-cell attributes lack the dim/faint
|
|
84
|
+
flag used by question provenance. [vte](https://github.com/alacritty/vte) is a
|
|
85
|
+
parser rather than a complete terminal emulator.
|
|
86
|
+
[libtsm](https://github.com/Aetf/libtsm) still needs protocol, Unicode, dimming,
|
|
87
|
+
resize and packaging verification. None offered a measured compatible replacement
|
|
88
|
+
within this investigation.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Performance checks
|
|
2
|
+
|
|
3
|
+
Elwood's parent process renders terminal output, classifies frames, retains a
|
|
4
|
+
bounded replay buffer, and watches transcripts for each session. Native Claude
|
|
5
|
+
and Codex processes consume additional resources outside this process.
|
|
6
|
+
|
|
7
|
+
## Repeatable terminal load
|
|
8
|
+
|
|
9
|
+
Run these from the repository root after `npm ci`, using Node 24 or newer:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
ELWOOD_BENCH_AGENT=claude node --expose-gc --no-warnings scripts/performance/terminal.ts 8 1 8 32
|
|
13
|
+
ELWOOD_BENCH_AGENT=codex node --expose-gc --no-warnings scripts/performance/terminal.ts 8 1 8 32
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Each child writes 8 MiB through a real PTY. The probe checks byte counts and a
|
|
17
|
+
final rendered marker, then reports elapsed time, memory, event-loop delay,
|
|
18
|
+
pending output, and resources remaining after cleanup. The selected observer
|
|
19
|
+
runs the production startup-prompt, screen-fact, turn, attention, and replay
|
|
20
|
+
code. Omit `ELWOOD_BENCH_AGENT` to measure rendering and snapshots alone.
|
|
21
|
+
|
|
22
|
+
This is a synthetic output burst. It does not launch agent CLIs, make model
|
|
23
|
+
requests, exercise hook or transcript traffic, or measure child-process memory.
|
|
24
|
+
Use it to detect regressions in Elwood's output processing; real workloads need
|
|
25
|
+
their own measurements.
|
|
26
|
+
|
|
27
|
+
### September 16, 2026 baseline
|
|
28
|
+
|
|
29
|
+
Measured on the development Mac with Node 24.7.0. Results vary with machine and
|
|
30
|
+
concurrent workload; these are observations, not performance guarantees.
|
|
31
|
+
|
|
32
|
+
| Observer | Sessions | Total output | Elapsed | Peak parent RSS | Event-loop p99 / max |
|
|
33
|
+
|---|---:|---:|---:|---:|---:|
|
|
34
|
+
| Claude | 1 | 8 MiB | 0.185 s | 110 MiB | 11.3 / 11.3 ms |
|
|
35
|
+
| Claude | 8 | 64 MiB | 0.969 s | 240 MiB | 14.4 / 16.0 ms |
|
|
36
|
+
| Claude | 32 | 256 MiB | 7.608 s | 363 MiB | 26.2 / 31.9 ms |
|
|
37
|
+
| Codex | 1 | 8 MiB | 0.243 s | 117 MiB | 19.5 / 19.5 ms |
|
|
38
|
+
| Codex | 8 | 64 MiB | 1.537 s | 248 MiB | 17.4 / 23.4 ms |
|
|
39
|
+
| Codex | 32 | 256 MiB | 9.270 s | 364 MiB | 23.9 / 42.3 ms |
|
|
40
|
+
|
|
41
|
+
At 32 sessions, final rendering finished within 10 ms of child exit. Neither
|
|
42
|
+
run retained PTY resources after cleanup, and post-GC heap usage did not increase
|
|
43
|
+
over that trial's starting heap. The remaining `PipeWrap` was the probe's stdout.
|
|
44
|
+
|
|
45
|
+
Before output batching, the snapshot-only probe took 14.497 s for one 8 MiB
|
|
46
|
+
session, queued about 8.19 MiB, and spent 14.19 s rendering after child exit.
|
|
47
|
+
The corresponding post-fix trial took 0.544 s. These two trials used the same
|
|
48
|
+
snapshot-only workload; the table above also includes production frame observers.
|
|
49
|
+
|
|
50
|
+
A separate ten-second idle probe used 128 real empty transcript files, split
|
|
51
|
+
evenly between Claude and Codex watchers at their default polling intervals. It
|
|
52
|
+
used 97.9 ms of CPU time (about 0.98% of one core), with 19.0 ms p99 event-loop
|
|
53
|
+
delay. It reported no errors, no retained heap increase, and no active resources
|
|
54
|
+
after closing the watchers. This measures idle polling, not transcript parsing
|
|
55
|
+
under active output.
|
|
56
|
+
|
|
57
|
+
## Bounds and regression coverage
|
|
58
|
+
|
|
59
|
+
- Adjacent PTY output is batched for at most 4 ms or 64 KiB, preserving order and
|
|
60
|
+
content. Renderer observations occur at batch boundaries.
|
|
61
|
+
- Real PTYs pause at 1 MiB of pending output and resume below 512 KiB. An already
|
|
62
|
+
delivered chunk can exceed the threshold. Custom PTY factories must provide
|
|
63
|
+
flow control to receive this backpressure.
|
|
64
|
+
- Runtime cleanup gives received output up to one second to render before
|
|
65
|
+
disposal. Process exit and reaping remain immediate; direct terminal disposal
|
|
66
|
+
discards pending output immediately.
|
|
67
|
+
- Tests cover batch ordering, Unicode/ANSI boundaries, slow-renderer
|
|
68
|
+
backpressure, disposal, final output on exit, and cancellation of late
|
|
69
|
+
readiness timers.
|
|
70
|
+
|
|
71
|
+
Re-run the probe after changes to rendering, frame classification, replay,
|
|
72
|
+
transcript polling, or cleanup. Compare output correctness and cleanup as well
|
|
73
|
+
as throughput, memory, and event-loop delay.
|
|
74
|
+
|
|
75
|
+
## Fifty-session runtime workload
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
node --expose-gc --no-warnings scripts/performance/fleet/index.ts
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
This probe starts 50 production runtimes, alternating Claude and Codex, with
|
|
82
|
+
synthetic PTY producers. Dependency seams model macOS even on other hosts; this
|
|
83
|
+
does not test native-agent support on those hosts. It exercises real local hook
|
|
84
|
+
sockets, transcript watchers, frame observers, public snapshots and cleanup without
|
|
85
|
+
launching agent CLIs or making model calls. Each session receives 80 full-screen redraws at
|
|
86
|
+
120 columns by 40 rows, then 1,200 scrolling lines. Assertions check all
|
|
87
|
+
15,155,250 output bytes, 500 transcript activities and final viewport markers.
|
|
88
|
+
The process reports setup separately, a two-second idle CPU sample, active CPU,
|
|
89
|
+
wall time, event-loop delay, live memory after GC and resource cleanup.
|
|
90
|
+
For a quick smoke run, set `ELWOOD_BENCH_SESSIONS=2 ELWOOD_BENCH_ROUNDS=2`.
|
|
91
|
+
|
|
92
|
+
### October 24, 2026: shared completed-frame text
|
|
93
|
+
|
|
94
|
+
Three alternating reference/candidate pairs used the same worktree, v2 probe
|
|
95
|
+
and Node 26.3.1 on the development Mac. Both sides used the benchmark from
|
|
96
|
+
`f6e4406c`; the reference restored runtime files from release `ba8b634e`
|
|
97
|
+
(0.2.0), while the candidate used the runtime at `f6e4406c`.
|
|
98
|
+
Values below are medians, not guarantees. Host activity changed absolute
|
|
99
|
+
timings substantially between measurement windows; compare matched pairs.
|
|
100
|
+
|
|
101
|
+
| Parent-process metric | Reference | Shared frame | Change |
|
|
102
|
+
|---|---:|---:|---:|
|
|
103
|
+
| Active CPU | 1,177.071 ms | 1,043.927 ms | −11.3% |
|
|
104
|
+
| Idle CPU over two seconds | 20.955 ms | 22.113 ms | +1.158 ms; variable |
|
|
105
|
+
| Live JS heap | 52.828 MiB | 53.084 MiB | +0.5% |
|
|
106
|
+
|
|
107
|
+
Active CPU samples were 1,176.453 / 1,177.071 / 1,195.298 ms before and
|
|
108
|
+
1,043.927 / 1,045.998 / 1,031.162 ms after. Every v2 run passed per-session
|
|
109
|
+
byte/activity attribution, final viewport markers and resource-count checks.
|
|
110
|
+
The probe awaits teardown of every session, removing private socket homes before
|
|
111
|
+
its shared root. Regression tests verify filesystem cleanup, rejection ordering,
|
|
112
|
+
extra handles of an existing type and offsetting per-session accounting gaps.
|
|
113
|
+
Idle samples ranged from 20.275–25.492 ms before and 16.285–23.858 ms after;
|
|
114
|
+
no idle optimization is claimed. The CPU reduction is below the initial 15%
|
|
115
|
+
estimate, with effectively unchanged live heap.
|
|
116
|
+
|
|
117
|
+
The change removes a second viewport conversion in foreign-picker observation
|
|
118
|
+
while preserving fresh public snapshots and input-boundary reads. Raw xterm
|
|
119
|
+
writes, writeln and reset invalidate private cached text; disposal restores the
|
|
120
|
+
original methods. Regression tests fail with the change removed, including a
|
|
121
|
+
raw write in an owned parser drain, writeln's synchronous parse after user input
|
|
122
|
+
and method restoration on disposal.
|
|
123
|
+
|
|
124
|
+
An earlier v1 comparison measured 10.3% lower CPU. Its aggregate assertions
|
|
125
|
+
did not establish per-session completeness, same-type handle counts or socket-home
|
|
126
|
+
removal; the v2 comparison above supersedes that result.
|
|
127
|
+
|
|
128
|
+
These measurements exclude browser rendering and agent-process memory/CPU.
|
|
129
|
+
The probe's final screen assertions and 500 activity count protect this workload;
|
|
130
|
+
they do not establish correctness for every native dialog. The repository's
|
|
131
|
+
conformance suite remains the merge gate.
|
|
132
|
+
|
|
133
|
+
## Consumer memory and rendering budgets
|
|
134
|
+
|
|
135
|
+
Elwood's headless xterm retains 1,000 history lines by default. Consumers that
|
|
136
|
+
retain their own raw terminal history can opt out of headless scrollback through
|
|
137
|
+
the existing advanced xterm handle:
|
|
138
|
+
|
|
139
|
+
```ts
|
|
140
|
+
import { CodexSession } from "@with-logic/elwood";
|
|
141
|
+
|
|
142
|
+
const session = await new CodexSession({ cwd }).start();
|
|
143
|
+
session.terminal.xterm.options.scrollback = 0;
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The same setting applies to Claude sessions. Apply it at session creation,
|
|
147
|
+
before sustained output. This discards headless scrollback and changes what
|
|
148
|
+
xterm can recover/reflow on scrolling and resizing; choose a small nonzero
|
|
149
|
+
budget if that history is needed. It does not change the consumer's own replay
|
|
150
|
+
store or browser terminal's independent scrollback setting.
|
|
151
|
+
|
|
152
|
+
Three alternating default/zero-history runs of the fixed 50-session workload
|
|
153
|
+
on Node 26.3.1, commit `f6e4406c`, measured the following medians after
|
|
154
|
+
1,200 scrolling lines per session. The experimental preload changed only xterm
|
|
155
|
+
constructor scrollback; all byte, transcript, viewport and cleanup assertions
|
|
156
|
+
passed. A separate two-adapter smoke used the public setter above and verified
|
|
157
|
+
zero history rows after scrolling. This is a configuration comparison, not a
|
|
158
|
+
runtime default change.
|
|
159
|
+
|
|
160
|
+
| Parent-process memory | Default 1,000 lines | Zero history |
|
|
161
|
+
|---|---:|---:|
|
|
162
|
+
| Live JS heap | 53.080 MiB | 38.977 MiB |
|
|
163
|
+
| External memory | 81.017 MiB | 13.065 MiB |
|
|
164
|
+
| Process RSS | 318.766 MiB | 231.484 MiB |
|
|
165
|
+
|
|
166
|
+
JS heap samples ranged from 53.078–53.080 MiB at the default budget and
|
|
167
|
+
34.650–38.987 MiB at zero history. History, dimensions, GC and host activity
|
|
168
|
+
affect these values. CPU and
|
|
169
|
+
idle timing varied enough that no CPU benefit is claimed for this setting.
|
|
170
|
+
|
|
171
|
+
For many-session consumers:
|
|
172
|
+
|
|
173
|
+
- Feed all ordered `terminal:data` bytes to the consumer's terminal/history
|
|
174
|
+
pipeline; batch browser writes without dropping bytes or ANSI boundaries.
|
|
175
|
+
- Keep only visible terminals rendering. Bound browser scrollback independently
|
|
176
|
+
and avoid polling public snapshots for every hidden session. Public snapshots
|
|
177
|
+
deliberately perform a fresh viewport read.
|
|
178
|
+
- Use normalized activity for chat/progress updates. Append to a bounded store
|
|
179
|
+
and batch UI updates instead of rerendering all terminal history per event.
|
|
180
|
+
- Measure Elwood parent CPU separately from agent child processes and the UI
|
|
181
|
+
renderer. Browser refresh/history costs do not appear in the headless probe.
|
|
182
|
+
|
|
183
|
+
The update-dialog prefilter prototype reduced active CPU by 3.8% in its matched
|
|
184
|
+
window, below this investigation's 5% decision threshold, and was not retained.
|
|
185
|
+
Fifty idle sessions used roughly 20 ms of parent CPU per two seconds; the
|
|
186
|
+
measurements did not justify a polling rewrite. The
|
|
187
|
+
[terminal engine assessment](performance/terminal-engines.md) records the
|
|
188
|
+
Ghostty prototype and the compatibility requirements for a replacement.
|
|
189
|
+
|
|
190
|
+
The fleet probe dispatches authenticated local hook requests directly; it does
|
|
191
|
+
not launch the generated hook-bridge subprocess for each request. Bridge-process
|
|
192
|
+
startup/CPU, agent processes and the browser need separate measurements. The
|
|
193
|
+
parent-process results do not establish a whole-system scaling guarantee.
|