@with-logic/elwood 0.1.0 → 0.1.2
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 +182 -3
- package/CONTRIBUTING.md +104 -0
- package/LICENSE +1 -1
- package/README.md +295 -26
- package/SECURITY.md +42 -0
- package/dist/claude/command.d.ts +9 -2
- package/dist/claude/command.d.ts.map +1 -1
- package/dist/claude/command.js +23 -16
- package/dist/claude/command.js.map +1 -1
- package/dist/claude/model-picker.d.ts.map +1 -1
- package/dist/claude/model-picker.js +4 -3
- package/dist/claude/model-picker.js.map +1 -1
- package/dist/claude/model-switch-confirmation.js +9 -1
- package/dist/claude/model-switch-confirmation.js.map +1 -1
- package/dist/claude/screen-table.js +1 -1
- package/dist/claude/screen-table.js.map +1 -1
- package/dist/claude/session/build.d.ts.map +1 -1
- package/dist/claude/session/build.js +3 -0
- package/dist/claude/session/build.js.map +1 -1
- package/dist/claude/session/index.d.ts.map +1 -1
- package/dist/claude/session/index.js +5 -2
- package/dist/claude/session/index.js.map +1 -1
- package/dist/claude/session/resume.d.ts +1 -1
- package/dist/claude/session/resume.d.ts.map +1 -1
- package/dist/claude/session/resume.js +5 -1
- package/dist/claude/session/resume.js.map +1 -1
- package/dist/claude/session/start-or-resume.js +1 -0
- package/dist/claude/session/start-or-resume.js.map +1 -1
- package/dist/claude/simple.d.ts.map +1 -1
- package/dist/claude/simple.js +4 -0
- package/dist/claude/simple.js.map +1 -1
- package/dist/cli/args/index.d.ts +3 -1
- package/dist/cli/args/index.d.ts.map +1 -1
- package/dist/cli/args/index.js +10 -2
- package/dist/cli/args/index.js.map +1 -1
- package/dist/cli/args/options.d.ts.map +1 -1
- package/dist/cli/args/options.js +2 -0
- package/dist/cli/args/options.js.map +1 -1
- package/dist/cli/args-commands.d.ts +10 -0
- package/dist/cli/args-commands.d.ts.map +1 -0
- package/dist/cli/args-commands.js +113 -0
- package/dist/cli/args-commands.js.map +1 -0
- package/dist/cli/command-types.d.ts +26 -0
- package/dist/cli/command-types.d.ts.map +1 -0
- package/dist/cli/command-types.js +9 -0
- package/dist/cli/command-types.js.map +1 -0
- package/dist/cli/config/codec-primitives.d.ts +20 -0
- package/dist/cli/config/codec-primitives.d.ts.map +1 -0
- package/dist/cli/config/codec-primitives.js +51 -0
- package/dist/cli/config/codec-primitives.js.map +1 -0
- package/dist/cli/config/codec.d.ts.map +1 -1
- package/dist/cli/config/codec.js +4 -46
- package/dist/cli/config/codec.js.map +1 -1
- package/dist/cli/config/effective.d.ts.map +1 -1
- package/dist/cli/config/effective.js +1 -0
- package/dist/cli/config/effective.js.map +1 -1
- package/dist/cli/config/keys.d.ts +1 -1
- package/dist/cli/config/keys.d.ts.map +1 -1
- package/dist/cli/config/keys.js +1 -0
- package/dist/cli/config/keys.js.map +1 -1
- package/dist/cli/entry.d.ts +4 -2
- package/dist/cli/entry.d.ts.map +1 -1
- package/dist/cli/entry.js +2 -1
- package/dist/cli/entry.js.map +1 -1
- package/dist/cli/help.d.ts +2 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +40 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/index.d.ts +26 -0
- package/dist/cli/interactive/index.d.ts.map +1 -0
- package/dist/cli/interactive/index.js +33 -0
- package/dist/cli/interactive/index.js.map +1 -0
- package/dist/cli/interactive/launch.d.ts +14 -0
- package/dist/cli/interactive/launch.d.ts.map +1 -0
- package/dist/cli/interactive/launch.js +66 -0
- package/dist/cli/interactive/launch.js.map +1 -0
- package/dist/cli/interactive/spawn.d.ts +18 -0
- package/dist/cli/interactive/spawn.d.ts.map +1 -0
- package/dist/cli/interactive/spawn.js +53 -0
- package/dist/cli/interactive/spawn.js.map +1 -0
- package/dist/cli/main-failure.d.ts +28 -0
- package/dist/cli/main-failure.d.ts.map +1 -0
- package/dist/cli/main-failure.js +78 -0
- package/dist/cli/main-failure.js.map +1 -0
- package/dist/cli/main.d.ts +12 -4
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +27 -73
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/models/index.d.ts +20 -0
- package/dist/cli/models/index.d.ts.map +1 -0
- package/dist/cli/models/index.js +63 -0
- package/dist/cli/models/index.js.map +1 -0
- package/dist/cli/models/render.d.ts +9 -0
- package/dist/cli/models/render.d.ts.map +1 -0
- package/dist/cli/models/render.js +33 -0
- package/dist/cli/models/render.js.map +1 -0
- package/dist/cli/request/index.d.ts.map +1 -1
- package/dist/cli/request/index.js +8 -2
- package/dist/cli/request/index.js.map +1 -1
- package/dist/cli/request/layers.d.ts +2 -0
- package/dist/cli/request/layers.d.ts.map +1 -1
- package/dist/cli/request/layers.js +9 -5
- package/dist/cli/request/layers.js.map +1 -1
- package/dist/cli/request/posture.d.ts +28 -0
- package/dist/cli/request/posture.d.ts.map +1 -0
- package/dist/cli/request/posture.js +70 -0
- package/dist/cli/request/posture.js.map +1 -0
- package/dist/cli/request/resolution-types.d.ts +1 -0
- package/dist/cli/request/resolution-types.d.ts.map +1 -1
- package/dist/cli/request/settings.d.ts +2 -12
- package/dist/cli/request/settings.d.ts.map +1 -1
- package/dist/cli/request/settings.js +2 -25
- package/dist/cli/request/settings.js.map +1 -1
- package/dist/cli/request/validation.d.ts +12 -0
- package/dist/cli/request/validation.d.ts.map +1 -1
- package/dist/cli/request/validation.js +30 -10
- package/dist/cli/request/validation.js.map +1 -1
- package/dist/cli/request/values.d.ts +1 -0
- package/dist/cli/request/values.d.ts.map +1 -1
- package/dist/cli/request/values.js +1 -0
- package/dist/cli/request/values.js.map +1 -1
- package/dist/cli/run/index.d.ts.map +1 -1
- package/dist/cli/run/index.js +5 -41
- package/dist/cli/run/index.js.map +1 -1
- package/dist/cli/run/subscribe.d.ts +19 -0
- package/dist/cli/run/subscribe.d.ts.map +1 -0
- package/dist/cli/run/subscribe.js +47 -0
- package/dist/cli/run/subscribe.js.map +1 -0
- package/dist/cli/session/launch.d.ts +3 -0
- package/dist/cli/session/launch.d.ts.map +1 -1
- package/dist/cli/session/launch.js +11 -0
- package/dist/cli/session/launch.js.map +1 -1
- package/dist/cli/sessions/index.d.ts +30 -0
- package/dist/cli/sessions/index.d.ts.map +1 -0
- package/dist/cli/sessions/index.js +61 -0
- package/dist/cli/sessions/index.js.map +1 -0
- package/dist/cli/sessions/list.d.ts +28 -0
- package/dist/cli/sessions/list.d.ts.map +1 -0
- package/dist/cli/sessions/list.js +63 -0
- package/dist/cli/sessions/list.js.map +1 -0
- package/dist/cli/sessions/settings.d.ts +11 -0
- package/dist/cli/sessions/settings.d.ts.map +1 -0
- package/dist/cli/sessions/settings.js +26 -0
- package/dist/cli/sessions/settings.js.map +1 -0
- package/dist/cli/table.d.ts +7 -0
- package/dist/cli/table.d.ts.map +1 -0
- package/dist/cli/table.js +14 -0
- package/dist/cli/table.js.map +1 -0
- package/dist/cli/types.d.ts +5 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/codex/command.d.ts +18 -2
- package/dist/codex/command.d.ts.map +1 -1
- package/dist/codex/command.js +39 -24
- package/dist/codex/command.js.map +1 -1
- package/dist/codex/model-picker.d.ts.map +1 -1
- package/dist/codex/model-picker.js +3 -2
- package/dist/codex/model-picker.js.map +1 -1
- package/dist/codex/session/build.d.ts.map +1 -1
- package/dist/codex/session/build.js +5 -7
- package/dist/codex/session/build.js.map +1 -1
- package/dist/codex/session/index.d.ts.map +1 -1
- package/dist/codex/session/index.js +5 -2
- package/dist/codex/session/index.js.map +1 -1
- package/dist/codex/session/resume.d.ts +1 -1
- package/dist/codex/session/resume.d.ts.map +1 -1
- package/dist/codex/session/resume.js +5 -1
- package/dist/codex/session/resume.js.map +1 -1
- package/dist/codex/session/start-or-resume.js +1 -0
- package/dist/codex/session/start-or-resume.js.map +1 -1
- package/dist/codex/session/types.d.ts +3 -0
- package/dist/codex/session/types.d.ts.map +1 -1
- package/dist/codex/simple.d.ts.map +1 -1
- package/dist/codex/simple.js +4 -0
- package/dist/codex/simple.js.map +1 -1
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/high-trust.d.ts +41 -0
- package/dist/core/high-trust.d.ts.map +1 -0
- package/dist/core/high-trust.js +50 -0
- package/dist/core/high-trust.js.map +1 -0
- package/dist/core/input/index.d.ts.map +1 -1
- package/dist/core/input/index.js +15 -3
- package/dist/core/input/index.js.map +1 -1
- package/dist/core/models/input.d.ts +3 -0
- package/dist/core/models/input.d.ts.map +1 -0
- package/dist/core/models/input.js +9 -0
- package/dist/core/models/input.js.map +1 -0
- package/dist/core/models/picker.d.ts +2 -1
- package/dist/core/models/picker.d.ts.map +1 -1
- package/dist/core/models/picker.js +6 -5
- package/dist/core/models/picker.js.map +1 -1
- package/dist/core/models/tui-screen.d.ts +1 -1
- package/dist/core/models/tui-screen.d.ts.map +1 -1
- package/dist/core/models/tui-screen.js +26 -3
- package/dist/core/models/tui-screen.js.map +1 -1
- package/dist/core/trust/allowlist.d.ts +56 -0
- package/dist/core/trust/allowlist.d.ts.map +1 -0
- package/dist/core/{trust-prompts.js → trust/allowlist.js} +21 -38
- package/dist/core/trust/allowlist.js.map +1 -0
- package/dist/core/trust/prompts.d.ts +4 -46
- package/dist/core/trust/prompts.d.ts.map +1 -1
- package/dist/core/trust/prompts.js +2 -73
- package/dist/core/trust/prompts.js.map +1 -1
- package/dist/core/trust/responder.d.ts +2 -0
- package/dist/core/trust/responder.d.ts.map +1 -1
- package/dist/core/trust/responder.js +4 -0
- package/dist/core/trust/responder.js.map +1 -1
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/runtime/launch-arguments.d.ts +12 -0
- package/dist/runtime/launch-arguments.d.ts.map +1 -0
- package/dist/runtime/launch-arguments.js +15 -0
- package/dist/runtime/launch-arguments.js.map +1 -0
- package/dist/runtime/session/base.d.ts.map +1 -1
- package/dist/runtime/session/base.js +4 -1
- package/dist/runtime/session/base.js.map +1 -1
- package/dist/runtime/session/commands.d.ts +2 -1
- package/dist/runtime/session/commands.d.ts.map +1 -1
- package/dist/runtime/session/commands.js +10 -4
- package/dist/runtime/session/commands.js.map +1 -1
- package/dist/runtime/session/lifecycle.d.ts +3 -4
- package/dist/runtime/session/lifecycle.d.ts.map +1 -1
- package/dist/runtime/session/lifecycle.js +6 -5
- package/dist/runtime/session/lifecycle.js.map +1 -1
- package/dist/state/directories.d.ts +4 -0
- package/dist/state/directories.d.ts.map +1 -0
- package/dist/state/directories.js +41 -0
- package/dist/state/directories.js.map +1 -0
- package/dist/state/files.d.ts.map +1 -1
- package/dist/state/files.js +25 -11
- package/dist/state/files.js.map +1 -1
- package/dist/state/private-session.d.ts.map +1 -1
- package/dist/state/private-session.js +2 -0
- package/dist/state/private-session.js.map +1 -1
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +7 -1
- package/dist/state/store.js.map +1 -1
- package/docs/cli-behavior.md +89 -1
- package/docs/cli-output.md +60 -0
- package/docs/cli.md +10 -2
- package/docs/codex/cli.md +57 -0
- package/docs/codex/config.md +47 -0
- package/docs/codex/hooks.md +70 -0
- package/examples/README.md +56 -0
- package/examples/full.ts +113 -0
- package/examples/minimal.ts +15 -0
- package/examples/stream.ts +39 -0
- package/examples/support.ts +71 -0
- package/package.json +17 -10
- package/prd/01-overview.md +21 -0
- package/prd/02-goals.md +47 -0
- package/prd/03-terminology.md +32 -0
- package/prd/04-architecture.md +121 -0
- package/prd/05-api/5.1-starting-claude.md +108 -0
- package/prd/05-api/5.2-resuming-claude.md +86 -0
- package/prd/05-api/5.3-claude-session-api.md +658 -0
- package/prd/05-api/5.4-events.md +145 -0
- package/prd/05-api/5.5-starting-codex.md +106 -0
- package/prd/05-api/5.6-resuming-codex.md +48 -0
- package/prd/05-api/5.7-codex-session-api.md +425 -0
- package/prd/05-api/5.8-session-api.md +122 -0
- package/prd/05-api/5.9-loops.md +170 -0
- package/prd/05-api/README.md +19 -0
- package/prd/06-claude-hook-bridge.md +164 -0
- package/prd/07-claude-policy.md +15 -0
- package/prd/07a-codex-hook-bridge.md +76 -0
- package/prd/08-state.md +127 -0
- package/prd/09-lifecycle.md +222 -0
- package/prd/10-errors.md +55 -0
- package/prd/11-test-app.md +53 -0
- package/prd/12-e2e.md +23 -0
- package/prd/12a-cli.md +375 -0
- package/prd/13-latitude.md +12 -0
- package/prd/14-conformance.md +333 -0
- package/prd/15-open-notes.md +8 -0
- package/prd/README.md +45 -0
- package/dist/claude/hook-dispatch.d.ts +0 -9
- package/dist/claude/hook-dispatch.d.ts.map +0 -1
- package/dist/claude/hook-dispatch.js +0 -12
- package/dist/claude/hook-dispatch.js.map +0 -1
- package/dist/claude/hook-events-extra.d.ts +0 -81
- package/dist/claude/hook-events-extra.d.ts.map +0 -1
- package/dist/claude/hook-events-extra.js +0 -6
- package/dist/claude/hook-events-extra.js.map +0 -1
- package/dist/claude/hook-events.d.ts +0 -101
- package/dist/claude/hook-events.d.ts.map +0 -1
- package/dist/claude/hook-events.js +0 -6
- package/dist/claude/hook-events.js.map +0 -1
- package/dist/claude/hook-names.d.ts +0 -24
- package/dist/claude/hook-names.d.ts.map +0 -1
- package/dist/claude/hook-names.js +0 -45
- package/dist/claude/hook-names.js.map +0 -1
- package/dist/claude/hooks.d.ts +0 -78
- package/dist/claude/hooks.d.ts.map +0 -1
- package/dist/claude/hooks.js +0 -6
- package/dist/claude/hooks.js.map +0 -1
- package/dist/claude/session-bridge.d.ts +0 -11
- package/dist/claude/session-bridge.d.ts.map +0 -1
- package/dist/claude/session-bridge.js +0 -18
- package/dist/claude/session-bridge.js.map +0 -1
- package/dist/claude/session-build.d.ts +0 -15
- package/dist/claude/session-build.d.ts.map +0 -1
- package/dist/claude/session-build.js +0 -147
- package/dist/claude/session-build.js.map +0 -1
- package/dist/claude/session-hook-handler.d.ts +0 -34
- package/dist/claude/session-hook-handler.d.ts.map +0 -1
- package/dist/claude/session-hook-handler.js +0 -42
- package/dist/claude/session-hook-handler.js.map +0 -1
- package/dist/claude/session-instance.d.ts +0 -42
- package/dist/claude/session-instance.d.ts.map +0 -1
- package/dist/claude/session-instance.js +0 -146
- package/dist/claude/session-instance.js.map +0 -1
- package/dist/claude/session-interface.d.ts +0 -49
- package/dist/claude/session-interface.d.ts.map +0 -1
- package/dist/claude/session-interface.js +0 -10
- package/dist/claude/session-interface.js.map +0 -1
- package/dist/claude/session-resume.d.ts +0 -8
- package/dist/claude/session-resume.d.ts.map +0 -1
- package/dist/claude/session-resume.js +0 -47
- package/dist/claude/session-resume.js.map +0 -1
- package/dist/claude/session-runtime.d.ts +0 -43
- package/dist/claude/session-runtime.d.ts.map +0 -1
- package/dist/claude/session-runtime.js +0 -105
- package/dist/claude/session-runtime.js.map +0 -1
- package/dist/claude/session-transcript.d.ts +0 -62
- package/dist/claude/session-transcript.d.ts.map +0 -1
- package/dist/claude/session-transcript.js +0 -88
- package/dist/claude/session-transcript.js.map +0 -1
- package/dist/claude/session.d.ts +0 -18
- package/dist/claude/session.d.ts.map +0 -1
- package/dist/claude/session.js +0 -58
- package/dist/claude/session.js.map +0 -1
- package/dist/claude/start-or-resume.d.ts +0 -12
- package/dist/claude/start-or-resume.d.ts.map +0 -1
- package/dist/claude/start-or-resume.js +0 -32
- package/dist/claude/start-or-resume.js.map +0 -1
- package/dist/claude/tool-hook-events.d.ts +0 -10
- package/dist/claude/tool-hook-events.d.ts.map +0 -1
- package/dist/claude/tool-hook-events.js +0 -18
- package/dist/claude/tool-hook-events.js.map +0 -1
- package/dist/claude/tool-types.d.ts +0 -158
- package/dist/claude/tool-types.d.ts.map +0 -1
- package/dist/claude/tool-types.js +0 -6
- package/dist/claude/tool-types.js.map +0 -1
- package/dist/claude/validate-input.d.ts +0 -8
- package/dist/claude/validate-input.d.ts.map +0 -1
- package/dist/claude/validate-input.js +0 -137
- package/dist/claude/validate-input.js.map +0 -1
- package/dist/claude/validate-permission-update.d.ts +0 -10
- package/dist/claude/validate-permission-update.d.ts.map +0 -1
- package/dist/claude/validate-permission-update.js +0 -72
- package/dist/claude/validate-permission-update.js.map +0 -1
- package/dist/claude/validate-result.d.ts +0 -7
- package/dist/claude/validate-result.d.ts.map +0 -1
- package/dist/claude/validate-result.js +0 -118
- package/dist/claude/validate-result.js.map +0 -1
- package/dist/claude/validate-shapes.d.ts +0 -22
- package/dist/claude/validate-shapes.d.ts.map +0 -1
- package/dist/claude/validate-shapes.js +0 -15
- package/dist/claude/validate-shapes.js.map +0 -1
- package/dist/claude/validate-tool-update.d.ts +0 -15
- package/dist/claude/validate-tool-update.d.ts.map +0 -1
- package/dist/claude/validate-tool-update.js +0 -122
- package/dist/claude/validate-tool-update.js.map +0 -1
- package/dist/cli/agent-detect.d.ts +0 -44
- package/dist/cli/agent-detect.d.ts.map +0 -1
- package/dist/cli/agent-detect.js +0 -66
- package/dist/cli/agent-detect.js.map +0 -1
- package/dist/cli/arg-errors.d.ts +0 -6
- package/dist/cli/arg-errors.d.ts.map +0 -1
- package/dist/cli/arg-errors.js +0 -44
- package/dist/cli/arg-errors.js.map +0 -1
- package/dist/cli/arg-options.d.ts +0 -26
- package/dist/cli/arg-options.d.ts.map +0 -1
- package/dist/cli/arg-options.js +0 -50
- package/dist/cli/arg-options.js.map +0 -1
- package/dist/cli/args.d.ts +0 -7
- package/dist/cli/args.d.ts.map +0 -1
- package/dist/cli/args.js +0 -70
- package/dist/cli/args.js.map +0 -1
- package/dist/cli/lifecycle-outcome.d.ts +0 -13
- package/dist/cli/lifecycle-outcome.d.ts.map +0 -1
- package/dist/cli/lifecycle-outcome.js +0 -20
- package/dist/cli/lifecycle-outcome.js.map +0 -1
- package/dist/cli/lifecycle.d.ts +0 -61
- package/dist/cli/lifecycle.d.ts.map +0 -1
- package/dist/cli/lifecycle.js +0 -152
- package/dist/cli/lifecycle.js.map +0 -1
- package/dist/cli/request-finalize.d.ts +0 -10
- package/dist/cli/request-finalize.d.ts.map +0 -1
- package/dist/cli/request-finalize.js +0 -135
- package/dist/cli/request-finalize.js.map +0 -1
- package/dist/cli/request-layers.d.ts +0 -30
- package/dist/cli/request-layers.d.ts.map +0 -1
- package/dist/cli/request-layers.js +0 -44
- package/dist/cli/request-layers.js.map +0 -1
- package/dist/cli/request-settings.d.ts +0 -34
- package/dist/cli/request-settings.d.ts.map +0 -1
- package/dist/cli/request-settings.js +0 -66
- package/dist/cli/request-settings.js.map +0 -1
- package/dist/cli/request-sources.d.ts +0 -13
- package/dist/cli/request-sources.d.ts.map +0 -1
- package/dist/cli/request-sources.js +0 -23
- package/dist/cli/request-sources.js.map +0 -1
- package/dist/cli/request-validation.d.ts +0 -18
- package/dist/cli/request-validation.d.ts.map +0 -1
- package/dist/cli/request-validation.js +0 -84
- package/dist/cli/request-validation.js.map +0 -1
- package/dist/cli/request-values.d.ts +0 -33
- package/dist/cli/request-values.d.ts.map +0 -1
- package/dist/cli/request-values.js +0 -73
- package/dist/cli/request-values.js.map +0 -1
- package/dist/cli/request.d.ts +0 -12
- package/dist/cli/request.d.ts.map +0 -1
- package/dist/cli/request.js +0 -103
- package/dist/cli/request.js.map +0 -1
- package/dist/cli/resolution-types.d.ts +0 -35
- package/dist/cli/resolution-types.d.ts.map +0 -1
- package/dist/cli/resolution-types.js +0 -6
- package/dist/cli/resolution-types.js.map +0 -1
- package/dist/cli/run-output-lines.d.ts +0 -14
- package/dist/cli/run-output-lines.d.ts.map +0 -1
- package/dist/cli/run-output-lines.js +0 -42
- package/dist/cli/run-output-lines.js.map +0 -1
- package/dist/cli/run-output.d.ts +0 -48
- package/dist/cli/run-output.d.ts.map +0 -1
- package/dist/cli/run-output.js +0 -150
- package/dist/cli/run-output.js.map +0 -1
- package/dist/cli/run.d.ts +0 -20
- package/dist/cli/run.d.ts.map +0 -1
- package/dist/cli/run.js +0 -126
- package/dist/cli/run.js.map +0 -1
- package/dist/cli/session-launch.d.ts +0 -23
- package/dist/cli/session-launch.d.ts.map +0 -1
- package/dist/cli/session-launch.js +0 -57
- package/dist/cli/session-launch.js.map +0 -1
- package/dist/cli/session.d.ts +0 -68
- package/dist/cli/session.d.ts.map +0 -1
- package/dist/cli/session.js +0 -124
- package/dist/cli/session.js.map +0 -1
- package/dist/codex/attach-images.d.ts +0 -20
- package/dist/codex/attach-images.d.ts.map +0 -1
- package/dist/codex/attach-images.js +0 -66
- package/dist/codex/attach-images.js.map +0 -1
- package/dist/codex/clipboard-lock.d.ts +0 -15
- package/dist/codex/clipboard-lock.d.ts.map +0 -1
- package/dist/codex/clipboard-lock.js +0 -16
- package/dist/codex/clipboard-lock.js.map +0 -1
- package/dist/codex/clipboard.d.ts +0 -32
- package/dist/codex/clipboard.d.ts.map +0 -1
- package/dist/codex/clipboard.js +0 -92
- package/dist/codex/clipboard.js.map +0 -1
- package/dist/codex/config-lock.d.ts +0 -21
- package/dist/codex/config-lock.d.ts.map +0 -1
- package/dist/codex/config-lock.js +0 -22
- package/dist/codex/config-lock.js.map +0 -1
- package/dist/codex/config-restore.d.ts +0 -33
- package/dist/codex/config-restore.d.ts.map +0 -1
- package/dist/codex/config-restore.js +0 -90
- package/dist/codex/config-restore.js.map +0 -1
- package/dist/codex/config-transaction.d.ts +0 -26
- package/dist/codex/config-transaction.d.ts.map +0 -1
- package/dist/codex/config-transaction.js +0 -47
- package/dist/codex/config-transaction.js.map +0 -1
- package/dist/codex/hook-dispatch.d.ts +0 -9
- package/dist/codex/hook-dispatch.d.ts.map +0 -1
- package/dist/codex/hook-dispatch.js +0 -14
- package/dist/codex/hook-dispatch.js.map +0 -1
- package/dist/codex/hook-names.d.ts +0 -19
- package/dist/codex/hook-names.d.ts.map +0 -1
- package/dist/codex/hook-names.js +0 -17
- package/dist/codex/hook-names.js.map +0 -1
- package/dist/codex/hooks.d.ts +0 -99
- package/dist/codex/hooks.d.ts.map +0 -1
- package/dist/codex/hooks.js +0 -6
- package/dist/codex/hooks.js.map +0 -1
- package/dist/codex/initial-ready.d.ts +0 -19
- package/dist/codex/initial-ready.d.ts.map +0 -1
- package/dist/codex/initial-ready.js +0 -19
- package/dist/codex/initial-ready.js.map +0 -1
- package/dist/codex/serialize.d.ts +0 -8
- package/dist/codex/serialize.d.ts.map +0 -1
- package/dist/codex/serialize.js +0 -48
- package/dist/codex/serialize.js.map +0 -1
- package/dist/codex/session-bridge.d.ts +0 -14
- package/dist/codex/session-bridge.d.ts.map +0 -1
- package/dist/codex/session-bridge.js +0 -20
- package/dist/codex/session-bridge.js.map +0 -1
- package/dist/codex/session-build.d.ts +0 -15
- package/dist/codex/session-build.d.ts.map +0 -1
- package/dist/codex/session-build.js +0 -144
- package/dist/codex/session-build.js.map +0 -1
- package/dist/codex/session-cleanup.d.ts +0 -12
- package/dist/codex/session-cleanup.d.ts.map +0 -1
- package/dist/codex/session-cleanup.js +0 -15
- package/dist/codex/session-cleanup.js.map +0 -1
- package/dist/codex/session-hooks.d.ts +0 -13
- package/dist/codex/session-hooks.d.ts.map +0 -1
- package/dist/codex/session-hooks.js +0 -54
- package/dist/codex/session-hooks.js.map +0 -1
- package/dist/codex/session-instance.d.ts +0 -50
- package/dist/codex/session-instance.d.ts.map +0 -1
- package/dist/codex/session-instance.js +0 -117
- package/dist/codex/session-instance.js.map +0 -1
- package/dist/codex/session-resume.d.ts +0 -7
- package/dist/codex/session-resume.d.ts.map +0 -1
- package/dist/codex/session-resume.js +0 -44
- package/dist/codex/session-resume.js.map +0 -1
- package/dist/codex/session-runtime.d.ts +0 -7
- package/dist/codex/session-runtime.d.ts.map +0 -1
- package/dist/codex/session-runtime.js +0 -10
- package/dist/codex/session-runtime.js.map +0 -1
- package/dist/codex/session-transcript.d.ts +0 -30
- package/dist/codex/session-transcript.d.ts.map +0 -1
- package/dist/codex/session-transcript.js +0 -53
- package/dist/codex/session-transcript.js.map +0 -1
- package/dist/codex/session-types.d.ts +0 -87
- package/dist/codex/session-types.d.ts.map +0 -1
- package/dist/codex/session-types.js +0 -6
- package/dist/codex/session-types.js.map +0 -1
- package/dist/codex/session-warnings.d.ts +0 -27
- package/dist/codex/session-warnings.d.ts.map +0 -1
- package/dist/codex/session-warnings.js +0 -54
- package/dist/codex/session-warnings.js.map +0 -1
- package/dist/codex/session.d.ts +0 -16
- package/dist/codex/session.d.ts.map +0 -1
- package/dist/codex/session.js +0 -61
- package/dist/codex/session.js.map +0 -1
- package/dist/codex/start-or-resume.d.ts +0 -12
- package/dist/codex/start-or-resume.d.ts.map +0 -1
- package/dist/codex/start-or-resume.js +0 -31
- package/dist/codex/start-or-resume.js.map +0 -1
- package/dist/codex/transcript/cursor-io.d.ts +0 -7
- package/dist/codex/transcript/cursor-io.d.ts.map +0 -1
- package/dist/codex/transcript/cursor-io.js +0 -7
- package/dist/codex/transcript/cursor-io.js.map +0 -1
- package/dist/codex/transcript/cursor.d.ts +0 -8
- package/dist/codex/transcript/cursor.d.ts.map +0 -1
- package/dist/codex/transcript/cursor.js +0 -8
- package/dist/codex/transcript/cursor.js.map +0 -1
- package/dist/codex/transcript/drops.d.ts +0 -9
- package/dist/codex/transcript/drops.d.ts.map +0 -1
- package/dist/codex/transcript/drops.js +0 -9
- package/dist/codex/transcript/drops.js.map +0 -1
- package/dist/codex/transcript.d.ts +0 -12
- package/dist/codex/transcript.d.ts.map +0 -1
- package/dist/codex/transcript.js +0 -10
- package/dist/codex/transcript.js.map +0 -1
- package/dist/codex/validate-result.d.ts +0 -7
- package/dist/codex/validate-result.d.ts.map +0 -1
- package/dist/codex/validate-result.js +0 -84
- package/dist/codex/validate-result.js.map +0 -1
- package/dist/codex/validate.d.ts +0 -11
- package/dist/codex/validate.d.ts.map +0 -1
- package/dist/codex/validate.js +0 -88
- package/dist/codex/validate.js.map +0 -1
- package/dist/core/activity-lifecycle.d.ts +0 -21
- package/dist/core/activity-lifecycle.d.ts.map +0 -1
- package/dist/core/activity-lifecycle.js +0 -45
- package/dist/core/activity-lifecycle.js.map +0 -1
- package/dist/core/activity-meta.d.ts +0 -13
- package/dist/core/activity-meta.d.ts.map +0 -1
- package/dist/core/activity-meta.js +0 -67
- package/dist/core/activity-meta.js.map +0 -1
- package/dist/core/activity-transcript.d.ts +0 -19
- package/dist/core/activity-transcript.d.ts.map +0 -1
- package/dist/core/activity-transcript.js +0 -60
- package/dist/core/activity-transcript.js.map +0 -1
- package/dist/core/activity.d.ts +0 -51
- package/dist/core/activity.d.ts.map +0 -1
- package/dist/core/activity.js +0 -81
- package/dist/core/activity.js.map +0 -1
- package/dist/core/control-queue-state.d.ts +0 -29
- package/dist/core/control-queue-state.d.ts.map +0 -1
- package/dist/core/control-queue-state.js +0 -95
- package/dist/core/control-queue-state.js.map +0 -1
- package/dist/core/control-queue-traits.d.ts +0 -54
- package/dist/core/control-queue-traits.d.ts.map +0 -1
- package/dist/core/control-queue-traits.js +0 -118
- package/dist/core/control-queue-traits.js.map +0 -1
- package/dist/core/control-queue-types.d.ts +0 -45
- package/dist/core/control-queue-types.d.ts.map +0 -1
- package/dist/core/control-queue-types.js +0 -7
- package/dist/core/control-queue-types.js.map +0 -1
- package/dist/core/control-queue.d.ts +0 -21
- package/dist/core/control-queue.d.ts.map +0 -1
- package/dist/core/control-queue.js +0 -98
- package/dist/core/control-queue.js.map +0 -1
- package/dist/core/list-models.d.ts +0 -44
- package/dist/core/list-models.d.ts.map +0 -1
- package/dist/core/list-models.js +0 -73
- package/dist/core/list-models.js.map +0 -1
- package/dist/core/model-picker.d.ts +0 -22
- package/dist/core/model-picker.d.ts.map +0 -1
- package/dist/core/model-picker.js +0 -58
- package/dist/core/model-picker.js.map +0 -1
- package/dist/core/model-rows.d.ts +0 -21
- package/dist/core/model-rows.d.ts.map +0 -1
- package/dist/core/model-rows.js +0 -57
- package/dist/core/model-rows.js.map +0 -1
- package/dist/core/probe-state.d.ts +0 -21
- package/dist/core/probe-state.d.ts.map +0 -1
- package/dist/core/probe-state.js +0 -39
- package/dist/core/probe-state.js.map +0 -1
- package/dist/core/session-input-abort.d.ts +0 -10
- package/dist/core/session-input-abort.d.ts.map +0 -1
- package/dist/core/session-input-abort.js +0 -44
- package/dist/core/session-input-abort.js.map +0 -1
- package/dist/core/session-input.d.ts +0 -37
- package/dist/core/session-input.d.ts.map +0 -1
- package/dist/core/session-input.js +0 -154
- package/dist/core/session-input.js.map +0 -1
- package/dist/core/session-warnings.d.ts +0 -20
- package/dist/core/session-warnings.d.ts.map +0 -1
- package/dist/core/session-warnings.js +0 -32
- package/dist/core/session-warnings.js.map +0 -1
- package/dist/core/simple/loop-controls.d.ts +0 -7
- package/dist/core/simple/loop-controls.d.ts.map +0 -1
- package/dist/core/simple/loop-controls.js +0 -7
- package/dist/core/simple/loop-controls.js.map +0 -1
- package/dist/core/startup-automation.d.ts +0 -54
- package/dist/core/startup-automation.d.ts.map +0 -1
- package/dist/core/startup-automation.js +0 -40
- package/dist/core/startup-automation.js.map +0 -1
- package/dist/core/startup-frame.d.ts +0 -39
- package/dist/core/startup-frame.d.ts.map +0 -1
- package/dist/core/startup-frame.js +0 -60
- package/dist/core/startup-frame.js.map +0 -1
- package/dist/core/startup-write.d.ts +0 -47
- package/dist/core/startup-write.d.ts.map +0 -1
- package/dist/core/startup-write.js +0 -73
- package/dist/core/startup-write.js.map +0 -1
- package/dist/core/trust-blocking.d.ts +0 -22
- package/dist/core/trust-blocking.d.ts.map +0 -1
- package/dist/core/trust-blocking.js +0 -38
- package/dist/core/trust-blocking.js.map +0 -1
- package/dist/core/trust-prompts.d.ts +0 -135
- package/dist/core/trust-prompts.d.ts.map +0 -1
- package/dist/core/trust-prompts.js.map +0 -1
- package/dist/core/trust-responder.d.ts +0 -48
- package/dist/core/trust-responder.d.ts.map +0 -1
- package/dist/core/trust-responder.js +0 -119
- package/dist/core/trust-responder.js.map +0 -1
- package/dist/core/tui-screen.d.ts +0 -21
- package/dist/core/tui-screen.d.ts.map +0 -1
- package/dist/core/tui-screen.js +0 -56
- package/dist/core/tui-screen.js.map +0 -1
- package/dist/core/update-warning.d.ts +0 -25
- package/dist/core/update-warning.d.ts.map +0 -1
- package/dist/core/update-warning.js +0 -33
- package/dist/core/update-warning.js.map +0 -1
- package/dist/core/warning-lifecycle.d.ts +0 -23
- package/dist/core/warning-lifecycle.d.ts.map +0 -1
- package/dist/core/warning-lifecycle.js +0 -6
- package/dist/core/warning-lifecycle.js.map +0 -1
- package/dist/core/warning-reasons.d.ts +0 -62
- package/dist/core/warning-reasons.d.ts.map +0 -1
- package/dist/core/warning-reasons.js +0 -121
- package/dist/core/warning-reasons.js.map +0 -1
- package/dist/core/warnings.d.ts +0 -145
- package/dist/core/warnings.d.ts.map +0 -1
- package/dist/core/warnings.js +0 -12
- package/dist/core/warnings.js.map +0 -1
- package/dist/runtime/cleanup-latch.d.ts +0 -27
- package/dist/runtime/cleanup-latch.d.ts.map +0 -1
- package/dist/runtime/cleanup-latch.js +0 -43
- package/dist/runtime/cleanup-latch.js.map +0 -1
- package/dist/runtime/initial-ready-advance.d.ts +0 -22
- package/dist/runtime/initial-ready-advance.d.ts.map +0 -1
- package/dist/runtime/initial-ready-advance.js +0 -39
- package/dist/runtime/initial-ready-advance.js.map +0 -1
- package/dist/runtime/initial-ready-fallback.d.ts +0 -12
- package/dist/runtime/initial-ready-fallback.d.ts.map +0 -1
- package/dist/runtime/initial-ready-fallback.js +0 -20
- package/dist/runtime/initial-ready-fallback.js.map +0 -1
- package/dist/runtime/initial-ready.d.ts +0 -49
- package/dist/runtime/initial-ready.d.ts.map +0 -1
- package/dist/runtime/initial-ready.js +0 -81
- package/dist/runtime/initial-ready.js.map +0 -1
- package/dist/runtime/reap-tree.d.ts +0 -62
- package/dist/runtime/reap-tree.d.ts.map +0 -1
- package/dist/runtime/reap-tree.js +0 -108
- package/dist/runtime/reap-tree.js.map +0 -1
- package/dist/runtime/session-base-types.d.ts +0 -36
- package/dist/runtime/session-base-types.d.ts.map +0 -1
- package/dist/runtime/session-base-types.js +0 -14
- package/dist/runtime/session-base-types.js.map +0 -1
- package/dist/runtime/session-base.d.ts +0 -48
- package/dist/runtime/session-base.d.ts.map +0 -1
- package/dist/runtime/session-base.js +0 -76
- package/dist/runtime/session-base.js.map +0 -1
- package/dist/runtime/session-commands.d.ts +0 -43
- package/dist/runtime/session-commands.d.ts.map +0 -1
- package/dist/runtime/session-commands.js +0 -52
- package/dist/runtime/session-commands.js.map +0 -1
- package/dist/runtime/session-exit.d.ts +0 -16
- package/dist/runtime/session-exit.d.ts.map +0 -1
- package/dist/runtime/session-exit.js +0 -32
- package/dist/runtime/session-exit.js.map +0 -1
- package/dist/runtime/session-image-attach.d.ts +0 -45
- package/dist/runtime/session-image-attach.d.ts.map +0 -1
- package/dist/runtime/session-image-attach.js +0 -82
- package/dist/runtime/session-image-attach.js.map +0 -1
- package/dist/runtime/session-lifecycle.d.ts +0 -61
- package/dist/runtime/session-lifecycle.d.ts.map +0 -1
- package/dist/runtime/session-lifecycle.js +0 -164
- package/dist/runtime/session-lifecycle.js.map +0 -1
- package/dist/runtime/session-loops.d.ts +0 -32
- package/dist/runtime/session-loops.d.ts.map +0 -1
- package/dist/runtime/session-loops.js +0 -62
- package/dist/runtime/session-loops.js.map +0 -1
- package/dist/runtime/session-readiness.d.ts +0 -18
- package/dist/runtime/session-readiness.d.ts.map +0 -1
- package/dist/runtime/session-readiness.js +0 -22
- package/dist/runtime/session-readiness.js.map +0 -1
- package/dist/runtime/session-reap.d.ts +0 -28
- package/dist/runtime/session-reap.d.ts.map +0 -1
- package/dist/runtime/session-reap.js +0 -51
- package/dist/runtime/session-reap.js.map +0 -1
- package/dist/runtime/session-resize.d.ts +0 -20
- package/dist/runtime/session-resize.d.ts.map +0 -1
- package/dist/runtime/session-resize.js +0 -26
- package/dist/runtime/session-resize.js.map +0 -1
- package/dist/runtime/session-shutdown-binding.d.ts +0 -30
- package/dist/runtime/session-shutdown-binding.d.ts.map +0 -1
- package/dist/runtime/session-shutdown-binding.js +0 -37
- package/dist/runtime/session-shutdown-binding.js.map +0 -1
- package/dist/runtime/session-shutdown.d.ts +0 -60
- package/dist/runtime/session-shutdown.d.ts.map +0 -1
- package/dist/runtime/session-shutdown.js +0 -140
- package/dist/runtime/session-shutdown.js.map +0 -1
- package/dist/runtime/session-status-wiring.d.ts +0 -38
- package/dist/runtime/session-status-wiring.d.ts.map +0 -1
- package/dist/runtime/session-status-wiring.js +0 -41
- package/dist/runtime/session-status-wiring.js.map +0 -1
- package/dist/runtime/session-status.d.ts +0 -7
- package/dist/runtime/session-status.d.ts.map +0 -1
- package/dist/runtime/session-status.js +0 -22
- package/dist/runtime/session-status.js.map +0 -1
- package/dist/runtime/shutdown-coordinator.d.ts +0 -57
- package/dist/runtime/shutdown-coordinator.d.ts.map +0 -1
- package/dist/runtime/shutdown-coordinator.js +0 -77
- package/dist/runtime/shutdown-coordinator.js.map +0 -1
- package/dist/runtime/startup-buffer.d.ts +0 -33
- package/dist/runtime/startup-buffer.d.ts.map +0 -1
- package/dist/runtime/startup-buffer.js +0 -53
- package/dist/runtime/startup-buffer.js.map +0 -1
- package/dist/runtime/startup-cleanup.d.ts +0 -43
- package/dist/runtime/startup-cleanup.d.ts.map +0 -1
- package/dist/runtime/startup-cleanup.js +0 -89
- package/dist/runtime/startup-cleanup.js.map +0 -1
- package/dist/runtime/startup.d.ts +0 -17
- package/dist/runtime/startup.d.ts.map +0 -1
- package/dist/runtime/startup.js +0 -47
- package/dist/runtime/startup.js.map +0 -1
- package/dist/runtime/status-emit.d.ts +0 -14
- package/dist/runtime/status-emit.d.ts.map +0 -1
- package/dist/runtime/status-emit.js +0 -15
- package/dist/runtime/status-emit.js.map +0 -1
- package/dist/runtime/teardown.d.ts +0 -15
- package/dist/runtime/teardown.d.ts.map +0 -1
- package/dist/runtime/teardown.js +0 -40
- package/dist/runtime/teardown.js.map +0 -1
- package/dist/runtime/terminate.d.ts +0 -22
- package/dist/runtime/terminate.d.ts.map +0 -1
- package/dist/runtime/terminate.js +0 -129
- package/dist/runtime/terminate.js.map +0 -1
- package/dist/runtime/update-lock.d.ts +0 -19
- package/dist/runtime/update-lock.d.ts.map +0 -1
- package/dist/runtime/update-lock.js +0 -183
- package/dist/runtime/update-lock.js.map +0 -1
- package/dist/runtime/update-once.d.ts +0 -40
- package/dist/runtime/update-once.d.ts.map +0 -1
- package/dist/runtime/update-once.js +0 -88
- package/dist/runtime/update-once.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,15 +7,76 @@ and doc tweaks are omitted. The format follows
|
|
|
7
7
|
[Keep a Changelog](https://keepachangelog.com); this project is pre-1.0, so
|
|
8
8
|
everything lands under **Unreleased** until the first tagged release.
|
|
9
9
|
|
|
10
|
-
Observable behavior is specified in `
|
|
11
|
-
back each entry are listed in
|
|
10
|
+
Observable behavior is specified in `prd/`; the conformance criteria that
|
|
11
|
+
back each entry are listed in `prd/14-conformance.md`.
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
## [0.1.2] - 2026-09-13
|
|
16
|
+
|
|
17
|
+
- Preserve the inherited PATH when an interactive login shell exits successfully
|
|
18
|
+
without returning the PATH probe.
|
|
19
|
+
|
|
20
|
+
- Keep permission dialogs blocking across cursor movement and hold slash-command
|
|
21
|
+
input and recovery Enter while a decision is pending; cancel expired picker submissions.
|
|
22
|
+
- Reject planted state-directory and generated-file links before permission changes or writes.
|
|
23
|
+
- Forward `highTrust` on start-or-resume, wait for model-discovery readiness,
|
|
24
|
+
and resolve session listings independently of agent-specific environment defaults.
|
|
25
|
+
- Align foreground interactive launches with login-shell agent detection.
|
|
26
|
+
- Correct trust and IPC-persistence documentation, include linked package references,
|
|
27
|
+
and revalidate mutable website sprites using fresh URLs for previously cached clients.
|
|
28
|
+
|
|
29
|
+
## [0.1.1]
|
|
30
|
+
|
|
31
|
+
First usable public release.
|
|
32
|
+
|
|
33
|
+
0.1.0 was published from a checkout that sat 18 commits behind `main`. It
|
|
34
|
+
shipped without the `resume`, `sessions`, `interactive` and `models`
|
|
35
|
+
subcommands, without `--high-trust`, without agent auto-detection, and with a
|
|
36
|
+
stale README. Nothing was wrong with 0.1.0's own code; it was simply built from
|
|
37
|
+
the wrong commit. 0.1.1 is the same work published from `main`, and is the
|
|
38
|
+
version to install.
|
|
16
39
|
|
|
17
40
|
### Added
|
|
18
41
|
|
|
42
|
+
- **The `elwood` CLI now explains and cleanly overrides its effective behavior.**
|
|
43
|
+
`--no-stream` and `--no-verbose` reverse inherited boolean defaults,
|
|
44
|
+
`--no-defaults` bypasses saved config and `ELWOOD_*` run settings, and
|
|
45
|
+
`elwood config effective` reports validated launch/output values with their
|
|
46
|
+
provenance without starting an agent. Routine warnings now reach stderr for
|
|
47
|
+
text and JSON runs, `--verbose` is a concise elapsed progress view, and
|
|
48
|
+
`--debug` retains full sanitized event detail. JSONL records include elapsed
|
|
49
|
+
timing plus tool-call correlation IDs when available. Help, validation errors,
|
|
50
|
+
resume/persona/ephemeral wording, and the new scripting guide now make defaults,
|
|
51
|
+
recovery actions, and lifecycle effects explicit. (§5.8/§12A,
|
|
52
|
+
C-API-48/C-CLI-02/03/08/10/11/14/19/20)
|
|
53
|
+
- **The `elwood` CLI can now mirror the live agent TUI in the current terminal.**
|
|
54
|
+
`--head` sends the agent's ordered raw VT/ANSI stream to terminal stderr while
|
|
55
|
+
preserving the final text or JSON result on stdout, including cursor-addressed
|
|
56
|
+
redraws, alternate screens, colors, spinners, and OSC title changes. It follows
|
|
57
|
+
terminal resizes, restores terminal modes on every handled outcome, and treats
|
|
58
|
+
Ctrl-C like the existing interrupt lifecycle. The display is intentionally
|
|
59
|
+
view-only and cannot be combined with `--stream`, `--verbose`, or JSONL.
|
|
60
|
+
Pending terminal writes are bounded by bytes and frame count, so a stalled
|
|
61
|
+
terminal becomes a clean run failure instead of an unbounded memory queue.
|
|
62
|
+
An argument-free `elwood` invocation now prints help instead of waiting for a
|
|
63
|
+
prompt. (§12A.1/§12A.6, C-CLI-02/C-CLI-18)
|
|
64
|
+
- **The `elwood` CLI gained `sessions`, `resume`, `interactive`, and `models`
|
|
65
|
+
commands.** `elwood sessions` lists Elwood-owned session records (id, agent,
|
|
66
|
+
workspace, `createdAt`/`lastUsedAt`, `resumable`, socket-presence `live`) as an
|
|
67
|
+
aligned table or one `{"type":"sessions"}` JSON document without starting an
|
|
68
|
+
agent. `elwood resume <id> [prompt...]` is a parse-time rewrite of
|
|
69
|
+
`run --resume <id>`. `elwood interactive [id]` runs the real `claude`/`codex`
|
|
70
|
+
TUI in the foreground with Elwood's resolved agent, model, effort, workspace,
|
|
71
|
+
and posture passed as the agent's own flags — no PTY, automation, observation,
|
|
72
|
+
or state — resuming a stored session's own conversation when given an id.
|
|
73
|
+
`elwood models` starts the agent briefly, reads its model picker through the
|
|
74
|
+
public `listModels` operation, tears the session down, and prints a table or a
|
|
75
|
+
`{"type":"models"}` document of `AgentModelOption` rows. The adapters' launch
|
|
76
|
+
flag mapping now lives in shared `claudeLaunchArguments`/`codexLaunchArguments`
|
|
77
|
+
builders so interactive and headless launches cannot drift. (§12A.7–§12A.10,
|
|
78
|
+
C-CLI-23 through C-CLI-26)
|
|
79
|
+
|
|
19
80
|
- Claude Code and Codex CLI adapters that run the real interactive CLI in a
|
|
20
81
|
PTY, launched through the user's login shell, and observe it through a
|
|
21
82
|
headless xterm.js model. macOS only; Claude Code 2.1.144+ and Codex CLI
|
|
@@ -86,10 +147,27 @@ First public release.
|
|
|
86
147
|
`agent`, a new run tries `claude` then `codex` in the login shell and fails
|
|
87
148
|
with `no_agent_found` (status 2) when neither resolves. Error records
|
|
88
149
|
emitted before an agent was selected report `agent: null`.
|
|
150
|
+
- An agent-neutral "never ask for permissions" switch: `--high-trust` /
|
|
151
|
+
`--no-high-trust`, `ELWOOD_HIGH_TRUST`, the `highTrust` config key, and
|
|
152
|
+
`highTrust?: boolean` on both session classes and both resume functions. It
|
|
153
|
+
expands to Claude `permissionMode: "bypassPermissions"` or Codex
|
|
154
|
+
`sandbox: "danger-full-access"` with `approvalPolicy: "never"` before the
|
|
155
|
+
posture is persisted and the process spawned. Combining it with an explicit
|
|
156
|
+
per-agent posture is rejected: the CLI names both sources as a usage error and
|
|
157
|
+
the library throws `claude_high_trust_conflict` / `codex_high_trust_conflict`.
|
|
158
|
+
`config effective` reports `highTrust` and attributes the posture it decided
|
|
159
|
+
to the high-trust source. Claude's one-time "running in Bypass Permissions
|
|
160
|
+
mode" acceptance dialog is an allowlisted trust prompt answered under
|
|
161
|
+
`autotrust` (`startup_prompt` label `bypass_permissions`).
|
|
89
162
|
|
|
90
163
|
### Changed
|
|
91
164
|
|
|
92
165
|
- Published as `@with-logic/elwood` under the MIT license.
|
|
166
|
+
- The published package runs no install scripts. `dist/` is built before publish
|
|
167
|
+
(`prepublishOnly`) and shipped in the tarball, so `npm install -g
|
|
168
|
+
@with-logic/elwood` needs no build step and raises no npm allow-scripts
|
|
169
|
+
prompt for Elwood itself. Working from a checkout now requires an explicit
|
|
170
|
+
`npm run build` before `npm link`.
|
|
93
171
|
- Warnings are live-only events. Nothing is persisted, replayed, or counted;
|
|
94
172
|
there is no `session.warnings` property.
|
|
95
173
|
- The persisted session record holds only schema version, `elwoodSessionId`,
|
|
@@ -109,6 +187,107 @@ First public release.
|
|
|
109
187
|
|
|
110
188
|
### Fixed
|
|
111
189
|
|
|
190
|
+
- **Headed runs no longer suspend themselves or leave the invoking terminal unusable.**
|
|
191
|
+
Interactive version and capability probes now run in an isolated process session,
|
|
192
|
+
preventing their shell-managed commands from stealing the real terminal's foreground
|
|
193
|
+
process group. `--head` can therefore restore cooked input and display modes before
|
|
194
|
+
returning to an interactive shell, without a cleanup-time `SIGTTOU` stop or leaked
|
|
195
|
+
terminal-protocol replies. Its defensive restore now also pops the Kitty keyboard
|
|
196
|
+
enhancement mode used by current agent TUIs, so subsequent shell keystrokes remain
|
|
197
|
+
ordinary text instead of encoded key-event sequences. (§12A.6, C-CLI-18)
|
|
198
|
+
- **Codex's startup update dialog no longer wedges headed or headless runs.**
|
|
199
|
+
Codex 0.153.x can paint its numbered update menu before its input loop accepts
|
|
200
|
+
the first safe Skip hotkey. Elwood now retries that hotkey for a bounded interval
|
|
201
|
+
only after revalidating the complete current update dialog, and the CLI no longer
|
|
202
|
+
mistakes the responder-owned dialog's replayed blocking edge for a human prompt.
|
|
203
|
+
A persistent or unanswerable update dialog now fails and cleans up boundedly even
|
|
204
|
+
without `--timeout`; no retry can escape into the composer or another dialog.
|
|
205
|
+
(§5.5/§12A.2, C-CODEX-12/C-CLI-05)
|
|
206
|
+
- **Headless turns now survive real-CLI startup, resume, and teardown races.**
|
|
207
|
+
Codex 0.153.3 can accept the 10-second fallback paste into its cold-start
|
|
208
|
+
placeholder, swallow it during a later boot repaint, and appear to finish an
|
|
209
|
+
empty turn; ergonomic turns now require positive submission evidence, replay
|
|
210
|
+
an unaccepted prompt at most twice, and fail explicitly instead of reporting
|
|
211
|
+
false success. A resumed Claude turn no longer treats its stale composer as
|
|
212
|
+
an immediate end before real work paints. The headless owner also ignores
|
|
213
|
+
transient attention from trust prompts it is already authorized to answer,
|
|
214
|
+
and macOS teardown retries the short-lived post-exit `EPERM` process-group
|
|
215
|
+
window instead of surfacing `cleanup_failed`. (§5.3/§5.8/§12A, C-API-48,
|
|
216
|
+
C-TURN-03, C-CLI-05/09)
|
|
217
|
+
- **Claude model switches now complete through model/effort cache warnings.**
|
|
218
|
+
Claude 2.1.258 may interpose `Switch model?` or `Change effort level?` after
|
|
219
|
+
Elwood applies a session-only picker choice; Elwood previously treated that
|
|
220
|
+
dialog as successful picker closure and returned while the session was still
|
|
221
|
+
waiting. Elwood now recognizes numbered and unnumbered variants, navigates
|
|
222
|
+
from the rendered cursor to the affirmative action, confirms the built-in
|
|
223
|
+
cache warning, and waits for the idle composer before resolving `setModel`.
|
|
224
|
+
Recognition is scoped to the bottom-most live dialog and revalidated before
|
|
225
|
+
Enter, so transcript text cannot spoof a cache warning or composer. Hook-requested
|
|
226
|
+
`PreModelSwitch` confirmations remain blocking and human-controlled. (§5.3,
|
|
227
|
+
C-API-24/C-ATTN-04)
|
|
228
|
+
- **Concurrent Codex starts no longer race global npm updates.** Codex's live
|
|
229
|
+
update dialog is now input-blocking until its rendered frame clears, so queued
|
|
230
|
+
persona/caller input cannot press Enter on the default "Update now" action when
|
|
231
|
+
a prompt layout is partial or drifts. Elwood still skips every recognized safe
|
|
232
|
+
option automatically. Separately, `autoupdate` now holds an atomic per-user,
|
|
233
|
+
per-adapter cross-process lease around the global updater; another Elwood host
|
|
234
|
+
waits asynchronously, skips its duplicate install, and validates the resulting
|
|
235
|
+
binary. The lease uses a stable account cache across differing `TMPDIR` values,
|
|
236
|
+
records its owner/generation so live or successor updates cannot be evicted,
|
|
237
|
+
and recovers dead owners safely. Failed partial installs also invalidate version
|
|
238
|
+
and capability caches before validation. Coal Harbor and other consumers need
|
|
239
|
+
no API or configuration changes. (§5.5/§9.2, C-CODEX-12/C-PERF-04/C-LIFE-09)
|
|
240
|
+
- **Claude's current cursor-style workspace trust prompt is auto-approved again.**
|
|
241
|
+
Claude 2.1.252 replaced the older numbered, affirmative-first layout with an
|
|
242
|
+
unnumbered menu that defaults to `No, exit`; the responder recognized its header
|
|
243
|
+
but found no numbered affirmative, wrote nothing, and the readiness fallback
|
|
244
|
+
could report `ready` over the still-visible gate. Elwood now supports both
|
|
245
|
+
layouts, navigates cursor menus to the affirmative before Enter, keeps their
|
|
246
|
+
entire option region out of header recognition, and verifies the real trust
|
|
247
|
+
screen clears before readiness. The gate remains independent of Claude's
|
|
248
|
+
`bypassPermissions` / `--dangerously-skip-permissions` policy. (§5.1/§5.3,
|
|
249
|
+
C-CLAUDE-10/C-CLAUDE-14/C-E2E-09)
|
|
250
|
+
- **Modern Codex final replies now carry their text on `assistant_message`
|
|
251
|
+
activity.** Codex 0.149.1 writes replies as assistant `message` response items
|
|
252
|
+
with `phase: "final_answer"` and `content[].output_text`; Elwood previously
|
|
253
|
+
expected a plain string (or a legacy `agent_message` duplicate), so consumers
|
|
254
|
+
received a textless event and could silently discard the reply. Elwood now
|
|
255
|
+
extracts the full final-answer text—including `@mentions`—while keeping
|
|
256
|
+
commentary and user/developer transcript records out of assistant activity.
|
|
257
|
+
(§5.4/§7A.4, C-API-12/C-CODEX-16)
|
|
258
|
+
- **Claude's `Not logged in · Run /login` sign-out is now detected mid-session.**
|
|
259
|
+
A ready Claude session that gets logged out mid-run renders `Not logged in`
|
|
260
|
+
(paired with a `run /login` hint) — a different wording than the `Login expired`
|
|
261
|
+
/ `Session expired` / `OAuth token revoked` banners Elwood already recognized.
|
|
262
|
+
That form previously went undetected mid-session, so no `login_expired` warning
|
|
263
|
+
fired. It now surfaces the same content-free `login_expired` warning (+ `warning`
|
|
264
|
+
activity), leaving the session alive to recover via `session.login()`. (§5.3/§5.7,
|
|
265
|
+
C-CLAUDE-17/18)
|
|
266
|
+
- **Codex's in-TUI update prompt is now re-skipped on the restart loop.** Elwood
|
|
267
|
+
always skips Codex's interactive "update available" prompt (it never selects
|
|
268
|
+
"Update now"; the real update is the `autoupdate` preflight). The skip was latched
|
|
269
|
+
once per session, so if Codex restarted and the SAME update screen reappeared — the
|
|
270
|
+
update did not take — the session got stuck looping on it. The skip is now
|
|
271
|
+
edge-triggered: it re-arms when the update screen leaves the frame and re-skips the
|
|
272
|
+
reappearance. (§5.5, C-CODEX-12)
|
|
273
|
+
- **Autoupdate is now best-effort and never fails a start on its own.** When
|
|
274
|
+
`autoupdate: true` and `claude update` / `codex update` fails (a flaky network,
|
|
275
|
+
a partial native-installer download, contention during a fleet launch), Elwood no
|
|
276
|
+
longer rejects `startClaude`/`startCodex` with `claude_update_failed` /
|
|
277
|
+
`codex_update_failed`. If the INSTALLED CLI still meets the minimum version, the
|
|
278
|
+
session starts from it and Elwood emits a live `agent_update_failed` warning (safe
|
|
279
|
+
diagnostics only: installed version, an allowlisted error code, bounded stderr).
|
|
280
|
+
Startup fails only when the installed version is actually below the minimum. The
|
|
281
|
+
warning is zero-burden — a consumer that does not subscribe to `warning` is
|
|
282
|
+
unaffected and the session still reaches `ready`. (§9.2, C-LIFE-11)
|
|
283
|
+
- **A failed shared update no longer poisons the process.** A once-per-process
|
|
284
|
+
update/probe cache that rejected was retained and replayed, so one failed
|
|
285
|
+
`claude update` could reject every concurrent roster start AND every later start
|
|
286
|
+
until the process restarted. Cached probes (autoupdate, version read, capability
|
|
287
|
+
detection) now never retain a rejected result: concurrent callers share one attempt
|
|
288
|
+
and a later caller re-attempts rather than inheriting the failure. (§9.2,
|
|
289
|
+
C-LIFE-09/11)
|
|
290
|
+
|
|
112
291
|
- Trust, update, and model-switch dialogs on current Claude and Codex releases
|
|
113
292
|
are recognized and answered; unrecognized dialogs block instead of guessing.
|
|
114
293
|
- Hook payloads are measured identically on both sides of the bridge, and
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thanks for helping with Elwood. This project is spec-first: `prd/` is the
|
|
4
|
+
contract for observable behavior, and `CLAUDE.md` (also linked as `AGENTS.md`)
|
|
5
|
+
is the implementation guide for anyone, human or AI, changing code. Read both
|
|
6
|
+
before opening a pull request.
|
|
7
|
+
|
|
8
|
+
## Requirements
|
|
9
|
+
|
|
10
|
+
- macOS (the only supported platform for v0.1; the unit suite also runs on
|
|
11
|
+
Linux).
|
|
12
|
+
- Node.js 24 or newer. `.node-version` pins the major version for version
|
|
13
|
+
managers.
|
|
14
|
+
- For end-to-end tests: an installed and authenticated Claude Code and/or
|
|
15
|
+
Codex CLI.
|
|
16
|
+
|
|
17
|
+
## Setup and checks
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
npm install
|
|
21
|
+
npm run check
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`npm run check` is the merge gate. It runs, in order:
|
|
25
|
+
|
|
26
|
+
1. `npm run build` (emits `dist/`, which the CLI tests and `npm link` need),
|
|
27
|
+
2. `tsc --noEmit`,
|
|
28
|
+
3. `biome check .`,
|
|
29
|
+
4. `scripts/check-lines.ts` (every code file at or below 200 lines),
|
|
30
|
+
5. `vitest run --coverage` with 100% line, branch, function, and statement
|
|
31
|
+
coverage.
|
|
32
|
+
|
|
33
|
+
Useful narrower commands:
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
npm run typecheck
|
|
37
|
+
npm run lint # or npm run lint:fix
|
|
38
|
+
npx vitest run tests/unit/some-file.test.ts
|
|
39
|
+
npm run test:e2e # real Claude/Codex sessions; uses model quota
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The e2e suite skips any test whose agent CLI is not installed. It starts real
|
|
43
|
+
sessions in temporary directories and answers workspace trust prompts for those
|
|
44
|
+
directories automatically.
|
|
45
|
+
|
|
46
|
+
## Making a change
|
|
47
|
+
|
|
48
|
+
1. If the change is observable by a user, an API consumer, or a second
|
|
49
|
+
implementation (commands, flags, events, output shapes, config, state,
|
|
50
|
+
errors, defaults, limits, security guarantees, conformance criteria), update
|
|
51
|
+
`prd/` first.
|
|
52
|
+
2. Implement the smallest matching slice in `src/`.
|
|
53
|
+
3. Add or update tests in `tests/`. Conformance tests name their criterion in
|
|
54
|
+
the title, for example `C-CLI-03 resume rejects --cwd`.
|
|
55
|
+
4. If the change is consumer-facing, add a bullet to `CHANGELOG.md` under
|
|
56
|
+
`## [Unreleased]`.
|
|
57
|
+
5. If the real Claude or Codex CLI taught you something a unit test could not,
|
|
58
|
+
record it in `docs/cli-behavior.md`.
|
|
59
|
+
6. Run `npm run check`.
|
|
60
|
+
|
|
61
|
+
## Pull requests
|
|
62
|
+
|
|
63
|
+
- Keep pull requests small and focused on one change.
|
|
64
|
+
- Do not include secrets, access tokens, credentials, or private data in
|
|
65
|
+
issues, tests, logs, screenshots, or fixtures.
|
|
66
|
+
- Describe what changed and why. If the change touches readiness, turn
|
|
67
|
+
detection, trust prompts, resume, or input paths, say how you verified it
|
|
68
|
+
against the real CLI.
|
|
69
|
+
|
|
70
|
+
## Local test apps
|
|
71
|
+
|
|
72
|
+
Two maintainer tools exercise the library interactively:
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
# Terminal smoke app, Claude by default.
|
|
76
|
+
npm run dev:app -- --cwd /path/to/project
|
|
77
|
+
npm run dev:app -- --agent codex --cwd /path/to/project
|
|
78
|
+
npm run dev:app -- --cwd /path/to/project --resume <elwoodSessionId>
|
|
79
|
+
|
|
80
|
+
# Browser debugger on http://localhost:4317 with an xterm.js mirror and a
|
|
81
|
+
# structured event inspector.
|
|
82
|
+
npm run dev:web
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
They live under `dev/`, outside `src/`, and are not part of the published
|
|
86
|
+
package. They are development utilities, so they are typechecked and linted
|
|
87
|
+
like everything else but are excluded from the coverage gate.
|
|
88
|
+
|
|
89
|
+
## Repository map
|
|
90
|
+
|
|
91
|
+
| Path | Purpose |
|
|
92
|
+
|---|---|
|
|
93
|
+
| `prd/` | Source of truth for behavior and conformance criteria (one file per section). |
|
|
94
|
+
| `src/index.ts` | Public package exports. |
|
|
95
|
+
| `src/core/` | Adapter-neutral session machinery: control queue, status detection, turns, loops, images, warnings. |
|
|
96
|
+
| `src/runtime/` | Shared session base class, startup checks, teardown, and test seams. |
|
|
97
|
+
| `src/claude/`, `src/codex/` | The two adapters: launch, hooks, transcripts, validation. |
|
|
98
|
+
| `src/cli/` | The `elwood` executable. |
|
|
99
|
+
| `src/state/` | Session records and private sidecar files. |
|
|
100
|
+
| `src/bridge/` | Local hook bridge server and generated bridge script. |
|
|
101
|
+
| `src/terminal/`, `src/pty/` | Headless xterm.js model and node-pty adapter. |
|
|
102
|
+
| `dev/` | Local terminal and browser dev apps (not published, not coverage-gated). |
|
|
103
|
+
| `tests/` | Unit, conformance, and e2e suites. |
|
|
104
|
+
| `docs/` | Guides and the record of empirically learned CLI behavior. |
|
package/LICENSE
CHANGED