@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
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/** Builds a live CodexSessionApi from a record + runtime. Implements PRD §5.5, §5.6, §5.7, §7A, §8, §9. */
|
|
2
|
-
import * as activity from "../core/activity.js";
|
|
3
|
-
import { AttentionWatcher } from "../core/attention.js";
|
|
4
|
-
import { defaultTerminalSize } from "../core/defaults.js";
|
|
5
|
-
import { causeDetails, elwoodError } from "../core/errors.js";
|
|
6
|
-
import { observeRenderedFrame } from "../core/rendered-observers.js";
|
|
7
|
-
import { createStartupWarningGate, deliverFrameWarnings } from "../core/startup-frame.js";
|
|
8
|
-
import { emitSettledStartupOutcomes } from "../core/startup-write.js";
|
|
9
|
-
import { TerminalReplayBuffer } from "../core/terminal-replay.js";
|
|
10
|
-
import { TurnStateWatcher } from "../core/turn-state.js";
|
|
11
|
-
import { TypedEmitter } from "../events/emitter.js";
|
|
12
|
-
import { loadRuntimeLoopDefinitions as loadLoops } from "../runtime/loop-restore.js";
|
|
13
|
-
import { finishSessionExit } from "../runtime/session-exit.js";
|
|
14
|
-
import { createReadinessGate } from "../runtime/session-readiness.js";
|
|
15
|
-
import { assertStartupThenRelease, createStartupBuffer } from "../runtime/startup-buffer.js";
|
|
16
|
-
import { cleanupStartupResources, guardStartupRegion } from "../runtime/startup-cleanup.js";
|
|
17
|
-
import { secureMkdir } from "../state/files.js";
|
|
18
|
-
import { writeSessionRecord } from "../state/store.js";
|
|
19
|
-
import { attachPtyTerminal } from "../terminal/headless.js";
|
|
20
|
-
import { spawnCodexPty } from "./pty.js";
|
|
21
|
-
import { codexScreenFactTableForTrustPolicy } from "./screen-table.js";
|
|
22
|
-
import { currentCodexHookBridgeFactory } from "./session-bridge.js";
|
|
23
|
-
import { dispatchHook, registerInitialHooks } from "./session-hooks.js";
|
|
24
|
-
import { CodexSessionImpl } from "./session-instance.js";
|
|
25
|
-
import { writeCodexRuntimeFiles } from "./session-runtime.js";
|
|
26
|
-
import * as sessionTranscript from "./session-transcript.js";
|
|
27
|
-
import { CodexStartupPromptResponder } from "./startup-prompts.js";
|
|
28
|
-
export async function buildCodexSession(input) {
|
|
29
|
-
const { record, stateDir, runtime, options, resumed, preflightWarning } = input;
|
|
30
|
-
secureMkdir(runtime.sessionDir);
|
|
31
|
-
writeSessionRecord(record, runtime.sessionDir);
|
|
32
|
-
const loopDefinitions = resumed ? loadLoops(stateDir, record.elwoodSessionId) : [];
|
|
33
|
-
writeCodexRuntimeFiles(runtime);
|
|
34
|
-
const emitter = new TypedEmitter();
|
|
35
|
-
registerInitialHooks(emitter, options.hooks);
|
|
36
|
-
let session;
|
|
37
|
-
// ALL startup-region warnings — MCP/prompt-write (frame path) AND transcript
|
|
38
|
-
// drop/read-error diagnostics — route through ONE gate that buffers anything emitted
|
|
39
|
-
// before startCodex resolves and flushes it on a deferred macrotask after return, so
|
|
40
|
-
// every source stays observable without late-subscriber replay (C-API-14).
|
|
41
|
-
const warnGate = createStartupWarningGate({
|
|
42
|
-
emitWarnings: (w) => deliverFrameWarnings(session, w),
|
|
43
|
-
});
|
|
44
|
-
const wired = sessionTranscript.createCodexTranscriptWatcher(record.elwoodSessionId, emitter, () => warnGate);
|
|
45
|
-
const { watcher: transcriptWatcher, flushPendingWarnings, finishSafely } = wired;
|
|
46
|
-
const bridge = currentCodexHookBridgeFactory()(runtime.socketPath, runtime.bridgeToken, record.elwoodSessionId, async (hook) => dispatchHook(hook, emitter, options, record, session), (event) => {
|
|
47
|
-
const hookError = { elwoodSessionId: record.elwoodSessionId, ...event };
|
|
48
|
-
emitter.emit("hookError", hookError);
|
|
49
|
-
emitter.emit("activity", activity.activityFromHookError("codex", hookError));
|
|
50
|
-
});
|
|
51
|
-
try {
|
|
52
|
-
await bridge.start();
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
// Best-effort shut down a partially-started bridge so its listener/socket is not
|
|
56
|
-
// leaked; contained so the original bridge-start error is the one that rejects.
|
|
57
|
-
await bridge.stop().catch(() => undefined);
|
|
58
|
-
throw elwoodError("hook_bridge_failed", "Could not start Elwood hook bridge.", {
|
|
59
|
-
...causeDetails(error),
|
|
60
|
-
socketPath: runtime.socketPath,
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
const pty = await spawnCodexPty(record, runtime.bridgeScriptPath, options).catch(async (error) => {
|
|
64
|
-
await cleanupStartupResources({ bridge });
|
|
65
|
-
throw error;
|
|
66
|
-
});
|
|
67
|
-
const startupOutput = createStartupBuffer();
|
|
68
|
-
let startupExit;
|
|
69
|
-
const terminalReplay = new TerminalReplayBuffer(record.elwoodSessionId);
|
|
70
|
-
terminalReplay.captureStartupAttention(emitter);
|
|
71
|
-
const { ready, observeReadinessFrame } = createReadinessGate(() => {
|
|
72
|
-
turnWatcher.arm(resumed); // resume arms in settling mode (no phantom replay turn)
|
|
73
|
-
session?.completeInitialReady(); // shared anti-starvation ready boundary (C-API-42)
|
|
74
|
-
}, resumed);
|
|
75
|
-
const autotrust = options.autotrust ?? false;
|
|
76
|
-
const observers = {
|
|
77
|
-
turn: new TurnStateWatcher(),
|
|
78
|
-
attention: new AttentionWatcher(),
|
|
79
|
-
table: codexScreenFactTableForTrustPolicy(autotrust),
|
|
80
|
-
agent: "codex",
|
|
81
|
-
elwoodSessionId: record.elwoodSessionId,
|
|
82
|
-
emitActivity: (event) => emitter.emit("activity", event),
|
|
83
|
-
};
|
|
84
|
-
const turnWatcher = observers.turn;
|
|
85
|
-
const promptResponder = new CodexStartupPromptResponder(record.elwoodSessionId, autotrust);
|
|
86
|
-
const terminal = attachPtyTerminal(options.initialSize ?? defaultTerminalSize, pty, (data, renderedTerminal) => {
|
|
87
|
-
startupOutput.push(data);
|
|
88
|
-
terminalReplay.push(data);
|
|
89
|
-
// One snapshot per render: reused for prompt automation, readiness, detection.
|
|
90
|
-
const frame = { text: renderedTerminal.snapshot().text, title: renderedTerminal.title };
|
|
91
|
-
// The write RETURNS its completion: the responder settles only after it fulfills;
|
|
92
|
-
// a rejected write retries + warns (C-CODEX-17). Warning delivery is CONTAINED on
|
|
93
|
-
// the frame path so a throwing listener never skips readiness or terminal:data.
|
|
94
|
-
const result = promptResponder.handle(frame.text, (i) => renderedTerminal.sendInput(i), () => renderedTerminal.snapshot().text);
|
|
95
|
-
warnGate.emitWarnings(result.warnings);
|
|
96
|
-
emitSettledStartupOutcomes(emitter, "codex", record.elwoodSessionId, result.outcomes, {
|
|
97
|
-
emitWarnings: (w) => warnGate.emitWarnings(w),
|
|
98
|
-
});
|
|
99
|
-
ready.armDeadline(); // hook/deadline readiness; resume composer also marks (C-API-28)
|
|
100
|
-
const reading = observeRenderedFrame(observers, frame, session);
|
|
101
|
-
observeReadinessFrame(reading.facts); // blocking gate + resume-composer mark
|
|
102
|
-
emitter.emit("terminal:data", { elwoodSessionId: record.elwoodSessionId, data });
|
|
103
|
-
});
|
|
104
|
-
session = new CodexSessionImpl(record, stateDir, runtime, pty, terminal, bridge, emitter, terminalReplay, transcriptWatcher, loopDefinitions);
|
|
105
|
-
const id = record.elwoodSessionId;
|
|
106
|
-
const activeSession = session;
|
|
107
|
-
const beforeCleanup = () => activeSession.pauseLoopsForStartupCleanup(ready.cancel);
|
|
108
|
-
// ONE guarded region for every live-resource step after the session exists (readiness
|
|
109
|
-
// wiring/replay, exit registration, startup assertion/evidence): a failure in ANY tears
|
|
110
|
-
// down the now-live PTY/bridge/terminal/watchers before rethrowing (§9.1/§9.4). Mirrors Claude.
|
|
111
|
-
await guardStartupRegion(async () => {
|
|
112
|
-
activeSession.startLoops();
|
|
113
|
-
flushPendingWarnings(); // inside the guard: a throwing sink tears down, not leaks (§5.4/§9.4)
|
|
114
|
-
// The `SessionStart` hook releases the first queued message (C-API-28).
|
|
115
|
-
activeSession.setInitialReadyHook(() => ready.mark());
|
|
116
|
-
ready.replay();
|
|
117
|
-
// C-LIFE-10: the FINAL flush runs behind finishSafely's boundary, so a throwing
|
|
118
|
-
// final-flush listener can't skip terminal:exit; submitExit always reaps last.
|
|
119
|
-
pty.onExit((exit) => {
|
|
120
|
-
startupExit = exit;
|
|
121
|
-
ready.cancel();
|
|
122
|
-
const emitExit = () => {
|
|
123
|
-
emitter.emit("terminal:exit", { elwoodSessionId: id, ...exit });
|
|
124
|
-
emitter.emit("activity", activity.activityFromTerminalExit("codex", id, exit.exitCode));
|
|
125
|
-
};
|
|
126
|
-
finishSessionExit(() => finishSafely(emitExit), () => activeSession.submitExit());
|
|
127
|
-
});
|
|
128
|
-
// Release the startup buffer once the check settles (no lingering transcript, §9.4).
|
|
129
|
-
await assertStartupThenRelease("codex", startupOutput, () => startupExit);
|
|
130
|
-
activeSession.submitEvidence("startup_usable");
|
|
131
|
-
}, { before: beforeCleanup, pty, bridge, terminal, after: () => transcriptWatcher.stop() });
|
|
132
|
-
// Buffer the preflight/version warning through the same gate, then open it: buffered
|
|
133
|
-
// startup warnings (MCP/transcript) AND the preflight all flush on one deferred
|
|
134
|
-
// macrotask after return, so a caller subscribing synchronously observes them all.
|
|
135
|
-
if (preflightWarning !== undefined)
|
|
136
|
-
warnGate.emitWarnings([preflightEvent(id, preflightWarning)]);
|
|
137
|
-
warnGate.openAfterReturn();
|
|
138
|
-
terminalReplay.releaseStartupAttentionAfterReturn();
|
|
139
|
-
return session;
|
|
140
|
-
}
|
|
141
|
-
function preflightEvent(elwoodSessionId, warning) {
|
|
142
|
-
return { elwoodSessionId, ...warning };
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=session-build.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-build.js","sourceRoot":"","sources":["../../src/codex/session-build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex session runtime cleanup helpers.
|
|
3
|
-
* Implements PRD §9.3.
|
|
4
|
-
*/
|
|
5
|
-
import type { ElwoodTerminal } from "../terminal/headless.ts";
|
|
6
|
-
import type { CodexTranscriptWatcher } from "./transcript.ts";
|
|
7
|
-
type CodexRuntimeBridge = {
|
|
8
|
-
readonly stop: () => Promise<void>;
|
|
9
|
-
};
|
|
10
|
-
export declare function stopCodexRuntime(bridge: CodexRuntimeBridge, transcriptWatcher: CodexTranscriptWatcher | undefined, terminal: ElwoodTerminal): Promise<void>;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=session-cleanup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-cleanup.d.ts","sourceRoot":"","sources":["../../src/codex/session-cleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,sBAAsB,GAAG,SAAS,EACrD,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex session runtime cleanup helpers.
|
|
3
|
-
* Implements PRD §9.3.
|
|
4
|
-
*/
|
|
5
|
-
import { runCleanupSteps } from "../runtime/teardown.js";
|
|
6
|
-
export function stopCodexRuntime(bridge, transcriptWatcher, terminal) {
|
|
7
|
-
// Every step runs even if an earlier one throws, so a failing bridge stop still
|
|
8
|
-
// finishes the transcript watcher and disposes the terminal (no leak; PRD §9.4).
|
|
9
|
-
return runCleanupSteps([
|
|
10
|
-
() => bridge.stop(),
|
|
11
|
-
() => transcriptWatcher?.finish(),
|
|
12
|
-
() => terminal.dispose(),
|
|
13
|
-
]);
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=session-cleanup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-cleanup.js","sourceRoot":"","sources":["../../src/codex/session-cleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,MAAM,UAAU,gBAAgB,CAC9B,MAA0B,EAC1B,iBAAqD,EACrD,QAAwB;IAExB,gFAAgF;IAChF,iFAAiF;IACjF,OAAO,eAAe,CAAC;QACrB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;QACnB,GAAG,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE;QACjC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;KACzB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registers and dispatches Codex hook handlers on a session emitter.
|
|
3
|
-
* Implements PRD §5.7, §7A.2 (tool-keyed `PreToolUse` handlers; the `unknown`
|
|
4
|
-
* handler receives only `mcp__*` / `unknown:*` tools), and §7A.3 (an unblocked
|
|
5
|
-
* `Stop` reads the committed turn with a bounded per-pass scan before readiness).
|
|
6
|
-
*/
|
|
7
|
-
import type { TypedEmitter } from "../events/emitter.ts";
|
|
8
|
-
import type { SessionRecord } from "../state/store.ts";
|
|
9
|
-
import type { CodexSessionImpl } from "./session-instance.ts";
|
|
10
|
-
import type { CodexEventMap, StartCodexOptions } from "./session-types.ts";
|
|
11
|
-
export declare function registerInitialHooks(emitter: TypedEmitter<CodexEventMap>, handlers: StartCodexOptions["hooks"]): void;
|
|
12
|
-
export declare function dispatchHook(input: unknown, emitter: TypedEmitter<CodexEventMap>, options: StartCodexOptions, record: SessionRecord, session?: CodexSessionImpl): Promise<import("../bridge/types.ts").BridgeProcessResult>;
|
|
13
|
-
//# sourceMappingURL=session-hooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-hooks.d.ts","sourceRoot":"","sources":["../../src/codex/session-hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAEV,aAAa,EAEb,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAG5B,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,EACpC,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,GACnC,IAAI,CAKN;AAiBD,wBAAsB,YAAY,CAChC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,EACpC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,gBAAgB,6DAmC3B"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registers and dispatches Codex hook handlers on a session emitter.
|
|
3
|
-
* Implements PRD §5.7, §7A.2 (tool-keyed `PreToolUse` handlers; the `unknown`
|
|
4
|
-
* handler receives only `mcp__*` / `unknown:*` tools), and §7A.3 (an unblocked
|
|
5
|
-
* `Stop` reads the committed turn with a bounded per-pass scan before readiness).
|
|
6
|
-
*/
|
|
7
|
-
import * as activity from "../core/activity.js";
|
|
8
|
-
import { isRecord } from "../core/predicates.js";
|
|
9
|
-
import { isCodexBlock, requestCodexHook } from "./hook-dispatch.js";
|
|
10
|
-
import { serializeCodexHookResult } from "./serialize.js";
|
|
11
|
-
import { isKnownCommandTool, normalizeCodexHookEvent } from "./validate.js";
|
|
12
|
-
export function registerInitialHooks(emitter, handlers) {
|
|
13
|
-
if (!handlers)
|
|
14
|
-
return;
|
|
15
|
-
for (const [name, handler] of Object.entries(handlers)) {
|
|
16
|
-
emitter.listen(`hook:${name}`, hookHandler(name, handler));
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function hookHandler(name, handler) {
|
|
20
|
-
if (typeof handler === "function")
|
|
21
|
-
return handler;
|
|
22
|
-
if (name !== "PreToolUse" || !isRecord(handler))
|
|
23
|
-
return () => undefined;
|
|
24
|
-
return ((event) => {
|
|
25
|
-
const toolName = isRecord(event) && typeof event["tool_name"] === "string" ? event["tool_name"] : "";
|
|
26
|
-
// The `unknown` handler is typed for `mcp__*` / `unknown:*` tools only, so a known
|
|
27
|
-
// command tool with no per-tool handler resolves to no decision rather than being
|
|
28
|
-
// routed into a handler whose parameter type it does not satisfy (§7A.2).
|
|
29
|
-
const toolHandler = handler[toolName] ?? (isKnownCommandTool(toolName) ? undefined : handler["unknown"]);
|
|
30
|
-
return typeof toolHandler === "function" ? toolHandler(event) : undefined;
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
export async function dispatchHook(input, emitter, options, record, session) {
|
|
34
|
-
const event = normalizeCodexHookEvent(input);
|
|
35
|
-
session?.observeTranscript(event.transcript_path);
|
|
36
|
-
if (event.hook_event_name === "SessionStart") {
|
|
37
|
-
session?.rememberCodexSessionId(event.session_id);
|
|
38
|
-
// Codex's authoritative pre-input readiness signal: release the first queued
|
|
39
|
-
// message here, not on the boot-time composer placeholder (C-API-28).
|
|
40
|
-
session?.markInitialReadyFromHook();
|
|
41
|
-
}
|
|
42
|
-
emitter.emit("hook", event);
|
|
43
|
-
emitter.emit("activity", activity.activityFromCodexHook(record.elwoodSessionId, event));
|
|
44
|
-
const outcome = await requestCodexHook(emitter, event, options.hookTimeoutMs ?? 25_000, record.elwoodSessionId);
|
|
45
|
-
emitter.emit("activity", activity.activityFromHookResult("codex", record.elwoodSessionId, event.hook_event_name, outcome.result, outcome.failedOpen));
|
|
46
|
-
if (event.hook_event_name === "Stop" && !isCodexBlock(outcome.result)) {
|
|
47
|
-
// A bounded per-pass scan (like Claude's): the terminal drain budget is reserved
|
|
48
|
-
// for finish(), so hundreds of turns never exhaust it into false backlog drops.
|
|
49
|
-
session?.scanTranscript();
|
|
50
|
-
session?.submitEvidence("hook_turn_ended");
|
|
51
|
-
}
|
|
52
|
-
return serializeCodexHookResult(event.hook_event_name, outcome.result);
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=session-hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-hooks.js","sourceRoot":"","sources":["../../src/codex/session-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* In-memory Codex session object exposed to callers.
|
|
3
|
-
* Implements PRD §5.7, §7A, §8, and §9.
|
|
4
|
-
*/
|
|
5
|
-
import type { ElwoodActivityEvent } from "../core/activity.ts";
|
|
6
|
-
import type { TerminalReplayBuffer } from "../core/terminal-replay.ts";
|
|
7
|
-
import type { ElwoodSessionStatus, ElwoodWarningEvent } from "../core/types.ts";
|
|
8
|
-
import type { TypedEmitter } from "../events/emitter.ts";
|
|
9
|
-
import type { PtyProcess } from "../pty/types.ts";
|
|
10
|
-
import { AgentSessionBase } from "../runtime/session-base.ts";
|
|
11
|
-
import type { PersistedLoopDefinition } from "../state/loop-store.ts";
|
|
12
|
-
import type { SessionRuntime } from "../state/runtime-paths.ts";
|
|
13
|
-
import { type SessionRecord } from "../state/store.ts";
|
|
14
|
-
import type { ElwoodTerminal } from "../terminal/headless.ts";
|
|
15
|
-
import type { CodexHookBridge } from "./session-bridge.ts";
|
|
16
|
-
import type { CodexEventHandler, CodexEventMap, CodexEventName, CodexSessionApi } from "./session-types.ts";
|
|
17
|
-
import type { CodexTranscriptWatcher } from "./transcript.ts";
|
|
18
|
-
export declare class CodexSessionImpl extends AgentSessionBase implements CodexSessionApi {
|
|
19
|
-
protected readonly picker: import("../core/model-picker.ts").ModelPickerSpec;
|
|
20
|
-
private readonly bridge;
|
|
21
|
-
private readonly emitter;
|
|
22
|
-
private readonly transcriptWatcher;
|
|
23
|
-
private onInitialReady;
|
|
24
|
-
constructor(record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, terminal: ElwoodTerminal, bridge: CodexHookBridge, emitter: TypedEmitter<CodexEventMap>, terminalReplay: TerminalReplayBuffer, transcriptWatcher: CodexTranscriptWatcher | undefined, loopDefinitions: readonly PersistedLoopDefinition[]);
|
|
25
|
-
on<E extends CodexEventName>(event: E, handler: CodexEventHandler<E>): import("../index.ts").Unsubscribe;
|
|
26
|
-
setModel(id: string, options?: {
|
|
27
|
-
readonly timeoutMs?: number;
|
|
28
|
-
}): Promise<void>;
|
|
29
|
-
private restoreCodexDefault;
|
|
30
|
-
off<E extends CodexEventName>(event: E, handler: CodexEventHandler<E>): void;
|
|
31
|
-
completeInitialReady(): void;
|
|
32
|
-
waitForStatus(match: (status: ElwoodSessionStatus) => boolean, timeoutMs?: number): Promise<"starting" | "running" | "ready" | "blocked" | "exited" | "stopped" | "killed" | "torn_down">;
|
|
33
|
-
waitForActivity(match: (event: ElwoodActivityEvent) => boolean, timeoutMs?: number): Promise<ElwoodActivityEvent>;
|
|
34
|
-
protected stagedPaste(screen: string, prompt: string): boolean;
|
|
35
|
-
protected attachImages: (paths: readonly string[], signal: AbortSignal) => Promise<void>;
|
|
36
|
-
rememberCodexSessionId(sessionId: string): void;
|
|
37
|
-
/** Registers the readiness trigger fired by the `SessionStart` hook — Codex's
|
|
38
|
-
* authoritative "initialized and accepting input" signal (C-API-28). */
|
|
39
|
-
setInitialReadyHook(fire: () => void): void;
|
|
40
|
-
/** Fires initial readiness from the `SessionStart` hook so the first queued
|
|
41
|
-
* message is released only once Codex is actually accepting input, not on the
|
|
42
|
-
* boot-time composer placeholder that would swallow it (C-API-28). */
|
|
43
|
-
markInitialReadyFromHook(): void;
|
|
44
|
-
observeTranscript(path?: string | null): void;
|
|
45
|
-
/** One bounded per-pass scan of the committed transcript (an unblocked `Stop`, §7A.3). */
|
|
46
|
-
scanTranscript(): void;
|
|
47
|
-
emitWarnings(warnings: readonly ElwoodWarningEvent[]): void;
|
|
48
|
-
protected stopRuntime(): Promise<void>;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=session-instance.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-instance.d.ts","sourceRoot":"","sources":["../../src/codex/session-instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* In-memory Codex session object exposed to callers.
|
|
3
|
-
* Implements PRD §5.7, §7A, §8, and §9.
|
|
4
|
-
*/
|
|
5
|
-
import { sessionWaitForActivity, sessionWaitForStatus } from "../core/session-wait.js";
|
|
6
|
-
import { emitSessionWarnings } from "../core/session-warnings.js";
|
|
7
|
-
import { AgentSessionBase } from "../runtime/session-base.js";
|
|
8
|
-
import { updateSessionResumeId } from "../state/store.js";
|
|
9
|
-
import { attachCodexImages } from "./attach-images.js";
|
|
10
|
-
import { restoreCodexConfig, snapshotCodexConfig } from "./config-restore.js";
|
|
11
|
-
import { runCodexModelSwitch } from "./config-transaction.js";
|
|
12
|
-
import { codexModelPicker } from "./model-picker.js";
|
|
13
|
-
import { stopCodexRuntime } from "./session-cleanup.js";
|
|
14
|
-
import { clipboardRestoreFailedWarning, codexRestoreFailedWarning, codexRestoreSkippedWarning, } from "./session-warnings.js";
|
|
15
|
-
export class CodexSessionImpl extends AgentSessionBase {
|
|
16
|
-
picker = codexModelPicker;
|
|
17
|
-
bridge;
|
|
18
|
-
emitter;
|
|
19
|
-
transcriptWatcher;
|
|
20
|
-
onInitialReady;
|
|
21
|
-
constructor(record, stateDir, runtime, pty, terminal, bridge, emitter, terminalReplay, transcriptWatcher, loopDefinitions) {
|
|
22
|
-
super("codex", record, stateDir, runtime, pty, terminal, emitter, terminalReplay, loopDefinitions);
|
|
23
|
-
this.bridge = bridge;
|
|
24
|
-
this.emitter = emitter;
|
|
25
|
-
this.transcriptWatcher = transcriptWatcher;
|
|
26
|
-
}
|
|
27
|
-
on(event, handler) {
|
|
28
|
-
// REGISTER before replaying buffered `terminal:data` (mirrors Claude): a throwing replay
|
|
29
|
-
// handler must still be subscribed for FUTURE data. Replay is synchronous, so nothing interleaves.
|
|
30
|
-
const unsubscribe = this.emitter.on(event, handler);
|
|
31
|
-
this.replayFor(event, handler);
|
|
32
|
-
return unsubscribe;
|
|
33
|
-
}
|
|
34
|
-
// The Codex CLI persists picker selections into user config.toml; restore
|
|
35
|
-
// the user's prior default after the switch (C-CODEX-14). The live session
|
|
36
|
-
// keeps the switched model because Codex reads its config at launch.
|
|
37
|
-
//
|
|
38
|
-
// The whole transaction runs under a PROCESS-WIDE config lock (see
|
|
39
|
-
// config-transaction.ts) so two sessions switching at once cannot interleave
|
|
40
|
-
// snapshot/restore on the shared file and persist the wrong model, and the
|
|
41
|
-
// restore still fires when the picker automation rejects AFTER Codex wrote
|
|
42
|
-
// config.toml — otherwise a late `waitForScreen` timeout would leave the
|
|
43
|
-
// user's global default changed (C-CODEX-14).
|
|
44
|
-
setModel(id, options) {
|
|
45
|
-
return runCodexModelSwitch({
|
|
46
|
-
snapshot: snapshotCodexConfig,
|
|
47
|
-
apply: () => super.setModel(id, options),
|
|
48
|
-
restore: (snapshot) => this.restoreCodexDefault(snapshot),
|
|
49
|
-
onRestoreError: (error) => this.emitWarnings([codexRestoreFailedWarning(this.elwoodSessionId, error)]),
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
restoreCodexDefault(snapshot) {
|
|
53
|
-
const outcome = restoreCodexConfig(snapshot);
|
|
54
|
-
if (outcome === "restored" || outcome === "unchanged")
|
|
55
|
-
return;
|
|
56
|
-
this.emitWarnings([codexRestoreSkippedWarning(this.elwoodSessionId, outcome)]);
|
|
57
|
-
}
|
|
58
|
-
off(event, handler) {
|
|
59
|
-
this.emitter.off(event, handler);
|
|
60
|
-
}
|
|
61
|
-
// One-shot initial-ready transition via the shared anti-starvation boundary: a
|
|
62
|
-
// failed persist/listener releases the queue directly and warns (C-API-42). Codex
|
|
63
|
-
// has no narrow-bootstrap resize to restore, so this is just the base advance.
|
|
64
|
-
completeInitialReady() {
|
|
65
|
-
this.advanceInitialReady();
|
|
66
|
-
}
|
|
67
|
-
waitForStatus(match, timeoutMs) {
|
|
68
|
-
return sessionWaitForStatus(this, match, timeoutMs);
|
|
69
|
-
}
|
|
70
|
-
waitForActivity(match, timeoutMs) {
|
|
71
|
-
return sessionWaitForActivity(this, match, timeoutMs);
|
|
72
|
-
}
|
|
73
|
-
// Codex has no staged chip; the composer still shows the paste's last line.
|
|
74
|
-
stagedPaste(screen, prompt) {
|
|
75
|
-
const lastLine = prompt.trim().split("\n").at(-1)?.trim();
|
|
76
|
-
return lastLine !== undefined && lastLine.length > 0 && screen.includes(lastLine);
|
|
77
|
-
}
|
|
78
|
-
// Codex ingests an interactive image only from the OS clipboard; the Ctrl+V is
|
|
79
|
-
// held while a dialog is on screen so it never confirms one (C-API-46/37).
|
|
80
|
-
attachImages = (paths, signal) => attachCodexImages(this.terminal, paths, signal, () => this.status === "blocked", () => this.emitWarnings([clipboardRestoreFailedWarning(this.elwoodSessionId)]));
|
|
81
|
-
rememberCodexSessionId(sessionId) {
|
|
82
|
-
if (this.record.codex.resumeId)
|
|
83
|
-
return;
|
|
84
|
-
this.persist(updateSessionResumeId(this.record, "codex", sessionId));
|
|
85
|
-
}
|
|
86
|
-
/** Registers the readiness trigger fired by the `SessionStart` hook — Codex's
|
|
87
|
-
* authoritative "initialized and accepting input" signal (C-API-28). */
|
|
88
|
-
setInitialReadyHook(fire) {
|
|
89
|
-
this.onInitialReady = fire;
|
|
90
|
-
}
|
|
91
|
-
/** Fires initial readiness from the `SessionStart` hook so the first queued
|
|
92
|
-
* message is released only once Codex is actually accepting input, not on the
|
|
93
|
-
* boot-time composer placeholder that would swallow it (C-API-28). */
|
|
94
|
-
markInitialReadyFromHook() {
|
|
95
|
-
this.onInitialReady?.();
|
|
96
|
-
}
|
|
97
|
-
observeTranscript(path) {
|
|
98
|
-
if (path)
|
|
99
|
-
this.transcriptWatcher?.observe(path);
|
|
100
|
-
}
|
|
101
|
-
/** One bounded per-pass scan of the committed transcript (an unblocked `Stop`, §7A.3). */
|
|
102
|
-
scanTranscript() {
|
|
103
|
-
this.transcriptWatcher?.scan();
|
|
104
|
-
}
|
|
105
|
-
emitWarnings(warnings) {
|
|
106
|
-
// No cast: each callback is the emitter's own `emit` bound to a correlated
|
|
107
|
-
// event name, so a map/payload drift is a compile error here.
|
|
108
|
-
emitSessionWarnings(warnings, {
|
|
109
|
-
warning: (event) => this.emitter.emit("warning", event),
|
|
110
|
-
activity: (event) => this.emitter.emit("activity", event),
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
async stopRuntime() {
|
|
114
|
-
await stopCodexRuntime(this.bridge, this.transcriptWatcher, this.terminal);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=session-instance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-instance.js","sourceRoot":"","sources":["../../src/codex/session-instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex session resume entry point built on the shared start path.
|
|
3
|
-
* Implements PRD §5.6, §9.3, and C-API-16.
|
|
4
|
-
*/
|
|
5
|
-
import type { CodexSessionApi, ResumeCodexOptions } from "./session-types.ts";
|
|
6
|
-
export declare function resumeCodex(options: ResumeCodexOptions): Promise<CodexSessionApi>;
|
|
7
|
-
//# sourceMappingURL=session-resume.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-resume.d.ts","sourceRoot":"","sources":["../../src/codex/session-resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwCvF"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex session resume entry point built on the shared start path.
|
|
3
|
-
* Implements PRD §5.6, §9.3, and C-API-16.
|
|
4
|
-
*/
|
|
5
|
-
import { resolve } from "node:path";
|
|
6
|
-
import { elwoodError } from "../core/errors.js";
|
|
7
|
-
import { codexLaunchPosture, effectivePosture, withCodexLaunch } from "../state/launch-posture.js";
|
|
8
|
-
import { defaultStateDir, readSessionRecord } from "../state/store.js";
|
|
9
|
-
import * as preflight from "./preflight.js";
|
|
10
|
-
import { startCodexFromRecord } from "./session.js";
|
|
11
|
-
export async function resumeCodex(options) {
|
|
12
|
-
// Resolve stateDir to ABSOLUTE ONCE, before any read/await, so a `process.chdir()`
|
|
13
|
-
// between the record read and the runtime-file writes can't split them (§8.1).
|
|
14
|
-
const stateDir = resolve(options.stateDir ?? defaultStateDir(options.cwd ?? process.cwd()));
|
|
15
|
-
const record = readSessionRecord(stateDir, options.elwoodSessionId);
|
|
16
|
-
if (record.adapter !== "codex")
|
|
17
|
-
throw elwoodError("adapter_mismatch", "Cannot resume a non-Codex session as Codex.");
|
|
18
|
-
if (!record.codex.resumeId)
|
|
19
|
-
throw elwoodError("resume_unavailable", "Cannot resume Codex without a Codex session id.");
|
|
20
|
-
const warning = await preflight.preflightCodex(options.strictVersionCheck ?? false, options.autoupdate ?? false);
|
|
21
|
-
// Resume defaults to the posture this session launched with; explicit options
|
|
22
|
-
// override field by field, and the effective posture is re-persisted (C-API-32,
|
|
23
|
-
// C-STATE-13). Terminal size is not persisted: it falls back to options.initialSize.
|
|
24
|
-
const launch = effectivePosture(record.codex.launch, codexLaunchPosture(options));
|
|
25
|
-
const resumedRecord = withCodexLaunch(record, launch);
|
|
26
|
-
return await startCodexFromRecord(resumedRecord, stateDir, {
|
|
27
|
-
cwd: options.cwd ?? record.cwd,
|
|
28
|
-
stateDir,
|
|
29
|
-
...(options.hooks === undefined ? {} : { hooks: options.hooks }),
|
|
30
|
-
...(options.initialSize === undefined ? {} : { initialSize: options.initialSize }),
|
|
31
|
-
...(options.hookTimeoutMs === undefined ? {} : { hookTimeoutMs: options.hookTimeoutMs }),
|
|
32
|
-
...(options.autotrust === undefined ? {} : { autotrust: options.autotrust }),
|
|
33
|
-
// Reasoning effort is NOT persisted posture — re-supply it per resume (C-CODEX-21).
|
|
34
|
-
...(options.reasoningEffort === undefined
|
|
35
|
-
? {}
|
|
36
|
-
: { reasoningEffort: options.reasoningEffort }),
|
|
37
|
-
...launch,
|
|
38
|
-
...(options.strictVersionCheck === undefined
|
|
39
|
-
? {}
|
|
40
|
-
: { strictVersionCheck: options.strictVersionCheck }),
|
|
41
|
-
}, true, // resumed: mark ready on the first composer marker, not the 10s deadline
|
|
42
|
-
warning);
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=session-resume.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-resume.js","sourceRoot":"","sources":["../../src/codex/session-resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,mFAAmF;IACnF,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO;QAC5B,MAAM,WAAW,CAAC,kBAAkB,EAAE,6CAA6C,CAAC,CAAC;IACvF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;QACxB,MAAM,WAAW,CAAC,oBAAoB,EAAE,iDAAiD,CAAC,CAAC;IAC7F,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,cAAc,CAC5C,OAAO,CAAC,kBAAkB,IAAI,KAAK,EACnC,OAAO,CAAC,UAAU,IAAI,KAAK,CAC5B,CAAC;IACF,8EAA8E;IAC9E,gFAAgF;IAChF,qFAAqF;IACrF,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,MAAM,oBAAoB,CAC/B,aAAa,EACb,QAAQ,EACR;QACE,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG;QAC9B,QAAQ;QACR,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAClF,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QACxF,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5E,oFAAoF;QACpF,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;QACjD,GAAG,MAAM;QACT,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC;KACxD,EACD,IAAI,EAAE,yEAAyE;IAC/E,OAAO,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Writes the per-session runtime files (the hook bridge script) for Codex sessions.
|
|
3
|
-
* Implements PRD §7A and §8.2.
|
|
4
|
-
*/
|
|
5
|
-
import type { SessionRuntime } from "../state/runtime-paths.ts";
|
|
6
|
-
export declare function writeCodexRuntimeFiles(runtime: SessionRuntime): void;
|
|
7
|
-
//# sourceMappingURL=session-runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-runtime.d.ts","sourceRoot":"","sources":["../../src/codex/session-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAKpE"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Writes the per-session runtime files (the hook bridge script) for Codex sessions.
|
|
3
|
-
* Implements PRD §7A and §8.2.
|
|
4
|
-
*/
|
|
5
|
-
import { bridgeScriptSource } from "../bridge/script.js";
|
|
6
|
-
import { writePrivateFileAtomic } from "../state/files.js";
|
|
7
|
-
export function writeCodexRuntimeFiles(runtime) {
|
|
8
|
-
writePrivateFileAtomic(runtime.bridgeScriptPath, bridgeScriptSource(runtime.socketPath, runtime.bridgeToken));
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=session-runtime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-runtime.js","sourceRoot":"","sources":["../../src/codex/session-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,MAAM,UAAU,sBAAsB,CAAC,OAAuB;IAC5D,sBAAsB,CACpB,OAAO,CAAC,gBAAgB,EACxB,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wires the bounded Codex transcript watcher to the session's warning sink.
|
|
3
|
-
* The watcher is constructed BEFORE the session object, so a drop/read-error
|
|
4
|
-
* notice observed early is BUFFERED and flushed through `emitWarnings` (which
|
|
5
|
-
* emits it as a live `warning` + `activity`) once the sink exists — never dropped.
|
|
6
|
-
* The caller MUST invoke `flushPendingWarnings` right after building the session so
|
|
7
|
-
* a single early notice with no follow-up is not stranded. Warnings are live-only
|
|
8
|
-
* (never persisted, counted, or replayed). Mirrors Claude's wiring. PRD §5.4/§5.7.
|
|
9
|
-
*/
|
|
10
|
-
import { type TranscriptWarningSink } from "../core/transcript/warning-router.ts";
|
|
11
|
-
import type { TypedEmitter } from "../events/emitter.ts";
|
|
12
|
-
import type { CodexEventMap } from "./session-types.ts";
|
|
13
|
-
import { CodexTranscriptWatcher } from "./transcript.ts";
|
|
14
|
-
/** A watcher plus the hook to flush any diagnostics buffered before the sink existed. */
|
|
15
|
-
type WiredCodexTranscriptWatcher = {
|
|
16
|
-
readonly watcher: CodexTranscriptWatcher;
|
|
17
|
-
readonly flushPendingWarnings: () => void;
|
|
18
|
-
/** Drive `watcher.finish()` behind an error boundary, then run `afterFlush` in a
|
|
19
|
-
* `finally` so a throwing final-flush listener never skips terminal:exit (C-LIFE-10). */
|
|
20
|
-
readonly finishSafely: (afterFlush?: () => void) => void;
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Builds the transcript watcher, routing content-free drop/read-error notices to
|
|
24
|
-
* the session's warning sink. Notices seen before `getSink()` resolves are held in
|
|
25
|
-
* `pending`; both `route` and the returned `flushPendingWarnings` drain them, so a
|
|
26
|
-
* lone early notice still surfaces once the caller flushes post-construction.
|
|
27
|
-
*/
|
|
28
|
-
export declare function createCodexTranscriptWatcher(elwoodSessionId: string, emitter: TypedEmitter<CodexEventMap>, getSink: () => TranscriptWarningSink | undefined): WiredCodexTranscriptWatcher;
|
|
29
|
-
export {};
|
|
30
|
-
//# sourceMappingURL=session-transcript.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-transcript.d.ts","sourceRoot":"","sources":["../../src/codex/session-transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,sBAAsB,EAIvB,MAAM,iBAAiB,CAAC;AAEzB,yFAAyF;AACzF,KAAK,2BAA2B,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC;IAC1C;6FACyF;IACzF,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,EACpC,OAAO,EAAE,MAAM,qBAAqB,GAAG,SAAS,GAC/C,2BAA2B,CAkC7B"}
|