@astralyn/pi 0.83.0 → 0.84.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 +44 -0
- package/dist/bun/cli.d.ts.map +1 -1
- package/dist/bun/cli.js.map +1 -1
- package/dist/bun/register-bedrock.d.ts.map +1 -1
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
- package/dist/bun/restore-sandbox-env.js.map +1 -1
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +19 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +2 -2
- package/dist/cli/config-selector.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 +6 -5
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/cli/experimental/auth.d.ts +16 -0
- package/dist/cli/experimental/auth.d.ts.map +1 -0
- package/dist/cli/experimental/auth.js +13 -0
- package/dist/cli/experimental/auth.js.map +1 -0
- package/dist/cli/experimental/cli.d.ts +6 -0
- package/dist/cli/experimental/cli.d.ts.map +1 -0
- package/dist/cli/experimental/cli.js +5 -0
- package/dist/cli/experimental/cli.js.map +1 -0
- package/dist/cli/experimental/command-options.d.ts +17 -0
- package/dist/cli/experimental/command-options.d.ts.map +1 -0
- package/dist/cli/experimental/command-options.js +35 -0
- package/dist/cli/experimental/command-options.js.map +1 -0
- package/dist/cli/experimental/command.d.ts +63 -0
- package/dist/cli/experimental/command.d.ts.map +1 -0
- package/dist/cli/experimental/command.js +127 -0
- package/dist/cli/experimental/command.js.map +1 -0
- package/dist/cli/experimental/commands/client.d.ts +13 -0
- package/dist/cli/experimental/commands/client.d.ts.map +1 -0
- package/dist/cli/experimental/commands/client.js +25 -0
- package/dist/cli/experimental/commands/client.js.map +1 -0
- package/dist/cli/experimental/commands/pi.d.ts +15 -0
- package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
- package/dist/cli/experimental/commands/pi.js +28 -0
- package/dist/cli/experimental/commands/pi.js.map +1 -0
- package/dist/cli/experimental/commands/server.d.ts +13 -0
- package/dist/cli/experimental/commands/server.d.ts.map +1 -0
- package/dist/cli/experimental/commands/server.js +25 -0
- package/dist/cli/experimental/commands/server.js.map +1 -0
- package/dist/cli/experimental/transport-address.d.ts +10 -0
- package/dist/cli/experimental/transport-address.d.ts.map +1 -0
- package/dist/cli/experimental/transport-address.js +38 -0
- package/dist/cli/experimental/transport-address.js.map +1 -0
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/initial-message.d.ts +1 -1
- package/dist/cli/initial-message.d.ts.map +1 -1
- package/dist/cli/initial-message.js.map +1 -1
- package/dist/cli/list-models.d.ts +1 -1
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +2 -2
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/project-trust.d.ts.map +1 -1
- package/dist/cli/project-trust.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli/startup-ui.d.ts +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +2 -2
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/remote-session.d.ts +53 -0
- package/dist/client/remote-session.d.ts.map +1 -0
- package/dist/client/remote-session.js +340 -0
- package/dist/client/remote-session.js.map +1 -0
- package/dist/client/transcript.d.ts +12 -0
- package/dist/client/transcript.d.ts.map +1 -0
- package/dist/client/transcript.js +98 -0
- package/dist/client/transcript.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +0 -8
- package/dist/core/agent-session-runtime.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.d.ts +30 -10
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +177 -187
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-guidance.d.ts.map +1 -1
- package/dist/core/auth-guidance.js.map +1 -1
- package/dist/core/auth-storage.d.ts +15 -9
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +159 -41
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/cache-stats.d.ts.map +1 -1
- package/dist/core/cache-stats.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js.map +1 -1
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +43 -20
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +2 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +25 -29
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +21 -3
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +17 -18
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +5 -0
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/keybindings.d.ts +157 -125
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +0 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-config.d.ts +37 -13
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +4 -2
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts +5 -3
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +13 -11
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +4 -3
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +41 -10
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +28 -13
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +239 -91
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.d.ts +12 -7
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +84 -16
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/output-guard.d.ts.map +1 -1
- package/dist/core/output-guard.js.map +1 -1
- package/dist/core/package-manager.d.ts +4 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +63 -42
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts +8 -0
- package/dist/core/pi-manifest.d.ts.map +1 -0
- package/dist/core/pi-manifest.js +25 -0
- package/dist/core/pi-manifest.js.map +1 -0
- package/dist/core/project-trust.d.ts.map +1 -1
- package/dist/core/project-trust.js.map +1 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/provider-composer.d.ts +4 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +36 -15
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/radius.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +73 -67
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +2 -46
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +5 -5
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js +12 -10
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-cwd.d.ts.map +1 -1
- package/dist/core/session-cwd.js +0 -1
- package/dist/core/session-cwd.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +10 -12
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +12 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +47 -33
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/source-info.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetry.d.ts.map +1 -1
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +12 -10
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +4 -3
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/find.d.ts +3 -0
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +13 -16
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +12 -18
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/path-utils.d.ts.map +1 -1
- package/dist/core/tools/path-utils.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +0 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +0 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/usage-totals.d.ts.map +1 -1
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/extensions/biu/index.d.ts +19 -0
- package/dist/extensions/biu/index.d.ts.map +1 -0
- package/dist/extensions/biu/index.js +350 -0
- package/dist/extensions/biu/index.js.map +1 -0
- package/dist/extensions/biu/prompts.d.ts +26 -0
- package/dist/extensions/biu/prompts.d.ts.map +1 -0
- package/dist/extensions/biu/prompts.js +260 -0
- package/dist/extensions/biu/prompts.js.map +1 -0
- package/dist/extensions/biu/workspace.d.ts +122 -0
- package/dist/extensions/biu/workspace.d.ts.map +1 -0
- package/dist/extensions/biu/workspace.js +404 -0
- package/dist/extensions/biu/workspace.js.map +1 -0
- package/dist/extensions/deepwiki/client.d.ts.map +1 -1
- package/dist/extensions/deepwiki/client.js.map +1 -1
- package/dist/extensions/deepwiki/constants.d.ts.map +1 -1
- package/dist/extensions/deepwiki/constants.js.map +1 -1
- package/dist/extensions/deepwiki/contents.d.ts.map +1 -1
- package/dist/extensions/deepwiki/contents.js.map +1 -1
- package/dist/extensions/deepwiki/execute.d.ts.map +1 -1
- package/dist/extensions/deepwiki/execute.js.map +1 -1
- package/dist/extensions/deepwiki/http.d.ts.map +1 -1
- package/dist/extensions/deepwiki/http.js.map +1 -1
- package/dist/extensions/deepwiki/index.d.ts.map +1 -1
- package/dist/extensions/deepwiki/index.js.map +1 -1
- package/dist/extensions/deepwiki/render.d.ts.map +1 -1
- package/dist/extensions/deepwiki/render.js.map +1 -1
- package/dist/extensions/deepwiki/schema.d.ts +1 -1
- package/dist/extensions/deepwiki/schema.d.ts.map +1 -1
- package/dist/extensions/deepwiki/schema.js.map +1 -1
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +2 -0
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/llama/client.d.ts.map +1 -1
- package/dist/extensions/llama/client.js +0 -2
- package/dist/extensions/llama/client.js.map +1 -1
- package/dist/extensions/llama/huggingface.d.ts.map +1 -1
- package/dist/extensions/llama/huggingface.js +0 -2
- package/dist/extensions/llama/huggingface.js.map +1 -1
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +11 -2
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +21 -7
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/llama/ui.d.ts.map +1 -1
- package/dist/extensions/llama/ui.js +12 -28
- package/dist/extensions/llama/ui.js.map +1 -1
- package/dist/extensions/question/constants.d.ts.map +1 -1
- package/dist/extensions/question/constants.js.map +1 -1
- package/dist/extensions/question/dialog-primitives.d.ts.map +1 -1
- package/dist/extensions/question/dialog-primitives.js.map +1 -1
- package/dist/extensions/question/dialog.d.ts.map +1 -1
- package/dist/extensions/question/dialog.js.map +1 -1
- package/dist/extensions/question/index.d.ts.map +1 -1
- package/dist/extensions/question/index.js.map +1 -1
- package/dist/extensions/question/limits.d.ts.map +1 -1
- package/dist/extensions/question/render-cache.d.ts.map +1 -1
- package/dist/extensions/question/render-cache.js +3 -4
- package/dist/extensions/question/render-cache.js.map +1 -1
- package/dist/extensions/question/render.d.ts.map +1 -1
- package/dist/extensions/question/render.js.map +1 -1
- package/dist/extensions/question/results.d.ts.map +1 -1
- package/dist/extensions/question/results.js.map +1 -1
- package/dist/extensions/question/schema.d.ts.map +1 -1
- package/dist/extensions/question/schema.js.map +1 -1
- package/dist/extensions/question/state.d.ts.map +1 -1
- package/dist/extensions/question/state.js.map +1 -1
- package/dist/extensions/question/types.d.ts.map +1 -1
- package/dist/extensions/rewind/anchor.d.ts.map +1 -1
- package/dist/extensions/rewind/anchor.js.map +1 -1
- package/dist/extensions/rewind/config.d.ts.map +1 -1
- package/dist/extensions/rewind/config.js.map +1 -1
- package/dist/extensions/rewind/engine.d.ts.map +1 -1
- package/dist/extensions/rewind/engine.js.map +1 -1
- package/dist/extensions/rewind/gc.d.ts.map +1 -1
- package/dist/extensions/rewind/gc.js.map +1 -1
- package/dist/extensions/rewind/index.d.ts.map +1 -1
- package/dist/extensions/rewind/index.js.map +1 -1
- package/dist/extensions/rewind/menu.d.ts.map +1 -1
- package/dist/extensions/rewind/menu.js.map +1 -1
- package/dist/extensions/rewind/paths.d.ts.map +1 -1
- package/dist/extensions/rewind/paths.js.map +1 -1
- package/dist/extensions/rewind/restore.d.ts.map +1 -1
- package/dist/extensions/rewind/restore.js.map +1 -1
- package/dist/extensions/rewind/snapshot.d.ts.map +1 -1
- package/dist/extensions/rewind/snapshot.js.map +1 -1
- package/dist/extensions/rewind/storage.d.ts.map +1 -1
- package/dist/extensions/rewind/storage.js.map +1 -1
- package/dist/extensions/rewind/text.d.ts.map +1 -1
- package/dist/extensions/rewind/text.js.map +1 -1
- package/dist/extensions/rewind/tool-path.d.ts.map +1 -1
- package/dist/extensions/rewind/tool-path.js.map +1 -1
- package/dist/extensions/router/constants.d.ts +3 -0
- package/dist/extensions/router/constants.d.ts.map +1 -1
- package/dist/extensions/router/constants.js +3 -0
- package/dist/extensions/router/constants.js.map +1 -1
- package/dist/extensions/router/dialog.d.ts +14 -7
- package/dist/extensions/router/dialog.d.ts.map +1 -1
- package/dist/extensions/router/dialog.js +70 -132
- package/dist/extensions/router/dialog.js.map +1 -1
- package/dist/extensions/router/index.d.ts.map +1 -1
- package/dist/extensions/router/index.js.map +1 -1
- package/dist/extensions/router/presets.d.ts +8 -3
- package/dist/extensions/router/presets.d.ts.map +1 -1
- package/dist/extensions/router/presets.js +33 -17
- package/dist/extensions/router/presets.js.map +1 -1
- package/dist/extensions/router/probe.d.ts.map +1 -1
- package/dist/extensions/router/probe.js.map +1 -1
- package/dist/extensions/router/register.d.ts +3 -3
- package/dist/extensions/router/register.d.ts.map +1 -1
- package/dist/extensions/router/register.js.map +1 -1
- package/dist/extensions/router/store.d.ts.map +1 -1
- package/dist/extensions/router/store.js.map +1 -1
- package/dist/extensions/router/stream.d.ts.map +1 -1
- package/dist/extensions/router/stream.js.map +1 -1
- package/dist/extensions/router/types.d.ts.map +1 -1
- package/dist/extensions/router/ui.d.ts +11 -2
- package/dist/extensions/router/ui.d.ts.map +1 -1
- package/dist/extensions/router/ui.js +316 -171
- package/dist/extensions/router/ui.js.map +1 -1
- package/dist/extensions/statusline/index.d.ts.map +1 -1
- package/dist/extensions/statusline/index.js +17 -9
- package/dist/extensions/statusline/index.js.map +1 -1
- package/dist/extensions/subagent/activity.d.ts.map +1 -1
- package/dist/extensions/subagent/activity.js.map +1 -1
- package/dist/extensions/subagent/agents.d.ts.map +1 -1
- package/dist/extensions/subagent/agents.js.map +1 -1
- package/dist/extensions/subagent/constants.d.ts.map +1 -1
- package/dist/extensions/subagent/index.d.ts +3 -0
- package/dist/extensions/subagent/index.d.ts.map +1 -1
- package/dist/extensions/subagent/index.js +83 -12
- package/dist/extensions/subagent/index.js.map +1 -1
- package/dist/extensions/subagent/picker.d.ts.map +1 -1
- package/dist/extensions/subagent/picker.js +2 -9
- package/dist/extensions/subagent/picker.js.map +1 -1
- package/dist/extensions/subagent/render.d.ts.map +1 -1
- package/dist/extensions/subagent/render.js +33 -9
- package/dist/extensions/subagent/render.js.map +1 -1
- package/dist/extensions/subagent/resolve.d.ts.map +1 -1
- package/dist/extensions/subagent/resolve.js.map +1 -1
- package/dist/extensions/subagent/retry.d.ts.map +1 -1
- package/dist/extensions/subagent/retry.js.map +1 -1
- package/dist/extensions/subagent/runner.d.ts +2 -1
- package/dist/extensions/subagent/runner.d.ts.map +1 -1
- package/dist/extensions/subagent/runner.js +10 -12
- package/dist/extensions/subagent/runner.js.map +1 -1
- package/dist/extensions/subagent/schema.d.ts.map +1 -1
- package/dist/extensions/subagent/schema.js.map +1 -1
- package/dist/extensions/subagent/sdk-runner.d.ts.map +1 -1
- package/dist/extensions/subagent/sdk-runner.js +41 -1
- package/dist/extensions/subagent/sdk-runner.js.map +1 -1
- package/dist/extensions/subagent/settings.d.ts.map +1 -1
- package/dist/extensions/subagent/settings.js +46 -36
- package/dist/extensions/subagent/settings.js.map +1 -1
- package/dist/extensions/subagent/types.d.ts +0 -1
- package/dist/extensions/subagent/types.d.ts.map +1 -1
- package/dist/extensions/subagent/types.js.map +1 -1
- package/dist/extensions/todo/constants.d.ts.map +1 -1
- package/dist/extensions/todo/constants.js.map +1 -1
- package/dist/extensions/todo/index.d.ts.map +1 -1
- package/dist/extensions/todo/index.js.map +1 -1
- package/dist/extensions/todo/overlay.d.ts.map +1 -1
- package/dist/extensions/todo/overlay.js +6 -10
- package/dist/extensions/todo/overlay.js.map +1 -1
- package/dist/extensions/todo/schema.d.ts +2 -2
- package/dist/extensions/todo/schema.d.ts.map +1 -1
- package/dist/extensions/todo/state.d.ts.map +1 -1
- package/dist/extensions/todo/state.js.map +1 -1
- package/dist/extensions/todo/view.d.ts.map +1 -1
- package/dist/extensions/todo/view.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +16 -7
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js.map +1 -1
- package/dist/modes/index.d.ts +1 -0
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js +6 -10
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +5 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +13 -11
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +4 -10
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +0 -3
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +1 -3
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +1 -3
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +5 -22
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js +1 -7
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +8 -8
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-entry.js +1 -4
- package/dist/modes/interactive/components/custom-entry.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +1 -7
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js +6 -8
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/diff.d.ts.map +1 -1
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js +0 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +1 -7
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +2 -8
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +1 -9
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +2 -4
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +2 -4
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +3 -9
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.js +19 -0
- package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
- package/dist/modes/interactive/components/mermaid.d.ts +11 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +75 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +28 -29
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +3 -11
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +4 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +34 -13
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +35 -60
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +8 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +30 -14
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +0 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +1 -3
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-indicator.js +0 -2
- package/dist/modes/interactive/components/status-indicator.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +0 -2
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +0 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +18 -36
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tool-group.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-group.js +2 -3
- package/dist/modes/interactive/components/tool-group.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +19 -39
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/trust-selector.js +0 -6
- package/dist/modes/interactive/components/trust-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +3 -6
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +3 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +8 -5
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +46 -4
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +518 -269
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/model-search.d.ts.map +1 -1
- package/dist/modes/interactive/model-search.js.map +1 -1
- package/dist/modes/interactive/theme/dark.json +1 -0
- package/dist/modes/interactive/theme/light.json +1 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +3 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +11 -8
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +5 -1
- package/dist/modes/interactive/theme/theme.d.ts +4 -4
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +13 -9
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +28 -0
- package/dist/modes/json-event.d.ts.map +1 -0
- package/dist/modes/json-event.js +12 -0
- package/dist/modes/json-event.js.map +1 -0
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +12 -2
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/dist/modes/rpc/jsonl.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +5 -4
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +7 -8
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +4 -3
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +11 -9
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/rpc-entry.d.ts.map +1 -1
- package/dist/rpc-entry.js +1 -0
- package/dist/rpc-entry.js.map +1 -1
- package/dist/utils/abort.d.ts +5 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +48 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/ansi.d.ts.map +1 -1
- package/dist/utils/ansi.js.map +1 -1
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/changelog.js.map +1 -1
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/child-process.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.d.ts +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +22 -2
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/coalescing-terminal.d.ts +1 -0
- package/dist/utils/coalescing-terminal.d.ts.map +1 -1
- package/dist/utils/coalescing-terminal.js +16 -8
- package/dist/utils/coalescing-terminal.js.map +1 -1
- package/dist/utils/deprecation.d.ts.map +1 -1
- package/dist/utils/deprecation.js.map +1 -1
- package/dist/utils/exif-orientation.d.ts.map +1 -1
- package/dist/utils/exif-orientation.js.map +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/fs-watch.d.ts.map +1 -1
- package/dist/utils/fs-watch.js.map +1 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/html.d.ts.map +1 -1
- package/dist/utils/html.js.map +1 -1
- package/dist/utils/image-convert.d.ts.map +1 -1
- package/dist/utils/image-convert.js.map +1 -1
- package/dist/utils/image-process.d.ts.map +1 -1
- package/dist/utils/image-process.js.map +1 -1
- package/dist/utils/image-resize-core.d.ts.map +1 -1
- package/dist/utils/image-resize-core.js.map +1 -1
- package/dist/utils/image-resize-worker.d.ts.map +1 -1
- package/dist/utils/image-resize-worker.js.map +1 -1
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js.map +1 -1
- package/dist/utils/json.d.ts.map +1 -1
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/management-http.d.ts +23 -0
- package/dist/utils/management-http.d.ts.map +1 -0
- package/dist/utils/management-http.js +50 -0
- package/dist/utils/management-http.js.map +1 -0
- package/dist/utils/mime.d.ts.map +1 -1
- package/dist/utils/mime.js.map +1 -1
- package/dist/utils/open-browser.d.ts.map +1 -1
- package/dist/utils/open-browser.js.map +1 -1
- package/dist/utils/paths.d.ts +3 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +23 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/photon.d.ts.map +1 -1
- package/dist/utils/photon.js.map +1 -1
- package/dist/utils/pi-user-agent.d.ts.map +1 -1
- package/dist/utils/pi-user-agent.js.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/sleep.d.ts.map +1 -1
- package/dist/utils/sleep.js.map +1 -1
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/dist/utils/tool-result-images.d.ts +19 -0
- package/dist/utils/tool-result-images.d.ts.map +1 -0
- package/dist/utils/tool-result-images.js +45 -0
- package/dist/utils/tool-result-images.js.map +1 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +4 -6
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +4 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +20 -2
- package/dist/utils/version-check.js.map +1 -1
- package/dist/utils/windows-self-update.d.ts.map +1 -1
- package/dist/utils/windows-self-update.js.map +1 -1
- package/docs/bundled/README.md +1 -0
- package/docs/bundled/extensions/biu.md +63 -0
- package/docs/bundled/extensions/router.md +20 -14
- package/docs/bundled/extensions/statusline.md +7 -5
- package/docs/custom-provider.md +123 -2
- package/docs/development.md +83 -0
- package/docs/docs.json +8 -4
- package/docs/extensions.md +27 -3
- package/docs/json.md +21 -2
- package/docs/keybindings.md +38 -10
- package/docs/models.md +21 -3
- package/docs/providers.md +1 -0
- package/docs/quickstart.md +2 -0
- package/docs/rpc.md +12 -11
- package/docs/sdk.md +46 -0
- package/docs/security.md +1 -1
- package/docs/settings.md +4 -1
- package/docs/themes.md +7 -5
- package/docs/usage.md +8 -0
- package/examples/extensions/custom-compaction.ts +1 -16
- package/examples/extensions/custom-provider-anthropic/index.ts +2 -1
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +2 -1
- package/examples/extensions/doom-overlay/wad-finder.ts +7 -3
- package/examples/extensions/dynamic-resources/dynamic.json +1 -1
- package/examples/extensions/handoff.ts +2 -11
- package/examples/extensions/qna.ts +3 -7
- package/examples/extensions/summarize.ts +8 -18
- package/examples/rpc-extension-ui.ts +11 -2
- package/examples/sdk/02-custom-model.ts +1 -2
- package/examples/sdk/09-api-keys-and-oauth.ts +1 -1
- package/examples/sdk/12-full-control.ts +1 -1
- package/examples/sdk/README.md +1 -0
- package/npm-shrinkwrap.json +193 -264
- package/package.json +15 -8
|
@@ -15,11 +15,12 @@
|
|
|
15
15
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
16
16
|
import { basename, dirname } from "node:path";
|
|
17
17
|
import { contentText } from "@earendil-works/pi-ai";
|
|
18
|
-
import { clampThinkingLevel, cleanupSessionResources, getSupportedThinkingLevels, isContextOverflow, isRetryableAssistantError, modelsAreEqual, resetApiProviders, streamSimple, } from "@earendil-works/pi-ai/compat";
|
|
18
|
+
import { clampThinkingLevel, cleanupSessionResources, getSupportedThinkingLevels, isContextOverflow, isRecoverableLength, isRetryableAssistantError, modelsAreEqual, resetApiProviders, streamSimple, } from "@earendil-works/pi-ai/compat";
|
|
19
19
|
import { getThemeByName, theme } from "../modes/interactive/theme/theme.js";
|
|
20
20
|
import { stripFrontmatter } from "../utils/frontmatter.js";
|
|
21
21
|
import { resolvePath } from "../utils/paths.js";
|
|
22
22
|
import { sleep } from "../utils/sleep.js";
|
|
23
|
+
import { normalizeToolResultImages } from "../utils/tool-result-images.js";
|
|
23
24
|
import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage } from "./auth-guidance.js";
|
|
24
25
|
import { executeBashWithOperations } from "./bash-executor.js";
|
|
25
26
|
import { calculateContextTokens, collectEntriesForBranchSummary, compact, estimateContextTokens, estimateTokens, generateBranchSummary, prepareCompaction, shouldCompact, } from "./compaction/index.js";
|
|
@@ -79,68 +80,104 @@ const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high"];
|
|
|
79
80
|
// AgentSession Class
|
|
80
81
|
// ============================================================================
|
|
81
82
|
export class AgentSession {
|
|
82
|
-
agent;
|
|
83
|
-
sessionManager;
|
|
84
|
-
settingsManager;
|
|
85
|
-
_scopedModels;
|
|
86
|
-
// Event subscription state
|
|
87
|
-
_unsubscribeAgent;
|
|
88
|
-
_eventListeners = [];
|
|
89
|
-
_isAgentRunActive = false;
|
|
90
|
-
_idleWaitPromise;
|
|
91
|
-
_resolveIdleWait;
|
|
92
|
-
/** Tracks pending steering messages for UI display. Removed when delivered. */
|
|
93
|
-
_steeringMessages = [];
|
|
94
|
-
/** Tracks pending follow-up messages for UI display. Removed when delivered. */
|
|
95
|
-
_followUpMessages = [];
|
|
96
|
-
/** Messages queued to be included with the next user prompt as context ("asides"). */
|
|
97
|
-
_pendingNextTurnMessages = [];
|
|
98
|
-
// Compaction state
|
|
99
|
-
_compactionAbortController = undefined;
|
|
100
|
-
_autoCompactionAbortController = undefined;
|
|
101
|
-
_stopAfterTurnRequested = false;
|
|
102
|
-
/** An extension cancelled a mid-turn compaction; skip further mid-turn checks this run. */
|
|
103
|
-
_midTurnCompactionDeclined = false;
|
|
104
|
-
_overflowRecoveryAttempted = false;
|
|
105
|
-
// Branch summarization state
|
|
106
|
-
_branchSummaryAbortController = undefined;
|
|
107
|
-
// Retry state
|
|
108
|
-
_retryAbortController = undefined;
|
|
109
|
-
_retryAttempt = 0;
|
|
110
|
-
// Bash execution state
|
|
111
|
-
_bashAbortControllers = new Set();
|
|
112
|
-
_pendingBashMessages = [];
|
|
113
|
-
// Extension system
|
|
114
|
-
_extensionRunner;
|
|
115
|
-
_turnIndex = 0;
|
|
116
|
-
_resourceLoader;
|
|
117
|
-
_customTools;
|
|
118
|
-
_baseToolDefinitions = new Map();
|
|
119
|
-
_cwd;
|
|
120
|
-
_extensionRunnerRef;
|
|
121
|
-
_initialActiveToolNames;
|
|
122
|
-
_allowedToolNames;
|
|
123
|
-
_excludedToolNames;
|
|
124
|
-
_baseToolsOverride;
|
|
125
|
-
_sessionStartEvent;
|
|
126
|
-
_extensionUIContext;
|
|
127
|
-
_extensionMode = "print";
|
|
128
|
-
_extensionCommandContextActions;
|
|
129
|
-
_extensionAbortHandler;
|
|
130
|
-
_extensionShutdownHandler;
|
|
131
|
-
_extensionErrorListener;
|
|
132
|
-
_extensionErrorUnsubscriber;
|
|
133
|
-
_modelRuntime;
|
|
134
|
-
// Tool registry for extension getTools/setTools
|
|
135
|
-
_toolRegistry = new Map();
|
|
136
|
-
_toolDefinitions = new Map();
|
|
137
|
-
_toolPromptSnippets = new Map();
|
|
138
|
-
_toolPromptGuidelines = new Map();
|
|
139
|
-
// Base system prompt (without extension appends) - used to apply fresh appends each turn
|
|
140
|
-
_baseSystemPrompt = "";
|
|
141
|
-
_baseSystemPromptOptions;
|
|
142
|
-
_systemPromptOverride;
|
|
143
83
|
constructor(config) {
|
|
84
|
+
this._eventListeners = [];
|
|
85
|
+
this._isAgentRunActive = false;
|
|
86
|
+
/** Tracks pending steering messages for UI display. Removed when delivered. */
|
|
87
|
+
this._steeringMessages = [];
|
|
88
|
+
/** Tracks pending follow-up messages for UI display. Removed when delivered. */
|
|
89
|
+
this._followUpMessages = [];
|
|
90
|
+
/** Messages queued to be included with the next user prompt as context ("asides"). */
|
|
91
|
+
this._pendingNextTurnMessages = [];
|
|
92
|
+
// Compaction state
|
|
93
|
+
this._compactionAbortController = undefined;
|
|
94
|
+
this._autoCompactionAbortController = undefined;
|
|
95
|
+
this._stopAfterTurnRequested = false;
|
|
96
|
+
/** An extension cancelled a mid-turn compaction; skip further mid-turn checks this run. */
|
|
97
|
+
this._midTurnCompactionDeclined = false;
|
|
98
|
+
this._overflowRecoveryAttempted = false;
|
|
99
|
+
// Branch summarization state
|
|
100
|
+
this._branchSummaryAbortController = undefined;
|
|
101
|
+
// Retry state
|
|
102
|
+
this._retryAbortController = undefined;
|
|
103
|
+
this._retryAttempt = 0;
|
|
104
|
+
// Bash execution state
|
|
105
|
+
this._bashAbortControllers = new Set();
|
|
106
|
+
this._pendingBashMessages = [];
|
|
107
|
+
this._turnIndex = 0;
|
|
108
|
+
this._baseToolDefinitions = new Map();
|
|
109
|
+
this._extensionMode = "print";
|
|
110
|
+
// Tool registry for extension getTools/setTools
|
|
111
|
+
this._toolRegistry = new Map();
|
|
112
|
+
this._toolDefinitions = new Map();
|
|
113
|
+
this._toolPromptSnippets = new Map();
|
|
114
|
+
this._toolPromptGuidelines = new Map();
|
|
115
|
+
// Base system prompt (without extension appends) - used to apply fresh appends each turn
|
|
116
|
+
this._baseSystemPrompt = "";
|
|
117
|
+
// Track last assistant message for auto-compaction check
|
|
118
|
+
this._lastAssistantMessage = undefined;
|
|
119
|
+
/** Internal handler for agent events - shared by subscribe and reconnect */
|
|
120
|
+
this._handleAgentEvent = async (event) => {
|
|
121
|
+
// When a user message starts, check if it's from either queue and remove it BEFORE emitting
|
|
122
|
+
// This ensures the UI sees the updated queue state
|
|
123
|
+
if (event.type === "message_start" && event.message.role === "user") {
|
|
124
|
+
this._overflowRecoveryAttempted = false;
|
|
125
|
+
const messageText = contentText(event.message.content, "");
|
|
126
|
+
if (messageText) {
|
|
127
|
+
// Check steering queue first
|
|
128
|
+
const steeringIndex = this._steeringMessages.indexOf(messageText);
|
|
129
|
+
if (steeringIndex !== -1) {
|
|
130
|
+
this._steeringMessages.splice(steeringIndex, 1);
|
|
131
|
+
this._emitQueueUpdate();
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// Check follow-up queue
|
|
135
|
+
const followUpIndex = this._followUpMessages.indexOf(messageText);
|
|
136
|
+
if (followUpIndex !== -1) {
|
|
137
|
+
this._followUpMessages.splice(followUpIndex, 1);
|
|
138
|
+
this._emitQueueUpdate();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Emit to extensions first
|
|
144
|
+
await this._emitExtensionEvent(event);
|
|
145
|
+
// Notify all listeners
|
|
146
|
+
this._emit(event.type === "agent_end" ? { ...event, willRetry: this._willRetryAfterAgentEnd(event) } : event);
|
|
147
|
+
// Handle session persistence
|
|
148
|
+
if (event.type === "message_end") {
|
|
149
|
+
// Check if this is a custom message from extensions
|
|
150
|
+
if (event.message.role === "custom") {
|
|
151
|
+
// Persist as CustomMessageEntry
|
|
152
|
+
this.sessionManager.appendCustomMessageEntry(event.message.customType, event.message.content, event.message.display, event.message.details);
|
|
153
|
+
}
|
|
154
|
+
else if (event.message.role === "user" ||
|
|
155
|
+
event.message.role === "assistant" ||
|
|
156
|
+
event.message.role === "toolResult") {
|
|
157
|
+
// Regular LLM message - persist as SessionMessageEntry
|
|
158
|
+
this.sessionManager.appendMessage(event.message);
|
|
159
|
+
}
|
|
160
|
+
// Other message types (bashExecution, compactionSummary, branchSummary) are persisted elsewhere
|
|
161
|
+
// Track assistant message for auto-compaction (checked on agent_end)
|
|
162
|
+
if (event.message.role === "assistant") {
|
|
163
|
+
this._lastAssistantMessage = event.message;
|
|
164
|
+
const assistantMsg = event.message;
|
|
165
|
+
if (assistantMsg.stopReason !== "error" && assistantMsg.stopReason !== "length") {
|
|
166
|
+
this._overflowRecoveryAttempted = false;
|
|
167
|
+
}
|
|
168
|
+
// Reset retry counter immediately on successful assistant response
|
|
169
|
+
// This prevents accumulation across multiple LLM calls within a turn
|
|
170
|
+
if (assistantMsg.stopReason !== "error" && this._retryAttempt > 0) {
|
|
171
|
+
this._emit({
|
|
172
|
+
type: "auto_retry_end",
|
|
173
|
+
success: true,
|
|
174
|
+
attempt: this._retryAttempt,
|
|
175
|
+
});
|
|
176
|
+
this._retryAttempt = 0;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
};
|
|
144
181
|
this.agent = config.agent;
|
|
145
182
|
this.sessionManager = config.sessionManager;
|
|
146
183
|
this.settingsManager = config.settingsManager;
|
|
@@ -181,7 +218,9 @@ export class AgentSession {
|
|
|
181
218
|
throw error;
|
|
182
219
|
}
|
|
183
220
|
if (result && (result.auth.apiKey || result.auth.headers)) {
|
|
221
|
+
const requestModel = result.auth.baseUrl ? { ...model, baseUrl: result.auth.baseUrl } : model;
|
|
184
222
|
return {
|
|
223
|
+
model: requestModel,
|
|
185
224
|
apiKey: result.auth.apiKey,
|
|
186
225
|
headers: withoutDeletedHeaders(result.auth.headers),
|
|
187
226
|
env: result.env,
|
|
@@ -201,12 +240,18 @@ export class AgentSession {
|
|
|
201
240
|
}
|
|
202
241
|
try {
|
|
203
242
|
const result = await this._modelRuntime.getAuth(model);
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
243
|
+
if (!result)
|
|
244
|
+
return { model };
|
|
245
|
+
const requestModel = result.auth.baseUrl ? { ...model, baseUrl: result.auth.baseUrl } : model;
|
|
246
|
+
return {
|
|
247
|
+
model: requestModel,
|
|
248
|
+
apiKey: result.auth.apiKey,
|
|
249
|
+
headers: withoutDeletedHeaders(result.auth.headers),
|
|
250
|
+
env: result.env,
|
|
251
|
+
};
|
|
207
252
|
}
|
|
208
253
|
catch {
|
|
209
|
-
return {};
|
|
254
|
+
return { model };
|
|
210
255
|
}
|
|
211
256
|
}
|
|
212
257
|
/**
|
|
@@ -240,27 +285,31 @@ export class AgentSession {
|
|
|
240
285
|
};
|
|
241
286
|
this.agent.afterToolCall = async ({ toolCall, args, result, isError }) => {
|
|
242
287
|
const runner = this._extensionRunner;
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
288
|
+
const hookResult = runner.hasHandlers("tool_result")
|
|
289
|
+
? await runner.emitToolResult({
|
|
290
|
+
type: "tool_result",
|
|
291
|
+
toolName: toolCall.name,
|
|
292
|
+
toolCallId: toolCall.id,
|
|
293
|
+
input: args,
|
|
294
|
+
content: result.content,
|
|
295
|
+
details: result.details,
|
|
296
|
+
isError,
|
|
297
|
+
usage: result.usage,
|
|
298
|
+
})
|
|
299
|
+
: undefined;
|
|
300
|
+
const content = hookResult?.content ?? result.content ?? [];
|
|
301
|
+
// Runs after the extension hook so images injected or replaced by extensions are normalized too.
|
|
302
|
+
const normalizedContent = await normalizeToolResultImages(content, {
|
|
303
|
+
autoResizeImages: this.settingsManager.getImageAutoResize(),
|
|
255
304
|
});
|
|
256
|
-
if (!hookResult) {
|
|
305
|
+
if (!hookResult && normalizedContent === content) {
|
|
257
306
|
return undefined;
|
|
258
307
|
}
|
|
259
308
|
return {
|
|
260
|
-
content:
|
|
261
|
-
details: hookResult
|
|
262
|
-
isError: hookResult
|
|
263
|
-
usage: hookResult
|
|
309
|
+
content: normalizedContent,
|
|
310
|
+
details: hookResult?.details,
|
|
311
|
+
isError: hookResult?.isError ?? isError,
|
|
312
|
+
usage: hookResult?.usage,
|
|
264
313
|
};
|
|
265
314
|
};
|
|
266
315
|
}
|
|
@@ -344,70 +393,6 @@ export class AgentSession {
|
|
|
344
393
|
this._resolveIdleWaitIfIdle();
|
|
345
394
|
}
|
|
346
395
|
}
|
|
347
|
-
// Track last assistant message for auto-compaction check
|
|
348
|
-
_lastAssistantMessage = undefined;
|
|
349
|
-
/** Internal handler for agent events - shared by subscribe and reconnect */
|
|
350
|
-
_handleAgentEvent = async (event) => {
|
|
351
|
-
// When a user message starts, check if it's from either queue and remove it BEFORE emitting
|
|
352
|
-
// This ensures the UI sees the updated queue state
|
|
353
|
-
if (event.type === "message_start" && event.message.role === "user") {
|
|
354
|
-
this._overflowRecoveryAttempted = false;
|
|
355
|
-
const messageText = contentText(event.message.content, "");
|
|
356
|
-
if (messageText) {
|
|
357
|
-
// Check steering queue first
|
|
358
|
-
const steeringIndex = this._steeringMessages.indexOf(messageText);
|
|
359
|
-
if (steeringIndex !== -1) {
|
|
360
|
-
this._steeringMessages.splice(steeringIndex, 1);
|
|
361
|
-
this._emitQueueUpdate();
|
|
362
|
-
}
|
|
363
|
-
else {
|
|
364
|
-
// Check follow-up queue
|
|
365
|
-
const followUpIndex = this._followUpMessages.indexOf(messageText);
|
|
366
|
-
if (followUpIndex !== -1) {
|
|
367
|
-
this._followUpMessages.splice(followUpIndex, 1);
|
|
368
|
-
this._emitQueueUpdate();
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
// Emit to extensions first
|
|
374
|
-
await this._emitExtensionEvent(event);
|
|
375
|
-
// Notify all listeners
|
|
376
|
-
this._emit(event.type === "agent_end" ? { ...event, willRetry: this._willRetryAfterAgentEnd(event) } : event);
|
|
377
|
-
// Handle session persistence
|
|
378
|
-
if (event.type === "message_end") {
|
|
379
|
-
// Check if this is a custom message from extensions
|
|
380
|
-
if (event.message.role === "custom") {
|
|
381
|
-
// Persist as CustomMessageEntry
|
|
382
|
-
this.sessionManager.appendCustomMessageEntry(event.message.customType, event.message.content, event.message.display, event.message.details);
|
|
383
|
-
}
|
|
384
|
-
else if (event.message.role === "user" ||
|
|
385
|
-
event.message.role === "assistant" ||
|
|
386
|
-
event.message.role === "toolResult") {
|
|
387
|
-
// Regular LLM message - persist as SessionMessageEntry
|
|
388
|
-
this.sessionManager.appendMessage(event.message);
|
|
389
|
-
}
|
|
390
|
-
// Other message types (bashExecution, compactionSummary, branchSummary) are persisted elsewhere
|
|
391
|
-
// Track assistant message for auto-compaction (checked on agent_end)
|
|
392
|
-
if (event.message.role === "assistant") {
|
|
393
|
-
this._lastAssistantMessage = event.message;
|
|
394
|
-
const assistantMsg = event.message;
|
|
395
|
-
if (assistantMsg.stopReason !== "error") {
|
|
396
|
-
this._overflowRecoveryAttempted = false;
|
|
397
|
-
}
|
|
398
|
-
// Reset retry counter immediately on successful assistant response
|
|
399
|
-
// This prevents accumulation across multiple LLM calls within a turn
|
|
400
|
-
if (assistantMsg.stopReason !== "error" && this._retryAttempt > 0) {
|
|
401
|
-
this._emit({
|
|
402
|
-
type: "auto_retry_end",
|
|
403
|
-
success: true,
|
|
404
|
-
attempt: this._retryAttempt,
|
|
405
|
-
});
|
|
406
|
-
this._retryAttempt = 0;
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
};
|
|
411
396
|
_willRetryAfterAgentEnd(event) {
|
|
412
397
|
const settings = this.settingsManager.getRetrySettings();
|
|
413
398
|
if (!settings.enabled || this._retryAttempt >= settings.maxRetries) {
|
|
@@ -552,26 +537,13 @@ export class AgentSession {
|
|
|
552
537
|
}
|
|
553
538
|
};
|
|
554
539
|
}
|
|
555
|
-
/**
|
|
556
|
-
* Temporarily disconnect from agent events.
|
|
557
|
-
* User listeners are preserved and will receive events again after resubscribe().
|
|
558
|
-
* Used internally during operations that need to pause event processing.
|
|
559
|
-
*/
|
|
540
|
+
/** Disconnect from agent events during disposal. */
|
|
560
541
|
_disconnectFromAgent() {
|
|
561
542
|
if (this._unsubscribeAgent) {
|
|
562
543
|
this._unsubscribeAgent();
|
|
563
544
|
this._unsubscribeAgent = undefined;
|
|
564
545
|
}
|
|
565
546
|
}
|
|
566
|
-
/**
|
|
567
|
-
* Reconnect to agent events after _disconnectFromAgent().
|
|
568
|
-
* Preserves all existing listeners.
|
|
569
|
-
*/
|
|
570
|
-
_reconnectToAgent() {
|
|
571
|
-
if (this._unsubscribeAgent)
|
|
572
|
-
return; // Already connected
|
|
573
|
-
this._unsubscribeAgent = this.agent.subscribe(this._handleAgentEvent);
|
|
574
|
-
}
|
|
575
547
|
/**
|
|
576
548
|
* Remove all listeners and disconnect from agent.
|
|
577
549
|
* Call this when completely done with the session.
|
|
@@ -839,6 +811,9 @@ export class AgentSession {
|
|
|
839
811
|
return;
|
|
840
812
|
}
|
|
841
813
|
}
|
|
814
|
+
if (this._compactionAbortController !== undefined) {
|
|
815
|
+
throw new Error("Cannot submit a prompt while compaction is in progress. Wait for compaction to finish and retry.");
|
|
816
|
+
}
|
|
842
817
|
// Emit input event for extension interception (before skill/template expansion)
|
|
843
818
|
let currentText = text;
|
|
844
819
|
let currentImages = options?.images;
|
|
@@ -1260,11 +1235,8 @@ export class AgentSession {
|
|
|
1260
1235
|
return this._cycleAvailableModel(direction);
|
|
1261
1236
|
}
|
|
1262
1237
|
async _cycleScopedModel(direction) {
|
|
1263
|
-
const
|
|
1264
|
-
|
|
1265
|
-
auth: await this._modelRuntime.checkAuth(scoped.model.provider),
|
|
1266
|
-
})));
|
|
1267
|
-
const scopedModels = checks.filter(({ auth }) => auth !== undefined).map(({ scoped }) => scoped);
|
|
1238
|
+
const availableIds = new Set(this._modelRuntime.getAvailableSnapshot().map((model) => `${model.provider}\0${model.id}`));
|
|
1239
|
+
const scopedModels = this._scopedModels.filter((scoped) => availableIds.has(`${scoped.model.provider}\0${scoped.model.id}`));
|
|
1268
1240
|
if (scopedModels.length <= 1)
|
|
1269
1241
|
return undefined;
|
|
1270
1242
|
const currentModel = this.model;
|
|
@@ -1288,7 +1260,7 @@ export class AgentSession {
|
|
|
1288
1260
|
return { model: next.model, thinkingLevel: this.thinkingLevel, isScoped: true };
|
|
1289
1261
|
}
|
|
1290
1262
|
async _cycleAvailableModel(direction) {
|
|
1291
|
-
const availableModels =
|
|
1263
|
+
const availableModels = this._modelRuntime.getAvailableSnapshot();
|
|
1292
1264
|
if (availableModels.length <= 1)
|
|
1293
1265
|
return undefined;
|
|
1294
1266
|
const currentModel = this.model;
|
|
@@ -1408,7 +1380,6 @@ export class AgentSession {
|
|
|
1408
1380
|
* @param customInstructions Optional instructions for the compaction summary
|
|
1409
1381
|
*/
|
|
1410
1382
|
async compact(customInstructions) {
|
|
1411
|
-
this._disconnectFromAgent();
|
|
1412
1383
|
await this.abort();
|
|
1413
1384
|
this._compactionAbortController = new AbortController();
|
|
1414
1385
|
this._emit({ type: "compaction_start", reason: "manual" });
|
|
@@ -1416,7 +1387,7 @@ export class AgentSession {
|
|
|
1416
1387
|
if (!this.model) {
|
|
1417
1388
|
throw new Error(formatNoModelSelectedMessage());
|
|
1418
1389
|
}
|
|
1419
|
-
const { apiKey, headers, env } = await this._getSummarizationRequestAuth(this.model);
|
|
1390
|
+
const { model: requestModel, apiKey, headers, env } = await this._getSummarizationRequestAuth(this.model);
|
|
1420
1391
|
const pathEntries = this.sessionManager.getBranch();
|
|
1421
1392
|
const settings = this.settingsManager.getCompactionSettings();
|
|
1422
1393
|
const preparation = prepareCompaction(pathEntries, settings);
|
|
@@ -1464,7 +1435,7 @@ export class AgentSession {
|
|
|
1464
1435
|
}
|
|
1465
1436
|
else {
|
|
1466
1437
|
// Generate compaction result
|
|
1467
|
-
const result = await compact(preparation,
|
|
1438
|
+
const result = await compact(preparation, requestModel, apiKey, headers, customInstructions, this._compactionAbortController.signal, this.thinkingLevel, this.agent.streamFunction, env, this.settingsManager.getRetrySettings(), this._summarizationRetryCallbacks({ source: "compaction", reason: "manual" }));
|
|
1468
1439
|
summary = result.summary;
|
|
1469
1440
|
firstKeptEntryId = result.firstKeptEntryId;
|
|
1470
1441
|
tokensBefore = result.tokensBefore;
|
|
@@ -1498,6 +1469,8 @@ export class AgentSession {
|
|
|
1498
1469
|
usage,
|
|
1499
1470
|
details,
|
|
1500
1471
|
};
|
|
1472
|
+
// compaction_end listeners may submit queued prompts, so expose idle state before notifying them.
|
|
1473
|
+
this._compactionAbortController = undefined;
|
|
1501
1474
|
this._emit({
|
|
1502
1475
|
type: "compaction_end",
|
|
1503
1476
|
reason: "manual",
|
|
@@ -1510,6 +1483,7 @@ export class AgentSession {
|
|
|
1510
1483
|
catch (error) {
|
|
1511
1484
|
const message = error instanceof Error ? error.message : String(error);
|
|
1512
1485
|
const aborted = message === "Compaction cancelled" || (error instanceof Error && error.name === "AbortError");
|
|
1486
|
+
this._compactionAbortController = undefined;
|
|
1513
1487
|
this._emit({
|
|
1514
1488
|
type: "compaction_end",
|
|
1515
1489
|
reason: "manual",
|
|
@@ -1522,7 +1496,6 @@ export class AgentSession {
|
|
|
1522
1496
|
}
|
|
1523
1497
|
finally {
|
|
1524
1498
|
this._compactionAbortController = undefined;
|
|
1525
|
-
this._reconnectToAgent();
|
|
1526
1499
|
}
|
|
1527
1500
|
}
|
|
1528
1501
|
/**
|
|
@@ -1597,7 +1570,8 @@ export class AgentSession {
|
|
|
1597
1570
|
* Called after agent_end and before prompt submission.
|
|
1598
1571
|
*
|
|
1599
1572
|
* Two cases:
|
|
1600
|
-
* 1.
|
|
1573
|
+
* 1. Recoverable failure: LLM returned context overflow or stopped below its desired output limit;
|
|
1574
|
+
* remove the assistant message, compact, and auto-retry once
|
|
1601
1575
|
* 2. Threshold: Context over threshold, compact, NO auto-retry (user continues manually)
|
|
1602
1576
|
*
|
|
1603
1577
|
* @param assistantMessage The assistant message to check
|
|
@@ -1624,11 +1598,13 @@ export class AgentSession {
|
|
|
1624
1598
|
if (assistantIsFromBeforeCompaction) {
|
|
1625
1599
|
return false;
|
|
1626
1600
|
}
|
|
1627
|
-
// Case 1:
|
|
1628
|
-
//
|
|
1629
|
-
//
|
|
1630
|
-
//
|
|
1631
|
-
|
|
1601
|
+
// Case 1: Recoverable failure. Explicit/silent context overflow still uses context metadata.
|
|
1602
|
+
// A length stop is recoverable when output ended below the model's original desired limit,
|
|
1603
|
+
// independent of the configured context size or any context-clamped provider request limit.
|
|
1604
|
+
// A successful response over the configured window should compact but must not retry: the
|
|
1605
|
+
// assistant answer already completed and agent.continue() cannot continue from an assistant.
|
|
1606
|
+
const recoverableLength = sameModel && isRecoverableLength(assistantMessage, this.model?.maxTokens ?? 0);
|
|
1607
|
+
if (sameModel && (isContextOverflow(assistantMessage, contextWindow) || recoverableLength)) {
|
|
1632
1608
|
const willRetry = assistantMessage.stopReason !== "stop";
|
|
1633
1609
|
if (!willRetry) {
|
|
1634
1610
|
return await this._runAutoCompaction("overflow", false, timing);
|
|
@@ -1646,8 +1622,8 @@ export class AgentSession {
|
|
|
1646
1622
|
return false;
|
|
1647
1623
|
}
|
|
1648
1624
|
this._overflowRecoveryAttempted = true;
|
|
1649
|
-
// Remove the
|
|
1650
|
-
// but
|
|
1625
|
+
// Remove the failed or truncated message from agent state. It remains in session history,
|
|
1626
|
+
// but must not be included in the compact-and-retry context.
|
|
1651
1627
|
const messages = this.agent.state.messages;
|
|
1652
1628
|
if (messages.length > 0 && messages[messages.length - 1].role === "assistant") {
|
|
1653
1629
|
this.agent.state.messages = messages.slice(0, -1);
|
|
@@ -1781,14 +1757,20 @@ export class AgentSession {
|
|
|
1781
1757
|
details = extensionCompaction.details;
|
|
1782
1758
|
}
|
|
1783
1759
|
else {
|
|
1760
|
+
let requestModel = model;
|
|
1784
1761
|
let apiKey;
|
|
1785
1762
|
let headers;
|
|
1786
1763
|
let env;
|
|
1787
1764
|
if (streamFunction === streamSimple) {
|
|
1788
|
-
({ apiKey, headers, env } = await this._getRequiredRequestAuth(model));
|
|
1765
|
+
({ model: requestModel, apiKey, headers, env } = await this._getRequiredRequestAuth(model));
|
|
1789
1766
|
}
|
|
1790
1767
|
else {
|
|
1791
|
-
({
|
|
1768
|
+
({
|
|
1769
|
+
model: requestModel,
|
|
1770
|
+
apiKey,
|
|
1771
|
+
headers,
|
|
1772
|
+
env,
|
|
1773
|
+
} = await this._getSummarizationRequestAuth(model, streamFunction));
|
|
1792
1774
|
}
|
|
1793
1775
|
if (controller.signal.aborted) {
|
|
1794
1776
|
this._emit({
|
|
@@ -1801,7 +1783,7 @@ export class AgentSession {
|
|
|
1801
1783
|
return { compacted: false, shouldContinue: false };
|
|
1802
1784
|
}
|
|
1803
1785
|
// Generate compaction result
|
|
1804
|
-
const compactResult = await compact(preparation,
|
|
1786
|
+
const compactResult = await compact(preparation, requestModel, apiKey, headers, undefined, controller.signal, thinkingLevel, streamFunction, env, retrySettings, this._summarizationRetryCallbacks({ source: "compaction", reason }));
|
|
1805
1787
|
summary = compactResult.summary;
|
|
1806
1788
|
firstKeptEntryId = compactResult.firstKeptEntryId;
|
|
1807
1789
|
tokensBefore = compactResult.tokensBefore;
|
|
@@ -1825,7 +1807,13 @@ export class AgentSession {
|
|
|
1825
1807
|
if (willRetry) {
|
|
1826
1808
|
const messages = this.agent.state.messages;
|
|
1827
1809
|
const lastMsg = messages[messages.length - 1];
|
|
1828
|
-
|
|
1810
|
+
// The overflow response was persisted on message_end before _checkCompaction() removed it
|
|
1811
|
+
// from agent state. Rebuilding state from the new compaction can restore that kept entry,
|
|
1812
|
+
// leaving an assistant as the final message. agent.continue() rejects that state, so remove
|
|
1813
|
+
// the retriable error or truncated-length response again before continuing the interrupted turn.
|
|
1814
|
+
if (lastMsg?.role === "assistant" &&
|
|
1815
|
+
(lastMsg.stopReason === "error" ||
|
|
1816
|
+
lastMsg.stopReason === "length")) {
|
|
1829
1817
|
this.agent.state.messages = messages.slice(0, -1);
|
|
1830
1818
|
}
|
|
1831
1819
|
}
|
|
@@ -2219,8 +2207,10 @@ export class AgentSession {
|
|
|
2219
2207
|
});
|
|
2220
2208
|
}
|
|
2221
2209
|
async reload(options) {
|
|
2222
|
-
const
|
|
2223
|
-
|
|
2210
|
+
const oldRunner = this._extensionRunner;
|
|
2211
|
+
const previousFlagValues = oldRunner.getFlagValues();
|
|
2212
|
+
await emitSessionShutdownEvent(oldRunner, { type: "session_shutdown", reason: "reload" });
|
|
2213
|
+
oldRunner.invalidate();
|
|
2224
2214
|
await this.settingsManager.reload();
|
|
2225
2215
|
this.syncQueueModesFromSettings();
|
|
2226
2216
|
resetApiProviders();
|
|
@@ -2539,10 +2529,10 @@ export class AgentSession {
|
|
|
2539
2529
|
let summaryUsage;
|
|
2540
2530
|
if (options.summarize && entriesToSummarize.length > 0 && !extensionSummary) {
|
|
2541
2531
|
const model = this.model;
|
|
2542
|
-
const { apiKey, headers, env } = await this._getSummarizationRequestAuth(model);
|
|
2532
|
+
const { model: requestModel, apiKey, headers, env } = await this._getSummarizationRequestAuth(model);
|
|
2543
2533
|
const branchSummarySettings = this.settingsManager.getBranchSummarySettings();
|
|
2544
2534
|
const result = await generateBranchSummary(entriesToSummarize, {
|
|
2545
|
-
model,
|
|
2535
|
+
model: requestModel,
|
|
2546
2536
|
apiKey,
|
|
2547
2537
|
headers,
|
|
2548
2538
|
env,
|