@bastani/atomic 0.9.27 → 0.9.28-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -0
- package/dist/builtin/intercom/CHANGELOG.md +6 -0
- package/dist/builtin/intercom/broker/broker.ts +13 -1
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +6 -0
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/package.json +3 -3
- package/dist/builtin/web-access/index.bundle.mjs +194 -44
- package/dist/builtin/web-access/package.json +3 -3
- package/dist/builtin/workflows/CHANGELOG.md +31 -0
- package/dist/builtin/workflows/builtin/{chunk-gw7rghda.js → chunk-aqv8ny38.js} +257 -259
- package/dist/builtin/workflows/builtin/{chunk-gts8wgjr.js → chunk-br4ac9a3.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-9bhs02gm.js → chunk-p3xmajmj.js} +439 -40
- package/dist/builtin/workflows/builtin/chunk-p6jagvyf.js +8 -0
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +4 -4
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/authoring.d.ts +14 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +108110 -107201
- package/dist/builtin/workflows/src/index.js +42226 -41077
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +16 -11
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +16 -1
- package/dist/cli/args.d.ts +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +12 -5
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/credential-print.d.ts +1 -1
- package/dist/cli/credential-print.d.ts.map +1 -1
- package/dist/cli/credential-print.js +2 -56
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/codemode-worker.js +99 -3
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.js +6 -1
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +20 -3
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +3 -2
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts +6 -0
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +96 -12
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +4 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +19 -3
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +1 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js +3 -2
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +11 -16
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +1 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +5 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage-backends.d.ts.map +1 -1
- package/dist/core/auth-storage-backends.js +2 -1
- package/dist/core/auth-storage-backends.js.map +1 -1
- package/dist/core/auth-storage.d.ts +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +15 -7
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/azure-provider-compat.d.ts +8 -0
- package/dist/core/azure-provider-compat.d.ts.map +1 -0
- package/dist/core/azure-provider-compat.js +65 -0
- package/dist/core/azure-provider-compat.js.map +1 -0
- package/dist/core/child-session-options.d.ts +1 -1
- package/dist/core/child-session-options.d.ts.map +1 -1
- package/dist/core/child-session-options.js +11 -2
- package/dist/core/child-session-options.js.map +1 -1
- package/dist/core/compaction/classifier-compaction.d.ts +13 -0
- package/dist/core/compaction/classifier-compaction.d.ts.map +1 -0
- package/dist/core/compaction/classifier-compaction.js +110 -0
- package/dist/core/compaction/classifier-compaction.js.map +1 -0
- package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
- package/dist/core/compaction/compaction-boundary.js +2 -6
- package/dist/core/compaction/compaction-boundary.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +16 -1
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +97 -12
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts +18 -1
- package/dist/core/compaction/compaction-types.d.ts.map +1 -1
- package/dist/core/compaction/compaction-types.js +1 -1
- package/dist/core/compaction/compaction-types.js.map +1 -1
- package/dist/core/compaction/fallback-planner.d.ts +1 -0
- package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
- package/dist/core/compaction/fallback-planner.js +2 -0
- package/dist/core/compaction/fallback-planner.js.map +1 -1
- package/dist/core/compaction/index.d.ts +3 -0
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +3 -0
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/model-resolver.d.ts +16 -0
- package/dist/core/compaction/model-resolver.d.ts.map +1 -0
- package/dist/core/compaction/model-resolver.js +18 -0
- package/dist/core/compaction/model-resolver.js.map +1 -0
- package/dist/core/compaction/morph-compaction.d.ts +14 -0
- package/dist/core/compaction/morph-compaction.d.ts.map +1 -0
- package/dist/core/compaction/morph-compaction.js +99 -0
- package/dist/core/compaction/morph-compaction.js.map +1 -0
- package/dist/core/compaction/pi-summary-fallback.d.ts +34 -0
- package/dist/core/compaction/pi-summary-fallback.d.ts.map +1 -0
- package/dist/core/compaction/pi-summary-fallback.js +357 -0
- package/dist/core/compaction/pi-summary-fallback.js.map +1 -0
- package/dist/core/compaction/planner-outcome.d.ts +10 -6
- package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
- package/dist/core/compaction/planner-outcome.js +11 -4
- package/dist/core/compaction/planner-outcome.js.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts +3 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.js +11 -0
- package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
- package/dist/core/compaction/range-planner.d.ts +3 -3
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +59 -28
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/region-trimming.d.ts.map +1 -1
- package/dist/core/compaction/region-trimming.js +7 -0
- package/dist/core/compaction/region-trimming.js.map +1 -1
- package/dist/core/compaction/structured-compaction-input.d.ts +19 -0
- package/dist/core/compaction/structured-compaction-input.d.ts.map +1 -0
- package/dist/core/compaction/structured-compaction-input.js +70 -0
- package/dist/core/compaction/structured-compaction-input.js.map +1 -0
- package/dist/core/compaction/transcript-serialization.d.ts +1 -0
- package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
- package/dist/core/compaction/transcript-serialization.js +26 -0
- package/dist/core/compaction/transcript-serialization.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +3 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +1 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +5 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-host-modules.d.ts +1 -0
- package/dist/core/extensions/loader-host-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-host-modules.js +12 -0
- package/dist/core/extensions/loader-host-modules.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +10 -4
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +47 -3
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +11 -4
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +38 -9
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/tool-types.d.ts +2 -0
- package/dist/core/extensions/tool-types.d.ts.map +1 -1
- package/dist/core/extensions/tool-types.js.map +1 -1
- package/dist/core/extensions/workflow-events.d.ts +49 -0
- package/dist/core/extensions/workflow-events.d.ts.map +1 -1
- package/dist/core/extensions/workflow-events.js.map +1 -1
- package/dist/core/extensions/workflow-run-control-hub.d.ts +16 -4
- package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -1
- package/dist/core/extensions/workflow-run-control-hub.js +72 -1
- package/dist/core/extensions/workflow-run-control-hub.js.map +1 -1
- package/dist/core/extensions/workflow-run-control.d.ts +11 -3
- package/dist/core/extensions/workflow-run-control.d.ts.map +1 -1
- package/dist/core/extensions/workflow-run-control.js.map +1 -1
- package/dist/core/fast-model-variants.d.ts +1 -1
- package/dist/core/fast-model-variants.js +1 -1
- package/dist/core/fast-model-variants.js.map +1 -1
- package/dist/core/keybindings.d.ts +4 -4
- package/dist/core/messages.d.ts +1 -0
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +5 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +2 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-fallback-failures.d.ts.map +1 -1
- package/dist/core/model-fallback-failures.js +5 -1
- package/dist/core/model-fallback-failures.js.map +1 -1
- package/dist/core/model-resolver-cli.d.ts.map +1 -1
- package/dist/core/model-resolver-cli.js +5 -1
- package/dist/core/model-resolver-cli.js.map +1 -1
- package/dist/core/model-resolver-defaults.js +1 -1
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-resolver-initial.d.ts.map +1 -1
- package/dist/core/model-resolver-initial.js +6 -1
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/model-resolver-patterns.d.ts.map +1 -1
- package/dist/core/model-resolver-patterns.js +2 -1
- package/dist/core/model-resolver-patterns.js.map +1 -1
- package/dist/core/model-resolver-scope.d.ts.map +1 -1
- package/dist/core/model-resolver-scope.js +3 -1
- package/dist/core/model-resolver-scope.js.map +1 -1
- package/dist/core/model-runtime-streaming.d.ts.map +1 -1
- package/dist/core/model-runtime-streaming.js +2 -0
- package/dist/core/model-runtime-streaming.js.map +1 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +48 -22
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/provider-composer-internal.d.ts.map +1 -1
- package/dist/core/provider-composer-internal.js +4 -1
- package/dist/core/provider-composer-internal.js.map +1 -1
- package/dist/core/provider-display-names.js +1 -1
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +3 -0
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts +1 -0
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js +4 -0
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-internals.d.ts +1 -0
- package/dist/core/resource-loader-internals.d.ts.map +1 -1
- package/dist/core/resource-loader-internals.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +28 -5
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +2 -0
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/core/sdk-types.d.ts +6 -4
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +5 -3
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-lifecycle-work.d.ts +2 -1
- package/dist/core/session-lifecycle-work.d.ts.map +1 -1
- package/dist/core/session-lifecycle-work.js +15 -1
- package/dist/core/session-lifecycle-work.js.map +1 -1
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +4 -2
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +2 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +33 -4
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-core.js +2 -0
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-storage.d.ts.map +1 -1
- package/dist/core/settings-storage.js +2 -1
- package/dist/core/settings-storage.js.map +1 -1
- package/dist/core/settings-types.d.ts +1 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/skills.d.ts +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +3 -1
- package/dist/core/skills.js.map +1 -1
- package/dist/core/system-prompt.d.ts +3 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +7 -3
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tool-loadout.d.ts.map +1 -1
- package/dist/core/tool-loadout.js +8 -1
- package/dist/core/tool-loadout.js.map +1 -1
- package/dist/core/tool-selection.d.ts +13 -0
- package/dist/core/tool-selection.d.ts.map +1 -0
- package/dist/core/tool-selection.js +43 -0
- package/dist/core/tool-selection.js.map +1 -0
- package/dist/core/tools/read.d.ts +7 -0
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +11 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/transcript.d.ts +58 -0
- package/dist/core/transcript.d.ts.map +1 -0
- package/dist/core/transcript.js +185 -0
- package/dist/core/transcript.js.map +1 -0
- package/dist/extensions/codemode/execute.d.ts.map +1 -1
- package/dist/extensions/codemode/execute.js +2 -1
- package/dist/extensions/codemode/execute.js.map +1 -1
- package/dist/extensions/codemode/index.d.ts.map +1 -1
- package/dist/extensions/codemode/index.js +1 -0
- package/dist/extensions/codemode/index.js.map +1 -1
- package/dist/extensions/codemode/tool.d.ts +4 -1
- package/dist/extensions/codemode/tool.d.ts.map +1 -1
- package/dist/extensions/codemode/tool.js +6 -3
- package/dist/extensions/codemode/tool.js.map +1 -1
- package/dist/extensions/herdr/index.d.ts.map +1 -1
- package/dist/extensions/herdr/index.js +15 -10
- package/dist/extensions/herdr/index.js.map +1 -1
- package/dist/extensions/herdr/pane-owner.d.ts +6 -2
- package/dist/extensions/herdr/pane-owner.d.ts.map +1 -1
- package/dist/extensions/herdr/pane-owner.js +19 -4
- package/dist/extensions/herdr/pane-owner.js.map +1 -1
- package/dist/extensions/mcp/client/oauth/flow.d.ts.map +1 -1
- package/dist/extensions/mcp/client/oauth/flow.js +14 -1
- package/dist/extensions/mcp/client/oauth/flow.js.map +1 -1
- package/dist/extensions/mcp/client/oauth/types.d.ts +1 -0
- package/dist/extensions/mcp/client/oauth/types.d.ts.map +1 -1
- package/dist/extensions/mcp/client/oauth/types.js.map +1 -1
- package/dist/extensions/mcp/index.js.map +1 -1
- package/dist/extensions/mcp/runtime.d.ts +5 -2
- package/dist/extensions/mcp/runtime.d.ts.map +1 -1
- package/dist/extensions/mcp/runtime.js +18 -4
- package/dist/extensions/mcp/runtime.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +2 -0
- package/dist/main.js.map +1 -1
- package/dist/migrations-azure.d.ts +4 -0
- package/dist/migrations-azure.d.ts.map +1 -0
- package/dist/migrations-azure.js +41 -0
- package/dist/migrations-azure.js.map +1 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +2 -0
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.js +2 -1
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.d.ts +2 -0
- package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.js +9 -3
- package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts +2 -0
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js +15 -3
- package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +43 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +6 -0
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/interactive-prompt-turn.js +6 -4
- package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +13 -1
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +8 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +2 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +1 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/theme/tui-theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/tui-theme.js +1 -0
- package/dist/modes/interactive/theme/tui-theme.js.map +1 -1
- package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-args.js +1 -0
- package/dist/modes/interactive-engine/engine-args.js.map +1 -1
- package/dist/utils/credential-redaction.d.ts +2 -0
- package/dist/utils/credential-redaction.d.ts.map +1 -0
- package/dist/utils/credential-redaction.js +20 -0
- package/dist/utils/credential-redaction.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.js +6 -1
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/docs/codemode.md +3 -2
- package/docs/compaction/reference.md +10 -4
- package/docs/compaction.md +40 -8
- package/docs/docs.json +1 -0
- package/docs/extensions/api-reference.md +18 -0
- package/docs/extensions/authoring.md +1 -1
- package/docs/extensions/events.md +2 -2
- package/docs/extensions.md +2 -0
- package/docs/keybindings.md +9 -9
- package/docs/mcp-servers.md +4 -0
- package/docs/providers.md +33 -3
- package/docs/reference/cli.md +10 -3
- package/docs/sdk/reference.md +16 -1
- package/docs/sdk/web-server.md +325 -0
- package/docs/sdk.md +83 -1
- package/docs/security.md +1 -1
- package/docs/workflows/api-reference.md +74 -4
- package/docs/workflows/authoring.md +6 -2
- package/docs/workflows/builtins.md +4 -0
- package/docs/workflows/operations.md +12 -4
- package/npm-shrinkwrap.json +78 -74
- package/package.json +9 -9
package/dist/codemode-worker.js
CHANGED
|
@@ -2825,6 +2825,96 @@ var MAX_OUTPUT_ITEMS = 1e5;
|
|
|
2825
2825
|
var IMAGE_HELPER_EXPECTS = "image expects a non-empty image URL string, an object with image_url, or a raw MCP image block";
|
|
2826
2826
|
var PRELUDE_SOURCE = `(function (bridge, toolsJson, globalsJson, storeJson) {
|
|
2827
2827
|
"use strict";
|
|
2828
|
+
|
|
2829
|
+
// Freeze every object reachable from the built-in globals, plus the intrinsics that are only
|
|
2830
|
+
// reachable from instances (iterator and generator prototypes, %TypedArray%).
|
|
2831
|
+
//
|
|
2832
|
+
// Freezing alone breaks ordinary code through the "override mistake": a data property that is
|
|
2833
|
+
// read-only on a prototype cannot be assigned on an instance either, so
|
|
2834
|
+
// this.name = "MyError" in an Error subclass would throw. Commonly overridden properties
|
|
2835
|
+
// become accessors whose setter defines an own property on the instance instead.
|
|
2836
|
+
(function lockdown() {
|
|
2837
|
+
const OVERRIDABLE = new Set(["constructor", "name", "message", "toString", "toLocaleString", "valueOf", "toJSON"]);
|
|
2838
|
+
const seen = new Set([globalThis]);
|
|
2839
|
+
const queue = [];
|
|
2840
|
+
const add = (value) => {
|
|
2841
|
+
if ((typeof value === "object" && value !== null) || typeof value === "function") {
|
|
2842
|
+
if (!seen.has(value)) {
|
|
2843
|
+
seen.add(value);
|
|
2844
|
+
queue.push(value);
|
|
2845
|
+
}
|
|
2846
|
+
}
|
|
2847
|
+
};
|
|
2848
|
+
|
|
2849
|
+
// Accessors from an object literal have no own prototype object, unlike function expressions,
|
|
2850
|
+
// whose prototype.constructor would be converted again without end.
|
|
2851
|
+
function allowOverride(object, key, value, enumerable) {
|
|
2852
|
+
const { get, set } = Object.getOwnPropertyDescriptor(
|
|
2853
|
+
{
|
|
2854
|
+
get accessor() {
|
|
2855
|
+
return value;
|
|
2856
|
+
},
|
|
2857
|
+
set accessor(next) {
|
|
2858
|
+
if (this === object) {
|
|
2859
|
+
throw new TypeError("Cannot assign to read only property '" + String(key) + "' of a built-in");
|
|
2860
|
+
}
|
|
2861
|
+
if ((typeof this !== "object" || this === null) && typeof this !== "function") return;
|
|
2862
|
+
Object.defineProperty(this, key, { value: next, writable: true, enumerable: true, configurable: true });
|
|
2863
|
+
},
|
|
2864
|
+
},
|
|
2865
|
+
"accessor",
|
|
2866
|
+
);
|
|
2867
|
+
Object.defineProperty(object, key, { get, set, enumerable, configurable: false });
|
|
2868
|
+
add(get);
|
|
2869
|
+
add(set);
|
|
2870
|
+
}
|
|
2871
|
+
|
|
2872
|
+
for (const key of Reflect.ownKeys(globalThis)) {
|
|
2873
|
+
const descriptor = Object.getOwnPropertyDescriptor(globalThis, key);
|
|
2874
|
+
add(descriptor.value);
|
|
2875
|
+
add(descriptor.get);
|
|
2876
|
+
add(descriptor.set);
|
|
2877
|
+
if ("value" in descriptor && descriptor.configurable) {
|
|
2878
|
+
Object.defineProperty(globalThis, key, { writable: false, configurable: false });
|
|
2879
|
+
}
|
|
2880
|
+
}
|
|
2881
|
+
add(Object.getPrototypeOf(function* () {}));
|
|
2882
|
+
add(Object.getPrototypeOf(async function () {}));
|
|
2883
|
+
add(Object.getPrototypeOf(async function* () {}));
|
|
2884
|
+
add(Object.getPrototypeOf(Int8Array));
|
|
2885
|
+
add(Object.getPrototypeOf([][Symbol.iterator]()));
|
|
2886
|
+
add(Object.getPrototypeOf(new Map()[Symbol.iterator]()));
|
|
2887
|
+
add(Object.getPrototypeOf(new Set()[Symbol.iterator]()));
|
|
2888
|
+
add(Object.getPrototypeOf(""[Symbol.iterator]()));
|
|
2889
|
+
add(Object.getPrototypeOf(/a/[Symbol.matchAll]("")));
|
|
2890
|
+
if (typeof Iterator === "function") {
|
|
2891
|
+
if (typeof Iterator.prototype.map === "function") add(Object.getPrototypeOf([].values().map((x) => x)));
|
|
2892
|
+
if (typeof Iterator.from === "function") add(Object.getPrototypeOf(Iterator.from({ next() {} })));
|
|
2893
|
+
}
|
|
2894
|
+
|
|
2895
|
+
while (queue.length > 0) {
|
|
2896
|
+
const object = queue.pop();
|
|
2897
|
+
add(Object.getPrototypeOf(object));
|
|
2898
|
+
const descriptors = Object.getOwnPropertyDescriptors(object);
|
|
2899
|
+
for (const key of Reflect.ownKeys(descriptors)) {
|
|
2900
|
+
const descriptor = descriptors[key];
|
|
2901
|
+
if ("value" in descriptor) {
|
|
2902
|
+
add(descriptor.value);
|
|
2903
|
+
if (
|
|
2904
|
+
descriptor.writable &&
|
|
2905
|
+
descriptor.configurable &&
|
|
2906
|
+
(object === Object.prototype || OVERRIDABLE.has(key))
|
|
2907
|
+
) {
|
|
2908
|
+
allowOverride(object, key, descriptor.value, descriptor.enumerable);
|
|
2909
|
+
}
|
|
2910
|
+
} else {
|
|
2911
|
+
add(descriptor.get);
|
|
2912
|
+
add(descriptor.set);
|
|
2913
|
+
}
|
|
2914
|
+
}
|
|
2915
|
+
Object.freeze(object);
|
|
2916
|
+
}
|
|
2917
|
+
})();
|
|
2828
2918
|
const stringify = JSON.stringify;
|
|
2829
2919
|
const parse = JSON.parse;
|
|
2830
2920
|
const promiseThen = Promise.prototype.then;
|
|
@@ -2869,11 +2959,17 @@ var PRELUDE_SOURCE = `(function (bridge, toolsJson, globalsJson, storeJson) {
|
|
|
2869
2959
|
}
|
|
2870
2960
|
}
|
|
2871
2961
|
|
|
2962
|
+
// The host requires string fields. A script can set an error's name or message to anything, so
|
|
2963
|
+
// they are coerced, and a value whose coercion throws gets a placeholder.
|
|
2872
2964
|
function describeError(error) {
|
|
2873
|
-
|
|
2874
|
-
|
|
2965
|
+
try {
|
|
2966
|
+
if (error instanceof ErrorCtor) {
|
|
2967
|
+
return stringify({ name: String(error.name), message: String(error.message), stack: errorText(error) });
|
|
2968
|
+
}
|
|
2969
|
+
return stringify({ message: String(format(error)) });
|
|
2970
|
+
} catch {
|
|
2971
|
+
return stringify({ message: "The script threw a value that cannot be described" });
|
|
2875
2972
|
}
|
|
2876
|
-
return stringify({ message: format(error) });
|
|
2877
2973
|
}
|
|
2878
2974
|
|
|
2879
2975
|
function caller(kind, name, spread) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-accessors.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI9F,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"agent-session-accessors.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI9F,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CA2J1E"}
|
|
@@ -141,7 +141,12 @@ export function installAgentSessionAccessors(prototype) {
|
|
|
141
141
|
},
|
|
142
142
|
workflows: {
|
|
143
143
|
get() {
|
|
144
|
-
this._workflows ??= new SessionWorkflowsHandle(() => this._extensionRunner?.getWorkflowRunControl())
|
|
144
|
+
this._workflows ??= new SessionWorkflowsHandle(() => this._extensionRunner?.getWorkflowRunControl(), () => {
|
|
145
|
+
const runner = this._extensionRunner;
|
|
146
|
+
if (this._disposed || runner === undefined)
|
|
147
|
+
return undefined;
|
|
148
|
+
return (observer) => runner.observeWorkflowActivity(observer);
|
|
149
|
+
});
|
|
145
150
|
return this._workflows;
|
|
146
151
|
},
|
|
147
152
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-accessors.js","sourceRoot":"","sources":["../../src/core/agent-session-accessors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-session-accessors.js","sourceRoot":"","sources":["../../src/core/agent-session-accessors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { SessionWorkflowsHandle } from \"./extensions/workflow-run-control-hub.js\";\nimport { buildSystemPrompt } from \"./system-prompt.ts\";\n\nexport function installAgentSessionAccessors(prototype: AgentSession): void {\n\tObject.defineProperties(prototype, {\n\t\torchestrationContext: {\n\t\t\tget() {\n\t\t\t\treturn this._orchestrationContext;\n\t\t\t},\n\t\t},\n\t\tmodelRuntime: {\n\t\t\tget() {\n\t\t\t\treturn this._modelRuntime;\n\t\t\t},\n\t\t},\n\t\tstate: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.state;\n\t\t\t},\n\t\t},\n\t\tmodel: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.state.model;\n\t\t\t},\n\t\t},\n\t\tthinkingLevel: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.state.thinkingLevel;\n\t\t\t},\n\t\t},\n\t\tisStreaming: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.state.isStreaming;\n\t\t\t},\n\t\t},\n\t\tsystemPrompt: {\n\t\t\tget() {\n\t\t\t\treturn buildSystemPrompt(this._runSystemPromptOptions ?? this._baseSystemPromptOptions);\n\t\t\t},\n\t\t},\n\t\tretryAttempt: {\n\t\t\tget() {\n\t\t\t\treturn this._retryAttempt;\n\t\t\t},\n\t\t},\n\t\tisCompacting: {\n\t\t\tget() {\n\t\t\t\treturn (\n\t\t\t\t\tthis._autoCompactionAbortController !== undefined ||\n\t\t\t\t\tthis._compactionAbortController !== undefined ||\n\t\t\t\t\tthis._branchSummaryAbortController !== undefined\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tcompactionReason: {\n\t\t\tget() {\n\t\t\t\treturn this._compactionReason;\n\t\t\t},\n\t\t},\n\t\tmessages: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.state.messages;\n\t\t\t},\n\t\t},\n\t\tsteeringMode: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.steeringMode;\n\t\t\t},\n\t\t},\n\t\tfollowUpMode: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.followUpMode;\n\t\t\t},\n\t\t},\n\t\tsessionFile: {\n\t\t\tget() {\n\t\t\t\treturn this.sessionManager.getSessionFile();\n\t\t\t},\n\t\t},\n\t\tsessionId: {\n\t\t\tget() {\n\t\t\t\treturn this.sessionManager.getSessionId();\n\t\t\t},\n\t\t},\n\t\tsessionName: {\n\t\t\tget() {\n\t\t\t\treturn this.sessionManager.getSessionName();\n\t\t\t},\n\t\t},\n\t\tscopedModels: {\n\t\t\tget() {\n\t\t\t\treturn this._scopedModels;\n\t\t\t},\n\t\t},\n\t\tpromptTemplates: {\n\t\t\tget() {\n\t\t\t\treturn this._resourceLoader.getPrompts().prompts;\n\t\t\t},\n\t\t},\n\t\tpendingMessageCount: {\n\t\t\tget() {\n\t\t\t\treturn this._steeringMessages.length + this._followUpMessages.length;\n\t\t\t},\n\t\t},\n\t\tqueuedMessagesPaused: {\n\t\t\tget() {\n\t\t\t\treturn this._queuedMessagesPaused;\n\t\t\t},\n\t\t},\n\t\tresourceLoader: {\n\t\t\tget() {\n\t\t\t\treturn this._resourceLoader;\n\t\t\t},\n\t\t},\n\t\tautoCompactionEnabled: {\n\t\t\tget() {\n\t\t\t\treturn this.settingsManager.getCompactionEnabled();\n\t\t\t},\n\t\t},\n\t\tisRetrying: {\n\t\t\tget() {\n\t\t\t\treturn this._retryPromise !== undefined;\n\t\t\t},\n\t\t},\n\t\tautoRetryEnabled: {\n\t\t\tget() {\n\t\t\t\treturn this.settingsManager.getRetryEnabled();\n\t\t\t},\n\t\t},\n\t\tisBashRunning: {\n\t\t\tget() {\n\t\t\t\treturn this._bashAbortControllers.size > 0;\n\t\t\t},\n\t\t},\n\t\thasPendingBashMessages: {\n\t\t\tget() {\n\t\t\t\treturn this._pendingBashMessages.length > 0;\n\t\t\t},\n\t\t},\n\t\textensionRunner: {\n\t\t\tget() {\n\t\t\t\treturn this._extensionRunner;\n\t\t\t},\n\t\t},\n\t\tworkflows: {\n\t\t\tget() {\n\t\t\t\tthis._workflows ??= new SessionWorkflowsHandle(\n\t\t\t\t\t() => this._extensionRunner?.getWorkflowRunControl(),\n\t\t\t\t\t() => {\n\t\t\t\t\t\tconst runner = this._extensionRunner;\n\t\t\t\t\t\tif (this._disposed || runner === undefined) return undefined;\n\t\t\t\t\t\treturn (observer) => runner.observeWorkflowActivity(observer);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn this._workflows;\n\t\t\t},\n\t\t},\n\t});\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-compaction.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-compaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,2BAA2B,IAAI,YAAY,EAC3C,8BAA8B,EAC9B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAWN,KAAK,4BAA4B,EAEjC,KAAK,wBAAwB,EAG7B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-session-compaction.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-compaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,2BAA2B,IAAI,YAAY,EAC3C,8BAA8B,EAC9B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAWN,KAAK,4BAA4B,EAEjC,KAAK,wBAAwB,EAG7B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAIX,yBAAyB,EACzB,MAAM,uBAAuB,CAAC;AA4D/B,wBAAsB,wBAAwB,CAC7C,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,8BAA8B,GACrC,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAwM/C;AAED,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,CAIf;AA6ED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACtB,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,OAAO,CAAC,4BAA4B,CAAM,GACjD,OAAO,CAAC,wBAAwB,CAAC,CAoDnC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAGxD;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAE3D;AACD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAEnF;AAED,eAAO,MAAM,6BAA6B;;;;;;CAMzC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { formatNoModelSelectedMessage } from "./auth-guidance.js";
|
|
2
2
|
import { getKeptTailTokenEstimate, prepareCompactionBoundary, runVerbatimCompaction, VERBATIM_COMPACTION_PROMPT_VERSION, VERBATIM_COMPACTION_STRATEGY, widenToWholeContextStats, } from "./compaction/index.js";
|
|
3
|
+
import { resolveCompactionModel } from "./compaction/model-resolver.js";
|
|
3
4
|
import { assertSessionOpen as assertCompactionOpen, trackSessionWork } from "./session-lifecycle-work.js";
|
|
4
5
|
import { settingsWriteOwner } from "./settings-write-ownership.js";
|
|
5
6
|
import { createSummarizationRetryCallbacks } from "./summarization-retry.js";
|
|
@@ -146,6 +147,10 @@ export async function _applyVerbatimCompaction(options) {
|
|
|
146
147
|
thinkingLevel: this.thinkingLevel,
|
|
147
148
|
urgency: options.urgency,
|
|
148
149
|
fallback,
|
|
150
|
+
resolveMorphApiKey: async () => (await this._modelRuntime.getAuth("morph", { signal: options.abortController.signal }))?.auth.apiKey,
|
|
151
|
+
classify: (classifierModel, context, classifierOptions) => this._modelRuntime.classify(classifierModel, context, classifierOptions),
|
|
152
|
+
compactionModel: resolveCompactionModel(this.settingsManager.getCompactionModel(), model, this._modelRuntime.getAllModels()),
|
|
153
|
+
summaryEntries: pathEntries,
|
|
149
154
|
});
|
|
150
155
|
compacted = {
|
|
151
156
|
text: run.text,
|
|
@@ -154,13 +159,19 @@ export async function _applyVerbatimCompaction(options) {
|
|
|
154
159
|
...(run.plannerModel ? { plannerModel: run.plannerModel } : {}),
|
|
155
160
|
...(run.usage ? { usage: run.usage } : {}),
|
|
156
161
|
keptTail: run.keptTail,
|
|
162
|
+
...(run.backend ? { backend: run.backend } : {}),
|
|
163
|
+
...(run.model ? { model: run.model } : {}),
|
|
164
|
+
...(run.summary ? { summary: run.summary } : {}),
|
|
165
|
+
...(run.summaryFirstKeptEntryId ? { summaryFirstKeptEntryId: run.summaryFirstKeptEntryId } : {}),
|
|
166
|
+
...(run.summaryTokensBefore !== undefined ? { summaryTokensBefore: run.summaryTokensBefore } : {}),
|
|
157
167
|
};
|
|
158
168
|
}
|
|
159
169
|
assertCompactionOpen(this);
|
|
160
170
|
if (options.abortController.signal.aborted)
|
|
161
171
|
throw new Error("Compaction cancelled");
|
|
162
172
|
// A fresh rung that had to drop the protected tail persists no tail boundary.
|
|
163
|
-
const firstKeptEntryId = compacted.keptTail ? preparation.firstKeptEntryId : null;
|
|
173
|
+
const firstKeptEntryId = compacted.summaryFirstKeptEntryId ?? (compacted.keptTail ? preparation.firstKeptEntryId : null);
|
|
174
|
+
const tokensBefore = compacted.summaryTokensBefore ?? preparation.tokensBefore;
|
|
164
175
|
const backupPath = this.sessionManager.writeBackupSnapshot(options.backupLabel);
|
|
165
176
|
const details = {
|
|
166
177
|
strategy: VERBATIM_COMPACTION_STRATEGY,
|
|
@@ -169,19 +180,25 @@ export async function _applyVerbatimCompaction(options) {
|
|
|
169
180
|
stats: compacted.stats,
|
|
170
181
|
rung: compacted.rung,
|
|
171
182
|
...(compacted.plannerModel ? { plannerModel: compacted.plannerModel } : {}),
|
|
183
|
+
...(compacted.backend ? { backend: compacted.backend } : {}),
|
|
184
|
+
...(compacted.model ? { model: compacted.model } : {}),
|
|
185
|
+
...(compacted.summary ? { summary: compacted.summary } : {}),
|
|
172
186
|
...(backupPath ? { backupPath } : {}),
|
|
173
187
|
};
|
|
174
|
-
const entryId = this.sessionManager.appendCompaction(compacted.text, firstKeptEntryId,
|
|
188
|
+
const entryId = this.sessionManager.appendCompaction(compacted.text, firstKeptEntryId, tokensBefore, details, compacted.usage);
|
|
175
189
|
this._refreshFinalizedContext();
|
|
176
190
|
const result = {
|
|
177
191
|
compactedText: compacted.text,
|
|
178
192
|
firstKeptEntryId,
|
|
179
|
-
tokensBefore
|
|
193
|
+
tokensBefore,
|
|
180
194
|
stats: compacted.stats,
|
|
181
195
|
parameters: preparation.parameters,
|
|
182
196
|
promptVersion: VERBATIM_COMPACTION_PROMPT_VERSION,
|
|
183
197
|
rung: compacted.rung,
|
|
184
198
|
...(compacted.plannerModel ? { plannerModel: compacted.plannerModel } : {}),
|
|
199
|
+
...(compacted.backend ? { backend: compacted.backend } : {}),
|
|
200
|
+
...(compacted.model ? { model: compacted.model } : {}),
|
|
201
|
+
...(compacted.summary ? { summary: compacted.summary } : {}),
|
|
185
202
|
...(compacted.usage ? { usage: compacted.usage } : {}),
|
|
186
203
|
...(backupPath ? { backupPath } : {}),
|
|
187
204
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-compaction.js","sourceRoot":"","sources":["../../src/core/agent-session-compaction.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Usage } from \"@bastani/pi-ai/compat\";\nimport type {\n\tAgentSessionInternalSurface as AgentSession,\n\tVerbatimCompactionApplyOptions,\n} from \"./agent-session-methods.ts\";\nimport { formatNoModelSelectedMessage } from \"./auth-guidance.ts\";\nimport {\n\ttype CompactionPlannerModel,\n\ttype CompactionPlanOptions,\n\ttype CompactionRung,\n\ttype FallbackPlannerContext,\n\tgetKeptTailTokenEstimate,\n\tprepareCompactionBoundary,\n\trunVerbatimCompaction,\n\tVERBATIM_COMPACTION_PROMPT_VERSION,\n\tVERBATIM_COMPACTION_STRATEGY,\n\ttype VerbatimCompactionDetails,\n\ttype VerbatimCompactionParameters,\n\ttype VerbatimCompactionPreparation,\n\ttype VerbatimCompactionResult,\n\ttype VerbatimCompactionStats,\n\twidenToWholeContextStats,\n} from \"./compaction/index.ts\";\nimport type {\n\tSessionBeforeCompactEvent,\n\tSessionBeforeCompactResult,\n\tSessionCompactEvent,\n\tSessionCompactFailedEvent,\n} from \"./extensions/index.js\";\nimport { assertSessionOpen as assertCompactionOpen, trackSessionWork } from \"./session-lifecycle-work.ts\";\nimport type { CompactionEntry } from \"./session-manager.ts\";\nimport { settingsWriteOwner } from \"./settings-write-ownership.ts\";\nimport { createSummarizationRetryCallbacks } from \"./summarization-retry.ts\";\n\nfunction frozenCollectionMutation(): never {\n\tthrow new TypeError(\"Cannot mutate frozen compaction preparation\");\n}\n\nfunction deepFreeze<T>(value: T): T {\n\tif (!value || typeof value !== \"object\" || Object.isFrozen(value)) return value;\n\tif (value instanceof Map) {\n\t\tfor (const [key, nested] of value) {\n\t\t\tdeepFreeze(key);\n\t\t\tdeepFreeze(nested);\n\t\t}\n\t\tObject.defineProperties(value, {\n\t\t\tset: { value: frozenCollectionMutation },\n\t\t\tdelete: { value: frozenCollectionMutation },\n\t\t\tclear: { value: frozenCollectionMutation },\n\t\t});\n\t} else if (value instanceof Set) {\n\t\tfor (const nested of value) deepFreeze(nested);\n\t\tObject.defineProperties(value, {\n\t\t\tadd: { value: frozenCollectionMutation },\n\t\t\tdelete: { value: frozenCollectionMutation },\n\t\t\tclear: { value: frozenCollectionMutation },\n\t\t});\n\t} else {\n\t\tfor (const nested of Object.values(value)) deepFreeze(nested);\n\t}\n\treturn Object.freeze(value);\n}\n\nfunction extensionStats(preparation: VerbatimCompactionPreparation, compactedText: string): VerbatimCompactionStats {\n\tconst linesBefore = preparation.region.lines.length;\n\tconst linesKept = compactedText.split(\"\\n\").length;\n\t// Region-only view first — what the extension's replacement text now costs\n\t// inside the region — then widen it to the whole context with the\n\t// independently estimated kept tail (symmetric, present on both sides when\n\t// kept). The authoritative `preparation.tokensBefore` is never mixed into\n\t// this comparison (#2052).\n\tconst tokensBefore = preparation.region.tokenEstimate;\n\tconst tokensAfter = Math.ceil(compactedText.length / 4);\n\treturn widenToWholeContextStats(\n\t\t{\n\t\t\tlinesBefore,\n\t\t\tlinesDeleted: Math.max(0, linesBefore - linesKept),\n\t\t\tlinesKept,\n\t\t\trangeCount: 0,\n\t\t\ttokensBefore,\n\t\t\ttokensAfter,\n\t\t\tpercentReduction: tokensBefore === 0 ? 0 : Math.round((1 - tokensAfter / tokensBefore) * 1000) / 10,\n\t\t},\n\t\tgetKeptTailTokenEstimate(preparation),\n\t\ttrue,\n\t);\n}\n\nexport async function _applyVerbatimCompaction(\n\tthis: AgentSession,\n\toptions: VerbatimCompactionApplyOptions,\n): Promise<VerbatimCompactionResult | undefined> {\n\tassertCompactionOpen(this);\n\tif (!this.model) throw new Error(formatNoModelSelectedMessage());\n\toptions.abortController.signal.throwIfAborted();\n\tconst model = this.model;\n\tconst pathEntries = this.sessionManager.getBranch();\n\tconst settings = this.settingsManager.getCompactionSettings(model);\n\t// A sub-minimum region is admitted only when the caller already knows the\n\t// context does not fit: overflow recovery, or a post-tool preflight over the\n\t// provider hard input limit. A threshold crossing that still fits must not\n\t// clear context — its follow-up request can be sent as-is. `load_bearing`\n\t// alone does not mean \"must destroy context\".\n\tconst allowSmallRegion = options.urgency === \"load_bearing\" && options.allowSmallRegion === true;\n\tconst preparation = prepareCompactionBoundary(\n\t\tpathEntries,\n\t\tsettings,\n\t\t{\n\t\t\t...(options.compression_ratio === undefined ? {} : { compression_ratio: options.compression_ratio }),\n\t\t\t...(options.preserve_recent === undefined ? {} : { preserve_recent: options.preserve_recent }),\n\t\t\t...(options.query === undefined ? {} : { query: options.query }),\n\t\t},\n\t\t{ allowSmallRegion },\n\t);\n\tif (!preparation) {\n\t\t// Mid-turn threshold preflight needs the load-bearing planner fallback if\n\t\t// a region exists, but a context that still fits is safe to send unchanged.\n\t\t// True overflow and a hard-limit preflight have no such escape hatch.\n\t\tconst mustFreeContext = options.urgency === \"load_bearing\" && (options.reason === \"overflow\" || allowSmallRegion);\n\t\tif (mustFreeContext) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Context compaction found no compactable transcript entries; nothing more was safely deletable\",\n\t\t\t);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tconst plan: CompactionPlanOptions = {\n\t\tstreamFn: this.agent.streamFunction,\n\t\tsessionFilePath: this.sessionManager.getSessionFile(),\n\t\tretry: this.settingsManager.getRetrySettings(),\n\t\tcallbacks: createSummarizationRetryCallbacks(this, { source: \"compaction\", reason: options.reason }),\n\t};\n\tlet fromExtension = false;\n\tlet compacted:\n\t\t| {\n\t\t\t\ttext: string;\n\t\t\t\tstats: VerbatimCompactionStats;\n\t\t\t\trung: CompactionRung;\n\t\t\t\tplannerModel?: CompactionPlannerModel;\n\t\t\t\tkeptTail: boolean;\n\t\t\t\tusage?: Usage;\n\t\t }\n\t\t| undefined;\n\n\tif (this._extensionRunner.hasHandlers(\"session_before_compact\")) {\n\t\tlet snapshot: VerbatimCompactionPreparation;\n\t\ttry {\n\t\t\tsnapshot = deepFreeze(structuredClone(preparation));\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to snapshot transcript for compaction extensions: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tconst hookResult = (await this._extensionRunner.emit({\n\t\t\ttype: \"session_before_compact\",\n\t\t\treason: options.reason,\n\t\t\tparameters: preparation.parameters,\n\t\t\tpreparation: snapshot,\n\t\t\tbranchEntries: pathEntries,\n\t\t\tsignal: options.abortController.signal,\n\t\t} satisfies SessionBeforeCompactEvent)) as SessionBeforeCompactResult | undefined;\n\t\tassertCompactionOpen(this);\n\t\tif (options.abortController.signal.aborted) throw new Error(\"Compaction cancelled\");\n\t\tif (hookResult?.cancel) {\n\t\t\toptions.abortController.abort();\n\t\t\tthrow new Error(\"Compaction cancelled\");\n\t\t}\n\t\tif (hookResult?.compactedText !== undefined) {\n\t\t\tif (hookResult.compactedText.trim().length === 0) throw new Error(\"No compacted text provided by extension\");\n\t\t\tcompacted = {\n\t\t\t\ttext: hookResult.compactedText,\n\t\t\t\tstats: extensionStats(preparation, hookResult.compactedText),\n\t\t\t\trung: \"extension\",\n\t\t\t\tkeptTail: true,\n\t\t\t};\n\t\t\tfromExtension = true;\n\t\t\toptions.onCompactionSource?.(true);\n\t\t}\n\t}\n\n\tif (!compacted) {\n\t\t// Borrowing walks the session's *effective* fallback list, which SDK\n\t\t// options may override, and resolves credentials per candidate. It never\n\t\t// touches session model state or the main chat's attempted-key set.\n\t\tconst fallback: FallbackPlannerContext = {\n\t\t\tfallbackModels: this._fallbackModels,\n\t\t\tregistry: this._modelRuntime,\n\t\t\tpreferredProvider: model.provider,\n\t\t\tsessionThinkingLevel: this.thinkingLevel,\n\t\t\tisFallbackModelAllowed: this._isFallbackModelAllowed,\n\t\t};\n\t\tconst run = await runVerbatimCompaction(preparation, model, {\n\t\t\t...plan,\n\t\t\tresolveAuth: options.resolvePlannerAuth,\n\t\t\tsignal: options.abortController.signal,\n\t\t\tthinkingLevel: this.thinkingLevel,\n\t\t\turgency: options.urgency,\n\t\t\tfallback,\n\t\t});\n\t\tcompacted = {\n\t\t\ttext: run.text,\n\t\t\tstats: run.stats,\n\t\t\trung: run.rung,\n\t\t\t...(run.plannerModel ? { plannerModel: run.plannerModel } : {}),\n\t\t\t...(run.usage ? { usage: run.usage } : {}),\n\t\t\tkeptTail: run.keptTail,\n\t\t};\n\t}\n\tassertCompactionOpen(this);\n\tif (options.abortController.signal.aborted) throw new Error(\"Compaction cancelled\");\n\n\t// A fresh rung that had to drop the protected tail persists no tail boundary.\n\tconst firstKeptEntryId = compacted.keptTail ? preparation.firstKeptEntryId : null;\n\tconst backupPath = this.sessionManager.writeBackupSnapshot(options.backupLabel);\n\tconst details: VerbatimCompactionDetails = {\n\t\tstrategy: VERBATIM_COMPACTION_STRATEGY,\n\t\tpromptVersion: VERBATIM_COMPACTION_PROMPT_VERSION,\n\t\tparameters: preparation.parameters,\n\t\tstats: compacted.stats,\n\t\trung: compacted.rung,\n\t\t...(compacted.plannerModel ? { plannerModel: compacted.plannerModel } : {}),\n\t\t...(backupPath ? { backupPath } : {}),\n\t};\n\tconst entryId = this.sessionManager.appendCompaction(\n\t\tcompacted.text,\n\t\tfirstKeptEntryId,\n\t\tpreparation.tokensBefore,\n\t\tdetails,\n\t\tcompacted.usage,\n\t);\n\tthis._refreshFinalizedContext();\n\tconst result: VerbatimCompactionResult = {\n\t\tcompactedText: compacted.text,\n\t\tfirstKeptEntryId,\n\t\ttokensBefore: preparation.tokensBefore,\n\t\tstats: compacted.stats,\n\t\tparameters: preparation.parameters,\n\t\tpromptVersion: VERBATIM_COMPACTION_PROMPT_VERSION,\n\t\trung: compacted.rung,\n\t\t...(compacted.plannerModel ? { plannerModel: compacted.plannerModel } : {}),\n\t\t...(compacted.usage ? { usage: compacted.usage } : {}),\n\t\t...(backupPath ? { backupPath } : {}),\n\t};\n\tconst compactionEntry = this.sessionManager.getEntry(entryId) as CompactionEntry<VerbatimCompactionDetails>;\n\ttry {\n\t\tawait this._extensionRunner.emit({\n\t\t\ttype: \"session_compact\",\n\t\t\treason: options.reason,\n\t\t\tparameters: preparation.parameters,\n\t\t\tresult,\n\t\t\tcompactionEntry,\n\t\t\tfromExtension,\n\t\t} satisfies SessionCompactEvent);\n\t} catch (error) {\n\t\tthis._extensionRunner.emitError({\n\t\t\textensionPath: \"<session_compact>\",\n\t\t\tevent: \"session_compact\",\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\tstack: error instanceof Error ? error.stack : undefined,\n\t\t});\n\t}\n\treturn result;\n}\n\nexport async function emitSessionCompactFailed(\n\tsession: AgentSession,\n\tevent: Omit<SessionCompactFailedEvent, \"type\">,\n): Promise<void> {\n\tif (session._extensionRunner?.hasHandlers(\"session_compact_failed\")) {\n\t\tawait session._extensionRunner.emit({ type: \"session_compact_failed\", ...event });\n\t}\n}\n\nfunction clearOwnedManualCompactionState(this: AgentSession, controller: AbortController): void {\n\tif (this._compactionAbortController !== controller) return;\n\tthis._compactionAbortController = undefined;\n\tif (this._compactionReason === \"manual\") this._compactionReason = undefined;\n\t// Lifecycle listeners run synchronously. Once the manual end event is\n\t// emitted, a new /compact must own a new run rather than join the settled one.\n\tthis._manualCompactionPromise = undefined;\n}\n\nasync function emitManualCompactionFailure(\n\tthis: AgentSession,\n\tcontroller: AbortController,\n\terror: unknown,\n\tfromExtension: boolean,\n): Promise<void> {\n\tconst message = error instanceof Error ? error.message : String(error);\n\tconst aborted = controller.signal.aborted;\n\tconst errorMessage = aborted ? undefined : `Compaction failed: ${message}`;\n\tclearOwnedManualCompactionState.call(this, controller);\n\tthis._emit({\n\t\ttype: \"compaction_end\",\n\t\treason: \"manual\",\n\t\tresult: undefined,\n\t\taborted,\n\t\twillRetry: false,\n\t\terrorMessage,\n\t});\n\tawait emitSessionCompactFailed(this, {\n\t\treason: \"manual\",\n\t\terrorMessage,\n\t\taborted,\n\t\twillRetry: false,\n\t\tfromExtension,\n\t});\n}\n\nasync function runOwnedManualCompaction(\n\tthis: AgentSession,\n\tcontroller: AbortController,\n\toptions: Partial<VerbatimCompactionParameters>,\n): Promise<VerbatimCompactionResult> {\n\tthis._emit({ type: \"compaction_start\", reason: \"manual\" });\n\tlet fromExtension = false;\n\ttry {\n\t\tcontroller.signal.throwIfAborted();\n\t\tif (!this.model) throw new Error(formatNoModelSelectedMessage());\n\t\tconst result = await this._applyVerbatimCompaction({\n\t\t\t// Caller parameters are projected explicitly, so no extra runtime\n\t\t\t// property survives. A widened or cast object could otherwise carry\n\t\t\t// `urgency: \"load_bearing\"` through a public `session.compact()` call and\n\t\t\t// reach the context-destroying rung, which manual compaction must never do.\n\t\t\t...(options.compression_ratio === undefined ? {} : { compression_ratio: options.compression_ratio }),\n\t\t\t...(options.preserve_recent === undefined ? {} : { preserve_recent: options.preserve_recent }),\n\t\t\t...(options.query === undefined ? {} : { query: options.query }),\n\t\t\tresolvePlannerAuth: (candidate) => this._getRequiredRequestAuth(candidate, controller.signal),\n\t\t\tabortController: controller,\n\t\t\tbackupLabel: \"compact\",\n\t\t\treason: \"manual\",\n\t\t\turgency: \"recoverable\",\n\t\t\tonCompactionSource: (value) => {\n\t\t\t\tfromExtension = value;\n\t\t\t},\n\t\t});\n\t\tif (!result) throw new Error(\"Nothing to compact (session too small)\");\n\t\t// compaction_end listeners synchronously flush queued prompts, so they must\n\t\t// observe an idle session before dispatching the next user turn.\n\t\tclearOwnedManualCompactionState.call(this, controller);\n\t\tthis._emit({ type: \"compaction_end\", reason: \"manual\", result, aborted: false, willRetry: false });\n\t\treturn result;\n\t} catch (error) {\n\t\tawait emitManualCompactionFailure.call(this, controller, error, fromExtension);\n\t\tthrow error;\n\t}\n}\n\n/**\n * Persist one verbatim line-subset compaction boundary.\n *\n * Re-entrancy safe: a call made while a manual compaction is still in flight\n * joins that run instead of starting a second one. Manual compaction aborts an\n * active agent run before it starts, while agent event delivery remains live so\n * a pending threshold check cannot race the requested manual boundary.\n */\nexport function compact(\n\tthis: AgentSession,\n\toptions: Partial<VerbatimCompactionParameters> = {},\n): Promise<VerbatimCompactionResult> {\n\ttry {\n\t\tassertCompactionOpen(this);\n\t} catch (error) {\n\t\treturn Promise.reject(error);\n\t}\n\tconst inFlight = this._manualCompactionPromise;\n\tif (inFlight) return inFlight;\n\n\t// A manual boundary replaces the automatic turn that scheduled any pending\n\t// retry. Invalidate its timer before this run claims compaction ownership.\n\tthis._postCompactionContinuationToken += 1;\n\tthis._pendingPostCompactionContinuation = undefined;\n\n\tconst automaticCompletion = this._autoCompactionCompletion;\n\t// The manual request wins. Abort the active automatic planner now, before the\n\t// next microtask can admit a post-tool or threshold boundary, then wait for\n\t// its owner to settle before mutating the transcript ourselves. Start the\n\t// session abort before publishing this new manual owner so abort() cancels\n\t// prior work rather than cancelling or waiting on the compaction being started.\n\tthis._autoCompactionAbortController?.abort();\n\tconst abortBoundary = this.abort();\n\n\tconst controller = new AbortController();\n\tthis._compactionAbortController = controller;\n\tthis._compactionReason = \"manual\";\n\t// Handle rejection now so a failing event drain cannot become unhandled\n\t// while an automatic run finishes.\n\tvoid abortBoundary.catch(() => {});\n\tlet flight!: Promise<VerbatimCompactionResult>;\n\t// Start the owned run in a microtask so both single-flight fields are\n\t// published before any joiner can observe a partially claimed compaction.\n\tflight = trackSessionWork(this, () =>\n\t\tPromise.resolve().then(async () => {\n\t\t\ttry {\n\t\t\t\tif (automaticCompletion !== undefined) await automaticCompletion;\n\t\t\t\tawait abortBoundary;\n\t\t\t} catch (error) {\n\t\t\t\t// The abort drain can fail before the planner starts. Finish the\n\t\t\t\t// manual lifecycle so event consumers can release queued input.\n\t\t\t\tawait emitManualCompactionFailure.call(this, controller, error, false);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tassertCompactionOpen(this);\n\t\t\treturn runOwnedManualCompaction.call(this, controller, options);\n\t\t}),\n\t).finally(() => {\n\t\tclearOwnedManualCompactionState.call(this, controller);\n\t\tif (this._manualCompactionPromise === flight) this._manualCompactionPromise = undefined;\n\t});\n\tthis._manualCompactionPromise = flight;\n\treturn flight;\n}\n\nexport function abortCompaction(this: AgentSession): void {\n\tthis._compactionAbortController?.abort();\n\tthis._autoCompactionAbortController?.abort();\n}\nexport function abortBranchSummary(this: AgentSession): void {\n\tthis._branchSummaryAbortController?.abort();\n}\nexport function setAutoCompactionEnabled(this: AgentSession, enabled: boolean): void {\n\tsettingsWriteOwner.run(this, () => this.settingsManager.setCompactionEnabled(enabled));\n}\n\nexport const agentSessionCompactionMethods = {\n\t_applyVerbatimCompaction,\n\tcompact,\n\tabortCompaction,\n\tabortBranchSummary,\n\tsetAutoCompactionEnabled,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-compaction.js","sourceRoot":"","sources":["../../src/core/agent-session-compaction.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Usage } from \"@bastani/pi-ai/compat\";\nimport type {\n\tAgentSessionInternalSurface as AgentSession,\n\tVerbatimCompactionApplyOptions,\n} from \"./agent-session-methods.ts\";\nimport { formatNoModelSelectedMessage } from \"./auth-guidance.ts\";\nimport {\n\ttype CompactionPlannerModel,\n\ttype CompactionPlanOptions,\n\ttype CompactionRung,\n\ttype FallbackPlannerContext,\n\tgetKeptTailTokenEstimate,\n\tprepareCompactionBoundary,\n\trunVerbatimCompaction,\n\tVERBATIM_COMPACTION_PROMPT_VERSION,\n\tVERBATIM_COMPACTION_STRATEGY,\n\ttype VerbatimCompactionDetails,\n\ttype VerbatimCompactionParameters,\n\ttype VerbatimCompactionPreparation,\n\ttype VerbatimCompactionResult,\n\ttype VerbatimCompactionStats,\n\twidenToWholeContextStats,\n} from \"./compaction/index.ts\";\nimport { resolveCompactionModel } from \"./compaction/model-resolver.js\";\nimport type {\n\tSessionBeforeCompactEvent,\n\tSessionBeforeCompactResult,\n\tSessionCompactEvent,\n\tSessionCompactFailedEvent,\n} from \"./extensions/index.js\";\nimport { assertSessionOpen as assertCompactionOpen, trackSessionWork } from \"./session-lifecycle-work.ts\";\nimport type { CompactionEntry } from \"./session-manager.ts\";\nimport { settingsWriteOwner } from \"./settings-write-ownership.ts\";\nimport { createSummarizationRetryCallbacks } from \"./summarization-retry.ts\";\n\nfunction frozenCollectionMutation(): never {\n\tthrow new TypeError(\"Cannot mutate frozen compaction preparation\");\n}\n\nfunction deepFreeze<T>(value: T): T {\n\tif (!value || typeof value !== \"object\" || Object.isFrozen(value)) return value;\n\tif (value instanceof Map) {\n\t\tfor (const [key, nested] of value) {\n\t\t\tdeepFreeze(key);\n\t\t\tdeepFreeze(nested);\n\t\t}\n\t\tObject.defineProperties(value, {\n\t\t\tset: { value: frozenCollectionMutation },\n\t\t\tdelete: { value: frozenCollectionMutation },\n\t\t\tclear: { value: frozenCollectionMutation },\n\t\t});\n\t} else if (value instanceof Set) {\n\t\tfor (const nested of value) deepFreeze(nested);\n\t\tObject.defineProperties(value, {\n\t\t\tadd: { value: frozenCollectionMutation },\n\t\t\tdelete: { value: frozenCollectionMutation },\n\t\t\tclear: { value: frozenCollectionMutation },\n\t\t});\n\t} else {\n\t\tfor (const nested of Object.values(value)) deepFreeze(nested);\n\t}\n\treturn Object.freeze(value);\n}\n\nfunction extensionStats(preparation: VerbatimCompactionPreparation, compactedText: string): VerbatimCompactionStats {\n\tconst linesBefore = preparation.region.lines.length;\n\tconst linesKept = compactedText.split(\"\\n\").length;\n\t// Region-only view first — what the extension's replacement text now costs\n\t// inside the region — then widen it to the whole context with the\n\t// independently estimated kept tail (symmetric, present on both sides when\n\t// kept). The authoritative `preparation.tokensBefore` is never mixed into\n\t// this comparison (#2052).\n\tconst tokensBefore = preparation.region.tokenEstimate;\n\tconst tokensAfter = Math.ceil(compactedText.length / 4);\n\treturn widenToWholeContextStats(\n\t\t{\n\t\t\tlinesBefore,\n\t\t\tlinesDeleted: Math.max(0, linesBefore - linesKept),\n\t\t\tlinesKept,\n\t\t\trangeCount: 0,\n\t\t\ttokensBefore,\n\t\t\ttokensAfter,\n\t\t\tpercentReduction: tokensBefore === 0 ? 0 : Math.round((1 - tokensAfter / tokensBefore) * 1000) / 10,\n\t\t},\n\t\tgetKeptTailTokenEstimate(preparation),\n\t\ttrue,\n\t);\n}\n\nexport async function _applyVerbatimCompaction(\n\tthis: AgentSession,\n\toptions: VerbatimCompactionApplyOptions,\n): Promise<VerbatimCompactionResult | undefined> {\n\tassertCompactionOpen(this);\n\tif (!this.model) throw new Error(formatNoModelSelectedMessage());\n\toptions.abortController.signal.throwIfAborted();\n\tconst model = this.model;\n\tconst pathEntries = this.sessionManager.getBranch();\n\tconst settings = this.settingsManager.getCompactionSettings(model);\n\t// A sub-minimum region is admitted only when the caller already knows the\n\t// context does not fit: overflow recovery, or a post-tool preflight over the\n\t// provider hard input limit. A threshold crossing that still fits must not\n\t// clear context — its follow-up request can be sent as-is. `load_bearing`\n\t// alone does not mean \"must destroy context\".\n\tconst allowSmallRegion = options.urgency === \"load_bearing\" && options.allowSmallRegion === true;\n\tconst preparation = prepareCompactionBoundary(\n\t\tpathEntries,\n\t\tsettings,\n\t\t{\n\t\t\t...(options.compression_ratio === undefined ? {} : { compression_ratio: options.compression_ratio }),\n\t\t\t...(options.preserve_recent === undefined ? {} : { preserve_recent: options.preserve_recent }),\n\t\t\t...(options.query === undefined ? {} : { query: options.query }),\n\t\t},\n\t\t{ allowSmallRegion },\n\t);\n\tif (!preparation) {\n\t\t// Mid-turn threshold preflight needs the load-bearing planner fallback if\n\t\t// a region exists, but a context that still fits is safe to send unchanged.\n\t\t// True overflow and a hard-limit preflight have no such escape hatch.\n\t\tconst mustFreeContext = options.urgency === \"load_bearing\" && (options.reason === \"overflow\" || allowSmallRegion);\n\t\tif (mustFreeContext) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Context compaction found no compactable transcript entries; nothing more was safely deletable\",\n\t\t\t);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tconst plan: CompactionPlanOptions = {\n\t\tstreamFn: this.agent.streamFunction,\n\t\tsessionFilePath: this.sessionManager.getSessionFile(),\n\t\tretry: this.settingsManager.getRetrySettings(),\n\t\tcallbacks: createSummarizationRetryCallbacks(this, { source: \"compaction\", reason: options.reason }),\n\t};\n\tlet fromExtension = false;\n\tlet compacted:\n\t\t| {\n\t\t\t\ttext: string;\n\t\t\t\tstats: VerbatimCompactionStats;\n\t\t\t\trung: CompactionRung;\n\t\t\t\tplannerModel?: CompactionPlannerModel;\n\t\t\t\tkeptTail: boolean;\n\t\t\t\tusage?: Usage;\n\t\t\t\tbackend?: \"planner\" | \"classifier\" | \"morph\" | \"summary\";\n\t\t\t\tmodel?: string;\n\t\t\t\tsummary?: { readFiles: string[]; modifiedFiles: string[] };\n\t\t\t\tsummaryFirstKeptEntryId?: string;\n\t\t\t\tsummaryTokensBefore?: number;\n\t\t }\n\t\t| undefined;\n\n\tif (this._extensionRunner.hasHandlers(\"session_before_compact\")) {\n\t\tlet snapshot: VerbatimCompactionPreparation;\n\t\ttry {\n\t\t\tsnapshot = deepFreeze(structuredClone(preparation));\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to snapshot transcript for compaction extensions: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tconst hookResult = (await this._extensionRunner.emit({\n\t\t\ttype: \"session_before_compact\",\n\t\t\treason: options.reason,\n\t\t\tparameters: preparation.parameters,\n\t\t\tpreparation: snapshot,\n\t\t\tbranchEntries: pathEntries,\n\t\t\tsignal: options.abortController.signal,\n\t\t} satisfies SessionBeforeCompactEvent)) as SessionBeforeCompactResult | undefined;\n\t\tassertCompactionOpen(this);\n\t\tif (options.abortController.signal.aborted) throw new Error(\"Compaction cancelled\");\n\t\tif (hookResult?.cancel) {\n\t\t\toptions.abortController.abort();\n\t\t\tthrow new Error(\"Compaction cancelled\");\n\t\t}\n\t\tif (hookResult?.compactedText !== undefined) {\n\t\t\tif (hookResult.compactedText.trim().length === 0) throw new Error(\"No compacted text provided by extension\");\n\t\t\tcompacted = {\n\t\t\t\ttext: hookResult.compactedText,\n\t\t\t\tstats: extensionStats(preparation, hookResult.compactedText),\n\t\t\t\trung: \"extension\",\n\t\t\t\tkeptTail: true,\n\t\t\t};\n\t\t\tfromExtension = true;\n\t\t\toptions.onCompactionSource?.(true);\n\t\t}\n\t}\n\n\tif (!compacted) {\n\t\t// Borrowing walks the session's *effective* fallback list, which SDK\n\t\t// options may override, and resolves credentials per candidate. It never\n\t\t// touches session model state or the main chat's attempted-key set.\n\t\tconst fallback: FallbackPlannerContext = {\n\t\t\tfallbackModels: this._fallbackModels,\n\t\t\tregistry: this._modelRuntime,\n\t\t\tpreferredProvider: model.provider,\n\t\t\tsessionThinkingLevel: this.thinkingLevel,\n\t\t\tisFallbackModelAllowed: this._isFallbackModelAllowed,\n\t\t};\n\t\tconst run = await runVerbatimCompaction(preparation, model, {\n\t\t\t...plan,\n\t\t\tresolveAuth: options.resolvePlannerAuth,\n\t\t\tsignal: options.abortController.signal,\n\t\t\tthinkingLevel: this.thinkingLevel,\n\t\t\turgency: options.urgency,\n\t\t\tfallback,\n\t\t\tresolveMorphApiKey: async () =>\n\t\t\t\t(await this._modelRuntime.getAuth(\"morph\", { signal: options.abortController.signal }))?.auth.apiKey,\n\t\t\tclassify: (classifierModel, context, classifierOptions) =>\n\t\t\t\tthis._modelRuntime.classify(classifierModel, context, classifierOptions),\n\t\t\tcompactionModel: resolveCompactionModel(\n\t\t\t\tthis.settingsManager.getCompactionModel(),\n\t\t\t\tmodel,\n\t\t\t\tthis._modelRuntime.getAllModels(),\n\t\t\t),\n\t\t\tsummaryEntries: pathEntries,\n\t\t});\n\t\tcompacted = {\n\t\t\ttext: run.text,\n\t\t\tstats: run.stats,\n\t\t\trung: run.rung,\n\t\t\t...(run.plannerModel ? { plannerModel: run.plannerModel } : {}),\n\t\t\t...(run.usage ? { usage: run.usage } : {}),\n\t\t\tkeptTail: run.keptTail,\n\t\t\t...(run.backend ? { backend: run.backend } : {}),\n\t\t\t...(run.model ? { model: run.model } : {}),\n\t\t\t...(run.summary ? { summary: run.summary } : {}),\n\t\t\t...(run.summaryFirstKeptEntryId ? { summaryFirstKeptEntryId: run.summaryFirstKeptEntryId } : {}),\n\t\t\t...(run.summaryTokensBefore !== undefined ? { summaryTokensBefore: run.summaryTokensBefore } : {}),\n\t\t};\n\t}\n\tassertCompactionOpen(this);\n\tif (options.abortController.signal.aborted) throw new Error(\"Compaction cancelled\");\n\n\t// A fresh rung that had to drop the protected tail persists no tail boundary.\n\tconst firstKeptEntryId =\n\t\tcompacted.summaryFirstKeptEntryId ?? (compacted.keptTail ? preparation.firstKeptEntryId : null);\n\tconst tokensBefore = compacted.summaryTokensBefore ?? preparation.tokensBefore;\n\tconst backupPath = this.sessionManager.writeBackupSnapshot(options.backupLabel);\n\tconst details: VerbatimCompactionDetails = {\n\t\tstrategy: VERBATIM_COMPACTION_STRATEGY,\n\t\tpromptVersion: VERBATIM_COMPACTION_PROMPT_VERSION,\n\t\tparameters: preparation.parameters,\n\t\tstats: compacted.stats,\n\t\trung: compacted.rung,\n\t\t...(compacted.plannerModel ? { plannerModel: compacted.plannerModel } : {}),\n\t\t...(compacted.backend ? { backend: compacted.backend } : {}),\n\t\t...(compacted.model ? { model: compacted.model } : {}),\n\t\t...(compacted.summary ? { summary: compacted.summary } : {}),\n\t\t...(backupPath ? { backupPath } : {}),\n\t};\n\tconst entryId = this.sessionManager.appendCompaction(\n\t\tcompacted.text,\n\t\tfirstKeptEntryId,\n\t\ttokensBefore,\n\t\tdetails,\n\t\tcompacted.usage,\n\t);\n\tthis._refreshFinalizedContext();\n\tconst result: VerbatimCompactionResult = {\n\t\tcompactedText: compacted.text,\n\t\tfirstKeptEntryId,\n\t\ttokensBefore,\n\t\tstats: compacted.stats,\n\t\tparameters: preparation.parameters,\n\t\tpromptVersion: VERBATIM_COMPACTION_PROMPT_VERSION,\n\t\trung: compacted.rung,\n\t\t...(compacted.plannerModel ? { plannerModel: compacted.plannerModel } : {}),\n\t\t...(compacted.backend ? { backend: compacted.backend } : {}),\n\t\t...(compacted.model ? { model: compacted.model } : {}),\n\t\t...(compacted.summary ? { summary: compacted.summary } : {}),\n\t\t...(compacted.usage ? { usage: compacted.usage } : {}),\n\t\t...(backupPath ? { backupPath } : {}),\n\t};\n\tconst compactionEntry = this.sessionManager.getEntry(entryId) as CompactionEntry<VerbatimCompactionDetails>;\n\ttry {\n\t\tawait this._extensionRunner.emit({\n\t\t\ttype: \"session_compact\",\n\t\t\treason: options.reason,\n\t\t\tparameters: preparation.parameters,\n\t\t\tresult,\n\t\t\tcompactionEntry,\n\t\t\tfromExtension,\n\t\t} satisfies SessionCompactEvent);\n\t} catch (error) {\n\t\tthis._extensionRunner.emitError({\n\t\t\textensionPath: \"<session_compact>\",\n\t\t\tevent: \"session_compact\",\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\tstack: error instanceof Error ? error.stack : undefined,\n\t\t});\n\t}\n\treturn result;\n}\n\nexport async function emitSessionCompactFailed(\n\tsession: AgentSession,\n\tevent: Omit<SessionCompactFailedEvent, \"type\">,\n): Promise<void> {\n\tif (session._extensionRunner?.hasHandlers(\"session_compact_failed\")) {\n\t\tawait session._extensionRunner.emit({ type: \"session_compact_failed\", ...event });\n\t}\n}\n\nfunction clearOwnedManualCompactionState(this: AgentSession, controller: AbortController): void {\n\tif (this._compactionAbortController !== controller) return;\n\tthis._compactionAbortController = undefined;\n\tif (this._compactionReason === \"manual\") this._compactionReason = undefined;\n\t// Lifecycle listeners run synchronously. Once the manual end event is\n\t// emitted, a new /compact must own a new run rather than join the settled one.\n\tthis._manualCompactionPromise = undefined;\n}\n\nasync function emitManualCompactionFailure(\n\tthis: AgentSession,\n\tcontroller: AbortController,\n\terror: unknown,\n\tfromExtension: boolean,\n): Promise<void> {\n\tconst message = error instanceof Error ? error.message : String(error);\n\tconst aborted = controller.signal.aborted;\n\tconst errorMessage = aborted ? undefined : `Compaction failed: ${message}`;\n\tclearOwnedManualCompactionState.call(this, controller);\n\tthis._emit({\n\t\ttype: \"compaction_end\",\n\t\treason: \"manual\",\n\t\tresult: undefined,\n\t\taborted,\n\t\twillRetry: false,\n\t\terrorMessage,\n\t});\n\tawait emitSessionCompactFailed(this, {\n\t\treason: \"manual\",\n\t\terrorMessage,\n\t\taborted,\n\t\twillRetry: false,\n\t\tfromExtension,\n\t});\n}\n\nasync function runOwnedManualCompaction(\n\tthis: AgentSession,\n\tcontroller: AbortController,\n\toptions: Partial<VerbatimCompactionParameters>,\n): Promise<VerbatimCompactionResult> {\n\tthis._emit({ type: \"compaction_start\", reason: \"manual\" });\n\tlet fromExtension = false;\n\ttry {\n\t\tcontroller.signal.throwIfAborted();\n\t\tif (!this.model) throw new Error(formatNoModelSelectedMessage());\n\t\tconst result = await this._applyVerbatimCompaction({\n\t\t\t// Caller parameters are projected explicitly, so no extra runtime\n\t\t\t// property survives. A widened or cast object could otherwise carry\n\t\t\t// `urgency: \"load_bearing\"` through a public `session.compact()` call and\n\t\t\t// reach the context-destroying rung, which manual compaction must never do.\n\t\t\t...(options.compression_ratio === undefined ? {} : { compression_ratio: options.compression_ratio }),\n\t\t\t...(options.preserve_recent === undefined ? {} : { preserve_recent: options.preserve_recent }),\n\t\t\t...(options.query === undefined ? {} : { query: options.query }),\n\t\t\tresolvePlannerAuth: (candidate) => this._getRequiredRequestAuth(candidate, controller.signal),\n\t\t\tabortController: controller,\n\t\t\tbackupLabel: \"compact\",\n\t\t\treason: \"manual\",\n\t\t\turgency: \"recoverable\",\n\t\t\tonCompactionSource: (value) => {\n\t\t\t\tfromExtension = value;\n\t\t\t},\n\t\t});\n\t\tif (!result) throw new Error(\"Nothing to compact (session too small)\");\n\t\t// compaction_end listeners synchronously flush queued prompts, so they must\n\t\t// observe an idle session before dispatching the next user turn.\n\t\tclearOwnedManualCompactionState.call(this, controller);\n\t\tthis._emit({ type: \"compaction_end\", reason: \"manual\", result, aborted: false, willRetry: false });\n\t\treturn result;\n\t} catch (error) {\n\t\tawait emitManualCompactionFailure.call(this, controller, error, fromExtension);\n\t\tthrow error;\n\t}\n}\n\n/**\n * Persist one verbatim line-subset compaction boundary.\n *\n * Re-entrancy safe: a call made while a manual compaction is still in flight\n * joins that run instead of starting a second one. Manual compaction aborts an\n * active agent run before it starts, while agent event delivery remains live so\n * a pending threshold check cannot race the requested manual boundary.\n */\nexport function compact(\n\tthis: AgentSession,\n\toptions: Partial<VerbatimCompactionParameters> = {},\n): Promise<VerbatimCompactionResult> {\n\ttry {\n\t\tassertCompactionOpen(this);\n\t} catch (error) {\n\t\treturn Promise.reject(error);\n\t}\n\tconst inFlight = this._manualCompactionPromise;\n\tif (inFlight) return inFlight;\n\n\t// A manual boundary replaces the automatic turn that scheduled any pending\n\t// retry. Invalidate its timer before this run claims compaction ownership.\n\tthis._postCompactionContinuationToken += 1;\n\tthis._pendingPostCompactionContinuation = undefined;\n\n\tconst automaticCompletion = this._autoCompactionCompletion;\n\t// The manual request wins. Abort the active automatic planner now, before the\n\t// next microtask can admit a post-tool or threshold boundary, then wait for\n\t// its owner to settle before mutating the transcript ourselves. Start the\n\t// session abort before publishing this new manual owner so abort() cancels\n\t// prior work rather than cancelling or waiting on the compaction being started.\n\tthis._autoCompactionAbortController?.abort();\n\tconst abortBoundary = this.abort();\n\n\tconst controller = new AbortController();\n\tthis._compactionAbortController = controller;\n\tthis._compactionReason = \"manual\";\n\t// Handle rejection now so a failing event drain cannot become unhandled\n\t// while an automatic run finishes.\n\tvoid abortBoundary.catch(() => {});\n\tlet flight!: Promise<VerbatimCompactionResult>;\n\t// Start the owned run in a microtask so both single-flight fields are\n\t// published before any joiner can observe a partially claimed compaction.\n\tflight = trackSessionWork(this, () =>\n\t\tPromise.resolve().then(async () => {\n\t\t\ttry {\n\t\t\t\tif (automaticCompletion !== undefined) await automaticCompletion;\n\t\t\t\tawait abortBoundary;\n\t\t\t} catch (error) {\n\t\t\t\t// The abort drain can fail before the planner starts. Finish the\n\t\t\t\t// manual lifecycle so event consumers can release queued input.\n\t\t\t\tawait emitManualCompactionFailure.call(this, controller, error, false);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tassertCompactionOpen(this);\n\t\t\treturn runOwnedManualCompaction.call(this, controller, options);\n\t\t}),\n\t).finally(() => {\n\t\tclearOwnedManualCompactionState.call(this, controller);\n\t\tif (this._manualCompactionPromise === flight) this._manualCompactionPromise = undefined;\n\t});\n\tthis._manualCompactionPromise = flight;\n\treturn flight;\n}\n\nexport function abortCompaction(this: AgentSession): void {\n\tthis._compactionAbortController?.abort();\n\tthis._autoCompactionAbortController?.abort();\n}\nexport function abortBranchSummary(this: AgentSession): void {\n\tthis._branchSummaryAbortController?.abort();\n}\nexport function setAutoCompactionEnabled(this: AgentSession, enabled: boolean): void {\n\tsettingsWriteOwner.run(this, () => this.settingsManager.setCompactionEnabled(enabled));\n}\n\nexport const agentSessionCompactionMethods = {\n\t_applyVerbatimCompaction,\n\tcompact,\n\tabortCompaction,\n\tabortBranchSummary,\n\tsetAutoCompactionEnabled,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-events.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAe,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAW9F,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAI9B,MAAM,0BAA0B,CAAC;AAalC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAWlE,wBAAgB,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAIxE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAMzD;AAID,4EAA4E;AAE5E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CA0D7F;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CA6B1F;AAED,wBAAgB,4BAA4B,CAC3C,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,EAAE,GACtB,gBAAgB,GAAG,SAAS,CAQ9B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkM7F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CA0BvF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAQvF;AAED,wCAAwC;AAExC,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAMtD;AAED,0CAA0C;AAE1C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAMhF;AAED,8EAA8E;AAE9E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAS1F;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,IAAI,CAchH;AAED,kDAAkD;AAElD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE9F;AAED;;;;GAIG;AAEH,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,yBAAyB,GAAG,MAAM,IAAI,CAU7F;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAK7D;AAWD,gFAAgF;AAChF,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,YAAY,EACrB,KAAK,GAAE,oBAAmE,EAC1E,gBAAgB,CAAC,EAAE,MAAM,IAAI,GAC3B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-session-events.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAe,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAW9F,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAI9B,MAAM,0BAA0B,CAAC;AAalC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAWlE,wBAAgB,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAIxE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAMzD;AAID,4EAA4E;AAE5E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CA0D7F;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CA6B1F;AAED,wBAAgB,4BAA4B,CAC3C,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,EAAE,GACtB,gBAAgB,GAAG,SAAS,CAQ9B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkM7F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CA0BvF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAQvF;AAED,wCAAwC;AAExC,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAMtD;AAED,0CAA0C;AAE1C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAMhF;AAED,8EAA8E;AAE9E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAS1F;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,IAAI,CAchH;AAED,kDAAkD;AAElD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE9F;AAED;;;;GAIG;AAEH,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,yBAAyB,GAAG,MAAM,IAAI,CAU7F;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAK7D;AAWD,gFAAgF;AAChF,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,YAAY,EACrB,KAAK,GAAE,oBAAmE,EAC1E,gBAAgB,CAAC,EAAE,MAAM,IAAI,GAC3B,OAAO,CAAC,IAAI,CAAC,CA+Ef;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzD;AAMD,uBAAuB;AAEvB,eAAO,MAAM,yBAAyB;iBACxB,YAAY,SAAS,oBAAoB,qBAAqB,MAAM,IAAI;;;;;;;;;;;;;;;;;CAmBrF,CAAC"}
|
|
@@ -502,7 +502,7 @@ export function closeAgentSession(session, event = { type: "session_shutdown", r
|
|
|
502
502
|
errors.push(new Error(component, { cause }));
|
|
503
503
|
}
|
|
504
504
|
};
|
|
505
|
-
await attempt("lifetime", () => abortSessionWork(session));
|
|
505
|
+
await attempt("lifetime", () => abortSessionWork(session, event.reason === "quit"));
|
|
506
506
|
await attempt("shell abort", () => abortBash.call(session));
|
|
507
507
|
await attempt("abort", () => abortCurrentGeneration.call(session));
|
|
508
508
|
await attempt("reload rollback", () => drainSessionReload(session));
|
|
@@ -537,9 +537,10 @@ export function closeAgentSession(session, event = { type: "session_shutdown", r
|
|
|
537
537
|
ownedSettingsManagers.delete(session.settingsManager);
|
|
538
538
|
await attempt("host subscriptions", () => beforeInvalidate?.());
|
|
539
539
|
await attempt("generation", () => session._extensionRunner.invalidate(STALE_EXTENSION_CONTEXT_MESSAGE));
|
|
540
|
-
await attempt("subscriptions", () => {
|
|
540
|
+
await attempt("subscriptions", async () => {
|
|
541
541
|
session._disconnectFromAgent();
|
|
542
542
|
session._eventListeners = [];
|
|
543
|
+
await session._workflows?.disposeObservers(session._extensionRunner.getWorkflowActivitySnapshot());
|
|
543
544
|
});
|
|
544
545
|
await attempt("provider", () => cleanupSessionResources(session.sessionId));
|
|
545
546
|
await attempt("storage", () => {
|