@with-logic/elwood 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +166 -1
- package/LICENSE +1 -1
- package/README.md +276 -13
- 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/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/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 +32 -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 +60 -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/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 +23 -0
- package/dist/cli/sessions/index.d.ts.map +1 -0
- package/dist/cli/sessions/index.js +65 -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/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/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/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/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/docs/cli-behavior.md +88 -0
- package/docs/cli-output.md +60 -0
- package/docs/cli.md +10 -2
- package/package.json +8 -6
- 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,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reaps the process tree of a PTY leader on session teardown.
|
|
3
|
-
* Implements PRD §5.3 and §9.4 (C-LIFE-10): a CLI-spawned helper such as the
|
|
4
|
-
* Claude hook bridge is a descendant of the PTY leader. Because POSIX reparents
|
|
5
|
-
* a surviving descendant to PID 1 the instant its parent exits, a parent-pid
|
|
6
|
-
* walk (`pgrep -P`) cannot find it afterwards — but node-pty starts the leader
|
|
7
|
-
* as its own session/process-group leader, and group membership is inherited
|
|
8
|
-
* and survives reparenting. So we reap by SIGKILLing the leader's process group,
|
|
9
|
-
* which reaches every descendant in one in-process syscall: no subprocess, no
|
|
10
|
-
* PATH lookup, no post-exit reparenting blind spot.
|
|
11
|
-
*/
|
|
12
|
-
/** Injectable so tests never signal real process groups; production uses `process.kill`. */
|
|
13
|
-
export type ProcessGroupKiller = {
|
|
14
|
-
/** SIGKILLs the process group `pgid` (via `kill(-pgid)`); tolerates an empty/dead group. */
|
|
15
|
-
readonly killGroup: (pgid: number) => void;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* SIGKILLs the process group led by `leaderPid`, reaping every descendant still
|
|
19
|
-
* in the group — including one already reparented to PID 1. node-pty starts the
|
|
20
|
-
* leader via `setsid()`, so it heads its own session and its pgid equals its pid;
|
|
21
|
-
* that group is always distinct from the host's own group, so this cannot signal
|
|
22
|
-
* the host process. Refuses only pids the kernel would misroute (see
|
|
23
|
-
* `isReapableGroupId`), never an arbitrary numeric floor. An already-dead group
|
|
24
|
-
* (leader and children exited together) is the normal case and its `ESRCH` is
|
|
25
|
-
* swallowed; a real kill failure such as `EPERM` propagates.
|
|
26
|
-
*/
|
|
27
|
-
export declare function reapProcessGroup(leaderPid: number, ops?: ProcessGroupKiller): void;
|
|
28
|
-
export declare function setGroupKillerForTests(killer: ProcessGroupKiller): void;
|
|
29
|
-
export declare function resetGroupKillerForTests(): void;
|
|
30
|
-
/**
|
|
31
|
-
* Swallows the ESRCH raised when the group is already empty (the normal case:
|
|
32
|
-
* the leader and its children exited together) and re-throws any other error —
|
|
33
|
-
* a real failure (e.g. EPERM) that must not be reported as a successful reap.
|
|
34
|
-
* Reads the errno through `errnoCode`, which narrows object-ness first, so a
|
|
35
|
-
* thrown `null`/non-Error is preserved and rethrown rather than triggering a
|
|
36
|
-
* secondary TypeError while inspecting it (C-ERR-01). Exported for focused
|
|
37
|
-
* coverage of both branches without an unsafe real signal.
|
|
38
|
-
*/
|
|
39
|
-
export declare function rethrowUnlessGroupGone(error: unknown): void;
|
|
40
|
-
/**
|
|
41
|
-
* Owns a single PTY leader's group reap. A SUCCESSFUL reap MUST happen at most
|
|
42
|
-
* once: `stop()` then a later `teardown()` both want to guarantee the group is
|
|
43
|
-
* gone, but signaling the same numeric pgid twice is unsafe — once the group is
|
|
44
|
-
* empty the kernel may recycle the pid, and a second `kill(-pgid)` would hit an
|
|
45
|
-
* unrelated group. So the latch is set only AFTER the kill succeeds (an already
|
|
46
|
-
* empty group's `ESRCH` is normalized to success by `reapProcessGroup`). A real
|
|
47
|
-
* failure (e.g. EPERM) leaves the latch OPEN and rethrows, so a later teardown
|
|
48
|
-
* call can retry rather than leaving the descendant leak permanently unreaped.
|
|
49
|
-
*/
|
|
50
|
-
export declare class SessionReaper {
|
|
51
|
-
private readonly leaderPid;
|
|
52
|
-
private readonly ops;
|
|
53
|
-
private done;
|
|
54
|
-
constructor(leaderPid: number, ops?: ProcessGroupKiller);
|
|
55
|
-
/**
|
|
56
|
-
* Reap the group once it succeeds; a successful call latches so subsequent
|
|
57
|
-
* calls no-op (no recycled-pgid double-kill). A failed kill does NOT latch and
|
|
58
|
-
* rethrows, keeping the reap retryable on a later lifecycle call.
|
|
59
|
-
*/
|
|
60
|
-
reap(): void;
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=reap-tree.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reap-tree.d.ts","sourceRoot":"","sources":["../../src/runtime/reap-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AAoBF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,kBAAiC,GAAG,IAAI,CAGhG;AAiBD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEvE;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE3D;AAED;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,OAAO,CAAC,IAAI,CAAS;gBAET,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,kBAAiC;IAKrE;;;;OAIG;IACH,IAAI,IAAI,IAAI;CAKb"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reaps the process tree of a PTY leader on session teardown.
|
|
3
|
-
* Implements PRD §5.3 and §9.4 (C-LIFE-10): a CLI-spawned helper such as the
|
|
4
|
-
* Claude hook bridge is a descendant of the PTY leader. Because POSIX reparents
|
|
5
|
-
* a surviving descendant to PID 1 the instant its parent exits, a parent-pid
|
|
6
|
-
* walk (`pgrep -P`) cannot find it afterwards — but node-pty starts the leader
|
|
7
|
-
* as its own session/process-group leader, and group membership is inherited
|
|
8
|
-
* and survives reparenting. So we reap by SIGKILLing the leader's process group,
|
|
9
|
-
* which reaches every descendant in one in-process syscall: no subprocess, no
|
|
10
|
-
* PATH lookup, no post-exit reparenting blind spot.
|
|
11
|
-
*/
|
|
12
|
-
import { errnoCode } from "../core/errors.js";
|
|
13
|
-
/**
|
|
14
|
-
* A pgid is reapable when it identifies the KNOWN-OWNED node-pty leader's group
|
|
15
|
-
* rather than a system group or the host itself. Ownership is NOT inferred from a
|
|
16
|
-
* numeric floor — that is an allocation detail, and after PID-space wrap or inside
|
|
17
|
-
* a constrained namespace a legitimate leader can be low (a prior arbitrary `< 100`
|
|
18
|
-
* floor silently no-op'd such leaders and leaked their descendants). We instead
|
|
19
|
-
* accept every valid child pid while refusing the two ids a group SIGKILL must
|
|
20
|
-
* never touch:
|
|
21
|
-
* - `pgid <= 1` — pid 0 means "our own group" to `kill(2)`, and pid 1 is
|
|
22
|
-
* `init`/`launchd`; a fake pid 1 in tests once reaped a developer's real apps.
|
|
23
|
-
* - the host's OWN pid — node-pty gives the leader a fresh session via `setsid()`
|
|
24
|
-
* so its pgid can never legitimately equal ours, but if a bad pgid ever did we
|
|
25
|
-
* must not signal `-process.pid` and kill ourselves.
|
|
26
|
-
*/
|
|
27
|
-
function isReapableGroupId(pgid) {
|
|
28
|
-
return Number.isInteger(pgid) && pgid > 1 && pgid !== process.pid;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* SIGKILLs the process group led by `leaderPid`, reaping every descendant still
|
|
32
|
-
* in the group — including one already reparented to PID 1. node-pty starts the
|
|
33
|
-
* leader via `setsid()`, so it heads its own session and its pgid equals its pid;
|
|
34
|
-
* that group is always distinct from the host's own group, so this cannot signal
|
|
35
|
-
* the host process. Refuses only pids the kernel would misroute (see
|
|
36
|
-
* `isReapableGroupId`), never an arbitrary numeric floor. An already-dead group
|
|
37
|
-
* (leader and children exited together) is the normal case and its `ESRCH` is
|
|
38
|
-
* swallowed; a real kill failure such as `EPERM` propagates.
|
|
39
|
-
*/
|
|
40
|
-
export function reapProcessGroup(leaderPid, ops = activeKiller) {
|
|
41
|
-
if (!isReapableGroupId(leaderPid))
|
|
42
|
-
return;
|
|
43
|
-
ops.killGroup(leaderPid);
|
|
44
|
-
}
|
|
45
|
-
const defaultKiller = {
|
|
46
|
-
killGroup(pgid) {
|
|
47
|
-
try {
|
|
48
|
-
process.kill(-pgid, "SIGKILL");
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
rethrowUnlessGroupGone(error);
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
// The killer used when a caller does not inject one. A test seam so session
|
|
56
|
-
// lifecycle tests can observe (and neutralize) the group SIGKILL without a real
|
|
57
|
-
// signal, and without every session/terminate call site taking a killer param.
|
|
58
|
-
let activeKiller = defaultKiller;
|
|
59
|
-
export function setGroupKillerForTests(killer) {
|
|
60
|
-
activeKiller = killer;
|
|
61
|
-
}
|
|
62
|
-
export function resetGroupKillerForTests() {
|
|
63
|
-
activeKiller = defaultKiller;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Swallows the ESRCH raised when the group is already empty (the normal case:
|
|
67
|
-
* the leader and its children exited together) and re-throws any other error —
|
|
68
|
-
* a real failure (e.g. EPERM) that must not be reported as a successful reap.
|
|
69
|
-
* Reads the errno through `errnoCode`, which narrows object-ness first, so a
|
|
70
|
-
* thrown `null`/non-Error is preserved and rethrown rather than triggering a
|
|
71
|
-
* secondary TypeError while inspecting it (C-ERR-01). Exported for focused
|
|
72
|
-
* coverage of both branches without an unsafe real signal.
|
|
73
|
-
*/
|
|
74
|
-
export function rethrowUnlessGroupGone(error) {
|
|
75
|
-
if (errnoCode(error) !== "ESRCH")
|
|
76
|
-
throw error;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Owns a single PTY leader's group reap. A SUCCESSFUL reap MUST happen at most
|
|
80
|
-
* once: `stop()` then a later `teardown()` both want to guarantee the group is
|
|
81
|
-
* gone, but signaling the same numeric pgid twice is unsafe — once the group is
|
|
82
|
-
* empty the kernel may recycle the pid, and a second `kill(-pgid)` would hit an
|
|
83
|
-
* unrelated group. So the latch is set only AFTER the kill succeeds (an already
|
|
84
|
-
* empty group's `ESRCH` is normalized to success by `reapProcessGroup`). A real
|
|
85
|
-
* failure (e.g. EPERM) leaves the latch OPEN and rethrows, so a later teardown
|
|
86
|
-
* call can retry rather than leaving the descendant leak permanently unreaped.
|
|
87
|
-
*/
|
|
88
|
-
export class SessionReaper {
|
|
89
|
-
leaderPid;
|
|
90
|
-
ops;
|
|
91
|
-
done = false;
|
|
92
|
-
constructor(leaderPid, ops = activeKiller) {
|
|
93
|
-
this.leaderPid = leaderPid;
|
|
94
|
-
this.ops = ops;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Reap the group once it succeeds; a successful call latches so subsequent
|
|
98
|
-
* calls no-op (no recycled-pgid double-kill). A failed kill does NOT latch and
|
|
99
|
-
* rethrows, keeping the reap retryable on a later lifecycle call.
|
|
100
|
-
*/
|
|
101
|
-
reap() {
|
|
102
|
-
if (this.done)
|
|
103
|
-
return;
|
|
104
|
-
reapProcessGroup(this.leaderPid, this.ops);
|
|
105
|
-
this.done = true;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=reap-tree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reap-tree.js","sourceRoot":"","sources":["../../src/runtime/reap-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAQ9C;;;;;;;;;;;;;GAaG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC;AACpE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,MAA0B,YAAY;IACxF,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO;IAC1C,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,aAAa,GAAuB;IACxC,SAAS,CAAC,IAAY;QACpB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,4EAA4E;AAC5E,gFAAgF;AAChF,+EAA+E;AAC/E,IAAI,YAAY,GAAuB,aAAa,CAAC;AAErD,MAAM,UAAU,sBAAsB,CAAC,MAA0B;IAC/D,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,YAAY,GAAG,aAAa,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,OAAO;QAAE,MAAM,KAAK,CAAC;AAChD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;IACP,SAAS,CAAS;IAClB,GAAG,CAAqB;IACjC,IAAI,GAAG,KAAK,CAAC;IAErB,YAAY,SAAiB,EAAE,MAA0B,YAAY;QACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Types and labels shared by the adapter session base class.
|
|
3
|
-
* Implements PRD §5.3 and §5.7 common session semantics.
|
|
4
|
-
*/
|
|
5
|
-
import type { ElwoodActivityEvent, ElwoodAgentKind } from "../core/activity.ts";
|
|
6
|
-
import type { CompactEmitter } from "../core/compact.ts";
|
|
7
|
-
import type { ElwoodSessionStatus, Unsubscribe } from "../core/types.ts";
|
|
8
|
-
import type { LoopEventEmitter } from "./session-loops.ts";
|
|
9
|
-
export type { ElwoodAgentKind } from "../core/activity.ts";
|
|
10
|
-
export type { SendOptions } from "../core/images/types.ts";
|
|
11
|
-
export type { ElwoodLoopRequest, ElwoodLoopSnapshot } from "../core/loops/types.ts";
|
|
12
|
-
export type { ModelPickerSpec } from "../core/model-picker.ts";
|
|
13
|
-
export type { AgentModelOption } from "../core/model-rows.ts";
|
|
14
|
-
export type { PasteGuard } from "../core/session-input.ts";
|
|
15
|
-
export { terminalStatuses } from "../core/status-categories.ts";
|
|
16
|
-
export type { TerminalReplayBuffer } from "../core/terminal-replay.ts";
|
|
17
|
-
export type { ElwoodSessionStatus, ElwoodWarningEvent, TerminalSize } from "../core/types.ts";
|
|
18
|
-
export type { PtyProcess } from "../pty/types.ts";
|
|
19
|
-
export type { PersistedLoopDefinition } from "../state/loop-store.ts";
|
|
20
|
-
export type { SessionRuntime } from "../state/runtime-paths.ts";
|
|
21
|
-
export type { SessionRecord } from "../state/store.ts";
|
|
22
|
-
export type { ElwoodTerminal } from "../terminal/headless.ts";
|
|
23
|
-
export type { AttachDriver, AttachTask, SubmitKind } from "./session-image-attach.ts";
|
|
24
|
-
export type { SessionStatusEngine, StatusDecision, StatusEvidenceKind } from "./status-evidence.ts";
|
|
25
|
-
type StatusEvent = {
|
|
26
|
-
readonly elwoodSessionId: string;
|
|
27
|
-
readonly status: ElwoodSessionStatus;
|
|
28
|
-
};
|
|
29
|
-
export type SessionStatusEmitter = CompactEmitter & LoopEventEmitter & {
|
|
30
|
-
emit(event: "status", payload: StatusEvent): void;
|
|
31
|
-
emit(event: "activity", payload: ElwoodActivityEvent): void;
|
|
32
|
-
on(event: "activity", handler: (event: ElwoodActivityEvent) => void): Unsubscribe;
|
|
33
|
-
};
|
|
34
|
-
export declare const agentTitles: Readonly<Record<ElwoodAgentKind, string>>;
|
|
35
|
-
export declare function notRunningError(agent: ElwoodAgentKind): Error;
|
|
36
|
-
//# sourceMappingURL=session-base-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-base-types.d.ts","sourceRoot":"","sources":["../../src/runtime/session-base-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACpF,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACtF,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,KAAK,WAAW,GAAG;IAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE9F,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAC/C,gBAAgB,GAAG;IACjB,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5D,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAAG,WAAW,CAAC;CACnF,CAAC;AAEJ,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAGjE,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,CAE7D"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Types and labels shared by the adapter session base class.
|
|
3
|
-
* Implements PRD §5.3 and §5.7 common session semantics.
|
|
4
|
-
*/
|
|
5
|
-
import { elwoodError } from "../core/errors.js";
|
|
6
|
-
export { terminalStatuses } from "../core/status-categories.js";
|
|
7
|
-
export const agentTitles = {
|
|
8
|
-
claude: "Claude",
|
|
9
|
-
codex: "Codex",
|
|
10
|
-
};
|
|
11
|
-
export function notRunningError(agent) {
|
|
12
|
-
return elwoodError("session_not_running", `${agentTitles[agent]} session is not running.`);
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=session-base-types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-base-types.js","sourceRoot":"","sources":["../../src/runtime/session-base-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAUhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAoBhE,MAAM,CAAC,MAAM,WAAW,GAA8C;IACpE,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,OAAO,WAAW,CAAC,qBAAqB,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The caller-facing control surface shared by both adapter sessions — prompt,
|
|
3
|
-
* message, and guidance submission (with image attachment), raw keys, resize,
|
|
4
|
-
* interrupt/compact, the model picker, and recurring loops — layered over the
|
|
5
|
-
* lifecycle core in `session-lifecycle.ts`. Implements PRD §5.3, §5.7, §5.9.
|
|
6
|
-
*/
|
|
7
|
-
import type { ElwoodAgentKind } from "../core/activity.ts";
|
|
8
|
-
import type { SendOptions } from "../core/images/types.ts";
|
|
9
|
-
import type { ElwoodLoopRequest, ElwoodLoopSnapshot } from "../core/loops/types.ts";
|
|
10
|
-
import type { ModelPickerSpec } from "../core/model-picker.ts";
|
|
11
|
-
import type { AgentModelOption } from "../core/model-rows.ts";
|
|
12
|
-
import type { TerminalReplayBuffer } from "../core/terminal-replay.ts";
|
|
13
|
-
import type { TerminalSize } from "../core/types.ts";
|
|
14
|
-
import type { PtyProcess } from "../pty/types.ts";
|
|
15
|
-
import type { PersistedLoopDefinition } from "../state/loop-store.ts";
|
|
16
|
-
import type { SessionRuntime } from "../state/runtime-paths.ts";
|
|
17
|
-
import type { SessionRecord } from "../state/store.ts";
|
|
18
|
-
import type { ElwoodTerminal } from "../terminal/headless.ts";
|
|
19
|
-
import { SessionLifecycle } from "./session-lifecycle.ts";
|
|
20
|
-
import type { SessionStatusEmitter } from "./session-status-wiring.ts";
|
|
21
|
-
type Timeout = {
|
|
22
|
-
readonly timeoutMs?: number;
|
|
23
|
-
};
|
|
24
|
-
export declare abstract class AgentSessionBase extends SessionLifecycle {
|
|
25
|
-
protected abstract readonly picker: ModelPickerSpec;
|
|
26
|
-
private readonly commands;
|
|
27
|
-
private readonly imageBudget;
|
|
28
|
-
protected constructor(agent: ElwoodAgentKind, record: SessionRecord, stateDir: string, runtime: SessionRuntime, pty: PtyProcess, terminal: ElwoodTerminal, statusEvents: SessionStatusEmitter, terminalReplay: TerminalReplayBuffer, loopDefinitions: readonly PersistedLoopDefinition[]);
|
|
29
|
-
sendPrompt(prompt: string, options?: SendOptions): Promise<void>;
|
|
30
|
-
sendMessage(message: string, options?: SendOptions): Promise<void>;
|
|
31
|
-
sendGuidance(message: string, options?: SendOptions): Promise<void>;
|
|
32
|
-
sendKeys(input: string | Uint8Array): Promise<void>;
|
|
33
|
-
resize(size: TerminalSize): Promise<void>;
|
|
34
|
-
interrupt(options?: Timeout): Promise<void>;
|
|
35
|
-
compact(options?: Timeout): Promise<void>;
|
|
36
|
-
listModels(options?: Timeout): Promise<readonly AgentModelOption[]>;
|
|
37
|
-
setModel(id: string, options?: Timeout): Promise<void>;
|
|
38
|
-
createLoop(request: ElwoodLoopRequest): Promise<ElwoodLoopSnapshot>;
|
|
39
|
-
listLoops(): Promise<readonly ElwoodLoopSnapshot[]>;
|
|
40
|
-
cancelLoop(loopId: string): Promise<void>;
|
|
41
|
-
/** Attach `paths` to the composer before the queued text is submitted (C-API-44). */
|
|
42
|
-
protected abstract attachImages(paths: readonly string[], signal: AbortSignal): Promise<void>;
|
|
43
|
-
/** Re-apply a resize that was held during startup (a best-effort restore). */
|
|
44
|
-
protected restoreHeldSize(size: TerminalSize): void;
|
|
45
|
-
private enqueue;
|
|
46
|
-
}
|
|
47
|
-
export {};
|
|
48
|
-
//# sourceMappingURL=session-base.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-base.d.ts","sourceRoot":"","sources":["../../src/runtime/session-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The caller-facing control surface shared by both adapter sessions — prompt,
|
|
3
|
-
* message, and guidance submission (with image attachment), raw keys, resize,
|
|
4
|
-
* interrupt/compact, the model picker, and recurring loops — layered over the
|
|
5
|
-
* lifecycle core in `session-lifecycle.ts`. Implements PRD §5.3, §5.7, §5.9.
|
|
6
|
-
*/
|
|
7
|
-
import { CommandSurface } from "./session-commands.js";
|
|
8
|
-
import { enqueueSubmission, QueuedImageBudget, } from "./session-image-attach.js";
|
|
9
|
-
import { SessionLifecycle } from "./session-lifecycle.js";
|
|
10
|
-
import { applyResize, restoreHeldResize } from "./session-resize.js";
|
|
11
|
-
export class AgentSessionBase extends SessionLifecycle {
|
|
12
|
-
commands;
|
|
13
|
-
imageBudget = new QueuedImageBudget();
|
|
14
|
-
constructor(agent, record, stateDir, runtime, pty, terminal, statusEvents, terminalReplay, loopDefinitions) {
|
|
15
|
-
super(agent, record, stateDir, runtime, pty, terminal, statusEvents, terminalReplay, loopDefinitions);
|
|
16
|
-
// `picker` is a subclass field initializer that runs AFTER this constructor, so the
|
|
17
|
-
// surface resolves it per call rather than capturing it here.
|
|
18
|
-
this.commands = new CommandSurface({
|
|
19
|
-
terminal,
|
|
20
|
-
statusEvents,
|
|
21
|
-
status: () => this.status,
|
|
22
|
-
everReady: () => this.everReady,
|
|
23
|
-
picker: () => this.picker,
|
|
24
|
-
submit: (command, kind) => this.controlQueue.send(command, kind),
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
sendPrompt(prompt, options) {
|
|
28
|
-
return this.enqueue(prompt, "prompt", options);
|
|
29
|
-
}
|
|
30
|
-
sendMessage(message, options) {
|
|
31
|
-
return this.enqueue(message, "message", options);
|
|
32
|
-
}
|
|
33
|
-
sendGuidance(message, options) {
|
|
34
|
-
return this.enqueue(message, "guidance", options);
|
|
35
|
-
}
|
|
36
|
-
sendKeys(input) {
|
|
37
|
-
return this.inSession(async () => {
|
|
38
|
-
await this.terminal.sendInput(input);
|
|
39
|
-
this.loops.callerActivity();
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
resize(size) {
|
|
43
|
-
return this.inSession(() => applyResize(this.pty, this.terminal, size));
|
|
44
|
-
}
|
|
45
|
-
interrupt(options) {
|
|
46
|
-
return this.inSession(() => this.commands.interrupt(options));
|
|
47
|
-
}
|
|
48
|
-
compact(options) {
|
|
49
|
-
return this.inSession(() => this.commands.compact(options));
|
|
50
|
-
}
|
|
51
|
-
listModels(options) {
|
|
52
|
-
return this.inSession(() => this.commands.listModels(options));
|
|
53
|
-
}
|
|
54
|
-
setModel(id, options) {
|
|
55
|
-
return this.inSession(() => this.commands.setModel(id, options));
|
|
56
|
-
}
|
|
57
|
-
createLoop(request) {
|
|
58
|
-
return this.inSession(() => this.loops.create(request));
|
|
59
|
-
}
|
|
60
|
-
listLoops() {
|
|
61
|
-
return this.inSession(() => this.loops.list(), true);
|
|
62
|
-
}
|
|
63
|
-
cancelLoop(loopId) {
|
|
64
|
-
return this.inSession(() => this.loops.cancel(loopId), true);
|
|
65
|
-
}
|
|
66
|
-
/** Re-apply a resize that was held during startup (a best-effort restore). */
|
|
67
|
-
restoreHeldSize(size) {
|
|
68
|
-
void restoreHeldResize(this.pty, this.terminal, size);
|
|
69
|
-
}
|
|
70
|
-
enqueue(input, kind, options) {
|
|
71
|
-
const driver = (paths, signal) => this.attachImages(paths, signal);
|
|
72
|
-
const send = (attach) => this.controlQueue.send(input, kind, attach);
|
|
73
|
-
return this.inSession(() => enqueueSubmission(options?.images, driver, send, this.imageBudget));
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=session-base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-base.js","sourceRoot":"","sources":["../../src/runtime/session-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The session's control surface, shared by every adapter session and extracted
|
|
3
|
-
* from AgentSessionBase to keep it within the file-size cap. It owns `interrupt`
|
|
4
|
-
* (direct Escape delivery gated on readiness state, with a timeout and
|
|
5
|
-
* coalescing of concurrent interrupts, bypassing command submission) alongside
|
|
6
|
-
* the `compact` and `/model` picker commands (which do go through submission).
|
|
7
|
-
* Implements PRD §5.3.
|
|
8
|
-
*/
|
|
9
|
-
import { type ModelPickerSpec } from "../core/model-picker.ts";
|
|
10
|
-
import type { AgentModelOption } from "../core/model-rows.ts";
|
|
11
|
-
import type { ScreenTerminal } from "../core/tui-screen.ts";
|
|
12
|
-
import type { ElwoodSessionStatus } from "../core/types.ts";
|
|
13
|
-
import type { SessionStatusEmitter } from "./session-status-wiring.ts";
|
|
14
|
-
type Timeout = {
|
|
15
|
-
readonly timeoutMs?: number;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* The session primitives the control surface drives (interrupt readiness/status,
|
|
19
|
-
* compact submission, and the model picker). The picker is a thunk because the
|
|
20
|
-
* concrete adapter sets `picker` in a subclass field initializer that runs AFTER
|
|
21
|
-
* the base constructor, so it is resolved per call.
|
|
22
|
-
*/
|
|
23
|
-
export type CommandSurfaceDeps = {
|
|
24
|
-
readonly terminal: ScreenTerminal;
|
|
25
|
-
readonly statusEvents: SessionStatusEmitter;
|
|
26
|
-
readonly status: () => ElwoodSessionStatus;
|
|
27
|
-
readonly everReady: () => boolean;
|
|
28
|
-
readonly picker: () => ModelPickerSpec;
|
|
29
|
-
readonly submit: (command: string, kind: "compact" | "list_models" | "set_model") => Promise<void>;
|
|
30
|
-
};
|
|
31
|
-
/** Builds each command's interrupt/compact/picker closures from the injected primitives. */
|
|
32
|
-
export declare class CommandSurface {
|
|
33
|
-
private readonly deps;
|
|
34
|
-
private interrupting;
|
|
35
|
-
constructor(deps: CommandSurfaceDeps);
|
|
36
|
-
interrupt(options?: Timeout): Promise<void>;
|
|
37
|
-
compact(options?: Timeout): Promise<void>;
|
|
38
|
-
listModels(options?: Timeout): Promise<readonly AgentModelOption[]>;
|
|
39
|
-
setModel(id: string, options?: Timeout): Promise<void>;
|
|
40
|
-
private io;
|
|
41
|
-
}
|
|
42
|
-
export {};
|
|
43
|
-
//# sourceMappingURL=session-commands.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-commands.d.ts","sourceRoot":"","sources":["../../src/runtime/session-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,KAAK,OAAO,GAAG;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,eAAe,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,CACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,KAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AAEF,4FAA4F;AAC5F,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAI1C,OAAO,CAAC,YAAY,CAA4B;gBAEpC,IAAI,EAAE,kBAAkB;IAIpC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3C,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC;IAInE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,OAAO,CAAC,EAAE;CAGX"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The session's control surface, shared by every adapter session and extracted
|
|
3
|
-
* from AgentSessionBase to keep it within the file-size cap. It owns `interrupt`
|
|
4
|
-
* (direct Escape delivery gated on readiness state, with a timeout and
|
|
5
|
-
* coalescing of concurrent interrupts, bypassing command submission) alongside
|
|
6
|
-
* the `compact` and `/model` picker commands (which do go through submission).
|
|
7
|
-
* Implements PRD §5.3.
|
|
8
|
-
*/
|
|
9
|
-
import { compactCommand, sessionCompact } from "../core/compact.js";
|
|
10
|
-
import { interruptKey, sessionInterrupt } from "../core/interrupt.js";
|
|
11
|
-
import { listPickerModels, pickerTimeout, setPickerModel, } from "../core/model-picker.js";
|
|
12
|
-
import { ignoreInputFailure } from "../core/session-input.js";
|
|
13
|
-
/** Builds each command's interrupt/compact/picker closures from the injected primitives. */
|
|
14
|
-
export class CommandSurface {
|
|
15
|
-
deps;
|
|
16
|
-
// Coalesces concurrent interrupts: a second call while one is in flight joins
|
|
17
|
-
// the first rather than writing a second Escape, which could land on the now
|
|
18
|
-
// idle composer after the first cancels the turn (a non-neutral keystroke).
|
|
19
|
-
interrupting;
|
|
20
|
-
constructor(deps) {
|
|
21
|
-
this.deps = deps;
|
|
22
|
-
}
|
|
23
|
-
interrupt(options) {
|
|
24
|
-
if (this.interrupting)
|
|
25
|
-
return this.interrupting;
|
|
26
|
-
const sendEscape = () => Promise.resolve(this.deps.terminal.sendInput(interruptKey));
|
|
27
|
-
const { statusEvents, status, everReady } = this.deps;
|
|
28
|
-
const running = sessionInterrupt(statusEvents, status, everReady, sendEscape, options?.timeoutMs);
|
|
29
|
-
// Clear the in-flight guard on settle so a later interrupt can run afresh.
|
|
30
|
-
this.interrupting = running.finally(() => {
|
|
31
|
-
this.interrupting = undefined;
|
|
32
|
-
});
|
|
33
|
-
return this.interrupting;
|
|
34
|
-
}
|
|
35
|
-
compact(options) {
|
|
36
|
-
const submit = () => this.deps.submit(compactCommand, "compact");
|
|
37
|
-
const nudge = () => {
|
|
38
|
-
ignoreInputFailure(this.deps.terminal.sendInput("\r"));
|
|
39
|
-
};
|
|
40
|
-
return sessionCompact(this.deps.statusEvents, submit, nudge, options?.timeoutMs);
|
|
41
|
-
}
|
|
42
|
-
listModels(options) {
|
|
43
|
-
return listPickerModels(this.io("list_models"), this.deps.picker(), pickerTimeout(options));
|
|
44
|
-
}
|
|
45
|
-
setModel(id, options) {
|
|
46
|
-
return setPickerModel(this.io("set_model"), this.deps.picker(), id, pickerTimeout(options));
|
|
47
|
-
}
|
|
48
|
-
io(kind) {
|
|
49
|
-
return { terminal: this.deps.terminal, submit: (c) => this.deps.submit(c, kind) };
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=session-commands.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-commands.js","sourceRoot":"","sources":["../../src/runtime/session-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EACL,gBAAgB,EAGhB,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAyB9D,4FAA4F;AAC5F,MAAM,OAAO,cAAc;IACR,IAAI,CAAqB;IAC1C,8EAA8E;IAC9E,6EAA6E;IAC7E,4EAA4E;IACpE,YAAY,CAA4B;IAEhD,YAAY,IAAwB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,OAAiB;QACzB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QACrF,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACtD,MAAM,OAAO,GAAG,gBAAgB,CAC9B,YAAY,EACZ,MAAM,EACN,SAAS,EACT,UAAU,EACV,OAAO,EAAE,SAAS,CACnB,CAAC;QACF,2EAA2E;QAC3E,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACvC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,OAAiB;QACvB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACnF,CAAC;IAED,UAAU,CAAC,OAAiB;QAC1B,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,QAAQ,CAAC,EAAU,EAAE,OAAiB;QACpC,OAAO,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9F,CAAC;IAEO,EAAE,CAAC,IAAiC;QAC1C,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;IACpF,CAAC;CACF"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adapter-neutral PTY-exit orchestration (PRD §5.3, C-LIFE-10). Both the Claude
|
|
3
|
-
* and Codex exit boundaries drain the transcript, emit `terminal:exit` + activity,
|
|
4
|
-
* and submit terminal status (which reaps the descendant tree in its own `finally`)
|
|
5
|
-
* in the same order behind the same error boundary. This is that one shared shape.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Run the exit-boundary `flushAndEmit` (transcript drain + `terminal:exit`/activity
|
|
9
|
-
* emission) behind an error boundary, then ALWAYS run `submitExit` in a `finally`.
|
|
10
|
-
* `submitExit` submits terminal status and reaps in its OWN `finally`, so a throwing
|
|
11
|
-
* transcript flush, `terminal:exit` listener, or activity listener can never skip
|
|
12
|
-
* the terminal status or the unconditional reap, and no listener failure escapes
|
|
13
|
-
* the native PTY-exit callback (which would leave the reap unrun).
|
|
14
|
-
*/
|
|
15
|
-
export declare function finishSessionExit(flushAndEmit: () => void, submitExit: () => void): void;
|
|
16
|
-
//# sourceMappingURL=session-exit.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-exit.d.ts","sourceRoot":"","sources":["../../src/runtime/session-exit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,GAAG,IAAI,CAaxF"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adapter-neutral PTY-exit orchestration (PRD §5.3, C-LIFE-10). Both the Claude
|
|
3
|
-
* and Codex exit boundaries drain the transcript, emit `terminal:exit` + activity,
|
|
4
|
-
* and submit terminal status (which reaps the descendant tree in its own `finally`)
|
|
5
|
-
* in the same order behind the same error boundary. This is that one shared shape.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Run the exit-boundary `flushAndEmit` (transcript drain + `terminal:exit`/activity
|
|
9
|
-
* emission) behind an error boundary, then ALWAYS run `submitExit` in a `finally`.
|
|
10
|
-
* `submitExit` submits terminal status and reaps in its OWN `finally`, so a throwing
|
|
11
|
-
* transcript flush, `terminal:exit` listener, or activity listener can never skip
|
|
12
|
-
* the terminal status or the unconditional reap, and no listener failure escapes
|
|
13
|
-
* the native PTY-exit callback (which would leave the reap unrun).
|
|
14
|
-
*/
|
|
15
|
-
export function finishSessionExit(flushAndEmit, submitExit) {
|
|
16
|
-
try {
|
|
17
|
-
flushAndEmit();
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
// A throwing flush/emit listener must not skip terminal status + reap.
|
|
21
|
-
}
|
|
22
|
-
finally {
|
|
23
|
-
try {
|
|
24
|
-
submitExit();
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
// Status was submitted and the reap ran inside submitExit's own finally;
|
|
28
|
-
// contain any late status-listener throw so it can't abort the callback.
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=session-exit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-exit.js","sourceRoot":"","sources":["../../src/runtime/session-exit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAwB,EAAE,UAAsB;IAChF,IAAI,CAAC;QACH,YAAY,EAAE,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;IACzE,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,UAAU,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;YACzE,yEAAyE;QAC3E,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Builds the per-submission image-attach task handed to the control queue. The
|
|
3
|
-
* inputs are SNAPSHOTTED synchronously at the public boundary (byte buffers cloned
|
|
4
|
-
* at the call, paths absolutized), so a caller who mutates its buffer after the
|
|
5
|
-
* call cannot change what is attached — the clone does not wait for queue dispatch.
|
|
6
|
-
* The submission is then enqueued synchronously in call order (preserving FIFO).
|
|
7
|
-
* Inside the queued task, at dispatch, the async pass (path readability/size) runs,
|
|
8
|
-
* then byte materialization and the adapter attach — so a bad input rejects the op
|
|
9
|
-
* (never wedging the queue) and pending submissions accumulate no temp-disk usage.
|
|
10
|
-
* Implements PRD §5.3 (C-API-44).
|
|
11
|
-
*/
|
|
12
|
-
import { type ImageInput } from "../core/images/types.ts";
|
|
13
|
-
/**
|
|
14
|
-
* A per-session aggregate byte budget for image clones held across ALL not-yet-attached
|
|
15
|
-
* queued submissions. Reserved synchronously when a submission's bytes are cloned and
|
|
16
|
-
* released when it settles, so a slow paste can't let a caller retain gigabytes of
|
|
17
|
-
* queued clones (C-API-44).
|
|
18
|
-
*/
|
|
19
|
-
export declare class QueuedImageBudget {
|
|
20
|
-
private used;
|
|
21
|
-
private readonly ceiling;
|
|
22
|
-
constructor(ceiling?: number);
|
|
23
|
-
reserve(bytes: number): void;
|
|
24
|
-
release(bytes: number): void;
|
|
25
|
-
}
|
|
26
|
-
/** A text-submission kind carried by the control queue. */
|
|
27
|
-
export type SubmitKind = "prompt" | "message" | "guidance";
|
|
28
|
-
/** An attach step run inside a queued op, before the text write. */
|
|
29
|
-
export type AttachTask = (signal: AbortSignal) => Promise<void>;
|
|
30
|
-
/** Drives an adapter's native attach for already-resolved absolute image paths. */
|
|
31
|
-
export type AttachDriver = (paths: readonly string[], signal: AbortSignal) => Promise<void>;
|
|
32
|
-
/** Queues a submission through the control queue, optionally with an attach task. */
|
|
33
|
-
type QueueSend = (attach?: AttachTask) => Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Queues a text submission, optionally attaching `images`. With no images it is a
|
|
36
|
-
* plain `send()`; the queue call happens synchronously so a later plain submission
|
|
37
|
-
* cannot overtake an image submission in FIFO order. With images, the byte buffers
|
|
38
|
-
* are cloned SYNCHRONOUSLY here (before the op is queued), so a caller that mutates
|
|
39
|
-
* its buffer after the call cannot change what is attached. A synchronous snapshot
|
|
40
|
-
* failure (bad shape, over-limit bytes) surfaces as a REJECTED promise, never a
|
|
41
|
-
* synchronous throw out of the send API (C-API-44).
|
|
42
|
-
*/
|
|
43
|
-
export declare function enqueueSubmission(images: readonly ImageInput[] | undefined, driver: AttachDriver, send: QueueSend, budget?: QueuedImageBudget): Promise<void>;
|
|
44
|
-
export {};
|
|
45
|
-
//# sourceMappingURL=session-image-attach.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-image-attach.d.ts","sourceRoot":"","sources":["../../src/runtime/session-image-attach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,yBAAyB,CAAC;AAEvE;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBACrB,OAAO,SAA6B;IAGhD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG7B;AAED,2DAA2D;AAC3D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3D,oEAAoE;AACpE,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhE,mFAAmF;AACnF,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5F,qFAAqF;AACrF,KAAK,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAExD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,EACzC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|