@with-logic/elwood 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +172 -0
- package/LICENSE +21 -0
- package/README.md +304 -0
- package/dist/bridge/limits.d.ts +13 -0
- package/dist/bridge/limits.d.ts.map +1 -0
- package/dist/bridge/limits.js +13 -0
- package/dist/bridge/limits.js.map +1 -0
- package/dist/bridge/parse.d.ts +21 -0
- package/dist/bridge/parse.d.ts.map +1 -0
- package/dist/bridge/parse.js +45 -0
- package/dist/bridge/parse.js.map +1 -0
- package/dist/bridge/script.d.ts +6 -0
- package/dist/bridge/script.d.ts.map +1 -0
- package/dist/bridge/script.js +76 -0
- package/dist/bridge/script.js.map +1 -0
- package/dist/bridge/server.d.ts +26 -0
- package/dist/bridge/server.d.ts.map +1 -0
- package/dist/bridge/server.js +149 -0
- package/dist/bridge/server.js.map +1 -0
- package/dist/bridge/types.d.ts +10 -0
- package/dist/bridge/types.d.ts.map +1 -0
- package/dist/bridge/types.js +6 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/claude/attach-images.d.ts +17 -0
- package/dist/claude/attach-images.d.ts.map +1 -0
- package/dist/claude/attach-images.js +42 -0
- package/dist/claude/attach-images.js.map +1 -0
- package/dist/claude/command.d.ts +11 -0
- package/dist/claude/command.d.ts.map +1 -0
- package/dist/claude/command.js +34 -0
- package/dist/claude/command.js.map +1 -0
- package/dist/claude/handler-types.d.ts +23 -0
- package/dist/claude/handler-types.d.ts.map +1 -0
- package/dist/claude/handler-types.js +6 -0
- package/dist/claude/handler-types.js.map +1 -0
- package/dist/claude/hook-dispatch.d.ts +9 -0
- package/dist/claude/hook-dispatch.d.ts.map +1 -0
- package/dist/claude/hook-dispatch.js +12 -0
- package/dist/claude/hook-dispatch.js.map +1 -0
- package/dist/claude/hook-events-extra.d.ts +81 -0
- package/dist/claude/hook-events-extra.d.ts.map +1 -0
- package/dist/claude/hook-events-extra.js +6 -0
- package/dist/claude/hook-events-extra.js.map +1 -0
- package/dist/claude/hook-events.d.ts +101 -0
- package/dist/claude/hook-events.d.ts.map +1 -0
- package/dist/claude/hook-events.js +6 -0
- package/dist/claude/hook-events.js.map +1 -0
- package/dist/claude/hook-names.d.ts +24 -0
- package/dist/claude/hook-names.d.ts.map +1 -0
- package/dist/claude/hook-names.js +45 -0
- package/dist/claude/hook-names.js.map +1 -0
- package/dist/claude/hooks/dispatch.d.ts +9 -0
- package/dist/claude/hooks/dispatch.d.ts.map +1 -0
- package/dist/claude/hooks/dispatch.js +12 -0
- package/dist/claude/hooks/dispatch.js.map +1 -0
- package/dist/claude/hooks/events-extra.d.ts +81 -0
- package/dist/claude/hooks/events-extra.d.ts.map +1 -0
- package/dist/claude/hooks/events-extra.js +6 -0
- package/dist/claude/hooks/events-extra.js.map +1 -0
- package/dist/claude/hooks/events.d.ts +101 -0
- package/dist/claude/hooks/events.d.ts.map +1 -0
- package/dist/claude/hooks/events.js +6 -0
- package/dist/claude/hooks/events.js.map +1 -0
- package/dist/claude/hooks/index.d.ts +78 -0
- package/dist/claude/hooks/index.d.ts.map +1 -0
- package/dist/claude/hooks/index.js +6 -0
- package/dist/claude/hooks/index.js.map +1 -0
- package/dist/claude/hooks/names.d.ts +24 -0
- package/dist/claude/hooks/names.d.ts.map +1 -0
- package/dist/claude/hooks/names.js +45 -0
- package/dist/claude/hooks/names.js.map +1 -0
- package/dist/claude/hooks/tool-events.d.ts +10 -0
- package/dist/claude/hooks/tool-events.d.ts.map +1 -0
- package/dist/claude/hooks/tool-events.js +18 -0
- package/dist/claude/hooks/tool-events.js.map +1 -0
- package/dist/claude/hooks/tool-types.d.ts +158 -0
- package/dist/claude/hooks/tool-types.d.ts.map +1 -0
- package/dist/claude/hooks/tool-types.js +6 -0
- package/dist/claude/hooks/tool-types.js.map +1 -0
- package/dist/claude/hooks.d.ts +78 -0
- package/dist/claude/hooks.d.ts.map +1 -0
- package/dist/claude/hooks.js +6 -0
- package/dist/claude/hooks.js.map +1 -0
- package/dist/claude/list-models.d.ts +14 -0
- package/dist/claude/list-models.d.ts.map +1 -0
- package/dist/claude/list-models.js +31 -0
- package/dist/claude/list-models.js.map +1 -0
- package/dist/claude/login/abort.d.ts +39 -0
- package/dist/claude/login/abort.d.ts.map +1 -0
- package/dist/claude/login/abort.js +81 -0
- package/dist/claude/login/abort.js.map +1 -0
- package/dist/claude/login/driver.d.ts +27 -0
- package/dist/claude/login/driver.d.ts.map +1 -0
- package/dist/claude/login/driver.js +30 -0
- package/dist/claude/login/driver.js.map +1 -0
- package/dist/claude/login/expiry-screen.d.ts +24 -0
- package/dist/claude/login/expiry-screen.d.ts.map +1 -0
- package/dist/claude/login/expiry-screen.js +31 -0
- package/dist/claude/login/expiry-screen.js.map +1 -0
- package/dist/claude/login/screens.d.ts +26 -0
- package/dist/claude/login/screens.d.ts.map +1 -0
- package/dist/claude/login/screens.js +33 -0
- package/dist/claude/login/screens.js.map +1 -0
- package/dist/claude/login/session-login.d.ts +24 -0
- package/dist/claude/login/session-login.d.ts.map +1 -0
- package/dist/claude/login/session-login.js +97 -0
- package/dist/claude/login/session-login.js.map +1 -0
- package/dist/claude/login/stages.d.ts +22 -0
- package/dist/claude/login/stages.d.ts.map +1 -0
- package/dist/claude/login/stages.js +144 -0
- package/dist/claude/login/stages.js.map +1 -0
- package/dist/claude/login/types.d.ts +38 -0
- package/dist/claude/login/types.d.ts.map +1 -0
- package/dist/claude/login/types.js +5 -0
- package/dist/claude/login/types.js.map +1 -0
- package/dist/claude/login/validate.d.ts +15 -0
- package/dist/claude/login/validate.d.ts.map +1 -0
- package/dist/claude/login/validate.js +43 -0
- package/dist/claude/login/validate.js.map +1 -0
- package/dist/claude/login-expired.d.ts +31 -0
- package/dist/claude/login-expired.d.ts.map +1 -0
- package/dist/claude/login-expired.js +61 -0
- package/dist/claude/login-expired.js.map +1 -0
- package/dist/claude/model-picker.d.ts +7 -0
- package/dist/claude/model-picker.d.ts.map +1 -0
- package/dist/claude/model-picker.js +43 -0
- package/dist/claude/model-picker.js.map +1 -0
- package/dist/claude/model-switch-confirmation.d.ts +16 -0
- package/dist/claude/model-switch-confirmation.d.ts.map +1 -0
- package/dist/claude/model-switch-confirmation.js +63 -0
- package/dist/claude/model-switch-confirmation.js.map +1 -0
- package/dist/claude/normalize.d.ts +7 -0
- package/dist/claude/normalize.d.ts.map +1 -0
- package/dist/claude/normalize.js +63 -0
- package/dist/claude/normalize.js.map +1 -0
- package/dist/claude/permissions.d.ts +26 -0
- package/dist/claude/permissions.d.ts.map +1 -0
- package/dist/claude/permissions.js +6 -0
- package/dist/claude/permissions.js.map +1 -0
- package/dist/claude/preflight.d.ts +17 -0
- package/dist/claude/preflight.d.ts.map +1 -0
- package/dist/claude/preflight.js +82 -0
- package/dist/claude/preflight.js.map +1 -0
- package/dist/claude/resize-restore.d.ts +13 -0
- package/dist/claude/resize-restore.d.ts.map +1 -0
- package/dist/claude/resize-restore.js +29 -0
- package/dist/claude/resize-restore.js.map +1 -0
- package/dist/claude/screen-table.d.ts +28 -0
- package/dist/claude/screen-table.d.ts.map +1 -0
- package/dist/claude/screen-table.js +55 -0
- package/dist/claude/screen-table.js.map +1 -0
- package/dist/claude/serialize.d.ts +8 -0
- package/dist/claude/serialize.d.ts.map +1 -0
- package/dist/claude/serialize.js +45 -0
- package/dist/claude/serialize.js.map +1 -0
- package/dist/claude/session/bridge.d.ts +11 -0
- package/dist/claude/session/bridge.d.ts.map +1 -0
- package/dist/claude/session/bridge.js +18 -0
- package/dist/claude/session/bridge.js.map +1 -0
- package/dist/claude/session/build.d.ts +15 -0
- package/dist/claude/session/build.d.ts.map +1 -0
- package/dist/claude/session/build.js +147 -0
- package/dist/claude/session/build.js.map +1 -0
- package/dist/claude/session/hook-handler.d.ts +34 -0
- package/dist/claude/session/hook-handler.d.ts.map +1 -0
- package/dist/claude/session/hook-handler.js +42 -0
- package/dist/claude/session/hook-handler.js.map +1 -0
- package/dist/claude/session/index.d.ts +18 -0
- package/dist/claude/session/index.d.ts.map +1 -0
- package/dist/claude/session/index.js +58 -0
- package/dist/claude/session/index.js.map +1 -0
- package/dist/claude/session/instance.d.ts +42 -0
- package/dist/claude/session/instance.d.ts.map +1 -0
- package/dist/claude/session/instance.js +146 -0
- package/dist/claude/session/instance.js.map +1 -0
- package/dist/claude/session/interface.d.ts +49 -0
- package/dist/claude/session/interface.d.ts.map +1 -0
- package/dist/claude/session/interface.js +10 -0
- package/dist/claude/session/interface.js.map +1 -0
- package/dist/claude/session/resume.d.ts +8 -0
- package/dist/claude/session/resume.d.ts.map +1 -0
- package/dist/claude/session/resume.js +47 -0
- package/dist/claude/session/resume.js.map +1 -0
- package/dist/claude/session/runtime.d.ts +43 -0
- package/dist/claude/session/runtime.d.ts.map +1 -0
- package/dist/claude/session/runtime.js +105 -0
- package/dist/claude/session/runtime.js.map +1 -0
- package/dist/claude/session/start-or-resume.d.ts +12 -0
- package/dist/claude/session/start-or-resume.d.ts.map +1 -0
- package/dist/claude/session/start-or-resume.js +32 -0
- package/dist/claude/session/start-or-resume.js.map +1 -0
- package/dist/claude/session/transcript.d.ts +62 -0
- package/dist/claude/session/transcript.d.ts.map +1 -0
- package/dist/claude/session/transcript.js +88 -0
- package/dist/claude/session/transcript.js.map +1 -0
- package/dist/claude/session-bridge.d.ts +11 -0
- package/dist/claude/session-bridge.d.ts.map +1 -0
- package/dist/claude/session-bridge.js +18 -0
- package/dist/claude/session-bridge.js.map +1 -0
- package/dist/claude/session-build.d.ts +15 -0
- package/dist/claude/session-build.d.ts.map +1 -0
- package/dist/claude/session-build.js +147 -0
- package/dist/claude/session-build.js.map +1 -0
- package/dist/claude/session-hook-handler.d.ts +34 -0
- package/dist/claude/session-hook-handler.d.ts.map +1 -0
- package/dist/claude/session-hook-handler.js +42 -0
- package/dist/claude/session-hook-handler.js.map +1 -0
- package/dist/claude/session-instance.d.ts +42 -0
- package/dist/claude/session-instance.d.ts.map +1 -0
- package/dist/claude/session-instance.js +146 -0
- package/dist/claude/session-instance.js.map +1 -0
- package/dist/claude/session-interface.d.ts +49 -0
- package/dist/claude/session-interface.d.ts.map +1 -0
- package/dist/claude/session-interface.js +10 -0
- package/dist/claude/session-interface.js.map +1 -0
- package/dist/claude/session-resume.d.ts +8 -0
- package/dist/claude/session-resume.d.ts.map +1 -0
- package/dist/claude/session-resume.js +47 -0
- package/dist/claude/session-resume.js.map +1 -0
- package/dist/claude/session-runtime.d.ts +43 -0
- package/dist/claude/session-runtime.d.ts.map +1 -0
- package/dist/claude/session-runtime.js +105 -0
- package/dist/claude/session-runtime.js.map +1 -0
- package/dist/claude/session-transcript.d.ts +62 -0
- package/dist/claude/session-transcript.d.ts.map +1 -0
- package/dist/claude/session-transcript.js +88 -0
- package/dist/claude/session-transcript.js.map +1 -0
- package/dist/claude/session.d.ts +18 -0
- package/dist/claude/session.d.ts.map +1 -0
- package/dist/claude/session.js +58 -0
- package/dist/claude/session.js.map +1 -0
- package/dist/claude/settings.d.ts +14 -0
- package/dist/claude/settings.d.ts.map +1 -0
- package/dist/claude/settings.js +34 -0
- package/dist/claude/settings.js.map +1 -0
- package/dist/claude/simple.d.ts +28 -0
- package/dist/claude/simple.d.ts.map +1 -0
- package/dist/claude/simple.js +45 -0
- package/dist/claude/simple.js.map +1 -0
- package/dist/claude/start-or-resume.d.ts +12 -0
- package/dist/claude/start-or-resume.d.ts.map +1 -0
- package/dist/claude/start-or-resume.js +32 -0
- package/dist/claude/start-or-resume.js.map +1 -0
- package/dist/claude/startup-prompts.d.ts +16 -0
- package/dist/claude/startup-prompts.d.ts.map +1 -0
- package/dist/claude/startup-prompts.js +46 -0
- package/dist/claude/startup-prompts.js.map +1 -0
- package/dist/claude/startup-size.d.ts +8 -0
- package/dist/claude/startup-size.d.ts.map +1 -0
- package/dist/claude/startup-size.js +8 -0
- package/dist/claude/startup-size.js.map +1 -0
- package/dist/claude/tool-hook-events.d.ts +10 -0
- package/dist/claude/tool-hook-events.d.ts.map +1 -0
- package/dist/claude/tool-hook-events.js +18 -0
- package/dist/claude/tool-hook-events.js.map +1 -0
- package/dist/claude/tool-types.d.ts +158 -0
- package/dist/claude/tool-types.d.ts.map +1 -0
- package/dist/claude/tool-types.js +6 -0
- package/dist/claude/tool-types.js.map +1 -0
- package/dist/claude/transcript/baseline.d.ts +33 -0
- package/dist/claude/transcript/baseline.d.ts.map +1 -0
- package/dist/claude/transcript/baseline.js +108 -0
- package/dist/claude/transcript/baseline.js.map +1 -0
- package/dist/claude/transcript/cursor-io.d.ts +15 -0
- package/dist/claude/transcript/cursor-io.d.ts.map +1 -0
- package/dist/claude/transcript/cursor-io.js +44 -0
- package/dist/claude/transcript/cursor-io.js.map +1 -0
- package/dist/claude/transcript/cursor.d.ts +24 -0
- package/dist/claude/transcript/cursor.d.ts.map +1 -0
- package/dist/claude/transcript/cursor.js +43 -0
- package/dist/claude/transcript/cursor.js.map +1 -0
- package/dist/claude/transcript/drain-context.d.ts +22 -0
- package/dist/claude/transcript/drain-context.d.ts.map +1 -0
- package/dist/claude/transcript/drain-context.js +18 -0
- package/dist/claude/transcript/drain-context.js.map +1 -0
- package/dist/claude/transcript/drain.d.ts +33 -0
- package/dist/claude/transcript/drain.d.ts.map +1 -0
- package/dist/claude/transcript/drain.js +56 -0
- package/dist/claude/transcript/drain.js.map +1 -0
- package/dist/claude/transcript/drops.d.ts +9 -0
- package/dist/claude/transcript/drops.d.ts.map +1 -0
- package/dist/claude/transcript/drops.js +9 -0
- package/dist/claude/transcript/drops.js.map +1 -0
- package/dist/claude/transcript/emit.d.ts +26 -0
- package/dist/claude/transcript/emit.d.ts.map +1 -0
- package/dist/claude/transcript/emit.js +57 -0
- package/dist/claude/transcript/emit.js.map +1 -0
- package/dist/claude/transcript/fs-guard.d.ts +24 -0
- package/dist/claude/transcript/fs-guard.d.ts.map +1 -0
- package/dist/claude/transcript/fs-guard.js +48 -0
- package/dist/claude/transcript/fs-guard.js.map +1 -0
- package/dist/claude/transcript/index.d.ts +38 -0
- package/dist/claude/transcript/index.d.ts.map +1 -0
- package/dist/claude/transcript/index.js +191 -0
- package/dist/claude/transcript/index.js.map +1 -0
- package/dist/claude/transcript/summary.d.ts +40 -0
- package/dist/claude/transcript/summary.d.ts.map +1 -0
- package/dist/claude/transcript/summary.js +90 -0
- package/dist/claude/transcript/summary.js.map +1 -0
- package/dist/claude/transcript/warnings.d.ts +31 -0
- package/dist/claude/transcript/warnings.d.ts.map +1 -0
- package/dist/claude/transcript/warnings.js +53 -0
- package/dist/claude/transcript/warnings.js.map +1 -0
- package/dist/claude/transcript/watcher-config.d.ts +22 -0
- package/dist/claude/transcript/watcher-config.d.ts.map +1 -0
- package/dist/claude/transcript/watcher-config.js +7 -0
- package/dist/claude/transcript/watcher-config.js.map +1 -0
- package/dist/claude/validate/input.d.ts +8 -0
- package/dist/claude/validate/input.d.ts.map +1 -0
- package/dist/claude/validate/input.js +137 -0
- package/dist/claude/validate/input.js.map +1 -0
- package/dist/claude/validate/permission-update.d.ts +10 -0
- package/dist/claude/validate/permission-update.d.ts.map +1 -0
- package/dist/claude/validate/permission-update.js +72 -0
- package/dist/claude/validate/permission-update.js.map +1 -0
- package/dist/claude/validate/result.d.ts +7 -0
- package/dist/claude/validate/result.d.ts.map +1 -0
- package/dist/claude/validate/result.js +118 -0
- package/dist/claude/validate/result.js.map +1 -0
- package/dist/claude/validate/shapes.d.ts +22 -0
- package/dist/claude/validate/shapes.d.ts.map +1 -0
- package/dist/claude/validate/shapes.js +15 -0
- package/dist/claude/validate/shapes.js.map +1 -0
- package/dist/claude/validate/tool-update.d.ts +15 -0
- package/dist/claude/validate/tool-update.d.ts.map +1 -0
- package/dist/claude/validate/tool-update.js +122 -0
- package/dist/claude/validate/tool-update.js.map +1 -0
- package/dist/claude/validate-input.d.ts +8 -0
- package/dist/claude/validate-input.d.ts.map +1 -0
- package/dist/claude/validate-input.js +137 -0
- package/dist/claude/validate-input.js.map +1 -0
- package/dist/claude/validate-permission-update.d.ts +10 -0
- package/dist/claude/validate-permission-update.d.ts.map +1 -0
- package/dist/claude/validate-permission-update.js +72 -0
- package/dist/claude/validate-permission-update.js.map +1 -0
- package/dist/claude/validate-result.d.ts +7 -0
- package/dist/claude/validate-result.d.ts.map +1 -0
- package/dist/claude/validate-result.js +118 -0
- package/dist/claude/validate-result.js.map +1 -0
- package/dist/claude/validate-shapes.d.ts +22 -0
- package/dist/claude/validate-shapes.d.ts.map +1 -0
- package/dist/claude/validate-shapes.js +15 -0
- package/dist/claude/validate-shapes.js.map +1 -0
- package/dist/claude/validate-tool-update.d.ts +15 -0
- package/dist/claude/validate-tool-update.d.ts.map +1 -0
- package/dist/claude/validate-tool-update.js +122 -0
- package/dist/claude/validate-tool-update.js.map +1 -0
- package/dist/cli/agent-detect.d.ts +44 -0
- package/dist/cli/agent-detect.d.ts.map +1 -0
- package/dist/cli/agent-detect.js +66 -0
- package/dist/cli/agent-detect.js.map +1 -0
- package/dist/cli/arg-errors.d.ts +6 -0
- package/dist/cli/arg-errors.d.ts.map +1 -0
- package/dist/cli/arg-errors.js +44 -0
- package/dist/cli/arg-errors.js.map +1 -0
- package/dist/cli/arg-options.d.ts +26 -0
- package/dist/cli/arg-options.d.ts.map +1 -0
- package/dist/cli/arg-options.js +50 -0
- package/dist/cli/arg-options.js.map +1 -0
- package/dist/cli/args/errors.d.ts +6 -0
- package/dist/cli/args/errors.d.ts.map +1 -0
- package/dist/cli/args/errors.js +44 -0
- package/dist/cli/args/errors.js.map +1 -0
- package/dist/cli/args/index.d.ts +7 -0
- package/dist/cli/args/index.d.ts.map +1 -0
- package/dist/cli/args/index.js +70 -0
- package/dist/cli/args/index.js.map +1 -0
- package/dist/cli/args/options.d.ts +26 -0
- package/dist/cli/args/options.d.ts.map +1 -0
- package/dist/cli/args/options.js +50 -0
- package/dist/cli/args/options.js.map +1 -0
- package/dist/cli/args.d.ts +7 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +70 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config/codec.d.ts +12 -0
- package/dist/cli/config/codec.d.ts.map +1 -0
- package/dist/cli/config/codec.js +196 -0
- package/dist/cli/config/codec.js.map +1 -0
- package/dist/cli/config/commands.d.ts +15 -0
- package/dist/cli/config/commands.d.ts.map +1 -0
- package/dist/cli/config/commands.js +56 -0
- package/dist/cli/config/commands.js.map +1 -0
- package/dist/cli/config/effective.d.ts +21 -0
- package/dist/cli/config/effective.d.ts.map +1 -0
- package/dist/cli/config/effective.js +70 -0
- package/dist/cli/config/effective.js.map +1 -0
- package/dist/cli/config/keys.d.ts +7 -0
- package/dist/cli/config/keys.d.ts.map +1 -0
- package/dist/cli/config/keys.js +23 -0
- package/dist/cli/config/keys.js.map +1 -0
- package/dist/cli/config/paths.d.ts +13 -0
- package/dist/cli/config/paths.d.ts.map +1 -0
- package/dist/cli/config/paths.js +33 -0
- package/dist/cli/config/paths.js.map +1 -0
- package/dist/cli/config/store.d.ts +16 -0
- package/dist/cli/config/store.d.ts.map +1 -0
- package/dist/cli/config/store.js +97 -0
- package/dist/cli/config/store.js.map +1 -0
- package/dist/cli/duration.d.ts +6 -0
- package/dist/cli/duration.d.ts.map +1 -0
- package/dist/cli/duration.js +20 -0
- package/dist/cli/duration.js.map +1 -0
- package/dist/cli/entry.d.ts +27 -0
- package/dist/cli/entry.d.ts.map +1 -0
- package/dist/cli/entry.js +57 -0
- package/dist/cli/entry.js.map +1 -0
- package/dist/cli/head/display.d.ts +30 -0
- package/dist/cli/head/display.d.ts.map +1 -0
- package/dist/cli/head/display.js +108 -0
- package/dist/cli/head/display.js.map +1 -0
- package/dist/cli/head/process.d.ts +4 -0
- package/dist/cli/head/process.d.ts.map +1 -0
- package/dist/cli/head/process.js +94 -0
- package/dist/cli/head/process.js.map +1 -0
- package/dist/cli/head/types.d.ts +19 -0
- package/dist/cli/head/types.d.ts.map +1 -0
- package/dist/cli/head/types.js +3 -0
- package/dist/cli/head/types.js.map +1 -0
- package/dist/cli/help.d.ts +7 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +82 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/input.d.ts +8 -0
- package/dist/cli/input.d.ts.map +1 -0
- package/dist/cli/input.js +37 -0
- package/dist/cli/input.js.map +1 -0
- package/dist/cli/lifecycle/index.d.ts +61 -0
- package/dist/cli/lifecycle/index.d.ts.map +1 -0
- package/dist/cli/lifecycle/index.js +152 -0
- package/dist/cli/lifecycle/index.js.map +1 -0
- package/dist/cli/lifecycle/outcome.d.ts +13 -0
- package/dist/cli/lifecycle/outcome.d.ts.map +1 -0
- package/dist/cli/lifecycle/outcome.js +20 -0
- package/dist/cli/lifecycle/outcome.js.map +1 -0
- package/dist/cli/lifecycle-outcome.d.ts +13 -0
- package/dist/cli/lifecycle-outcome.d.ts.map +1 -0
- package/dist/cli/lifecycle-outcome.js +20 -0
- package/dist/cli/lifecycle-outcome.js.map +1 -0
- package/dist/cli/lifecycle.d.ts +61 -0
- package/dist/cli/lifecycle.d.ts.map +1 -0
- package/dist/cli/lifecycle.js +152 -0
- package/dist/cli/lifecycle.js.map +1 -0
- package/dist/cli/main.d.ts +33 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +139 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/output/json.d.ts +8 -0
- package/dist/cli/output/json.d.ts.map +1 -0
- package/dist/cli/output/json.js +8 -0
- package/dist/cli/output/json.js.map +1 -0
- package/dist/cli/output/jsonl.d.ts +18 -0
- package/dist/cli/output/jsonl.d.ts.map +1 -0
- package/dist/cli/output/jsonl.js +32 -0
- package/dist/cli/output/jsonl.js.map +1 -0
- package/dist/cli/output/records.d.ts +13 -0
- package/dist/cli/output/records.d.ts.map +1 -0
- package/dist/cli/output/records.js +40 -0
- package/dist/cli/output/records.js.map +1 -0
- package/dist/cli/output/sanitize.d.ts +9 -0
- package/dist/cli/output/sanitize.d.ts.map +1 -0
- package/dist/cli/output/sanitize.js +28 -0
- package/dist/cli/output/sanitize.js.map +1 -0
- package/dist/cli/output/text.d.ts +15 -0
- package/dist/cli/output/text.d.ts.map +1 -0
- package/dist/cli/output/text.js +29 -0
- package/dist/cli/output/text.js.map +1 -0
- package/dist/cli/output/types.d.ts +74 -0
- package/dist/cli/output/types.d.ts.map +1 -0
- package/dist/cli/output/types.js +6 -0
- package/dist/cli/output/types.js.map +1 -0
- package/dist/cli/request/agent-detect.d.ts +44 -0
- package/dist/cli/request/agent-detect.d.ts.map +1 -0
- package/dist/cli/request/agent-detect.js +66 -0
- package/dist/cli/request/agent-detect.js.map +1 -0
- package/dist/cli/request/finalize.d.ts +10 -0
- package/dist/cli/request/finalize.d.ts.map +1 -0
- package/dist/cli/request/finalize.js +135 -0
- package/dist/cli/request/finalize.js.map +1 -0
- package/dist/cli/request/index.d.ts +12 -0
- package/dist/cli/request/index.d.ts.map +1 -0
- package/dist/cli/request/index.js +103 -0
- package/dist/cli/request/index.js.map +1 -0
- package/dist/cli/request/layers.d.ts +30 -0
- package/dist/cli/request/layers.d.ts.map +1 -0
- package/dist/cli/request/layers.js +44 -0
- package/dist/cli/request/layers.js.map +1 -0
- package/dist/cli/request/resolution-types.d.ts +35 -0
- package/dist/cli/request/resolution-types.d.ts.map +1 -0
- package/dist/cli/request/resolution-types.js +6 -0
- package/dist/cli/request/resolution-types.js.map +1 -0
- package/dist/cli/request/settings.d.ts +34 -0
- package/dist/cli/request/settings.d.ts.map +1 -0
- package/dist/cli/request/settings.js +66 -0
- package/dist/cli/request/settings.js.map +1 -0
- package/dist/cli/request/sources.d.ts +13 -0
- package/dist/cli/request/sources.d.ts.map +1 -0
- package/dist/cli/request/sources.js +23 -0
- package/dist/cli/request/sources.js.map +1 -0
- package/dist/cli/request/validation.d.ts +18 -0
- package/dist/cli/request/validation.d.ts.map +1 -0
- package/dist/cli/request/validation.js +84 -0
- package/dist/cli/request/validation.js.map +1 -0
- package/dist/cli/request/values.d.ts +33 -0
- package/dist/cli/request/values.d.ts.map +1 -0
- package/dist/cli/request/values.js +73 -0
- package/dist/cli/request/values.js.map +1 -0
- package/dist/cli/request-finalize.d.ts +10 -0
- package/dist/cli/request-finalize.d.ts.map +1 -0
- package/dist/cli/request-finalize.js +135 -0
- package/dist/cli/request-finalize.js.map +1 -0
- package/dist/cli/request-layers.d.ts +30 -0
- package/dist/cli/request-layers.d.ts.map +1 -0
- package/dist/cli/request-layers.js +44 -0
- package/dist/cli/request-layers.js.map +1 -0
- package/dist/cli/request-settings.d.ts +34 -0
- package/dist/cli/request-settings.d.ts.map +1 -0
- package/dist/cli/request-settings.js +66 -0
- package/dist/cli/request-settings.js.map +1 -0
- package/dist/cli/request-sources.d.ts +13 -0
- package/dist/cli/request-sources.d.ts.map +1 -0
- package/dist/cli/request-sources.js +23 -0
- package/dist/cli/request-sources.js.map +1 -0
- package/dist/cli/request-validation.d.ts +18 -0
- package/dist/cli/request-validation.d.ts.map +1 -0
- package/dist/cli/request-validation.js +84 -0
- package/dist/cli/request-validation.js.map +1 -0
- package/dist/cli/request-values.d.ts +33 -0
- package/dist/cli/request-values.d.ts.map +1 -0
- package/dist/cli/request-values.js +73 -0
- package/dist/cli/request-values.js.map +1 -0
- package/dist/cli/request.d.ts +12 -0
- package/dist/cli/request.d.ts.map +1 -0
- package/dist/cli/request.js +103 -0
- package/dist/cli/request.js.map +1 -0
- package/dist/cli/resolution-types.d.ts +35 -0
- package/dist/cli/resolution-types.d.ts.map +1 -0
- package/dist/cli/resolution-types.js +6 -0
- package/dist/cli/resolution-types.js.map +1 -0
- package/dist/cli/run/index.d.ts +20 -0
- package/dist/cli/run/index.d.ts.map +1 -0
- package/dist/cli/run/index.js +126 -0
- package/dist/cli/run/index.js.map +1 -0
- package/dist/cli/run/output-lines.d.ts +14 -0
- package/dist/cli/run/output-lines.d.ts.map +1 -0
- package/dist/cli/run/output-lines.js +42 -0
- package/dist/cli/run/output-lines.js.map +1 -0
- package/dist/cli/run/output.d.ts +48 -0
- package/dist/cli/run/output.d.ts.map +1 -0
- package/dist/cli/run/output.js +150 -0
- package/dist/cli/run/output.js.map +1 -0
- package/dist/cli/run-output-lines.d.ts +14 -0
- package/dist/cli/run-output-lines.d.ts.map +1 -0
- package/dist/cli/run-output-lines.js +42 -0
- package/dist/cli/run-output-lines.js.map +1 -0
- package/dist/cli/run-output.d.ts +48 -0
- package/dist/cli/run-output.d.ts.map +1 -0
- package/dist/cli/run-output.js +150 -0
- package/dist/cli/run-output.js.map +1 -0
- package/dist/cli/run.d.ts +20 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +126 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/session/index.d.ts +68 -0
- package/dist/cli/session/index.d.ts.map +1 -0
- package/dist/cli/session/index.js +124 -0
- package/dist/cli/session/index.js.map +1 -0
- package/dist/cli/session/launch.d.ts +23 -0
- package/dist/cli/session/launch.d.ts.map +1 -0
- package/dist/cli/session/launch.js +57 -0
- package/dist/cli/session/launch.js.map +1 -0
- package/dist/cli/session-launch.d.ts +23 -0
- package/dist/cli/session-launch.d.ts.map +1 -0
- package/dist/cli/session-launch.js +57 -0
- package/dist/cli/session-launch.js.map +1 -0
- package/dist/cli/session.d.ts +68 -0
- package/dist/cli/session.d.ts.map +1 -0
- package/dist/cli/session.js +124 -0
- package/dist/cli/session.js.map +1 -0
- package/dist/cli/stream.d.ts +25 -0
- package/dist/cli/stream.d.ts.map +1 -0
- package/dist/cli/stream.js +92 -0
- package/dist/cli/stream.js.map +1 -0
- package/dist/cli/types.d.ts +148 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +30 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/update-attention.d.ts +32 -0
- package/dist/cli/update-attention.d.ts.map +1 -0
- package/dist/cli/update-attention.js +60 -0
- package/dist/cli/update-attention.js.map +1 -0
- package/dist/cli/validation-error.d.ts +11 -0
- package/dist/cli/validation-error.d.ts.map +1 -0
- package/dist/cli/validation-error.js +13 -0
- package/dist/cli/validation-error.js.map +1 -0
- package/dist/cli/version.d.ts +7 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +11 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/codex/attach-images.d.ts +20 -0
- package/dist/codex/attach-images.d.ts.map +1 -0
- package/dist/codex/attach-images.js +66 -0
- package/dist/codex/attach-images.js.map +1 -0
- package/dist/codex/clipboard-lock.d.ts +15 -0
- package/dist/codex/clipboard-lock.d.ts.map +1 -0
- package/dist/codex/clipboard-lock.js +16 -0
- package/dist/codex/clipboard-lock.js.map +1 -0
- package/dist/codex/clipboard.d.ts +32 -0
- package/dist/codex/clipboard.d.ts.map +1 -0
- package/dist/codex/clipboard.js +92 -0
- package/dist/codex/clipboard.js.map +1 -0
- package/dist/codex/command.d.ts +9 -0
- package/dist/codex/command.d.ts.map +1 -0
- package/dist/codex/command.js +72 -0
- package/dist/codex/command.js.map +1 -0
- package/dist/codex/config/lock.d.ts +21 -0
- package/dist/codex/config/lock.d.ts.map +1 -0
- package/dist/codex/config/lock.js +22 -0
- package/dist/codex/config/lock.js.map +1 -0
- package/dist/codex/config/restore.d.ts +33 -0
- package/dist/codex/config/restore.d.ts.map +1 -0
- package/dist/codex/config/restore.js +90 -0
- package/dist/codex/config/restore.js.map +1 -0
- package/dist/codex/config/transaction.d.ts +26 -0
- package/dist/codex/config/transaction.d.ts.map +1 -0
- package/dist/codex/config/transaction.js +47 -0
- package/dist/codex/config/transaction.js.map +1 -0
- package/dist/codex/config-lock.d.ts +21 -0
- package/dist/codex/config-lock.d.ts.map +1 -0
- package/dist/codex/config-lock.js +22 -0
- package/dist/codex/config-lock.js.map +1 -0
- package/dist/codex/config-restore.d.ts +33 -0
- package/dist/codex/config-restore.d.ts.map +1 -0
- package/dist/codex/config-restore.js +90 -0
- package/dist/codex/config-restore.js.map +1 -0
- package/dist/codex/config-transaction.d.ts +26 -0
- package/dist/codex/config-transaction.d.ts.map +1 -0
- package/dist/codex/config-transaction.js +47 -0
- package/dist/codex/config-transaction.js.map +1 -0
- package/dist/codex/hook-dispatch.d.ts +9 -0
- package/dist/codex/hook-dispatch.d.ts.map +1 -0
- package/dist/codex/hook-dispatch.js +14 -0
- package/dist/codex/hook-dispatch.js.map +1 -0
- package/dist/codex/hook-names.d.ts +19 -0
- package/dist/codex/hook-names.d.ts.map +1 -0
- package/dist/codex/hook-names.js +17 -0
- package/dist/codex/hook-names.js.map +1 -0
- package/dist/codex/hooks/dispatch.d.ts +9 -0
- package/dist/codex/hooks/dispatch.d.ts.map +1 -0
- package/dist/codex/hooks/dispatch.js +14 -0
- package/dist/codex/hooks/dispatch.js.map +1 -0
- package/dist/codex/hooks/index.d.ts +99 -0
- package/dist/codex/hooks/index.d.ts.map +1 -0
- package/dist/codex/hooks/index.js +6 -0
- package/dist/codex/hooks/index.js.map +1 -0
- package/dist/codex/hooks/names.d.ts +19 -0
- package/dist/codex/hooks/names.d.ts.map +1 -0
- package/dist/codex/hooks/names.js +17 -0
- package/dist/codex/hooks/names.js.map +1 -0
- package/dist/codex/hooks/serialize.d.ts +8 -0
- package/dist/codex/hooks/serialize.d.ts.map +1 -0
- package/dist/codex/hooks/serialize.js +48 -0
- package/dist/codex/hooks/serialize.js.map +1 -0
- package/dist/codex/hooks/validate-result.d.ts +7 -0
- package/dist/codex/hooks/validate-result.d.ts.map +1 -0
- package/dist/codex/hooks/validate-result.js +84 -0
- package/dist/codex/hooks/validate-result.js.map +1 -0
- package/dist/codex/hooks/validate.d.ts +11 -0
- package/dist/codex/hooks/validate.d.ts.map +1 -0
- package/dist/codex/hooks/validate.js +88 -0
- package/dist/codex/hooks/validate.js.map +1 -0
- package/dist/codex/hooks.d.ts +99 -0
- package/dist/codex/hooks.d.ts.map +1 -0
- package/dist/codex/hooks.js +6 -0
- package/dist/codex/hooks.js.map +1 -0
- package/dist/codex/images/attach.d.ts +20 -0
- package/dist/codex/images/attach.d.ts.map +1 -0
- package/dist/codex/images/attach.js +66 -0
- package/dist/codex/images/attach.js.map +1 -0
- package/dist/codex/images/clipboard-lock.d.ts +15 -0
- package/dist/codex/images/clipboard-lock.d.ts.map +1 -0
- package/dist/codex/images/clipboard-lock.js +16 -0
- package/dist/codex/images/clipboard-lock.js.map +1 -0
- package/dist/codex/images/clipboard.d.ts +32 -0
- package/dist/codex/images/clipboard.d.ts.map +1 -0
- package/dist/codex/images/clipboard.js +92 -0
- package/dist/codex/images/clipboard.js.map +1 -0
- package/dist/codex/initial-ready.d.ts +19 -0
- package/dist/codex/initial-ready.d.ts.map +1 -0
- package/dist/codex/initial-ready.js +19 -0
- package/dist/codex/initial-ready.js.map +1 -0
- package/dist/codex/list-models.d.ts +16 -0
- package/dist/codex/list-models.d.ts.map +1 -0
- package/dist/codex/list-models.js +35 -0
- package/dist/codex/list-models.js.map +1 -0
- package/dist/codex/model-picker.d.ts +7 -0
- package/dist/codex/model-picker.d.ts.map +1 -0
- package/dist/codex/model-picker.js +22 -0
- package/dist/codex/model-picker.js.map +1 -0
- package/dist/codex/preflight.d.ts +17 -0
- package/dist/codex/preflight.d.ts.map +1 -0
- package/dist/codex/preflight.js +94 -0
- package/dist/codex/preflight.js.map +1 -0
- package/dist/codex/pty.d.ts +9 -0
- package/dist/codex/pty.d.ts.map +1 -0
- package/dist/codex/pty.js +26 -0
- package/dist/codex/pty.js.map +1 -0
- package/dist/codex/screen-table.d.ts +16 -0
- package/dist/codex/screen-table.d.ts.map +1 -0
- package/dist/codex/screen-table.js +68 -0
- package/dist/codex/screen-table.js.map +1 -0
- package/dist/codex/serialize.d.ts +8 -0
- package/dist/codex/serialize.d.ts.map +1 -0
- package/dist/codex/serialize.js +48 -0
- package/dist/codex/serialize.js.map +1 -0
- package/dist/codex/session/bridge.d.ts +14 -0
- package/dist/codex/session/bridge.d.ts.map +1 -0
- package/dist/codex/session/bridge.js +20 -0
- package/dist/codex/session/bridge.js.map +1 -0
- package/dist/codex/session/build.d.ts +15 -0
- package/dist/codex/session/build.d.ts.map +1 -0
- package/dist/codex/session/build.js +144 -0
- package/dist/codex/session/build.js.map +1 -0
- package/dist/codex/session/cleanup.d.ts +12 -0
- package/dist/codex/session/cleanup.d.ts.map +1 -0
- package/dist/codex/session/cleanup.js +15 -0
- package/dist/codex/session/cleanup.js.map +1 -0
- package/dist/codex/session/hooks.d.ts +13 -0
- package/dist/codex/session/hooks.d.ts.map +1 -0
- package/dist/codex/session/hooks.js +54 -0
- package/dist/codex/session/hooks.js.map +1 -0
- package/dist/codex/session/index.d.ts +16 -0
- package/dist/codex/session/index.d.ts.map +1 -0
- package/dist/codex/session/index.js +61 -0
- package/dist/codex/session/index.js.map +1 -0
- package/dist/codex/session/instance.d.ts +50 -0
- package/dist/codex/session/instance.d.ts.map +1 -0
- package/dist/codex/session/instance.js +117 -0
- package/dist/codex/session/instance.js.map +1 -0
- package/dist/codex/session/resume.d.ts +7 -0
- package/dist/codex/session/resume.d.ts.map +1 -0
- package/dist/codex/session/resume.js +44 -0
- package/dist/codex/session/resume.js.map +1 -0
- package/dist/codex/session/runtime.d.ts +7 -0
- package/dist/codex/session/runtime.d.ts.map +1 -0
- package/dist/codex/session/runtime.js +10 -0
- package/dist/codex/session/runtime.js.map +1 -0
- package/dist/codex/session/start-or-resume.d.ts +12 -0
- package/dist/codex/session/start-or-resume.d.ts.map +1 -0
- package/dist/codex/session/start-or-resume.js +31 -0
- package/dist/codex/session/start-or-resume.js.map +1 -0
- package/dist/codex/session/transcript.d.ts +30 -0
- package/dist/codex/session/transcript.d.ts.map +1 -0
- package/dist/codex/session/transcript.js +53 -0
- package/dist/codex/session/transcript.js.map +1 -0
- package/dist/codex/session/types.d.ts +87 -0
- package/dist/codex/session/types.d.ts.map +1 -0
- package/dist/codex/session/types.js +6 -0
- package/dist/codex/session/types.js.map +1 -0
- package/dist/codex/session/warnings.d.ts +27 -0
- package/dist/codex/session/warnings.d.ts.map +1 -0
- package/dist/codex/session/warnings.js +54 -0
- package/dist/codex/session/warnings.js.map +1 -0
- package/dist/codex/session-bridge.d.ts +14 -0
- package/dist/codex/session-bridge.d.ts.map +1 -0
- package/dist/codex/session-bridge.js +20 -0
- package/dist/codex/session-bridge.js.map +1 -0
- package/dist/codex/session-build.d.ts +15 -0
- package/dist/codex/session-build.d.ts.map +1 -0
- package/dist/codex/session-build.js +144 -0
- package/dist/codex/session-build.js.map +1 -0
- package/dist/codex/session-cleanup.d.ts +12 -0
- package/dist/codex/session-cleanup.d.ts.map +1 -0
- package/dist/codex/session-cleanup.js +15 -0
- package/dist/codex/session-cleanup.js.map +1 -0
- package/dist/codex/session-hooks.d.ts +13 -0
- package/dist/codex/session-hooks.d.ts.map +1 -0
- package/dist/codex/session-hooks.js +54 -0
- package/dist/codex/session-hooks.js.map +1 -0
- package/dist/codex/session-instance.d.ts +50 -0
- package/dist/codex/session-instance.d.ts.map +1 -0
- package/dist/codex/session-instance.js +117 -0
- package/dist/codex/session-instance.js.map +1 -0
- package/dist/codex/session-resume.d.ts +7 -0
- package/dist/codex/session-resume.d.ts.map +1 -0
- package/dist/codex/session-resume.js +44 -0
- package/dist/codex/session-resume.js.map +1 -0
- package/dist/codex/session-runtime.d.ts +7 -0
- package/dist/codex/session-runtime.d.ts.map +1 -0
- package/dist/codex/session-runtime.js +10 -0
- package/dist/codex/session-runtime.js.map +1 -0
- package/dist/codex/session-transcript.d.ts +30 -0
- package/dist/codex/session-transcript.d.ts.map +1 -0
- package/dist/codex/session-transcript.js +53 -0
- package/dist/codex/session-transcript.js.map +1 -0
- package/dist/codex/session-types.d.ts +87 -0
- package/dist/codex/session-types.d.ts.map +1 -0
- package/dist/codex/session-types.js +6 -0
- package/dist/codex/session-types.js.map +1 -0
- package/dist/codex/session-warnings.d.ts +27 -0
- package/dist/codex/session-warnings.d.ts.map +1 -0
- package/dist/codex/session-warnings.js +54 -0
- package/dist/codex/session-warnings.js.map +1 -0
- package/dist/codex/session.d.ts +16 -0
- package/dist/codex/session.d.ts.map +1 -0
- package/dist/codex/session.js +61 -0
- package/dist/codex/session.js.map +1 -0
- package/dist/codex/simple.d.ts +25 -0
- package/dist/codex/simple.d.ts.map +1 -0
- package/dist/codex/simple.js +37 -0
- package/dist/codex/simple.js.map +1 -0
- package/dist/codex/start-or-resume.d.ts +12 -0
- package/dist/codex/start-or-resume.d.ts.map +1 -0
- package/dist/codex/start-or-resume.js +31 -0
- package/dist/codex/start-or-resume.js.map +1 -0
- package/dist/codex/startup-prompts.d.ts +32 -0
- package/dist/codex/startup-prompts.d.ts.map +1 -0
- package/dist/codex/startup-prompts.js +136 -0
- package/dist/codex/startup-prompts.js.map +1 -0
- package/dist/codex/tool-types.d.ts +21 -0
- package/dist/codex/tool-types.d.ts.map +1 -0
- package/dist/codex/tool-types.js +6 -0
- package/dist/codex/tool-types.js.map +1 -0
- package/dist/codex/transcript/cursor-io.d.ts +7 -0
- package/dist/codex/transcript/cursor-io.d.ts.map +1 -0
- package/dist/codex/transcript/cursor-io.js +7 -0
- package/dist/codex/transcript/cursor-io.js.map +1 -0
- package/dist/codex/transcript/cursor.d.ts +8 -0
- package/dist/codex/transcript/cursor.d.ts.map +1 -0
- package/dist/codex/transcript/cursor.js +8 -0
- package/dist/codex/transcript/cursor.js.map +1 -0
- package/dist/codex/transcript/drain.d.ts +30 -0
- package/dist/codex/transcript/drain.d.ts.map +1 -0
- package/dist/codex/transcript/drain.js +48 -0
- package/dist/codex/transcript/drain.js.map +1 -0
- package/dist/codex/transcript/drops.d.ts +9 -0
- package/dist/codex/transcript/drops.d.ts.map +1 -0
- package/dist/codex/transcript/drops.js +9 -0
- package/dist/codex/transcript/drops.js.map +1 -0
- package/dist/codex/transcript/emit.d.ts +22 -0
- package/dist/codex/transcript/emit.d.ts.map +1 -0
- package/dist/codex/transcript/emit.js +57 -0
- package/dist/codex/transcript/emit.js.map +1 -0
- package/dist/codex/transcript/fs-guard.d.ts +16 -0
- package/dist/codex/transcript/fs-guard.d.ts.map +1 -0
- package/dist/codex/transcript/fs-guard.js +27 -0
- package/dist/codex/transcript/fs-guard.js.map +1 -0
- package/dist/codex/transcript/index.d.ts +12 -0
- package/dist/codex/transcript/index.d.ts.map +1 -0
- package/dist/codex/transcript/index.js +10 -0
- package/dist/codex/transcript/index.js.map +1 -0
- package/dist/codex/transcript/summary.d.ts +10 -0
- package/dist/codex/transcript/summary.d.ts.map +1 -0
- package/dist/codex/transcript/summary.js +176 -0
- package/dist/codex/transcript/summary.js.map +1 -0
- package/dist/codex/transcript/types.d.ts +65 -0
- package/dist/codex/transcript/types.d.ts.map +1 -0
- package/dist/codex/transcript/types.js +7 -0
- package/dist/codex/transcript/types.js.map +1 -0
- package/dist/codex/transcript/warnings.d.ts +25 -0
- package/dist/codex/transcript/warnings.d.ts.map +1 -0
- package/dist/codex/transcript/warnings.js +43 -0
- package/dist/codex/transcript/warnings.js.map +1 -0
- package/dist/codex/transcript/watcher-config.d.ts +22 -0
- package/dist/codex/transcript/watcher-config.d.ts.map +1 -0
- package/dist/codex/transcript/watcher-config.js +7 -0
- package/dist/codex/transcript/watcher-config.js.map +1 -0
- package/dist/codex/transcript/watcher.d.ts +34 -0
- package/dist/codex/transcript/watcher.d.ts.map +1 -0
- package/dist/codex/transcript/watcher.js +134 -0
- package/dist/codex/transcript/watcher.js.map +1 -0
- package/dist/codex/transcript.d.ts +12 -0
- package/dist/codex/transcript.d.ts.map +1 -0
- package/dist/codex/transcript.js +10 -0
- package/dist/codex/transcript.js.map +1 -0
- package/dist/codex/update-prompt.d.ts +23 -0
- package/dist/codex/update-prompt.d.ts.map +1 -0
- package/dist/codex/update-prompt.js +78 -0
- package/dist/codex/update-prompt.js.map +1 -0
- package/dist/codex/validate-result.d.ts +7 -0
- package/dist/codex/validate-result.d.ts.map +1 -0
- package/dist/codex/validate-result.js +84 -0
- package/dist/codex/validate-result.js.map +1 -0
- package/dist/codex/validate.d.ts +11 -0
- package/dist/codex/validate.d.ts.map +1 -0
- package/dist/codex/validate.js +88 -0
- package/dist/codex/validate.js.map +1 -0
- package/dist/core/activity/index.d.ts +51 -0
- package/dist/core/activity/index.d.ts.map +1 -0
- package/dist/core/activity/index.js +81 -0
- package/dist/core/activity/index.js.map +1 -0
- package/dist/core/activity/lifecycle.d.ts +21 -0
- package/dist/core/activity/lifecycle.d.ts.map +1 -0
- package/dist/core/activity/lifecycle.js +45 -0
- package/dist/core/activity/lifecycle.js.map +1 -0
- package/dist/core/activity/meta.d.ts +13 -0
- package/dist/core/activity/meta.d.ts.map +1 -0
- package/dist/core/activity/meta.js +67 -0
- package/dist/core/activity/meta.js.map +1 -0
- package/dist/core/activity/transcript.d.ts +19 -0
- package/dist/core/activity/transcript.d.ts.map +1 -0
- package/dist/core/activity/transcript.js +60 -0
- package/dist/core/activity/transcript.js.map +1 -0
- package/dist/core/activity-lifecycle.d.ts +21 -0
- package/dist/core/activity-lifecycle.d.ts.map +1 -0
- package/dist/core/activity-lifecycle.js +45 -0
- package/dist/core/activity-lifecycle.js.map +1 -0
- package/dist/core/activity-meta.d.ts +13 -0
- package/dist/core/activity-meta.d.ts.map +1 -0
- package/dist/core/activity-meta.js +67 -0
- package/dist/core/activity-meta.js.map +1 -0
- package/dist/core/activity-transcript.d.ts +19 -0
- package/dist/core/activity-transcript.d.ts.map +1 -0
- package/dist/core/activity-transcript.js +60 -0
- package/dist/core/activity-transcript.js.map +1 -0
- package/dist/core/activity.d.ts +51 -0
- package/dist/core/activity.d.ts.map +1 -0
- package/dist/core/activity.js +81 -0
- package/dist/core/activity.js.map +1 -0
- package/dist/core/agent-session.d.ts +50 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +6 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/async-mutex.d.ts +13 -0
- package/dist/core/async-mutex.d.ts.map +1 -0
- package/dist/core/async-mutex.js +18 -0
- package/dist/core/async-mutex.js.map +1 -0
- package/dist/core/attention.d.ts +19 -0
- package/dist/core/attention.d.ts.map +1 -0
- package/dist/core/attention.js +31 -0
- package/dist/core/attention.js.map +1 -0
- package/dist/core/compact.d.ts +17 -0
- package/dist/core/compact.d.ts.map +1 -0
- package/dist/core/compact.js +69 -0
- package/dist/core/compact.js.map +1 -0
- package/dist/core/contained.d.ts +7 -0
- package/dist/core/contained.d.ts.map +1 -0
- package/dist/core/contained.js +14 -0
- package/dist/core/contained.js.map +1 -0
- package/dist/core/control-queue/index.d.ts +21 -0
- package/dist/core/control-queue/index.d.ts.map +1 -0
- package/dist/core/control-queue/index.js +98 -0
- package/dist/core/control-queue/index.js.map +1 -0
- package/dist/core/control-queue/state.d.ts +29 -0
- package/dist/core/control-queue/state.d.ts.map +1 -0
- package/dist/core/control-queue/state.js +95 -0
- package/dist/core/control-queue/state.js.map +1 -0
- package/dist/core/control-queue/traits.d.ts +54 -0
- package/dist/core/control-queue/traits.d.ts.map +1 -0
- package/dist/core/control-queue/traits.js +118 -0
- package/dist/core/control-queue/traits.js.map +1 -0
- package/dist/core/control-queue/types.d.ts +45 -0
- package/dist/core/control-queue/types.d.ts.map +1 -0
- package/dist/core/control-queue/types.js +7 -0
- package/dist/core/control-queue/types.js.map +1 -0
- package/dist/core/control-queue-state.d.ts +29 -0
- package/dist/core/control-queue-state.d.ts.map +1 -0
- package/dist/core/control-queue-state.js +95 -0
- package/dist/core/control-queue-state.js.map +1 -0
- package/dist/core/control-queue-traits.d.ts +54 -0
- package/dist/core/control-queue-traits.d.ts.map +1 -0
- package/dist/core/control-queue-traits.js +118 -0
- package/dist/core/control-queue-traits.js.map +1 -0
- package/dist/core/control-queue-types.d.ts +45 -0
- package/dist/core/control-queue-types.d.ts.map +1 -0
- package/dist/core/control-queue-types.js +7 -0
- package/dist/core/control-queue-types.js.map +1 -0
- package/dist/core/control-queue.d.ts +21 -0
- package/dist/core/control-queue.d.ts.map +1 -0
- package/dist/core/control-queue.js +98 -0
- package/dist/core/control-queue.js.map +1 -0
- package/dist/core/defaults.d.ts +7 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +6 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/delay.d.ts +7 -0
- package/dist/core/delay.d.ts.map +1 -0
- package/dist/core/delay.js +9 -0
- package/dist/core/delay.js.map +1 -0
- package/dist/core/errors.d.ts +39 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +65 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/hook-dispatch.d.ts +36 -0
- package/dist/core/hook-dispatch.d.ts.map +1 -0
- package/dist/core/hook-dispatch.js +51 -0
- package/dist/core/hook-dispatch.js.map +1 -0
- package/dist/core/hook-result.d.ts +8 -0
- package/dist/core/hook-result.d.ts.map +1 -0
- package/dist/core/hook-result.js +40 -0
- package/dist/core/hook-result.js.map +1 -0
- package/dist/core/hook-timeout.d.ts +25 -0
- package/dist/core/hook-timeout.d.ts.map +1 -0
- package/dist/core/hook-timeout.js +26 -0
- package/dist/core/hook-timeout.js.map +1 -0
- package/dist/core/images/chip-wait.d.ts +43 -0
- package/dist/core/images/chip-wait.d.ts.map +1 -0
- package/dist/core/images/chip-wait.js +80 -0
- package/dist/core/images/chip-wait.js.map +1 -0
- package/dist/core/images/index.d.ts +9 -0
- package/dist/core/images/index.d.ts.map +1 -0
- package/dist/core/images/index.js +8 -0
- package/dist/core/images/index.js.map +1 -0
- package/dist/core/images/materialize.d.ts +22 -0
- package/dist/core/images/materialize.d.ts.map +1 -0
- package/dist/core/images/materialize.js +49 -0
- package/dist/core/images/materialize.js.map +1 -0
- package/dist/core/images/resolve.d.ts +45 -0
- package/dist/core/images/resolve.d.ts.map +1 -0
- package/dist/core/images/resolve.js +137 -0
- package/dist/core/images/resolve.js.map +1 -0
- package/dist/core/images/types.d.ts +39 -0
- package/dist/core/images/types.d.ts.map +1 -0
- package/dist/core/images/types.js +26 -0
- package/dist/core/images/types.js.map +1 -0
- package/dist/core/input/abort.d.ts +10 -0
- package/dist/core/input/abort.d.ts.map +1 -0
- package/dist/core/input/abort.js +44 -0
- package/dist/core/input/abort.js.map +1 -0
- package/dist/core/input/index.d.ts +37 -0
- package/dist/core/input/index.d.ts.map +1 -0
- package/dist/core/input/index.js +154 -0
- package/dist/core/input/index.js.map +1 -0
- package/dist/core/interrupt.d.ts +29 -0
- package/dist/core/interrupt.d.ts.map +1 -0
- package/dist/core/interrupt.js +57 -0
- package/dist/core/interrupt.js.map +1 -0
- package/dist/core/list-models.d.ts +44 -0
- package/dist/core/list-models.d.ts.map +1 -0
- package/dist/core/list-models.js +73 -0
- package/dist/core/list-models.js.map +1 -0
- package/dist/core/loops/constants.d.ts +13 -0
- package/dist/core/loops/constants.d.ts.map +1 -0
- package/dist/core/loops/constants.js +13 -0
- package/dist/core/loops/constants.js.map +1 -0
- package/dist/core/loops/jitter.d.ts +6 -0
- package/dist/core/loops/jitter.d.ts.map +1 -0
- package/dist/core/loops/jitter.js +20 -0
- package/dist/core/loops/jitter.js.map +1 -0
- package/dist/core/loops/loop-controls.d.ts +8 -0
- package/dist/core/loops/loop-controls.d.ts.map +1 -0
- package/dist/core/loops/loop-controls.js +3 -0
- package/dist/core/loops/loop-controls.js.map +1 -0
- package/dist/core/loops/parser.d.ts +7 -0
- package/dist/core/loops/parser.d.ts.map +1 -0
- package/dist/core/loops/parser.js +37 -0
- package/dist/core/loops/parser.js.map +1 -0
- package/dist/core/loops/scheduler-delivery.d.ts +42 -0
- package/dist/core/loops/scheduler-delivery.d.ts.map +1 -0
- package/dist/core/loops/scheduler-delivery.js +112 -0
- package/dist/core/loops/scheduler-delivery.js.map +1 -0
- package/dist/core/loops/scheduler-state.d.ts +63 -0
- package/dist/core/loops/scheduler-state.d.ts.map +1 -0
- package/dist/core/loops/scheduler-state.js +102 -0
- package/dist/core/loops/scheduler-state.js.map +1 -0
- package/dist/core/loops/scheduler.d.ts +27 -0
- package/dist/core/loops/scheduler.d.ts.map +1 -0
- package/dist/core/loops/scheduler.js +189 -0
- package/dist/core/loops/scheduler.js.map +1 -0
- package/dist/core/loops/timers.d.ts +25 -0
- package/dist/core/loops/timers.d.ts.map +1 -0
- package/dist/core/loops/timers.js +47 -0
- package/dist/core/loops/timers.js.map +1 -0
- package/dist/core/loops/timing.d.ts +27 -0
- package/dist/core/loops/timing.d.ts.map +1 -0
- package/dist/core/loops/timing.js +68 -0
- package/dist/core/loops/timing.js.map +1 -0
- package/dist/core/loops/types.d.ts +57 -0
- package/dist/core/loops/types.d.ts.map +1 -0
- package/dist/core/loops/types.js +6 -0
- package/dist/core/loops/types.js.map +1 -0
- package/dist/core/loops/validate.d.ts +9 -0
- package/dist/core/loops/validate.d.ts.map +1 -0
- package/dist/core/loops/validate.js +46 -0
- package/dist/core/loops/validate.js.map +1 -0
- package/dist/core/model-picker.d.ts +22 -0
- package/dist/core/model-picker.d.ts.map +1 -0
- package/dist/core/model-picker.js +58 -0
- package/dist/core/model-picker.js.map +1 -0
- package/dist/core/model-rows.d.ts +21 -0
- package/dist/core/model-rows.d.ts.map +1 -0
- package/dist/core/model-rows.js +57 -0
- package/dist/core/model-rows.js.map +1 -0
- package/dist/core/models/list.d.ts +44 -0
- package/dist/core/models/list.d.ts.map +1 -0
- package/dist/core/models/list.js +73 -0
- package/dist/core/models/list.js.map +1 -0
- package/dist/core/models/picker.d.ts +22 -0
- package/dist/core/models/picker.d.ts.map +1 -0
- package/dist/core/models/picker.js +58 -0
- package/dist/core/models/picker.js.map +1 -0
- package/dist/core/models/probe-state.d.ts +21 -0
- package/dist/core/models/probe-state.d.ts.map +1 -0
- package/dist/core/models/probe-state.js +39 -0
- package/dist/core/models/probe-state.js.map +1 -0
- package/dist/core/models/rows.d.ts +21 -0
- package/dist/core/models/rows.d.ts.map +1 -0
- package/dist/core/models/rows.js +57 -0
- package/dist/core/models/rows.js.map +1 -0
- package/dist/core/models/tui-screen.d.ts +21 -0
- package/dist/core/models/tui-screen.d.ts.map +1 -0
- package/dist/core/models/tui-screen.js +56 -0
- package/dist/core/models/tui-screen.js.map +1 -0
- package/dist/core/module-require.d.ts +8 -0
- package/dist/core/module-require.d.ts.map +1 -0
- package/dist/core/module-require.js +14 -0
- package/dist/core/module-require.js.map +1 -0
- package/dist/core/persona.d.ts +10 -0
- package/dist/core/persona.d.ts.map +1 -0
- package/dist/core/persona.js +18 -0
- package/dist/core/persona.js.map +1 -0
- package/dist/core/predicates.d.ts +16 -0
- package/dist/core/predicates.d.ts.map +1 -0
- package/dist/core/predicates.js +32 -0
- package/dist/core/predicates.js.map +1 -0
- package/dist/core/private-output-secrets.d.ts +9 -0
- package/dist/core/private-output-secrets.d.ts.map +1 -0
- package/dist/core/private-output-secrets.js +14 -0
- package/dist/core/private-output-secrets.js.map +1 -0
- package/dist/core/probe-state.d.ts +21 -0
- package/dist/core/probe-state.d.ts.map +1 -0
- package/dist/core/probe-state.js +39 -0
- package/dist/core/probe-state.js.map +1 -0
- package/dist/core/reasoning-effort.d.ts +40 -0
- package/dist/core/reasoning-effort.d.ts.map +1 -0
- package/dist/core/reasoning-effort.js +44 -0
- package/dist/core/reasoning-effort.js.map +1 -0
- package/dist/core/rendered-observers.d.ts +29 -0
- package/dist/core/rendered-observers.d.ts.map +1 -0
- package/dist/core/rendered-observers.js +29 -0
- package/dist/core/rendered-observers.js.map +1 -0
- package/dist/core/screen-facts.d.ts +61 -0
- package/dist/core/screen-facts.d.ts.map +1 -0
- package/dist/core/screen-facts.js +36 -0
- package/dist/core/screen-facts.js.map +1 -0
- package/dist/core/serialize.d.ts +9 -0
- package/dist/core/serialize.d.ts.map +1 -0
- package/dist/core/serialize.js +20 -0
- package/dist/core/serialize.js.map +1 -0
- package/dist/core/session-input-abort.d.ts +10 -0
- package/dist/core/session-input-abort.d.ts.map +1 -0
- package/dist/core/session-input-abort.js +44 -0
- package/dist/core/session-input-abort.js.map +1 -0
- package/dist/core/session-input.d.ts +37 -0
- package/dist/core/session-input.d.ts.map +1 -0
- package/dist/core/session-input.js +154 -0
- package/dist/core/session-input.js.map +1 -0
- package/dist/core/session-wait.d.ts +30 -0
- package/dist/core/session-wait.d.ts.map +1 -0
- package/dist/core/session-wait.js +110 -0
- package/dist/core/session-wait.js.map +1 -0
- package/dist/core/session-warnings.d.ts +20 -0
- package/dist/core/session-warnings.d.ts.map +1 -0
- package/dist/core/session-warnings.js +32 -0
- package/dist/core/session-warnings.js.map +1 -0
- package/dist/core/simple/completeness-oracle.d.ts +31 -0
- package/dist/core/simple/completeness-oracle.d.ts.map +1 -0
- package/dist/core/simple/completeness-oracle.js +51 -0
- package/dist/core/simple/completeness-oracle.js.map +1 -0
- package/dist/core/simple/events.d.ts +34 -0
- package/dist/core/simple/events.d.ts.map +1 -0
- package/dist/core/simple/events.js +56 -0
- package/dist/core/simple/events.js.map +1 -0
- package/dist/core/simple/loop-controls.d.ts +7 -0
- package/dist/core/simple/loop-controls.d.ts.map +1 -0
- package/dist/core/simple/loop-controls.js +7 -0
- package/dist/core/simple/loop-controls.js.map +1 -0
- package/dist/core/simple/resolve-paths.d.ts +23 -0
- package/dist/core/simple/resolve-paths.d.ts.map +1 -0
- package/dist/core/simple/resolve-paths.js +22 -0
- package/dist/core/simple/resolve-paths.js.map +1 -0
- package/dist/core/simple/session.d.ts +78 -0
- package/dist/core/simple/session.d.ts.map +1 -0
- package/dist/core/simple/session.js +155 -0
- package/dist/core/simple/session.js.map +1 -0
- package/dist/core/simple/subscriptions.d.ts +32 -0
- package/dist/core/simple/subscriptions.d.ts.map +1 -0
- package/dist/core/simple/subscriptions.js +63 -0
- package/dist/core/simple/subscriptions.js.map +1 -0
- package/dist/core/simple/turn-acceptance.d.ts +27 -0
- package/dist/core/simple/turn-acceptance.d.ts.map +1 -0
- package/dist/core/simple/turn-acceptance.js +71 -0
- package/dist/core/simple/turn-acceptance.js.map +1 -0
- package/dist/core/simple/turn-boundary.d.ts +42 -0
- package/dist/core/simple/turn-boundary.d.ts.map +1 -0
- package/dist/core/simple/turn-boundary.js +72 -0
- package/dist/core/simple/turn-boundary.js.map +1 -0
- package/dist/core/simple/turn-gate.d.ts +59 -0
- package/dist/core/simple/turn-gate.d.ts.map +1 -0
- package/dist/core/simple/turn-gate.js +194 -0
- package/dist/core/simple/turn-gate.js.map +1 -0
- package/dist/core/simple/turn-queue.d.ts +23 -0
- package/dist/core/simple/turn-queue.d.ts.map +1 -0
- package/dist/core/simple/turn-queue.js +43 -0
- package/dist/core/simple/turn-queue.js.map +1 -0
- package/dist/core/simple/turn-types.d.ts +128 -0
- package/dist/core/simple/turn-types.d.ts.map +1 -0
- package/dist/core/simple/turn-types.js +15 -0
- package/dist/core/simple/turn-types.js.map +1 -0
- package/dist/core/simple/turn.d.ts +37 -0
- package/dist/core/simple/turn.d.ts.map +1 -0
- package/dist/core/simple/turn.js +173 -0
- package/dist/core/simple/turn.js.map +1 -0
- package/dist/core/start-or-resume.d.ts +10 -0
- package/dist/core/start-or-resume.d.ts.map +1 -0
- package/dist/core/start-or-resume.js +24 -0
- package/dist/core/start-or-resume.js.map +1 -0
- package/dist/core/startup/automation.d.ts +54 -0
- package/dist/core/startup/automation.d.ts.map +1 -0
- package/dist/core/startup/automation.js +40 -0
- package/dist/core/startup/automation.js.map +1 -0
- package/dist/core/startup/frame.d.ts +39 -0
- package/dist/core/startup/frame.d.ts.map +1 -0
- package/dist/core/startup/frame.js +60 -0
- package/dist/core/startup/frame.js.map +1 -0
- package/dist/core/startup/write.d.ts +47 -0
- package/dist/core/startup/write.d.ts.map +1 -0
- package/dist/core/startup/write.js +73 -0
- package/dist/core/startup/write.js.map +1 -0
- package/dist/core/startup-automation.d.ts +54 -0
- package/dist/core/startup-automation.d.ts.map +1 -0
- package/dist/core/startup-automation.js +40 -0
- package/dist/core/startup-automation.js.map +1 -0
- package/dist/core/startup-frame.d.ts +39 -0
- package/dist/core/startup-frame.d.ts.map +1 -0
- package/dist/core/startup-frame.js +60 -0
- package/dist/core/startup-frame.js.map +1 -0
- package/dist/core/startup-write.d.ts +47 -0
- package/dist/core/startup-write.d.ts.map +1 -0
- package/dist/core/startup-write.js +73 -0
- package/dist/core/startup-write.js.map +1 -0
- package/dist/core/status-categories.d.ts +21 -0
- package/dist/core/status-categories.d.ts.map +1 -0
- package/dist/core/status-categories.js +20 -0
- package/dist/core/status-categories.js.map +1 -0
- package/dist/core/terminal-options.d.ts +39 -0
- package/dist/core/terminal-options.d.ts.map +1 -0
- package/dist/core/terminal-options.js +114 -0
- package/dist/core/terminal-options.js.map +1 -0
- package/dist/core/terminal-replay.d.ts +32 -0
- package/dist/core/terminal-replay.d.ts.map +1 -0
- package/dist/core/terminal-replay.js +69 -0
- package/dist/core/terminal-replay.js.map +1 -0
- package/dist/core/transcript/cursor-io.d.ts +21 -0
- package/dist/core/transcript/cursor-io.d.ts.map +1 -0
- package/dist/core/transcript/cursor-io.js +60 -0
- package/dist/core/transcript/cursor-io.js.map +1 -0
- package/dist/core/transcript/cursor.d.ts +49 -0
- package/dist/core/transcript/cursor.d.ts.map +1 -0
- package/dist/core/transcript/cursor.js +100 -0
- package/dist/core/transcript/cursor.js.map +1 -0
- package/dist/core/transcript/drops.d.ts +63 -0
- package/dist/core/transcript/drops.d.ts.map +1 -0
- package/dist/core/transcript/drops.js +86 -0
- package/dist/core/transcript/drops.js.map +1 -0
- package/dist/core/transcript/warning-router.d.ts +28 -0
- package/dist/core/transcript/warning-router.d.ts.map +1 -0
- package/dist/core/transcript/warning-router.js +37 -0
- package/dist/core/transcript/warning-router.js.map +1 -0
- package/dist/core/transcript/warnings.d.ts +14 -0
- package/dist/core/transcript/warnings.d.ts.map +1 -0
- package/dist/core/transcript/warnings.js +41 -0
- package/dist/core/transcript/warnings.js.map +1 -0
- package/dist/core/trust/blocking.d.ts +22 -0
- package/dist/core/trust/blocking.d.ts.map +1 -0
- package/dist/core/trust/blocking.js +38 -0
- package/dist/core/trust/blocking.js.map +1 -0
- package/dist/core/trust/prompts.d.ts +135 -0
- package/dist/core/trust/prompts.d.ts.map +1 -0
- package/dist/core/trust/prompts.js +108 -0
- package/dist/core/trust/prompts.js.map +1 -0
- package/dist/core/trust/responder.d.ts +48 -0
- package/dist/core/trust/responder.d.ts.map +1 -0
- package/dist/core/trust/responder.js +119 -0
- package/dist/core/trust/responder.js.map +1 -0
- package/dist/core/trust-blocking.d.ts +22 -0
- package/dist/core/trust-blocking.d.ts.map +1 -0
- package/dist/core/trust-blocking.js +38 -0
- package/dist/core/trust-blocking.js.map +1 -0
- package/dist/core/trust-prompts.d.ts +135 -0
- package/dist/core/trust-prompts.d.ts.map +1 -0
- package/dist/core/trust-prompts.js +108 -0
- package/dist/core/trust-prompts.js.map +1 -0
- package/dist/core/trust-responder.d.ts +48 -0
- package/dist/core/trust-responder.d.ts.map +1 -0
- package/dist/core/trust-responder.js +119 -0
- package/dist/core/trust-responder.js.map +1 -0
- package/dist/core/tui-screen.d.ts +21 -0
- package/dist/core/tui-screen.d.ts.map +1 -0
- package/dist/core/tui-screen.js +56 -0
- package/dist/core/tui-screen.js.map +1 -0
- package/dist/core/turn-state.d.ts +41 -0
- package/dist/core/turn-state.d.ts.map +1 -0
- package/dist/core/turn-state.js +109 -0
- package/dist/core/turn-state.js.map +1 -0
- package/dist/core/types.d.ts +109 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/update-warning.d.ts +25 -0
- package/dist/core/update-warning.d.ts.map +1 -0
- package/dist/core/update-warning.js +33 -0
- package/dist/core/update-warning.js.map +1 -0
- package/dist/core/utf8.d.ts +11 -0
- package/dist/core/utf8.d.ts.map +1 -0
- package/dist/core/utf8.js +27 -0
- package/dist/core/utf8.js.map +1 -0
- package/dist/core/versions.d.ts +11 -0
- package/dist/core/versions.d.ts.map +1 -0
- package/dist/core/versions.js +26 -0
- package/dist/core/versions.js.map +1 -0
- package/dist/core/warning-lifecycle.d.ts +23 -0
- package/dist/core/warning-lifecycle.d.ts.map +1 -0
- package/dist/core/warning-lifecycle.js +6 -0
- package/dist/core/warning-lifecycle.js.map +1 -0
- package/dist/core/warning-reasons.d.ts +62 -0
- package/dist/core/warning-reasons.d.ts.map +1 -0
- package/dist/core/warning-reasons.js +121 -0
- package/dist/core/warning-reasons.js.map +1 -0
- package/dist/core/warnings/index.d.ts +145 -0
- package/dist/core/warnings/index.d.ts.map +1 -0
- package/dist/core/warnings/index.js +12 -0
- package/dist/core/warnings/index.js.map +1 -0
- package/dist/core/warnings/lifecycle.d.ts +23 -0
- package/dist/core/warnings/lifecycle.d.ts.map +1 -0
- package/dist/core/warnings/lifecycle.js +6 -0
- package/dist/core/warnings/lifecycle.js.map +1 -0
- package/dist/core/warnings/reasons.d.ts +62 -0
- package/dist/core/warnings/reasons.d.ts.map +1 -0
- package/dist/core/warnings/reasons.js +121 -0
- package/dist/core/warnings/reasons.js.map +1 -0
- package/dist/core/warnings/session.d.ts +20 -0
- package/dist/core/warnings/session.d.ts.map +1 -0
- package/dist/core/warnings/session.js +32 -0
- package/dist/core/warnings/session.js.map +1 -0
- package/dist/core/warnings/update.d.ts +25 -0
- package/dist/core/warnings/update.d.ts.map +1 -0
- package/dist/core/warnings/update.js +33 -0
- package/dist/core/warnings/update.js.map +1 -0
- package/dist/core/warnings.d.ts +145 -0
- package/dist/core/warnings.d.ts.map +1 -0
- package/dist/core/warnings.js +12 -0
- package/dist/core/warnings.js.map +1 -0
- package/dist/events/emitter.d.ts +19 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/emitter.js +85 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/pty/node.d.ts +17 -0
- package/dist/pty/node.d.ts.map +1 -0
- package/dist/pty/node.js +79 -0
- package/dist/pty/node.js.map +1 -0
- package/dist/pty/types.d.ts +26 -0
- package/dist/pty/types.d.ts.map +1 -0
- package/dist/pty/types.js +6 -0
- package/dist/pty/types.js.map +1 -0
- package/dist/runtime/cleanup-latch.d.ts +27 -0
- package/dist/runtime/cleanup-latch.d.ts.map +1 -0
- package/dist/runtime/cleanup-latch.js +43 -0
- package/dist/runtime/cleanup-latch.js.map +1 -0
- package/dist/runtime/hook-command.d.ts +11 -0
- package/dist/runtime/hook-command.d.ts.map +1 -0
- package/dist/runtime/hook-command.js +14 -0
- package/dist/runtime/hook-command.js.map +1 -0
- package/dist/runtime/initial-ready-advance.d.ts +22 -0
- package/dist/runtime/initial-ready-advance.d.ts.map +1 -0
- package/dist/runtime/initial-ready-advance.js +39 -0
- package/dist/runtime/initial-ready-advance.js.map +1 -0
- package/dist/runtime/initial-ready-fallback.d.ts +12 -0
- package/dist/runtime/initial-ready-fallback.d.ts.map +1 -0
- package/dist/runtime/initial-ready-fallback.js +20 -0
- package/dist/runtime/initial-ready-fallback.js.map +1 -0
- package/dist/runtime/initial-ready.d.ts +49 -0
- package/dist/runtime/initial-ready.d.ts.map +1 -0
- package/dist/runtime/initial-ready.js +81 -0
- package/dist/runtime/initial-ready.js.map +1 -0
- package/dist/runtime/loop-restore.d.ts +10 -0
- package/dist/runtime/loop-restore.d.ts.map +1 -0
- package/dist/runtime/loop-restore.js +26 -0
- package/dist/runtime/loop-restore.js.map +1 -0
- package/dist/runtime/probe.d.ts +11 -0
- package/dist/runtime/probe.d.ts.map +1 -0
- package/dist/runtime/probe.js +120 -0
- package/dist/runtime/probe.js.map +1 -0
- package/dist/runtime/readiness/advance.d.ts +22 -0
- package/dist/runtime/readiness/advance.d.ts.map +1 -0
- package/dist/runtime/readiness/advance.js +39 -0
- package/dist/runtime/readiness/advance.js.map +1 -0
- package/dist/runtime/readiness/initial-ready.d.ts +49 -0
- package/dist/runtime/readiness/initial-ready.d.ts.map +1 -0
- package/dist/runtime/readiness/initial-ready.js +81 -0
- package/dist/runtime/readiness/initial-ready.js.map +1 -0
- package/dist/runtime/reap-tree.d.ts +62 -0
- package/dist/runtime/reap-tree.d.ts.map +1 -0
- package/dist/runtime/reap-tree.js +108 -0
- package/dist/runtime/reap-tree.js.map +1 -0
- package/dist/runtime/seams.d.ts +28 -0
- package/dist/runtime/seams.d.ts.map +1 -0
- package/dist/runtime/seams.js +34 -0
- package/dist/runtime/seams.js.map +1 -0
- package/dist/runtime/session/base.d.ts +48 -0
- package/dist/runtime/session/base.d.ts.map +1 -0
- package/dist/runtime/session/base.js +76 -0
- package/dist/runtime/session/base.js.map +1 -0
- package/dist/runtime/session/commands.d.ts +43 -0
- package/dist/runtime/session/commands.d.ts.map +1 -0
- package/dist/runtime/session/commands.js +52 -0
- package/dist/runtime/session/commands.js.map +1 -0
- package/dist/runtime/session/exit.d.ts +16 -0
- package/dist/runtime/session/exit.d.ts.map +1 -0
- package/dist/runtime/session/exit.js +32 -0
- package/dist/runtime/session/exit.js.map +1 -0
- package/dist/runtime/session/image-attach.d.ts +45 -0
- package/dist/runtime/session/image-attach.d.ts.map +1 -0
- package/dist/runtime/session/image-attach.js +82 -0
- package/dist/runtime/session/image-attach.js.map +1 -0
- package/dist/runtime/session/lifecycle.d.ts +58 -0
- package/dist/runtime/session/lifecycle.d.ts.map +1 -0
- package/dist/runtime/session/lifecycle.js +161 -0
- package/dist/runtime/session/lifecycle.js.map +1 -0
- package/dist/runtime/session/loops.d.ts +32 -0
- package/dist/runtime/session/loops.d.ts.map +1 -0
- package/dist/runtime/session/loops.js +62 -0
- package/dist/runtime/session/loops.js.map +1 -0
- package/dist/runtime/session/readiness.d.ts +18 -0
- package/dist/runtime/session/readiness.d.ts.map +1 -0
- package/dist/runtime/session/readiness.js +22 -0
- package/dist/runtime/session/readiness.js.map +1 -0
- package/dist/runtime/session/reap.d.ts +28 -0
- package/dist/runtime/session/reap.d.ts.map +1 -0
- package/dist/runtime/session/reap.js +51 -0
- package/dist/runtime/session/reap.js.map +1 -0
- package/dist/runtime/session/resize.d.ts +20 -0
- package/dist/runtime/session/resize.d.ts.map +1 -0
- package/dist/runtime/session/resize.js +26 -0
- package/dist/runtime/session/resize.js.map +1 -0
- package/dist/runtime/session/shutdown-binding.d.ts +30 -0
- package/dist/runtime/session/shutdown-binding.d.ts.map +1 -0
- package/dist/runtime/session/shutdown-binding.js +37 -0
- package/dist/runtime/session/shutdown-binding.js.map +1 -0
- package/dist/runtime/session/shutdown.d.ts +60 -0
- package/dist/runtime/session/shutdown.d.ts.map +1 -0
- package/dist/runtime/session/shutdown.js +140 -0
- package/dist/runtime/session/shutdown.js.map +1 -0
- package/dist/runtime/session/status-wiring.d.ts +38 -0
- package/dist/runtime/session/status-wiring.d.ts.map +1 -0
- package/dist/runtime/session/status-wiring.js +41 -0
- package/dist/runtime/session/status-wiring.js.map +1 -0
- package/dist/runtime/session/status.d.ts +7 -0
- package/dist/runtime/session/status.d.ts.map +1 -0
- package/dist/runtime/session/status.js +22 -0
- package/dist/runtime/session/status.js.map +1 -0
- package/dist/runtime/session-base-types.d.ts +36 -0
- package/dist/runtime/session-base-types.d.ts.map +1 -0
- package/dist/runtime/session-base-types.js +14 -0
- package/dist/runtime/session-base-types.js.map +1 -0
- package/dist/runtime/session-base.d.ts +48 -0
- package/dist/runtime/session-base.d.ts.map +1 -0
- package/dist/runtime/session-base.js +76 -0
- package/dist/runtime/session-base.js.map +1 -0
- package/dist/runtime/session-commands.d.ts +43 -0
- package/dist/runtime/session-commands.d.ts.map +1 -0
- package/dist/runtime/session-commands.js +52 -0
- package/dist/runtime/session-commands.js.map +1 -0
- package/dist/runtime/session-exit.d.ts +16 -0
- package/dist/runtime/session-exit.d.ts.map +1 -0
- package/dist/runtime/session-exit.js +32 -0
- package/dist/runtime/session-exit.js.map +1 -0
- package/dist/runtime/session-image-attach.d.ts +45 -0
- package/dist/runtime/session-image-attach.d.ts.map +1 -0
- package/dist/runtime/session-image-attach.js +82 -0
- package/dist/runtime/session-image-attach.js.map +1 -0
- package/dist/runtime/session-lifecycle.d.ts +61 -0
- package/dist/runtime/session-lifecycle.d.ts.map +1 -0
- package/dist/runtime/session-lifecycle.js +164 -0
- package/dist/runtime/session-lifecycle.js.map +1 -0
- package/dist/runtime/session-loops.d.ts +32 -0
- package/dist/runtime/session-loops.d.ts.map +1 -0
- package/dist/runtime/session-loops.js +62 -0
- package/dist/runtime/session-loops.js.map +1 -0
- package/dist/runtime/session-readiness.d.ts +18 -0
- package/dist/runtime/session-readiness.d.ts.map +1 -0
- package/dist/runtime/session-readiness.js +22 -0
- package/dist/runtime/session-readiness.js.map +1 -0
- package/dist/runtime/session-reap.d.ts +28 -0
- package/dist/runtime/session-reap.d.ts.map +1 -0
- package/dist/runtime/session-reap.js +51 -0
- package/dist/runtime/session-reap.js.map +1 -0
- package/dist/runtime/session-resize.d.ts +20 -0
- package/dist/runtime/session-resize.d.ts.map +1 -0
- package/dist/runtime/session-resize.js +26 -0
- package/dist/runtime/session-resize.js.map +1 -0
- package/dist/runtime/session-shutdown-binding.d.ts +30 -0
- package/dist/runtime/session-shutdown-binding.d.ts.map +1 -0
- package/dist/runtime/session-shutdown-binding.js +37 -0
- package/dist/runtime/session-shutdown-binding.js.map +1 -0
- package/dist/runtime/session-shutdown.d.ts +60 -0
- package/dist/runtime/session-shutdown.d.ts.map +1 -0
- package/dist/runtime/session-shutdown.js +140 -0
- package/dist/runtime/session-shutdown.js.map +1 -0
- package/dist/runtime/session-status-wiring.d.ts +38 -0
- package/dist/runtime/session-status-wiring.d.ts.map +1 -0
- package/dist/runtime/session-status-wiring.js +41 -0
- package/dist/runtime/session-status-wiring.js.map +1 -0
- package/dist/runtime/session-status.d.ts +7 -0
- package/dist/runtime/session-status.d.ts.map +1 -0
- package/dist/runtime/session-status.js +22 -0
- package/dist/runtime/session-status.js.map +1 -0
- package/dist/runtime/shell.d.ts +21 -0
- package/dist/runtime/shell.d.ts.map +1 -0
- package/dist/runtime/shell.js +30 -0
- package/dist/runtime/shell.js.map +1 -0
- package/dist/runtime/shutdown/cleanup-latch.d.ts +27 -0
- package/dist/runtime/shutdown/cleanup-latch.d.ts.map +1 -0
- package/dist/runtime/shutdown/cleanup-latch.js +43 -0
- package/dist/runtime/shutdown/cleanup-latch.js.map +1 -0
- package/dist/runtime/shutdown/coordinator.d.ts +57 -0
- package/dist/runtime/shutdown/coordinator.d.ts.map +1 -0
- package/dist/runtime/shutdown/coordinator.js +77 -0
- package/dist/runtime/shutdown/coordinator.js.map +1 -0
- package/dist/runtime/shutdown/reap-tree.d.ts +62 -0
- package/dist/runtime/shutdown/reap-tree.d.ts.map +1 -0
- package/dist/runtime/shutdown/reap-tree.js +108 -0
- package/dist/runtime/shutdown/reap-tree.js.map +1 -0
- package/dist/runtime/shutdown/teardown.d.ts +15 -0
- package/dist/runtime/shutdown/teardown.d.ts.map +1 -0
- package/dist/runtime/shutdown/teardown.js +40 -0
- package/dist/runtime/shutdown/teardown.js.map +1 -0
- package/dist/runtime/shutdown/terminate.d.ts +22 -0
- package/dist/runtime/shutdown/terminate.d.ts.map +1 -0
- package/dist/runtime/shutdown/terminate.js +129 -0
- package/dist/runtime/shutdown/terminate.js.map +1 -0
- package/dist/runtime/shutdown-coordinator.d.ts +57 -0
- package/dist/runtime/shutdown-coordinator.d.ts.map +1 -0
- package/dist/runtime/shutdown-coordinator.js +77 -0
- package/dist/runtime/shutdown-coordinator.js.map +1 -0
- package/dist/runtime/startup/buffer.d.ts +33 -0
- package/dist/runtime/startup/buffer.d.ts.map +1 -0
- package/dist/runtime/startup/buffer.js +53 -0
- package/dist/runtime/startup/buffer.js.map +1 -0
- package/dist/runtime/startup/cleanup.d.ts +43 -0
- package/dist/runtime/startup/cleanup.d.ts.map +1 -0
- package/dist/runtime/startup/cleanup.js +89 -0
- package/dist/runtime/startup/cleanup.js.map +1 -0
- package/dist/runtime/startup/index.d.ts +17 -0
- package/dist/runtime/startup/index.d.ts.map +1 -0
- package/dist/runtime/startup/index.js +47 -0
- package/dist/runtime/startup/index.js.map +1 -0
- package/dist/runtime/startup-buffer.d.ts +33 -0
- package/dist/runtime/startup-buffer.d.ts.map +1 -0
- package/dist/runtime/startup-buffer.js +53 -0
- package/dist/runtime/startup-buffer.js.map +1 -0
- package/dist/runtime/startup-cleanup.d.ts +43 -0
- package/dist/runtime/startup-cleanup.d.ts.map +1 -0
- package/dist/runtime/startup-cleanup.js +89 -0
- package/dist/runtime/startup-cleanup.js.map +1 -0
- package/dist/runtime/startup.d.ts +17 -0
- package/dist/runtime/startup.d.ts.map +1 -0
- package/dist/runtime/startup.js +47 -0
- package/dist/runtime/startup.js.map +1 -0
- package/dist/runtime/status-emit.d.ts +14 -0
- package/dist/runtime/status-emit.d.ts.map +1 -0
- package/dist/runtime/status-emit.js +15 -0
- package/dist/runtime/status-emit.js.map +1 -0
- package/dist/runtime/status-evidence.d.ts +35 -0
- package/dist/runtime/status-evidence.d.ts.map +1 -0
- package/dist/runtime/status-evidence.js +143 -0
- package/dist/runtime/status-evidence.js.map +1 -0
- package/dist/runtime/teardown.d.ts +15 -0
- package/dist/runtime/teardown.d.ts.map +1 -0
- package/dist/runtime/teardown.js +40 -0
- package/dist/runtime/teardown.js.map +1 -0
- package/dist/runtime/terminate.d.ts +22 -0
- package/dist/runtime/terminate.d.ts.map +1 -0
- package/dist/runtime/terminate.js +129 -0
- package/dist/runtime/terminate.js.map +1 -0
- package/dist/runtime/update/lock.d.ts +19 -0
- package/dist/runtime/update/lock.d.ts.map +1 -0
- package/dist/runtime/update/lock.js +184 -0
- package/dist/runtime/update/lock.js.map +1 -0
- package/dist/runtime/update/once.d.ts +40 -0
- package/dist/runtime/update/once.d.ts.map +1 -0
- package/dist/runtime/update/once.js +88 -0
- package/dist/runtime/update/once.js.map +1 -0
- package/dist/runtime/update-lock.d.ts +19 -0
- package/dist/runtime/update-lock.d.ts.map +1 -0
- package/dist/runtime/update-lock.js +183 -0
- package/dist/runtime/update-lock.js.map +1 -0
- package/dist/runtime/update-once.d.ts +40 -0
- package/dist/runtime/update-once.d.ts.map +1 -0
- package/dist/runtime/update-once.js +88 -0
- package/dist/runtime/update-once.js.map +1 -0
- package/dist/state/files.d.ts +20 -0
- package/dist/state/files.d.ts.map +1 -0
- package/dist/state/files.js +78 -0
- package/dist/state/files.js.map +1 -0
- package/dist/state/launch-posture.d.ts +31 -0
- package/dist/state/launch-posture.d.ts.map +1 -0
- package/dist/state/launch-posture.js +41 -0
- package/dist/state/launch-posture.js.map +1 -0
- package/dist/state/loop-store.d.ts +13 -0
- package/dist/state/loop-store.d.ts.map +1 -0
- package/dist/state/loop-store.js +54 -0
- package/dist/state/loop-store.js.map +1 -0
- package/dist/state/private-read.d.ts +20 -0
- package/dist/state/private-read.d.ts.map +1 -0
- package/dist/state/private-read.js +57 -0
- package/dist/state/private-read.js.map +1 -0
- package/dist/state/private-session.d.ts +18 -0
- package/dist/state/private-session.d.ts.map +1 -0
- package/dist/state/private-session.js +98 -0
- package/dist/state/private-session.js.map +1 -0
- package/dist/state/runtime-paths.d.ts +40 -0
- package/dist/state/runtime-paths.d.ts.map +1 -0
- package/dist/state/runtime-paths.js +39 -0
- package/dist/state/runtime-paths.js.map +1 -0
- package/dist/state/socket-home.d.ts +68 -0
- package/dist/state/socket-home.d.ts.map +1 -0
- package/dist/state/socket-home.js +99 -0
- package/dist/state/socket-home.js.map +1 -0
- package/dist/state/store.d.ts +47 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +103 -0
- package/dist/state/store.js.map +1 -0
- package/dist/state/validate-loops.d.ts +9 -0
- package/dist/state/validate-loops.d.ts.map +1 -0
- package/dist/state/validate-loops.js +81 -0
- package/dist/state/validate-loops.js.map +1 -0
- package/dist/state/validate-posture.d.ts +15 -0
- package/dist/state/validate-posture.d.ts.map +1 -0
- package/dist/state/validate-posture.js +69 -0
- package/dist/state/validate-posture.js.map +1 -0
- package/dist/state/validate-predicates.d.ts +8 -0
- package/dist/state/validate-predicates.d.ts.map +1 -0
- package/dist/state/validate-predicates.js +8 -0
- package/dist/state/validate-predicates.js.map +1 -0
- package/dist/state/validate.d.ts +16 -0
- package/dist/state/validate.d.ts.map +1 -0
- package/dist/state/validate.js +55 -0
- package/dist/state/validate.js.map +1 -0
- package/dist/terminal/headless.d.ts +30 -0
- package/dist/terminal/headless.d.ts.map +1 -0
- package/dist/terminal/headless.js +132 -0
- package/dist/terminal/headless.js.map +1 -0
- package/docs/api.md +184 -0
- package/docs/cli-behavior.md +416 -0
- package/docs/cli-output.md +124 -0
- package/docs/cli.md +171 -0
- package/docs/design-notes.md +74 -0
- package/docs/embedding.md +82 -0
- package/docs/images.md +67 -0
- package/docs/lifecycle.md +45 -0
- package/docs/login-recovery.md +86 -0
- package/docs/loops.md +58 -0
- package/package.json +83 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared PTY termination helper for graceful stop and force kill.
|
|
3
|
+
* Implements PRD §5.3 and §9.4.
|
|
4
|
+
*/
|
|
5
|
+
import type { PtyProcess } from "../../pty/types.ts";
|
|
6
|
+
import type { SessionReaper } from "./reap-tree.ts";
|
|
7
|
+
type TerminationTimeouts = {
|
|
8
|
+
readonly gracefulMs: number;
|
|
9
|
+
readonly forceMs: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Signal the PTY, wait for exit, and reap the leader's process group. The reap is
|
|
13
|
+
* ATTEMPTED on EVERY exit path — normal exit, timeout, or a throwing PTY operation
|
|
14
|
+
* — so no path skips it. It does NOT guarantee the tree is gone: a failing reap
|
|
15
|
+
* (e.g. EPERM) still leaves descendants alive, so that failure is PROPAGATED as a
|
|
16
|
+
* typed `termination_failed` (never swallowed) and the reaper stays unlatched so a
|
|
17
|
+
* later `teardown()` RETRIES it. A successful reap latches, so a later reuse is a
|
|
18
|
+
* harmless no-op (see SessionReaper) (C-LIFE-10).
|
|
19
|
+
*/
|
|
20
|
+
export declare function terminatePty(pty: PtyProcess, signal: "SIGTERM" | "SIGKILL", reaper: Pick<SessionReaper, "reap">, timeouts?: TerminationTimeouts): Promise<void>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=terminate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminate.d.ts","sourceRoot":"","sources":["../../../src/runtime/shutdown/terminate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,KAAK,mBAAmB,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAKrF;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EACnC,QAAQ,GAAE,mBAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAsCf"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared PTY termination helper for graceful stop and force kill.
|
|
3
|
+
* Implements PRD §5.3 and §9.4.
|
|
4
|
+
*/
|
|
5
|
+
import { causeDetails, ElwoodError, elwoodError, errnoCode } from "../../core/errors.js";
|
|
6
|
+
const defaultTimeouts = { gracefulMs: 5_000, forceMs: 1_000 };
|
|
7
|
+
const POST_EXIT_REAP_RETRIES = 4;
|
|
8
|
+
const POST_EXIT_REAP_RETRY_MS = 25;
|
|
9
|
+
/**
|
|
10
|
+
* Signal the PTY, wait for exit, and reap the leader's process group. The reap is
|
|
11
|
+
* ATTEMPTED on EVERY exit path — normal exit, timeout, or a throwing PTY operation
|
|
12
|
+
* — so no path skips it. It does NOT guarantee the tree is gone: a failing reap
|
|
13
|
+
* (e.g. EPERM) still leaves descendants alive, so that failure is PROPAGATED as a
|
|
14
|
+
* typed `termination_failed` (never swallowed) and the reaper stays unlatched so a
|
|
15
|
+
* later `teardown()` RETRIES it. A successful reap latches, so a later reuse is a
|
|
16
|
+
* harmless no-op (see SessionReaper) (C-LIFE-10).
|
|
17
|
+
*/
|
|
18
|
+
export async function terminatePty(pty, signal, reaper, timeouts = defaultTimeouts) {
|
|
19
|
+
let terminationError;
|
|
20
|
+
let observedExit = false;
|
|
21
|
+
try {
|
|
22
|
+
const timeoutMs = signal === "SIGTERM" ? timeouts.gracefulMs : timeouts.forceMs;
|
|
23
|
+
const exited = await waitForExitAfterSignal(pty, signal, timeoutMs);
|
|
24
|
+
// On a SIGTERM timeout, escalate to SIGKILL. The reported signal is the one
|
|
25
|
+
// whose wait actually failed, so an operator is sent to the right phase.
|
|
26
|
+
const escalated = !exited && signal === "SIGTERM"
|
|
27
|
+
? await waitForExitAfterSignal(pty, "SIGKILL", timeouts.forceMs)
|
|
28
|
+
: exited;
|
|
29
|
+
observedExit = escalated;
|
|
30
|
+
if (!escalated) {
|
|
31
|
+
const failedSignal = signal === "SIGTERM" ? "SIGKILL" : signal;
|
|
32
|
+
terminationError = elwoodError("termination_failed", `PTY did not exit after ${failedSignal}.`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
terminationError = error;
|
|
37
|
+
}
|
|
38
|
+
// Reap on every path — even if the wait timed out or a PTY call threw — so a
|
|
39
|
+
// termination_failed outcome never leaks the descendant tree (C-LIFE-10). The
|
|
40
|
+
// reaper does NOT latch on failure, so a later teardown can retry. When BOTH
|
|
41
|
+
// termination and reap fail, neither cause is dropped: the thrown error keeps
|
|
42
|
+
// the termination message and carries the reap failure in its details. When
|
|
43
|
+
// ONLY the reap fails (termination succeeded), the raw system error is wrapped
|
|
44
|
+
// as a typed `termination_failed` so the caller always rejects with an
|
|
45
|
+
// ElwoodError, never a bare EPERM (PRD §10, C-ERR-01).
|
|
46
|
+
try {
|
|
47
|
+
await reapAfterTermination(reaper, observedExit);
|
|
48
|
+
}
|
|
49
|
+
catch (reapError) {
|
|
50
|
+
if (terminationError === undefined)
|
|
51
|
+
throw reapOnlyFailed(reapError);
|
|
52
|
+
throw bothFailed(terminationError, reapError);
|
|
53
|
+
}
|
|
54
|
+
if (terminationError !== undefined)
|
|
55
|
+
throw terminationError;
|
|
56
|
+
}
|
|
57
|
+
async function reapAfterTermination(reaper, observedExit) {
|
|
58
|
+
let retries = observedExit ? POST_EXIT_REAP_RETRIES : 0;
|
|
59
|
+
while (true) {
|
|
60
|
+
try {
|
|
61
|
+
reaper.reap();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
if (errnoCode(error) !== "EPERM" || retries === 0)
|
|
66
|
+
throw error;
|
|
67
|
+
retries -= 1;
|
|
68
|
+
await new Promise((resolve) => setTimeout(resolve, POST_EXIT_REAP_RETRY_MS));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Builds one error preserving BOTH the termination and the reap failure causes.
|
|
74
|
+
* The reap cause is carried on a dedicated `.reapError` string property (NOT the
|
|
75
|
+
* standard `.cause`, which the termination error may already use for its own root
|
|
76
|
+
* cause): an ElwoodError gets it in `details.reapError`; any other Error gets it as
|
|
77
|
+
* a `.reapError` property added in place, preserving the original identity/stack.
|
|
78
|
+
* Either way neither cause is dropped, whether termination failed with a typed
|
|
79
|
+
* ElwoodError or a plain PTY Error (C-LIFE-10). Callers/tests read `.reapError`.
|
|
80
|
+
*/
|
|
81
|
+
function bothFailed(terminationError, reapError) {
|
|
82
|
+
const reap = reapError instanceof Error ? reapError.message : String(reapError);
|
|
83
|
+
if (terminationError instanceof ElwoodError) {
|
|
84
|
+
return elwoodError(terminationError.code, terminationError.message, {
|
|
85
|
+
...terminationError.details,
|
|
86
|
+
reapError: reap,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// Any other termination error reaching here is always an Error (ElwoodError is
|
|
90
|
+
// handled above; a thrown PTY value was normalized to Error in
|
|
91
|
+
// waitForExitAfterSignal). Preserve the reap cause on it without losing the
|
|
92
|
+
// original identity/stack.
|
|
93
|
+
terminationError.reapError = reap;
|
|
94
|
+
return terminationError;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Wraps a reap-only failure (PTY termination SUCCEEDED, the group reap FAILED) as
|
|
98
|
+
* a typed `termination_failed` error with a normalized cause (errno/syscall/path
|
|
99
|
+
* when available), so `stop()`/`kill()` reject with an ElwoodError rather than a
|
|
100
|
+
* raw system error (PRD §10, C-ERR-01, C-LIFE-10).
|
|
101
|
+
*/
|
|
102
|
+
function reapOnlyFailed(reapError) {
|
|
103
|
+
return elwoodError("termination_failed", "PTY exited but its process group could not be reaped.", {
|
|
104
|
+
...causeDetails(reapError),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function waitForExitAfterSignal(pty, signal, timeoutMs) {
|
|
108
|
+
return new Promise((resolve, reject) => {
|
|
109
|
+
let unsubscribe;
|
|
110
|
+
const timer = setTimeout(() => {
|
|
111
|
+
unsubscribe?.();
|
|
112
|
+
resolve(false);
|
|
113
|
+
}, timeoutMs);
|
|
114
|
+
try {
|
|
115
|
+
unsubscribe = pty.onExit(() => {
|
|
116
|
+
clearTimeout(timer);
|
|
117
|
+
unsubscribe?.();
|
|
118
|
+
resolve(true);
|
|
119
|
+
});
|
|
120
|
+
pty.kill(signal);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
clearTimeout(timer);
|
|
124
|
+
unsubscribe?.();
|
|
125
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=terminate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/runtime/shutdown/terminate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKzF,MAAM,eAAe,GAAwB,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACnF,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAe,EACf,MAA6B,EAC7B,MAAmC,EACnC,WAAgC,eAAe;IAE/C,IAAI,gBAAyB,CAAC;IAC9B,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChF,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACpE,4EAA4E;QAC5E,yEAAyE;QACzE,MAAM,SAAS,GACb,CAAC,MAAM,IAAI,MAAM,KAAK,SAAS;YAC7B,CAAC,CAAC,MAAM,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;YAChE,CAAC,CAAC,MAAM,CAAC;QACb,YAAY,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/D,gBAAgB,GAAG,WAAW,CAC5B,oBAAoB,EACpB,0BAA0B,YAAY,GAAG,CAC1C,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,4EAA4E;IAC5E,+EAA+E;IAC/E,uEAAuE;IACvE,uDAAuD;IACvD,IAAI,CAAC;QACH,MAAM,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,IAAI,gBAAgB,KAAK,SAAS;YAAE,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,gBAAgB,KAAK,SAAS;QAAE,MAAM,gBAAgB,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAmC,EACnC,YAAqB;IAErB,IAAI,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,OAAO,IAAI,OAAO,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC/D,OAAO,IAAI,CAAC,CAAC;YACb,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,gBAAyB,EAAE,SAAkB;IAC/D,MAAM,IAAI,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChF,IAAI,gBAAgB,YAAY,WAAW,EAAE,CAAC;QAC5C,OAAO,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;YAClE,GAAG,gBAAgB,CAAC,OAAO;YAC3B,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IACD,+EAA+E;IAC/E,+DAA+D;IAC/D,4EAA4E;IAC5E,2BAA2B;IAC1B,gBAAmD,CAAC,SAAS,GAAG,IAAI,CAAC;IACtE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,SAAkB;IACxC,OAAO,WAAW,CAChB,oBAAoB,EACpB,uDAAuD,EACvD;QACE,GAAG,YAAY,CAAC,SAAS,CAAC;KAC3B,CACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAAe,EACf,MAA6B,EAC7B,SAAiB;IAEjB,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,IAAI,WAAqC,CAAC;QAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,WAAW,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,IAAI,CAAC;YACH,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;gBAC5B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,WAAW,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,WAAW,EAAE,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serializes a session's overlapping stop/kill/teardown so the PTY is signaled at
|
|
3
|
+
* most once (PRD §5.3/§9.4, C-LIFE-10). Concurrent shutdown calls can each snapshot
|
|
4
|
+
* a non-terminal status and race into `terminatePty`; if the OS process exits before
|
|
5
|
+
* node-pty's exit callback updates status, a later caller could signal the numeric
|
|
6
|
+
* PID again AFTER the kernel recycled it, and duplicate waiters / first-wins evidence
|
|
7
|
+
* could mislabel a force-killed exit as merely stopped.
|
|
8
|
+
*
|
|
9
|
+
* Two pieces of state, tracked SEPARATELY, make this safe and still retryable:
|
|
10
|
+
* - `signaled` — sticky, set the first time any shutdown signals the PTY. It is
|
|
11
|
+
* NEVER cleared. A later caller that finds it set does NOT re-signal solely
|
|
12
|
+
* because the lifecycle status is still non-terminal (a predecessor that
|
|
13
|
+
* signaled+reaped but threw before submitting terminal status must not cause a
|
|
14
|
+
* re-signal of a possibly-recycled PID); it may still reap/cleanup/teardown.
|
|
15
|
+
* - `inFlight` — the current in-flight run, CLEARED on settlement (with identity
|
|
16
|
+
* protection). A failed `stop()`/`kill()`/`teardown()` therefore does not return
|
|
17
|
+
* a permanently rejected promise to every later caller: once it settles, a later
|
|
18
|
+
* call starts a fresh operation that RETRIES reap/cleanup/removal without
|
|
19
|
+
* re-signaling the PTY (C-LIFE-10 retry posture).
|
|
20
|
+
*/
|
|
21
|
+
/** Ordered so a later request can tell whether it escalates the in-flight one. */
|
|
22
|
+
export type ShutdownLevel = "stop" | "kill" | "teardown";
|
|
23
|
+
/** What a coordinated shutdown operation is told about prior signal ownership. */
|
|
24
|
+
export type ShutdownContext = {
|
|
25
|
+
/** True once ANY prior shutdown signaled the PTY — do not re-signal, only reap/cleanup. */
|
|
26
|
+
readonly alreadySignaled: boolean;
|
|
27
|
+
/** Record that this operation is about to signal the PTY (idempotent). */
|
|
28
|
+
readonly markSignaled: () => void;
|
|
29
|
+
};
|
|
30
|
+
type ShutdownOperation = (context: ShutdownContext) => Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* One coordinator per session. `run` is claimed synchronously: it records the
|
|
33
|
+
* in-flight request before returning control, so a concurrent caller entering the
|
|
34
|
+
* same tick sees it and joins instead of starting a second, racing shutdown.
|
|
35
|
+
*/
|
|
36
|
+
export declare class ShutdownCoordinator {
|
|
37
|
+
private inFlight;
|
|
38
|
+
private signaled;
|
|
39
|
+
/**
|
|
40
|
+
* Claim (or join) the in-flight shutdown for `level`, running `operation` only
|
|
41
|
+
* when this call actually owns work:
|
|
42
|
+
* - No in-flight run: this caller owns it; `operation` runs immediately.
|
|
43
|
+
* - In-flight run of an equal-or-higher level: JOIN it (await the same promise);
|
|
44
|
+
* `operation` never runs, so the PTY is not signaled a second time.
|
|
45
|
+
* - In-flight run of a LOWER level (escalation): chain `operation` AFTER the
|
|
46
|
+
* in-flight run settles, so it observes the terminal status that run produced.
|
|
47
|
+
* The operation is told whether the PTY was `alreadySignaled` so it reaps/cleans
|
|
48
|
+
* up instead of re-signaling. On settlement `inFlight` is cleared (identity-guarded)
|
|
49
|
+
* so a later call can retry a failed reap/cleanup without re-signaling.
|
|
50
|
+
*/
|
|
51
|
+
run(level: ShutdownLevel, operation: ShutdownOperation): Promise<void>;
|
|
52
|
+
/** Drop the active entry once it settles, but never clobber a newer one. */
|
|
53
|
+
private clear;
|
|
54
|
+
private context;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=shutdown-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown-coordinator.d.ts","sourceRoot":"","sources":["../../src/runtime/shutdown-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,kFAAkF;AAClF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAIzD,kFAAkF;AAClF,MAAM,MAAM,eAAe,GAAG;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAGrE;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAuB;IAGvC,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBtE,4EAA4E;IAC5E,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,OAAO;CAQhB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serializes a session's overlapping stop/kill/teardown so the PTY is signaled at
|
|
3
|
+
* most once (PRD §5.3/§9.4, C-LIFE-10). Concurrent shutdown calls can each snapshot
|
|
4
|
+
* a non-terminal status and race into `terminatePty`; if the OS process exits before
|
|
5
|
+
* node-pty's exit callback updates status, a later caller could signal the numeric
|
|
6
|
+
* PID again AFTER the kernel recycled it, and duplicate waiters / first-wins evidence
|
|
7
|
+
* could mislabel a force-killed exit as merely stopped.
|
|
8
|
+
*
|
|
9
|
+
* Two pieces of state, tracked SEPARATELY, make this safe and still retryable:
|
|
10
|
+
* - `signaled` — sticky, set the first time any shutdown signals the PTY. It is
|
|
11
|
+
* NEVER cleared. A later caller that finds it set does NOT re-signal solely
|
|
12
|
+
* because the lifecycle status is still non-terminal (a predecessor that
|
|
13
|
+
* signaled+reaped but threw before submitting terminal status must not cause a
|
|
14
|
+
* re-signal of a possibly-recycled PID); it may still reap/cleanup/teardown.
|
|
15
|
+
* - `inFlight` — the current in-flight run, CLEARED on settlement (with identity
|
|
16
|
+
* protection). A failed `stop()`/`kill()`/`teardown()` therefore does not return
|
|
17
|
+
* a permanently rejected promise to every later caller: once it settles, a later
|
|
18
|
+
* call starts a fresh operation that RETRIES reap/cleanup/removal without
|
|
19
|
+
* re-signaling the PTY (C-LIFE-10 retry posture).
|
|
20
|
+
*/
|
|
21
|
+
const levelRank = { stop: 0, kill: 1, teardown: 2 };
|
|
22
|
+
/**
|
|
23
|
+
* One coordinator per session. `run` is claimed synchronously: it records the
|
|
24
|
+
* in-flight request before returning control, so a concurrent caller entering the
|
|
25
|
+
* same tick sees it and joins instead of starting a second, racing shutdown.
|
|
26
|
+
*/
|
|
27
|
+
export class ShutdownCoordinator {
|
|
28
|
+
inFlight;
|
|
29
|
+
// Sticky: once the PTY is signaled it must never be signaled again (recycled PID),
|
|
30
|
+
// independently of whether a run reached a terminal status before it settled.
|
|
31
|
+
signaled = false;
|
|
32
|
+
/**
|
|
33
|
+
* Claim (or join) the in-flight shutdown for `level`, running `operation` only
|
|
34
|
+
* when this call actually owns work:
|
|
35
|
+
* - No in-flight run: this caller owns it; `operation` runs immediately.
|
|
36
|
+
* - In-flight run of an equal-or-higher level: JOIN it (await the same promise);
|
|
37
|
+
* `operation` never runs, so the PTY is not signaled a second time.
|
|
38
|
+
* - In-flight run of a LOWER level (escalation): chain `operation` AFTER the
|
|
39
|
+
* in-flight run settles, so it observes the terminal status that run produced.
|
|
40
|
+
* The operation is told whether the PTY was `alreadySignaled` so it reaps/cleans
|
|
41
|
+
* up instead of re-signaling. On settlement `inFlight` is cleared (identity-guarded)
|
|
42
|
+
* so a later call can retry a failed reap/cleanup without re-signaling.
|
|
43
|
+
*/
|
|
44
|
+
run(level, operation) {
|
|
45
|
+
const current = this.inFlight;
|
|
46
|
+
if (current && levelRank[current.level] >= levelRank[level])
|
|
47
|
+
return current.promise;
|
|
48
|
+
const invoke = () => operation(this.context());
|
|
49
|
+
// No in-flight run: this caller owns it and starts SYNCHRONOUSLY (no microtask gap
|
|
50
|
+
// before the PTY signal). An escalation chains AFTER the lower-level in-flight run
|
|
51
|
+
// so it observes the terminal status that run produced; the predecessor's rejection
|
|
52
|
+
// is absorbed here (each shutdown still surfaces its own failure to its own caller).
|
|
53
|
+
const promise = current ? current.promise.then(invoke, invoke) : invoke();
|
|
54
|
+
const entry = { level, promise };
|
|
55
|
+
this.inFlight = entry;
|
|
56
|
+
// Clear on settlement so a settled failure never permanently blocks a retry — but
|
|
57
|
+
// only if this is still the active entry (a newer run must not be clobbered). The
|
|
58
|
+
// rejection is swallowed on THIS observer only; the `promise` returned to the
|
|
59
|
+
// caller still rejects so each shutdown surfaces its own failure.
|
|
60
|
+
promise.then(() => this.clear(entry), () => this.clear(entry));
|
|
61
|
+
return promise;
|
|
62
|
+
}
|
|
63
|
+
/** Drop the active entry once it settles, but never clobber a newer one. */
|
|
64
|
+
clear(entry) {
|
|
65
|
+
if (this.inFlight === entry)
|
|
66
|
+
this.inFlight = undefined;
|
|
67
|
+
}
|
|
68
|
+
context() {
|
|
69
|
+
return {
|
|
70
|
+
alreadySignaled: this.signaled,
|
|
71
|
+
markSignaled: () => {
|
|
72
|
+
this.signaled = true;
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=shutdown-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown-coordinator.js","sourceRoot":"","sources":["../../src/runtime/shutdown-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,MAAM,SAAS,GAA4C,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAa7F;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IACtB,QAAQ,CAAuB;IACvC,mFAAmF;IACnF,8EAA8E;IACtE,QAAQ,GAAG,KAAK,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,KAAoB,EAAE,SAA4B;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC;QACpF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,mFAAmF;QACnF,mFAAmF;QACnF,oFAAoF;QACpF,qFAAqF;QACrF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,kFAAkF;QAClF,kFAAkF;QAClF,8EAA8E;QAC9E,kEAAkE;QAClE,OAAO,CAAC,IAAI,CACV,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EACvB,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CACxB,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,4EAA4E;IACpE,KAAK,CAAC,KAAe;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;YAAE,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IACzD,CAAC;IAEO,OAAO;QACb,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,QAAQ;YAC9B,YAAY,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded, release-able collector for the first PTY output of a session.
|
|
3
|
+
*
|
|
4
|
+
* The startup usability check (see index.ts, `assertStartupUsable`) reads the
|
|
5
|
+
* agent's early output exactly once at ~500ms to detect a crash or auth banner.
|
|
6
|
+
* The PTY data handler is never detached for the session's lifetime, so a naive
|
|
7
|
+
* `startupOutput += data` accumulates a second unbounded in-memory transcript
|
|
8
|
+
* for the WHOLE session even though only the startup snapshot is ever consumed.
|
|
9
|
+
*
|
|
10
|
+
* This collector appends only while the startup gate is open and caps the buffer
|
|
11
|
+
* so a chatty CLI cannot balloon it; once `release()` is called (right after the
|
|
12
|
+
* usability check reads it) further chunks are dropped and the retained string is
|
|
13
|
+
* cleared, so no per-session transcript lingers. Implements PRD §9.1 startup
|
|
14
|
+
* usability and §9.4 resource cleanup.
|
|
15
|
+
*/
|
|
16
|
+
import type { PtyExit } from "../../pty/types.ts";
|
|
17
|
+
import { type StartupAdapter } from "./index.ts";
|
|
18
|
+
export type StartupBuffer = {
|
|
19
|
+
/** Appends a PTY chunk while the gate is open; a no-op once released. */
|
|
20
|
+
readonly push: (data: string) => void;
|
|
21
|
+
/** Returns the collected startup output (empty once released). */
|
|
22
|
+
readonly read: () => string;
|
|
23
|
+
/** Stops collecting and clears the retained buffer for the rest of the session. */
|
|
24
|
+
readonly release: () => void;
|
|
25
|
+
};
|
|
26
|
+
export declare function createStartupBuffer(cap?: number): StartupBuffer;
|
|
27
|
+
/**
|
|
28
|
+
* Runs the ~500ms startup usability check against `buffer`, then releases it on
|
|
29
|
+
* every path (success OR failure) so the collector stops appending and clears
|
|
30
|
+
* its retained string for the rest of the session (§9.1, §9.4).
|
|
31
|
+
*/
|
|
32
|
+
export declare function assertStartupThenRelease(adapter: StartupAdapter, buffer: StartupBuffer, exit: () => PtyExit | undefined): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../../src/runtime/startup/buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAMtE,MAAM,MAAM,aAAa,GAAG;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAA2B,GAAG,aAAa,CAiBnF;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,OAAO,GAAG,SAAS,GAC9B,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded, release-able collector for the first PTY output of a session.
|
|
3
|
+
*
|
|
4
|
+
* The startup usability check (see index.ts, `assertStartupUsable`) reads the
|
|
5
|
+
* agent's early output exactly once at ~500ms to detect a crash or auth banner.
|
|
6
|
+
* The PTY data handler is never detached for the session's lifetime, so a naive
|
|
7
|
+
* `startupOutput += data` accumulates a second unbounded in-memory transcript
|
|
8
|
+
* for the WHOLE session even though only the startup snapshot is ever consumed.
|
|
9
|
+
*
|
|
10
|
+
* This collector appends only while the startup gate is open and caps the buffer
|
|
11
|
+
* so a chatty CLI cannot balloon it; once `release()` is called (right after the
|
|
12
|
+
* usability check reads it) further chunks are dropped and the retained string is
|
|
13
|
+
* cleared, so no per-session transcript lingers. Implements PRD §9.1 startup
|
|
14
|
+
* usability and §9.4 resource cleanup.
|
|
15
|
+
*/
|
|
16
|
+
import { assertStartupUsable } from "./index.js";
|
|
17
|
+
// Startup output is tiny (a banner, a prompt); this cap is comfortably larger
|
|
18
|
+
// than any real startup screen while still bounding a misbehaving CLI.
|
|
19
|
+
const STARTUP_BUFFER_CAP = 64 * 1024;
|
|
20
|
+
export function createStartupBuffer(cap = STARTUP_BUFFER_CAP) {
|
|
21
|
+
let buffer = "";
|
|
22
|
+
let open = true;
|
|
23
|
+
return {
|
|
24
|
+
push(data) {
|
|
25
|
+
if (!open || buffer.length >= cap)
|
|
26
|
+
return;
|
|
27
|
+
buffer += data;
|
|
28
|
+
if (buffer.length > cap)
|
|
29
|
+
buffer = buffer.slice(0, cap);
|
|
30
|
+
},
|
|
31
|
+
read() {
|
|
32
|
+
return buffer;
|
|
33
|
+
},
|
|
34
|
+
release() {
|
|
35
|
+
open = false;
|
|
36
|
+
buffer = "";
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Runs the ~500ms startup usability check against `buffer`, then releases it on
|
|
42
|
+
* every path (success OR failure) so the collector stops appending and clears
|
|
43
|
+
* its retained string for the rest of the session (§9.1, §9.4).
|
|
44
|
+
*/
|
|
45
|
+
export async function assertStartupThenRelease(adapter, buffer, exit) {
|
|
46
|
+
try {
|
|
47
|
+
await assertStartupUsable({ adapter, exit, output: () => buffer.read() });
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
buffer.release();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../src/runtime/startup/buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,mBAAmB,EAAuB,MAAM,YAAY,CAAC;AAEtE,8EAA8E;AAC9E,uEAAuE;AACvE,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AAWrC,MAAM,UAAU,mBAAmB,CAAC,MAAc,kBAAkB;IAClE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO;QACL,IAAI,CAAC,IAAY;YACf,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG;gBAAE,OAAO;YAC1C,MAAM,IAAI,IAAI,CAAC;YACf,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG;gBAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;QACD,IAAI;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO;YACL,IAAI,GAAG,KAAK,CAAC;YACb,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAuB,EACvB,MAAqB,EACrB,IAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort startup cleanup that preserves the original startup error.
|
|
3
|
+
* Implements PRD §9.1 and §10 error stability.
|
|
4
|
+
*/
|
|
5
|
+
import type { PtyProcess } from "../../pty/types.ts";
|
|
6
|
+
export type StartupTerminationTimeouts = {
|
|
7
|
+
readonly gracefulMs: number;
|
|
8
|
+
readonly forceMs: number;
|
|
9
|
+
};
|
|
10
|
+
export type StartupCleanupResources = {
|
|
11
|
+
readonly before?: () => void;
|
|
12
|
+
readonly bridge?: {
|
|
13
|
+
readonly stop: () => Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
readonly pty?: PtyProcess;
|
|
16
|
+
readonly terminal?: {
|
|
17
|
+
readonly dispose: () => void;
|
|
18
|
+
};
|
|
19
|
+
readonly after?: () => void;
|
|
20
|
+
/** Overrides the bounded PTY termination window (tests only; production defaults). */
|
|
21
|
+
readonly terminationTimeouts?: StartupTerminationTimeouts;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Wraps the ENTIRE `start*FromRecord` body so the fresh per-launch socket FILE the
|
|
25
|
+
* launch minted is removed on ANY failure before the session takes ownership — a
|
|
26
|
+
* failed state/runtime write, bridge start, PTY start, or guarded post-spawn step
|
|
27
|
+
* otherwise leaks a socket under `/tmp/elwood-*` (§9.1). It removes only THIS launch's
|
|
28
|
+
* own file, never the shared stable home a concurrent launch may still own; the home is
|
|
29
|
+
* deterministic, so the session's next start/resume/teardown collects any empty
|
|
30
|
+
* leftover. On success ownership transfers to the returned session (teardown removes the
|
|
31
|
+
* whole home). The cleanup is contained so it never replaces the original startup error.
|
|
32
|
+
*/
|
|
33
|
+
export declare function withSocketHomeCleanup<T>(removeOwnSocketFile: () => void, build: () => Promise<T>): Promise<T>;
|
|
34
|
+
export declare function cleanupStartupResources(resources: StartupCleanupResources): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Runs the post-session-construction startup steps behind ONE cleanup boundary
|
|
37
|
+
* (PRD §9.1, §9.4): if `region` rejects — a failed startup assertion, a PTY write
|
|
38
|
+
* fault, anything — the now-live PTY, bridge, terminal, and any watcher
|
|
39
|
+
* are torn down via `cleanupStartupResources` before the original error rethrows, so
|
|
40
|
+
* a rejected `startClaude`/`startCodex` never leaks live resources.
|
|
41
|
+
*/
|
|
42
|
+
export declare function guardStartupRegion(region: () => Promise<void>, resources: StartupCleanupResources): Promise<void>;
|
|
43
|
+
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/runtime/startup/cleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACzD,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;CAC3D,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,mBAAmB,EAAE,MAAM,IAAI,EAC/B,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,CAAC,CAAC,CAWZ;AAMD,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/F;AAUD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC3B,SAAS,EAAE,uBAAuB,GACjC,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort startup cleanup that preserves the original startup error.
|
|
3
|
+
* Implements PRD §9.1 and §10 error stability.
|
|
4
|
+
*/
|
|
5
|
+
import { SessionReaper } from "../shutdown/reap-tree.js";
|
|
6
|
+
import { terminatePty } from "../shutdown/terminate.js";
|
|
7
|
+
/**
|
|
8
|
+
* Wraps the ENTIRE `start*FromRecord` body so the fresh per-launch socket FILE the
|
|
9
|
+
* launch minted is removed on ANY failure before the session takes ownership — a
|
|
10
|
+
* failed state/runtime write, bridge start, PTY start, or guarded post-spawn step
|
|
11
|
+
* otherwise leaks a socket under `/tmp/elwood-*` (§9.1). It removes only THIS launch's
|
|
12
|
+
* own file, never the shared stable home a concurrent launch may still own; the home is
|
|
13
|
+
* deterministic, so the session's next start/resume/teardown collects any empty
|
|
14
|
+
* leftover. On success ownership transfers to the returned session (teardown removes the
|
|
15
|
+
* whole home). The cleanup is contained so it never replaces the original startup error.
|
|
16
|
+
*/
|
|
17
|
+
export async function withSocketHomeCleanup(removeOwnSocketFile, build) {
|
|
18
|
+
try {
|
|
19
|
+
return await build();
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
try {
|
|
23
|
+
removeOwnSocketFile();
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Secondary: the original startup error is the one that rejects.
|
|
27
|
+
}
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Bounded so a failed startup never hangs on an unresponsive CLI while still
|
|
32
|
+
// giving the leader a chance to exit gracefully before the group SIGKILL reap.
|
|
33
|
+
const startupTermination = { gracefulMs: 5_000, forceMs: 1_000 };
|
|
34
|
+
export async function cleanupStartupResources(resources) {
|
|
35
|
+
tryCall(resources.before);
|
|
36
|
+
// Route the PTY through the SAME group-reaping primitive the normal exit path
|
|
37
|
+
// uses: it signals, waits (bounded), and SIGKILLs the leader's process group on
|
|
38
|
+
// EVERY path — even when the PTY signal throws — so CLI descendants (e.g. a
|
|
39
|
+
// hook-bridge grandchild reparented to PID 1) cannot survive a failed startup
|
|
40
|
+
// (PRD §9.1, §9.4, C-LIFE-10). A termination/reap failure stays SECONDARY: it is
|
|
41
|
+
// contained here so the original startup error is the one that rejects.
|
|
42
|
+
if (resources.pty)
|
|
43
|
+
await reapPtyGroup(resources.pty, resources.terminationTimeouts ?? startupTermination);
|
|
44
|
+
await stopQuietly(resources.bridge);
|
|
45
|
+
tryCall(resources.after);
|
|
46
|
+
tryCall(resources.terminal?.dispose.bind(resources.terminal));
|
|
47
|
+
}
|
|
48
|
+
async function reapPtyGroup(pty, timeouts) {
|
|
49
|
+
try {
|
|
50
|
+
await terminatePty(pty, "SIGTERM", new SessionReaper(pty.pid), timeouts);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Preserve the original startup error; a reap/termination failure is secondary.
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Runs the post-session-construction startup steps behind ONE cleanup boundary
|
|
58
|
+
* (PRD §9.1, §9.4): if `region` rejects — a failed startup assertion, a PTY write
|
|
59
|
+
* fault, anything — the now-live PTY, bridge, terminal, and any watcher
|
|
60
|
+
* are torn down via `cleanupStartupResources` before the original error rethrows, so
|
|
61
|
+
* a rejected `startClaude`/`startCodex` never leaks live resources.
|
|
62
|
+
*/
|
|
63
|
+
export async function guardStartupRegion(region, resources) {
|
|
64
|
+
try {
|
|
65
|
+
await region();
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
await cleanupStartupResources(resources);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** Stops the bridge if one exists; a sync throw or rejection stays secondary. */
|
|
73
|
+
async function stopQuietly(bridge) {
|
|
74
|
+
try {
|
|
75
|
+
await bridge?.stop();
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Preserve the original startup error.
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function tryCall(callback) {
|
|
82
|
+
try {
|
|
83
|
+
callback?.();
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Preserve the original startup error.
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/runtime/startup/cleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAiBxD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,mBAA+B,EAC/B,KAAuB;IAEvB,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YACH,mBAAmB,EAAE,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,+EAA+E;AAC/E,MAAM,kBAAkB,GAA+B,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAE7F,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,SAAkC;IAC9E,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,8EAA8E;IAC9E,gFAAgF;IAChF,4EAA4E;IAC5E,8EAA8E;IAC9E,iFAAiF;IACjF,wEAAwE;IACxE,IAAI,SAAS,CAAC,GAAG;QACf,MAAM,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,mBAAmB,IAAI,kBAAkB,CAAC,CAAC;IACzF,MAAM,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzB,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAe,EAAE,QAAoC;IAC/E,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,gFAAgF;IAClF,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA2B,EAC3B,SAAkC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,KAAK,UAAU,WAAW,CAAC,MAAyC;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,QAAkC;IACjD,IAAI,CAAC;QACH,QAAQ,EAAE,EAAE,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup readiness checks for newly spawned agent PTYs.
|
|
3
|
+
* Implements PRD §9.1 and §10.
|
|
4
|
+
*/
|
|
5
|
+
import type { PtyExit } from "../../pty/types.ts";
|
|
6
|
+
export type StartupAdapter = "claude" | "codex";
|
|
7
|
+
type StartupValue<T> = T | (() => T);
|
|
8
|
+
export declare function setStartupWaitMsForTests(value: number): void;
|
|
9
|
+
export declare function resetStartupWaitMsForTests(): void;
|
|
10
|
+
export declare function assertStartupUsable(input: {
|
|
11
|
+
readonly adapter: StartupAdapter;
|
|
12
|
+
readonly exit: StartupValue<PtyExit | undefined>;
|
|
13
|
+
readonly output: StartupValue<string>;
|
|
14
|
+
readonly waitMs?: number;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/startup/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC;AAChD,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAGrC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAehB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup readiness checks for newly spawned agent PTYs.
|
|
3
|
+
* Implements PRD §9.1 and §10.
|
|
4
|
+
*/
|
|
5
|
+
import { isClaudeReauthRequiredText } from "../../claude/login/expiry-screen.js";
|
|
6
|
+
import { elwoodError } from "../../core/errors.js";
|
|
7
|
+
let startupWaitMs = 500;
|
|
8
|
+
export function setStartupWaitMsForTests(value) {
|
|
9
|
+
startupWaitMs = value;
|
|
10
|
+
}
|
|
11
|
+
export function resetStartupWaitMsForTests() {
|
|
12
|
+
startupWaitMs = 500;
|
|
13
|
+
}
|
|
14
|
+
export async function assertStartupUsable(input) {
|
|
15
|
+
await new Promise((resolve) => setTimeout(resolve, input.waitMs ?? startupWaitMs));
|
|
16
|
+
const exit = readStartupValue(input.exit);
|
|
17
|
+
if (exit) {
|
|
18
|
+
throw elwoodError(`${input.adapter}_start_failed`, `${input.adapter} exited during startup.`, {
|
|
19
|
+
exitCode: exit.exitCode,
|
|
20
|
+
signal: exit.signal,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
if (isAuthFailure(input.adapter, readStartupValue(input.output))) {
|
|
24
|
+
throw elwoodError(`${input.adapter}_not_authenticated`, `${input.adapter} is not authenticated.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function isAuthFailure(adapter, output) {
|
|
28
|
+
// Claude's re-authentication banner ("Login expired" then "Please run /login")
|
|
29
|
+
// spans multiple lines, so it is matched against the WHOLE output, not per line,
|
|
30
|
+
// and only for Claude (C-CLAUDE-17). Other forms are single-line, both adapters.
|
|
31
|
+
if (adapter === "claude" && isClaudeReauthRequiredText(output))
|
|
32
|
+
return true;
|
|
33
|
+
return output.split(/\r?\n/).some((line) => isAuthFailureLine(adapter, line));
|
|
34
|
+
}
|
|
35
|
+
function isAuthFailureLine(adapter, line) {
|
|
36
|
+
if (/not authenticated|login required|authentication failed/i.test(line))
|
|
37
|
+
return true;
|
|
38
|
+
if (!/not logged in/i.test(line))
|
|
39
|
+
return false;
|
|
40
|
+
if (adapter === "codex" && /\bmcp server\b/i.test(line))
|
|
41
|
+
return false;
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
function readStartupValue(value) {
|
|
45
|
+
return typeof value === "function" ? value() : value;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/startup/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnD,IAAI,aAAa,GAAG,GAAG,CAAC;AAExB,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,aAAa,GAAG,KAAK,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,aAAa,GAAG,GAAG,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAKzC;IACC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,WAAW,CAAC,GAAG,KAAK,CAAC,OAAO,eAAe,EAAE,GAAG,KAAK,CAAC,OAAO,yBAAyB,EAAE;YAC5F,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,WAAW,CACf,GAAG,KAAK,CAAC,OAAO,oBAAoB,EACpC,GAAG,KAAK,CAAC,OAAO,wBAAwB,CACzC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAuB,EAAE,MAAc;IAC5D,+EAA+E;IAC/E,iFAAiF;IACjF,iFAAiF;IACjF,IAAI,OAAO,KAAK,QAAQ,IAAI,0BAA0B,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5E,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuB,EAAE,IAAY;IAC9D,IAAI,yDAAyD,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,OAAO,KAAK,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAI,KAAsB;IACjD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAiB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACpE,CAAC"}
|