openvibe 0.60.2 → 0.60.3
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/dist/cli/args.d.ts +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/file-processor.d.ts +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +1 -1
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/core/accelerated-client.d.ts +1 -1
- package/dist/core/accelerated-client.d.ts.map +1 -1
- package/dist/core/accelerated-client.js +2 -2
- package/dist/core/accelerated-client.js.map +1 -1
- package/dist/core/accelerated-stream.d.ts +1 -1
- package/dist/core/accelerated-stream.d.ts.map +1 -1
- package/dist/core/accelerated-stream.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +1 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/api-concurrency.d.ts +1 -1
- package/dist/core/api-concurrency.d.ts.map +1 -1
- package/dist/core/api-concurrency.js +3 -3
- package/dist/core/api-concurrency.js.map +1 -1
- package/dist/core/auth-storage.d.ts +2 -2
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +2 -2
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/branded-ai.d.ts +1 -1
- package/dist/core/branded-ai.d.ts.map +1 -1
- package/dist/core/branded-ai.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -2
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +1 -1
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +2 -2
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +1 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +2 -2
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/context-manager.d.ts +1 -1
- package/dist/core/context-manager.d.ts.map +1 -1
- package/dist/core/context-manager.js.map +1 -1
- package/dist/core/context-provider-interface.d.ts +1 -1
- package/dist/core/context-provider-interface.d.ts.map +1 -1
- package/dist/core/context-provider-interface.js.map +1 -1
- package/dist/core/context-provider-registry.d.ts +1 -1
- package/dist/core/context-provider-registry.d.ts.map +1 -1
- package/dist/core/context-provider-registry.js.map +1 -1
- package/dist/core/defaults.d.ts +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/export-html/index.d.ts +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/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +14 -14
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +3 -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 +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/keybindings.d.ts +1 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +1 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/large-context-provider.d.ts +1 -1
- package/dist/core/large-context-provider.d.ts.map +1 -1
- package/dist/core/large-context-provider.js.map +1 -1
- package/dist/core/messages.d.ts +3 -3
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +1 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +2 -2
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/response-accelerator.d.ts +1 -1
- package/dist/core/response-accelerator.d.ts.map +1 -1
- package/dist/core/response-accelerator.js.map +1 -1
- package/dist/core/sdk.d.ts +2 -2
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +2 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt.d.ts +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/fast-executor.d.ts +2 -2
- package/dist/core/tools/fast-executor.d.ts.map +1 -1
- package/dist/core/tools/fast-executor.js.map +1 -1
- package/dist/core/tools/find.d.ts +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +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 +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 +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/read.d.ts +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/write.d.ts +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +1 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +1 -1
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +1 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +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 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +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 -1
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +1 -1
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +1 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +1 -1
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +1 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +1 -1
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/onboarding-wizard.d.ts +2 -2
- package/dist/modes/interactive/components/onboarding-wizard.d.ts.map +1 -1
- package/dist/modes/interactive/components/onboarding-wizard.js +1 -1
- package/dist/modes/interactive/components/onboarding-wizard.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 +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +1 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +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 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/skills-selector.d.ts +1 -1
- package/dist/modes/interactive/components/skills-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/skills-selector.js +1 -1
- package/dist/modes/interactive/components/skills-selector.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +1 -1
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +2 -2
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +1 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +1 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +1 -1
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +1 -1
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +1 -1
- 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 +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +1 -1
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +2 -2
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +1 -1
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +2 -2
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +2 -2
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/image-resize.d.ts +1 -1
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js.map +1 -1
- package/examples/extensions/antigravity-image-gen.ts +1 -1
- package/examples/extensions/built-in-tool-renderer.ts +1 -1
- package/examples/extensions/custom-compaction.ts +1 -1
- package/examples/extensions/custom-footer.ts +2 -2
- package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
- package/examples/extensions/custom-provider-qwen-cli/index.ts +1 -1
- package/examples/extensions/doom-overlay/doom-component.ts +2 -2
- package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
- package/examples/extensions/handoff.ts +1 -1
- package/examples/extensions/hello.ts +1 -1
- package/examples/extensions/message-renderer.ts +1 -1
- package/examples/extensions/minimal-mode.ts +1 -1
- package/examples/extensions/modal-editor.ts +1 -1
- package/examples/extensions/overlay-qa-tests.ts +2 -2
- package/examples/extensions/overlay-test.ts +1 -1
- package/examples/extensions/plan-mode/index.ts +3 -3
- package/examples/extensions/preset.ts +1 -1
- package/examples/extensions/qna.ts +1 -1
- package/examples/extensions/question.ts +1 -1
- package/examples/extensions/questionnaire.ts +1 -1
- package/examples/extensions/snake.ts +1 -1
- package/examples/extensions/space-invaders.ts +1 -1
- package/examples/extensions/subagent/index.ts +4 -4
- package/examples/extensions/summarize.ts +2 -2
- package/examples/extensions/todo.ts +2 -2
- package/examples/extensions/tool-override.ts +1 -1
- package/examples/extensions/tools.ts +1 -1
- package/examples/extensions/truncated-tool.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/02-custom-model.ts +1 -1
- package/examples/sdk/12-full-control.ts +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"large-context-provider.js","sourceRoot":"","sources":["../../src/core/large-context-provider.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Large Context Provider Implementation\n * Provides 1M context window support for compatible models\n * This is a third-party architecture implementation\n */\n\nimport type { Api, Model } from \"@mariozechner/pi-ai\";\nimport type {\n\tIContextProvider,\n\tIModelContextConfig,\n\tIOverflowResult,\n\tIProcessedContext,\n} from \"./context-provider-interface.js\";\n\n/**\n * Model capability flags\n */\ninterface ModelCapabilities {\n\tsupportsStreaming: boolean;\n\tsupportsVision: boolean;\n\tsupportsFunctions: boolean;\n}\n\n/**\n * Large context model definitions\n */\nexport const LARGE_CONTEXT_DEFINITIONS: Record<\n\tstring,\n\t{\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t\tcapabilities: ModelCapabilities;\n\t}\n> = {\n\t// ═══════════════════════════════════════════════════════════════\n\t// Google Gemini - 1M Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"gemini-1.5-pro\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-1.5-flash\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-2.0-flash\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-2.0-pro\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Anthropic Claude - 200K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"claude-3-opus-20240229\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-sonnet-20240229\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-haiku-20240307\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-5-sonnet-20241022\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-5-haiku-20241022\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"claude-sonnet-4-20250514\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// OpenAI - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"gpt-4-turbo\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4-turbo-preview\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"gpt-4o\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4o-mini\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4-0125-preview\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// DeepSeek - 64K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"deepseek-chat\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"deepseek-coder\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"deepseek-reasoner\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Alibaba Qwen - Up to 1M Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"qwen-2.5-72b-instruct\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"qwen-2.5-32b-instruct\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"qwen-max\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 65536,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"qwen-max-longcontext\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 65536,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Moonshot Kimi - Up to 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"moonshot-v1-8k\": {\n\t\tcontextWindow: 8192,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"moonshot-v1-32k\": {\n\t\tcontextWindow: 32768,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"moonshot-v1-128k\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Meta Llama 3.1 - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"llama-3.1-405b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.1-70b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.1-8b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Mistral - Up to 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"mistral-large-2407\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"mistral-large-2402\": {\n\t\tcontextWindow: 32000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// 01.AI Yi - Up to 32K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"yi-lightning\": {\n\t\tcontextWindow: 16384,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"yi-large\": {\n\t\tcontextWindow: 32768,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Zhipu GLM - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"glm-4\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"glm-4-plus\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Groq Models - Varies\n\t// ═══════════════════════════════════════════════════════════════\n\t\"llama-3.3-70b-versatile\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.3-70b-specdec\": {\n\t\tcontextWindow: 8192,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: false },\n\t},\n};\n\n/**\n * Large Context Provider\n * Implements the IContextProvider interface for 1M context support\n */\nexport class LargeContextProvider implements IContextProvider {\n\treadonly name = \"large-context\";\n\treadonly version = \"1.0.0\";\n\n\tprivate customModels: Map<string, { contextWindow: number; maxTokens: number; capabilities: ModelCapabilities }> =\n\t\tnew Map();\n\n\t/**\n\t * Check if this provider supports a given model\n\t */\n\tsupportsModel(modelId: string): boolean {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\t\treturn normalized in LARGE_CONTEXT_DEFINITIONS || this.customModels.has(normalized);\n\t}\n\n\t/**\n\t * Get context window for a model\n\t */\n\tgetContextWindow(modelId: string): number {\n\t\treturn this.getContextConfig(modelId).contextWindow;\n\t}\n\n\t/**\n\t * Get max output tokens for a model\n\t */\n\tgetMaxTokens(modelId: string): number {\n\t\treturn this.getContextConfig(modelId).maxTokens;\n\t}\n\n\t/**\n\t * Get full context configuration for a model\n\t */\n\tgetContextConfig(modelId: string): IModelContextConfig {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\n\t\t// Check custom models first\n\t\tconst custom = this.customModels.get(normalized);\n\t\tif (custom) {\n\t\t\treturn {\n\t\t\t\tcontextWindow: custom.contextWindow,\n\t\t\t\tmaxTokens: custom.maxTokens,\n\t\t\t\tsupportsStreaming: custom.capabilities.supportsStreaming,\n\t\t\t\tsupportsVision: custom.capabilities.supportsVision,\n\t\t\t\tsupportsFunctions: custom.capabilities.supportsFunctions,\n\t\t\t};\n\t\t}\n\n\t\t// Check known models\n\t\tconst definition = LARGE_CONTEXT_DEFINITIONS[normalized];\n\t\tif (definition) {\n\t\t\treturn {\n\t\t\t\tcontextWindow: definition.contextWindow,\n\t\t\t\tmaxTokens: definition.maxTokens,\n\t\t\t\tsupportsStreaming: definition.capabilities.supportsStreaming,\n\t\t\t\tsupportsVision: definition.capabilities.supportsVision,\n\t\t\t\tsupportsFunctions: definition.capabilities.supportsFunctions,\n\t\t\t};\n\t\t}\n\n\t\t// Default: 1M context for unknown models\n\t\treturn {\n\t\t\tcontextWindow: 1000000,\n\t\t\tmaxTokens: 65536,\n\t\t\tsupportsStreaming: true,\n\t\t\tsupportsVision: true,\n\t\t\tsupportsFunctions: true,\n\t\t};\n\t}\n\n\t/**\n\t * Process messages before sending to API\n\t */\n\tprocessMessages(messages: unknown[], modelId: string): IProcessedContext {\n\t\tconst config = this.getContextConfig(modelId);\n\t\tconst messageStr = JSON.stringify(messages);\n\t\tconst estimatedTokens = Math.ceil(messageStr.length / 4);\n\n\t\treturn {\n\t\t\tmessages,\n\t\t\ttokenCount: estimatedTokens,\n\t\t\tmodified: false,\n\t\t\tmetadata: {\n\t\t\t\ttruncated: estimatedTokens > config.contextWindow,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Handle context overflow\n\t */\n\thandleOverflow(messages: unknown[], modelId: string, tokenCount: number): IOverflowResult {\n\t\tconst config = this.getContextConfig(modelId);\n\n\t\tif (tokenCount <= config.contextWindow) {\n\t\t\treturn { action: \"truncate\", messages };\n\t\t}\n\n\t\t// For large context models, try to keep as much as possible\n\t\tif (config.contextWindow >= 100000) {\n\t\t\t// For 1M context, we likely have enough space\n\t\t\treturn {\n\t\t\t\taction: \"truncate\",\n\t\t\t\tmessages,\n\t\t\t\tmetadata: {\n\t\t\t\t\toriginalTokens: tokenCount,\n\t\t\t\t\tcontextWindow: config.contextWindow,\n\t\t\t\t\tkeepRatio: config.contextWindow / tokenCount,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\taction: \"summarize\",\n\t\t\tmetadata: {\n\t\t\t\toriginalTokens: tokenCount,\n\t\t\t\tcontextWindow: config.contextWindow,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Register a custom model with context configuration\n\t */\n\tregisterCustomModel(\n\t\tmodelId: string,\n\t\tconfig: {\n\t\t\tcontextWindow: number;\n\t\t\tmaxTokens: number;\n\t\t\tsupportsVision?: boolean;\n\t\t\tsupportsFunctions?: boolean;\n\t\t},\n\t): void {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\t\tthis.customModels.set(normalized, {\n\t\t\tcontextWindow: config.contextWindow,\n\t\t\tmaxTokens: config.maxTokens,\n\t\t\tcapabilities: {\n\t\t\t\tsupportsStreaming: true,\n\t\t\t\tsupportsVision: config.supportsVision ?? true,\n\t\t\t\tsupportsFunctions: config.supportsFunctions ?? true,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Enhance a model with large context configuration\n\t */\n\tenhanceModel<API extends Api>(model: Model<API>): Model<API> {\n\t\tconst config = this.getContextConfig(model.id);\n\n\t\treturn {\n\t\t\t...model,\n\t\t\tcontextWindow: config.contextWindow,\n\t\t\tmaxTokens: config.maxTokens,\n\t\t};\n\t}\n\n\t/**\n\t * Get all known large context models\n\t */\n\tgetKnownModels(): string[] {\n\t\treturn Object.keys(LARGE_CONTEXT_DEFINITIONS);\n\t}\n\n\t/**\n\t * Check if a model has 1M context\n\t */\n\tisMillionContextModel(modelId: string): boolean {\n\t\tconst config = this.getContextConfig(modelId);\n\t\treturn config.contextWindow >= 1000000;\n\t}\n\n\t/**\n\t * Normalize model ID for matching\n\t */\n\tprivate normalizeModelId(modelId: string): string {\n\t\treturn modelId.toLowerCase().trim();\n\t}\n}\n\n/**\n * Singleton instance\n */\nlet largeContextProviderInstance: LargeContextProvider | null = null;\n\n/**\n * Get the singleton instance\n */\nexport function getLargeContextProvider(): LargeContextProvider {\n\tif (!largeContextProviderInstance) {\n\t\tlargeContextProviderInstance = new LargeContextProvider();\n\t}\n\treturn largeContextProviderInstance;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"large-context-provider.js","sourceRoot":"","sources":["../../src/core/large-context-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAOlC;IACH,gMAAkE;IAClE,6BAA6B;IAC7B,gMAAkE;IAClE,gBAAgB,EAAE;QACjB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,kBAAkB,EAAE;QACnB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,kBAAkB,EAAE;QACnB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,gBAAgB,EAAE;QACjB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,kCAAkC;IAClC,gMAAkE;IAClE,wBAAwB,EAAE;QACzB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,0BAA0B,EAAE;QAC3B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,yBAAyB,EAAE;QAC1B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,4BAA4B,EAAE;QAC7B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,2BAA2B,EAAE;QAC5B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,0BAA0B,EAAE;QAC3B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,wBAAwB;IACxB,gMAAkE;IAClE,aAAa,EAAE;QACd,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,qBAAqB,EAAE;QACtB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,QAAQ,EAAE;QACT,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,aAAa,EAAE;QACd,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,oBAAoB,EAAE;QACrB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,yBAAyB;IACzB,gMAAkE;IAClE,eAAe,EAAE;QAChB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,gBAAgB,EAAE;QACjB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,mBAAmB,EAAE;QACpB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,kCAAkC;IAClC,gMAAkE;IAClE,uBAAuB,EAAE;QACxB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,uBAAuB,EAAE;QACxB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,UAAU,EAAE;QACX,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,sBAAsB,EAAE;QACvB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,qCAAqC;IACrC,gMAAkE;IAClE,gBAAgB,EAAE;QACjB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,iBAAiB,EAAE;QAClB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,kBAAkB,EAAE;QACnB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,gCAAgC;IAChC,gMAAkE;IAClE,yBAAyB,EAAE;QAC1B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,wBAAwB,EAAE;QACzB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,uBAAuB,EAAE;QACxB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,+BAA+B;IAC/B,gMAAkE;IAClE,oBAAoB,EAAE;QACrB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,oBAAoB,EAAE;QACrB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,+BAA+B;IAC/B,gMAAkE;IAClE,cAAc,EAAE;QACf,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,UAAU,EAAE;QACX,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,2BAA2B;IAC3B,gMAAkE;IAClE,OAAO,EAAE;QACR,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,YAAY,EAAE;QACb,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,uBAAuB;IACvB,gMAAkE;IAClE,yBAAyB,EAAE;QAC1B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,uBAAuB,EAAE;QACxB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE;KAC1F;CACD,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACvB,IAAI,GAAG,eAAe,CAAC;IACvB,OAAO,GAAG,OAAO,CAAC;IAEnB,YAAY,GACnB,IAAI,GAAG,EAAE,CAAC;IAEX;;OAEG;IACH,aAAa,CAAC,OAAe,EAAW;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,UAAU,IAAI,yBAAyB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAAA,CACpF;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAe,EAAU;QACzC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;IAAA,CACpD;IAED;;OAEG;IACH,YAAY,CAAC,OAAe,EAAU;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;IAAA,CAChD;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAe,EAAuB;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAElD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO;gBACN,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB;gBACxD,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,cAAc;gBAClD,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB;aACxD,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO;gBACN,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB;gBAC5D,cAAc,EAAE,UAAU,CAAC,YAAY,CAAC,cAAc;gBACtD,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB;aAC5D,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,OAAO;YACN,aAAa,EAAE,OAAO;YACtB,SAAS,EAAE,KAAK;YAChB,iBAAiB,EAAE,IAAI;YACvB,cAAc,EAAE,IAAI;YACpB,iBAAiB,EAAE,IAAI;SACvB,CAAC;IAAA,CACF;IAED;;OAEG;IACH,eAAe,CAAC,QAAmB,EAAE,OAAe,EAAqB;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEzD,OAAO;YACN,QAAQ;YACR,UAAU,EAAE,eAAe;YAC3B,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE;gBACT,SAAS,EAAE,eAAe,GAAG,MAAM,CAAC,aAAa;aACjD;SACD,CAAC;IAAA,CACF;IAED;;OAEG;IACH,cAAc,CAAC,QAAmB,EAAE,OAAe,EAAE,UAAkB,EAAmB;QACzF,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,UAAU,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QACzC,CAAC;QAED,4DAA4D;QAC5D,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC;YACpC,8CAA8C;YAC9C,OAAO;gBACN,MAAM,EAAE,UAAU;gBAClB,QAAQ;gBACR,QAAQ,EAAE;oBACT,cAAc,EAAE,UAAU;oBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,SAAS,EAAE,MAAM,CAAC,aAAa,GAAG,UAAU;iBAC5C;aACD,CAAC;QACH,CAAC;QAED,OAAO;YACN,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE;gBACT,cAAc,EAAE,UAAU;gBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;aACnC;SACD,CAAC;IAAA,CACF;IAED;;OAEG;IACH,mBAAmB,CAClB,OAAe,EACf,MAKC,EACM;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE;gBACb,iBAAiB,EAAE,IAAI;gBACvB,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;gBAC7C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;aACnD;SACD,CAAC,CAAC;IAAA,CACH;IAED;;OAEG;IACH,YAAY,CAAkB,KAAiB,EAAc;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE/C,OAAO;YACN,GAAG,KAAK;YACR,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC3B,CAAC;IAAA,CACF;IAED;;OAEG;IACH,cAAc,GAAa;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAAA,CAC9C;IAED;;OAEG;IACH,qBAAqB,CAAC,OAAe,EAAW;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC;IAAA,CACvC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe,EAAU;QACjD,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAAA,CACpC;CACD;AAED;;GAEG;AACH,IAAI,4BAA4B,GAAgC,IAAI,CAAC;AAErE;;GAEG;AACH,MAAM,UAAU,uBAAuB,GAAyB;IAC/D,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACnC,4BAA4B,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,4BAA4B,CAAC;AAAA,CACpC","sourcesContent":["/**\n * Large Context Provider Implementation\n * Provides 1M context window support for compatible models\n * This is a third-party architecture implementation\n */\n\nimport type { Api, Model } from \"@boxiaolanya2008/pi-ai\";\nimport type {\n\tIContextProvider,\n\tIModelContextConfig,\n\tIOverflowResult,\n\tIProcessedContext,\n} from \"./context-provider-interface.js\";\n\n/**\n * Model capability flags\n */\ninterface ModelCapabilities {\n\tsupportsStreaming: boolean;\n\tsupportsVision: boolean;\n\tsupportsFunctions: boolean;\n}\n\n/**\n * Large context model definitions\n */\nexport const LARGE_CONTEXT_DEFINITIONS: Record<\n\tstring,\n\t{\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t\tcapabilities: ModelCapabilities;\n\t}\n> = {\n\t// ═══════════════════════════════════════════════════════════════\n\t// Google Gemini - 1M Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"gemini-1.5-pro\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-1.5-flash\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-2.0-flash\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-2.0-pro\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Anthropic Claude - 200K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"claude-3-opus-20240229\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-sonnet-20240229\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-haiku-20240307\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-5-sonnet-20241022\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-5-haiku-20241022\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"claude-sonnet-4-20250514\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// OpenAI - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"gpt-4-turbo\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4-turbo-preview\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"gpt-4o\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4o-mini\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4-0125-preview\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// DeepSeek - 64K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"deepseek-chat\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"deepseek-coder\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"deepseek-reasoner\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Alibaba Qwen - Up to 1M Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"qwen-2.5-72b-instruct\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"qwen-2.5-32b-instruct\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"qwen-max\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 65536,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"qwen-max-longcontext\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 65536,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Moonshot Kimi - Up to 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"moonshot-v1-8k\": {\n\t\tcontextWindow: 8192,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"moonshot-v1-32k\": {\n\t\tcontextWindow: 32768,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"moonshot-v1-128k\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Meta Llama 3.1 - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"llama-3.1-405b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.1-70b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.1-8b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Mistral - Up to 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"mistral-large-2407\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"mistral-large-2402\": {\n\t\tcontextWindow: 32000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// 01.AI Yi - Up to 32K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"yi-lightning\": {\n\t\tcontextWindow: 16384,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"yi-large\": {\n\t\tcontextWindow: 32768,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Zhipu GLM - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"glm-4\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"glm-4-plus\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Groq Models - Varies\n\t// ═══════════════════════════════════════════════════════════════\n\t\"llama-3.3-70b-versatile\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.3-70b-specdec\": {\n\t\tcontextWindow: 8192,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: false },\n\t},\n};\n\n/**\n * Large Context Provider\n * Implements the IContextProvider interface for 1M context support\n */\nexport class LargeContextProvider implements IContextProvider {\n\treadonly name = \"large-context\";\n\treadonly version = \"1.0.0\";\n\n\tprivate customModels: Map<string, { contextWindow: number; maxTokens: number; capabilities: ModelCapabilities }> =\n\t\tnew Map();\n\n\t/**\n\t * Check if this provider supports a given model\n\t */\n\tsupportsModel(modelId: string): boolean {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\t\treturn normalized in LARGE_CONTEXT_DEFINITIONS || this.customModels.has(normalized);\n\t}\n\n\t/**\n\t * Get context window for a model\n\t */\n\tgetContextWindow(modelId: string): number {\n\t\treturn this.getContextConfig(modelId).contextWindow;\n\t}\n\n\t/**\n\t * Get max output tokens for a model\n\t */\n\tgetMaxTokens(modelId: string): number {\n\t\treturn this.getContextConfig(modelId).maxTokens;\n\t}\n\n\t/**\n\t * Get full context configuration for a model\n\t */\n\tgetContextConfig(modelId: string): IModelContextConfig {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\n\t\t// Check custom models first\n\t\tconst custom = this.customModels.get(normalized);\n\t\tif (custom) {\n\t\t\treturn {\n\t\t\t\tcontextWindow: custom.contextWindow,\n\t\t\t\tmaxTokens: custom.maxTokens,\n\t\t\t\tsupportsStreaming: custom.capabilities.supportsStreaming,\n\t\t\t\tsupportsVision: custom.capabilities.supportsVision,\n\t\t\t\tsupportsFunctions: custom.capabilities.supportsFunctions,\n\t\t\t};\n\t\t}\n\n\t\t// Check known models\n\t\tconst definition = LARGE_CONTEXT_DEFINITIONS[normalized];\n\t\tif (definition) {\n\t\t\treturn {\n\t\t\t\tcontextWindow: definition.contextWindow,\n\t\t\t\tmaxTokens: definition.maxTokens,\n\t\t\t\tsupportsStreaming: definition.capabilities.supportsStreaming,\n\t\t\t\tsupportsVision: definition.capabilities.supportsVision,\n\t\t\t\tsupportsFunctions: definition.capabilities.supportsFunctions,\n\t\t\t};\n\t\t}\n\n\t\t// Default: 1M context for unknown models\n\t\treturn {\n\t\t\tcontextWindow: 1000000,\n\t\t\tmaxTokens: 65536,\n\t\t\tsupportsStreaming: true,\n\t\t\tsupportsVision: true,\n\t\t\tsupportsFunctions: true,\n\t\t};\n\t}\n\n\t/**\n\t * Process messages before sending to API\n\t */\n\tprocessMessages(messages: unknown[], modelId: string): IProcessedContext {\n\t\tconst config = this.getContextConfig(modelId);\n\t\tconst messageStr = JSON.stringify(messages);\n\t\tconst estimatedTokens = Math.ceil(messageStr.length / 4);\n\n\t\treturn {\n\t\t\tmessages,\n\t\t\ttokenCount: estimatedTokens,\n\t\t\tmodified: false,\n\t\t\tmetadata: {\n\t\t\t\ttruncated: estimatedTokens > config.contextWindow,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Handle context overflow\n\t */\n\thandleOverflow(messages: unknown[], modelId: string, tokenCount: number): IOverflowResult {\n\t\tconst config = this.getContextConfig(modelId);\n\n\t\tif (tokenCount <= config.contextWindow) {\n\t\t\treturn { action: \"truncate\", messages };\n\t\t}\n\n\t\t// For large context models, try to keep as much as possible\n\t\tif (config.contextWindow >= 100000) {\n\t\t\t// For 1M context, we likely have enough space\n\t\t\treturn {\n\t\t\t\taction: \"truncate\",\n\t\t\t\tmessages,\n\t\t\t\tmetadata: {\n\t\t\t\t\toriginalTokens: tokenCount,\n\t\t\t\t\tcontextWindow: config.contextWindow,\n\t\t\t\t\tkeepRatio: config.contextWindow / tokenCount,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\taction: \"summarize\",\n\t\t\tmetadata: {\n\t\t\t\toriginalTokens: tokenCount,\n\t\t\t\tcontextWindow: config.contextWindow,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Register a custom model with context configuration\n\t */\n\tregisterCustomModel(\n\t\tmodelId: string,\n\t\tconfig: {\n\t\t\tcontextWindow: number;\n\t\t\tmaxTokens: number;\n\t\t\tsupportsVision?: boolean;\n\t\t\tsupportsFunctions?: boolean;\n\t\t},\n\t): void {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\t\tthis.customModels.set(normalized, {\n\t\t\tcontextWindow: config.contextWindow,\n\t\t\tmaxTokens: config.maxTokens,\n\t\t\tcapabilities: {\n\t\t\t\tsupportsStreaming: true,\n\t\t\t\tsupportsVision: config.supportsVision ?? true,\n\t\t\t\tsupportsFunctions: config.supportsFunctions ?? true,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Enhance a model with large context configuration\n\t */\n\tenhanceModel<API extends Api>(model: Model<API>): Model<API> {\n\t\tconst config = this.getContextConfig(model.id);\n\n\t\treturn {\n\t\t\t...model,\n\t\t\tcontextWindow: config.contextWindow,\n\t\t\tmaxTokens: config.maxTokens,\n\t\t};\n\t}\n\n\t/**\n\t * Get all known large context models\n\t */\n\tgetKnownModels(): string[] {\n\t\treturn Object.keys(LARGE_CONTEXT_DEFINITIONS);\n\t}\n\n\t/**\n\t * Check if a model has 1M context\n\t */\n\tisMillionContextModel(modelId: string): boolean {\n\t\tconst config = this.getContextConfig(modelId);\n\t\treturn config.contextWindow >= 1000000;\n\t}\n\n\t/**\n\t * Normalize model ID for matching\n\t */\n\tprivate normalizeModelId(modelId: string): string {\n\t\treturn modelId.toLowerCase().trim();\n\t}\n}\n\n/**\n * Singleton instance\n */\nlet largeContextProviderInstance: LargeContextProvider | null = null;\n\n/**\n * Get the singleton instance\n */\nexport function getLargeContextProvider(): LargeContextProvider {\n\tif (!largeContextProviderInstance) {\n\t\tlargeContextProviderInstance = new LargeContextProvider();\n\t}\n\treturn largeContextProviderInstance;\n}\n"]}
|
package/dist/core/messages.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AgentMessage } from "@
|
|
2
|
-
import type { ImageContent, Message, TextContent } from "@
|
|
1
|
+
import type { AgentMessage } from "@boxiaolanya2008/pi-agent-core";
|
|
2
|
+
import type { ImageContent, Message, TextContent } from "@boxiaolanya2008/pi-ai";
|
|
3
3
|
export declare const COMPACTION_SUMMARY_PREFIX = "The conversation history before this point was compacted into the following summary:\n<summary>\n";
|
|
4
4
|
export declare const COMPACTION_SUMMARY_SUFFIX = "\n</summary>";
|
|
5
5
|
export declare const BRANCH_SUMMARY_PREFIX = "The following is a summary of a branch that this conversation came back from:\n<summary>\n";
|
|
@@ -35,7 +35,7 @@ export interface CompactionSummaryMessage {
|
|
|
35
35
|
tokensBefore: number;
|
|
36
36
|
timestamp: number;
|
|
37
37
|
}
|
|
38
|
-
declare module "@
|
|
38
|
+
declare module "@boxiaolanya2008/pi-agent-core" {
|
|
39
39
|
interface CustomAgentMessages {
|
|
40
40
|
bashExecution: BashExecutionMessage;
|
|
41
41
|
custom: CustomMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjF,eAAO,MAAM,yBAAyB,sGAErC,CAAC;AACF,eAAO,MAAM,yBAAyB,iBAC3B,CAAC;AACZ,eAAO,MAAM,qBAAqB,+FAEjC,CAAC;AACF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,OAAO,QAAQ,gCAAgC,CAAC,CAAC;IAChD,UAAU,mBAAmB;QAC5B,aAAa,EAAE,oBAAoB,CAAC;QACpC,MAAM,EAAE,aAAa,CAAC;QACtB,aAAa,EAAE,oBAAoB,CAAC;QACpC,iBAAiB,EAAE,wBAAwB,CAAC;KAC5C;CACD;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAgBrE;AACD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAOnH;AACD,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GACf,wBAAwB,CAO1B;AACD,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GACf,aAAa,CASf;AACD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,CA8ChE","sourcesContent":["import type { AgentMessage } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { ImageContent, Message, TextContent } from \"@boxiaolanya2008/pi-ai\";\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n<summary>\n`;\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n<summary>\n`;\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\texcludeFromContext?: boolean;\n}\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\nexport interface CompactionSummaryMessage {\n\trole: \"compactionSummary\";\n\tsummary: string;\n\ttokensBefore: number;\n\ttimestamp: number;\n}\ndeclare module \"@boxiaolanya2008/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t\tcompactionSummary: CompactionSummaryMessage;\n\t}\n}\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\treturn messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault: {\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { ImageContent, Message, TextContent } from \"@boxiaolanya2008/pi-ai\";\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n<summary>\n`;\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n<summary>\n`;\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\texcludeFromContext?: boolean;\n}\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\nexport interface CompactionSummaryMessage {\n\trole: \"compactionSummary\";\n\tsummary: string;\n\ttokensBefore: number;\n\ttimestamp: number;\n}\ndeclare module \"@boxiaolanya2008/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t\tcompactionSummary: CompactionSummaryMessage;\n\t}\n}\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\treturn messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault: {\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Api, type AssistantMessageEventStream, type Context, type Model, type SimpleStreamOptions } from "@
|
|
1
|
+
import { type Api, type AssistantMessageEventStream, type Context, type Model, type SimpleStreamOptions } from "@boxiaolanya2008/pi-ai";
|
|
2
2
|
import type { AuthStorage } from "./auth-storage.js";
|
|
3
3
|
import { clearConfigValueCache } from "./resolve-config-value.js";
|
|
4
4
|
export declare const clearApiKeyCache: typeof clearConfigValueCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,GAAG,EACR,KAAK,2BAA2B,EAChC,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,mBAAmB,EACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,GAAG,EACR,KAAK,2BAA2B,EAChC,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,mBAAmB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,eAAO,MAAM,gBAAgB,8BAAwB,CAAC;AAEtD,qBAAa,aAAa;IAMxB,QAAQ,CAAC,WAAW,EAAE,WAAW;IALlC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAuB;IAEtC,YACU,WAAW,EAAE,WAAW,EACjC,eAAe,CAAC,EAAE,MAAM,EAGxB;IAED,OAAO,IAAI,IAAI,CAGd;IAED,OAAO,CAAC,uBAAuB;IAkC/B,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAE5B;IAED,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzB;IAED,UAAU,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,YAAY,IAAI,OAAO,CAEtB;CACD;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,2BAA2B,CAAC;IACnH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB","sourcesContent":["import {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\ttype Model,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@boxiaolanya2008/pi-ai\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { clearConfigValueCache } from \"./resolve-config-value.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport const clearApiKeyCache = clearConfigValueCache;\n\nexport class ModelRegistry {\n\tprivate model: Model<Api> | null = null;\n\tprivate apiKey: string | null = null;\n\tprivate baseUrl: string | null = null;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\t_modelsJsonPath?: string,\n\t) {\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\trefresh(): void {\n\t\tresetApiProviders();\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\tprivate loadUserConfiguredModel(): void {\n\t\tconst config = loadUserConfig();\n\t\tif (!config.model) {\n\t\t\tthis.model = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst userModel = config.model;\n\t\tthis.apiKey = userModel.apiKey;\n\t\tthis.baseUrl = userModel.baseUrl;\n\n\t\tthis.model = {\n\t\t\tid: userModel.id,\n\t\t\tname: userModel.name || userModel.id,\n\t\t\tapi: \"openai-completions\" as Api,\n\t\t\tprovider: \"custom\",\n\t\t\tbaseUrl: userModel.baseUrl,\n\t\t\treasoning: false,\n\t\t\tinput: [\"text\", \"image\"],\n\t\t\tcost: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t},\n\t\t\tcontextWindow: 128000,\n\t\t\tmaxTokens: 4096,\n\t\t};\n\n\t\tif (this.apiKey) {\n\t\t\tthis.authStorage.set(\"custom\", { type: \"api_key\", key: this.apiKey });\n\t\t}\n\t}\n\n\tgetModel(): Model<Api> | null {\n\t\treturn this.model;\n\t}\n\n\tgetApiKey(): string | null {\n\t\treturn this.apiKey;\n\t}\n\n\tgetBaseUrl(): string | null {\n\t\treturn this.baseUrl;\n\t}\n\n\tisConfigured(): boolean {\n\t\treturn this.model !== null && this.apiKey !== null;\n\t}\n}\n\nexport interface ProviderConfigInput {\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { resetApiProviders, } from "@
|
|
1
|
+
import { resetApiProviders, } from "@boxiaolanya2008/pi-ai";
|
|
2
2
|
import { clearConfigValueCache } from "./resolve-config-value.js";
|
|
3
3
|
import { loadUserConfig } from "./user-config.js";
|
|
4
4
|
export const clearApiKeyCache = clearConfigValueCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,iBAAiB,GAEjB,MAAM,
|
|
1
|
+
{"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,iBAAiB,GAEjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAEtD,MAAM,OAAO,aAAa;IAMf,WAAW;IALb,KAAK,GAAsB,IAAI,CAAC;IAChC,MAAM,GAAkB,IAAI,CAAC;IAC7B,OAAO,GAAkB,IAAI,CAAC;IAEtC,YACU,WAAwB,EACjC,eAAwB,EACvB;2BAFQ,WAAW;QAGpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAAA,CAC/B;IAED,OAAO,GAAS;QACf,iBAAiB,EAAE,CAAC;QACpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAAA,CAC/B;IAEO,uBAAuB,GAAS;QACvC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,OAAO;QACR,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAEjC,IAAI,CAAC,KAAK,GAAG;YACZ,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE;YACpC,GAAG,EAAE,oBAA2B;YAChC,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YACxB,IAAI,EAAE;gBACL,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACb;YACD,aAAa,EAAE,MAAM;YACrB,SAAS,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;IAAA,CACD;IAED,QAAQ,GAAsB;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC;IAAA,CAClB;IAED,SAAS,GAAkB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACnB;IAED,UAAU,GAAkB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC;IAAA,CACpB;IAED,YAAY,GAAY;QACvB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAAA,CACnD;CACD","sourcesContent":["import {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\ttype Model,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@boxiaolanya2008/pi-ai\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { clearConfigValueCache } from \"./resolve-config-value.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport const clearApiKeyCache = clearConfigValueCache;\n\nexport class ModelRegistry {\n\tprivate model: Model<Api> | null = null;\n\tprivate apiKey: string | null = null;\n\tprivate baseUrl: string | null = null;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\t_modelsJsonPath?: string,\n\t) {\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\trefresh(): void {\n\t\tresetApiProviders();\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\tprivate loadUserConfiguredModel(): void {\n\t\tconst config = loadUserConfig();\n\t\tif (!config.model) {\n\t\t\tthis.model = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst userModel = config.model;\n\t\tthis.apiKey = userModel.apiKey;\n\t\tthis.baseUrl = userModel.baseUrl;\n\n\t\tthis.model = {\n\t\t\tid: userModel.id,\n\t\t\tname: userModel.name || userModel.id,\n\t\t\tapi: \"openai-completions\" as Api,\n\t\t\tprovider: \"custom\",\n\t\t\tbaseUrl: userModel.baseUrl,\n\t\t\treasoning: false,\n\t\t\tinput: [\"text\", \"image\"],\n\t\t\tcost: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t},\n\t\t\tcontextWindow: 128000,\n\t\t\tmaxTokens: 4096,\n\t\t};\n\n\t\tif (this.apiKey) {\n\t\t\tthis.authStorage.set(\"custom\", { type: \"api_key\", key: this.apiKey });\n\t\t}\n\t}\n\n\tgetModel(): Model<Api> | null {\n\t\treturn this.model;\n\t}\n\n\tgetApiKey(): string | null {\n\t\treturn this.apiKey;\n\t}\n\n\tgetBaseUrl(): string | null {\n\t\treturn this.baseUrl;\n\t}\n\n\tisConfigured(): boolean {\n\t\treturn this.model !== null && this.apiKey !== null;\n\t}\n}\n\nexport interface ProviderConfigInput {\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ThinkingLevel } from "@
|
|
2
|
-
import type { Api, Model } from "@
|
|
1
|
+
import type { ThinkingLevel } from "@boxiaolanya2008/pi-agent-core";
|
|
2
|
+
import type { Api, Model } from "@boxiaolanya2008/pi-ai";
|
|
3
3
|
import type { ModelRegistry } from "./model-registry.js";
|
|
4
4
|
export interface ScopedModel {
|
|
5
5
|
model: Model<Api>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,qBAAa,aAAa;IAIxB,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,sBAAsB,CAAC;IALhC,OAAO,CAAC,aAAa,CAAyC;IAE9D,YACS,QAAQ,EAAE,aAAa,EAC/B,iBAAiB,CAAC,EAAE,MAAM,EAClB,sBAAsB,CAAC,oBAAQ,EAGvC;IAED,OAAO,CAAC,oBAAoB;IAQ5B,YAAY,IAAI,WAAW,GAAG,IAAI,CASjC;IAED,gBAAgB,IAAI,aAAa,CAEhC;IAED,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE3C;IAED,mBAAmB,IAAI,MAAM,CAM5B;CACD","sourcesContent":["import type { ThinkingLevel } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { Api, Model } from \"@boxiaolanya2008/pi-ai\";\nimport { isValidThinkingLevel } from \"../cli/args.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ModelRegistry } from \"./model-registry.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport interface ScopedModel {\n\tmodel: Model<Api>;\n\tthinkingLevel?: ThinkingLevel;\n}\n\nexport class ModelResolver {\n\tprivate thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n\tconstructor(\n\t\tprivate registry: ModelRegistry,\n\t\t_requestedModelId?: string,\n\t\tprivate requestedThinkingLevel?: string,\n\t) {\n\t\tthis.resolveThinkingLevel();\n\t}\n\n\tprivate resolveThinkingLevel(): void {\n\t\tif (this.requestedThinkingLevel && isValidThinkingLevel(this.requestedThinkingLevel)) {\n\t\t\tthis.thinkingLevel = this.requestedThinkingLevel;\n\t\t} else {\n\t\t\tthis.thinkingLevel = DEFAULT_THINKING_LEVEL;\n\t\t}\n\t}\n\n\tresolveModel(): ScopedModel | null {\n\t\tconst model = this.registry.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tthinkingLevel: this.thinkingLevel,\n\t\t};\n\t}\n\n\tgetThinkingLevel(): ThinkingLevel {\n\t\treturn this.thinkingLevel;\n\t}\n\n\tsetThinkingLevel(level: ThinkingLevel): void {\n\t\tthis.thinkingLevel = level;\n\t}\n\n\tgetModelDisplayName(): string {\n\t\tconst config = loadUserConfig();\n\t\tif (config.model) {\n\t\t\treturn config.model.name || config.model.id;\n\t\t}\n\t\treturn \"Unknown Model\";\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD,MAAM,OAAO,aAAa;IAIhB,QAAQ;IAER,sBAAsB;IALvB,aAAa,GAAkB,sBAAsB,CAAC;IAE9D,YACS,QAAuB,EAC/B,iBAA0B,EAClB,sBAA+B,EACtC;wBAHO,QAAQ;sCAER,sBAAsB;QAE9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAAA,CAC5B;IAEO,oBAAoB,GAAS;QACpC,IAAI,IAAI,CAAC,sBAAsB,IAAI,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC;QAC7C,CAAC;IAAA,CACD;IAED,YAAY,GAAuB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO;YACN,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC;IAAA,CACF;IAED,gBAAgB,GAAkB;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC;IAAA,CAC1B;IAED,gBAAgB,CAAC,KAAoB,EAAQ;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAAA,CAC3B;IAED,mBAAmB,GAAW;QAC7B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,eAAe,CAAC;IAAA,CACvB;CACD","sourcesContent":["import type { ThinkingLevel } from \"@
|
|
1
|
+
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD,MAAM,OAAO,aAAa;IAIhB,QAAQ;IAER,sBAAsB;IALvB,aAAa,GAAkB,sBAAsB,CAAC;IAE9D,YACS,QAAuB,EAC/B,iBAA0B,EAClB,sBAA+B,EACtC;wBAHO,QAAQ;sCAER,sBAAsB;QAE9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAAA,CAC5B;IAEO,oBAAoB,GAAS;QACpC,IAAI,IAAI,CAAC,sBAAsB,IAAI,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC;QAC7C,CAAC;IAAA,CACD;IAED,YAAY,GAAuB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO;YACN,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC;IAAA,CACF;IAED,gBAAgB,GAAkB;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC;IAAA,CAC1B;IAED,gBAAgB,CAAC,KAAoB,EAAQ;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAAA,CAC3B;IAED,mBAAmB,GAAW;QAC7B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,eAAe,CAAC;IAAA,CACvB;CACD","sourcesContent":["import type { ThinkingLevel } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { Api, Model } from \"@boxiaolanya2008/pi-ai\";\nimport { isValidThinkingLevel } from \"../cli/args.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ModelRegistry } from \"./model-registry.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport interface ScopedModel {\n\tmodel: Model<Api>;\n\tthinkingLevel?: ThinkingLevel;\n}\n\nexport class ModelResolver {\n\tprivate thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n\tconstructor(\n\t\tprivate registry: ModelRegistry,\n\t\t_requestedModelId?: string,\n\t\tprivate requestedThinkingLevel?: string,\n\t) {\n\t\tthis.resolveThinkingLevel();\n\t}\n\n\tprivate resolveThinkingLevel(): void {\n\t\tif (this.requestedThinkingLevel && isValidThinkingLevel(this.requestedThinkingLevel)) {\n\t\t\tthis.thinkingLevel = this.requestedThinkingLevel;\n\t\t} else {\n\t\t\tthis.thinkingLevel = DEFAULT_THINKING_LEVEL;\n\t\t}\n\t}\n\n\tresolveModel(): ScopedModel | null {\n\t\tconst model = this.registry.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tthinkingLevel: this.thinkingLevel,\n\t\t};\n\t}\n\n\tgetThinkingLevel(): ThinkingLevel {\n\t\treturn this.thinkingLevel;\n\t}\n\n\tsetThinkingLevel(level: ThinkingLevel): void {\n\t\tthis.thinkingLevel = level;\n\t}\n\n\tgetModelDisplayName(): string {\n\t\tconst config = loadUserConfig();\n\t\tif (config.model) {\n\t\t\treturn config.model.name || config.model.id;\n\t\t}\n\t\treturn \"Unknown Model\";\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-accelerator.d.ts","sourceRoot":"","sources":["../../src/core/response-accelerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"response-accelerator.d.ts","sourceRoot":"","sources":["../../src/core/response-accelerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE7F,UAAU,wBAAwB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;CAC5C;AACD,qBAAa,cAAc;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,WAAW,CAAqB;IACxC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CASvC;IACD,OAAO,IAAI,MAAM,CAIhB;IACD,SAAS,IAAI,MAAM,EAAE,CAEpB;IACD,KAAK,IAAI,IAAI,CAGZ;IACD,IAAI,MAAM,IAAI,MAAM,CAEnB;CACD;AACD,qBAAa,oBAAoB;IAChC,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,UAAU,CAAwC;IACnD,YAAY,CAClB,SAAS,EAAE,cAAc,CAAC,qBAAqB,CAAC,EAChD,OAAO,GAAE,wBAA6B,GACpC,cAAc,CAAC,qBAAqB,CAAC,CAevC;IACD,kBAAkB,IAAI,MAAM,CAE3B;CACD;AACD,qBAAa,cAAc;IAC1B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,cAAc,CAAS;IAC/B,YAAY,cAAc,GAAE,MAAU,EAErC;IACD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAalC;IACD,OAAO,CAAC,gBAAgB;IAGxB,KAAK,IAAI,IAAI,CAEZ;CACD;AACD,qBAAa,aAAa;IACzB,OAAO,CAAC,KAAK,CAAwE;IACrF,OAAO,CAAC,GAAG,CAAS;IACpB,YAAY,KAAK,GAAE,MAAc,EAEhC;IACD,OAAO,CAAC,WAAW;IAInB,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,SAAS,CAUpE;IACD,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAIxE;IACD,OAAO,CAAC,OAAO;IAQf,KAAK,IAAI,IAAI,CAEZ;CACD;AACD,wBAAsB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AACD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAUtD;AACD,eAAO,MAAM,iBAAiB,sBAA6B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,gBAAuB,CAAC;AACzD,eAAO,MAAM,mBAAmB,eAAsB,CAAC;AACvD,wBAAuB,gBAAgB,CACtC,SAAS,EAAE,cAAc,CAAC,qBAAqB,CAAC,EAChD,OAAO,CAAC,EAAE,wBAAwB,GAChC,cAAc,CAAC,qBAAqB,CAAC,CAEvC;AACD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,SAAS,CAElG;AACD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAElG","sourcesContent":["import type { AssistantMessage, AssistantMessageEvent, Model } from \"@boxiaolanya2008/pi-ai\";\n\ninterface AcceleratedStreamOptions {\n\tprefetch?: boolean;\n\tbufferSize?: number;\n\tpriority?: \"speed\" | \"quality\" | \"balanced\";\n}\nexport class ResponseBuffer {\n\tprivate chunks: string[] = [];\n\tprivate totalLength = 0;\n\tprivate textDecoder = new TextDecoder();\n\tappend(chunk: string | Uint8Array): void {\n\t\tif (typeof chunk === \"string\") {\n\t\t\tthis.chunks.push(chunk);\n\t\t\tthis.totalLength += chunk.length;\n\t\t} else {\n\t\t\tconst text = this.textDecoder.decode(chunk, { stream: true });\n\t\t\tthis.chunks.push(text);\n\t\t\tthis.totalLength += text.length;\n\t\t}\n\t}\n\tgetText(): string {\n\t\tif (this.chunks.length === 0) return \"\";\n\t\tif (this.chunks.length === 1) return this.chunks[0];\n\t\treturn this.chunks.join(\"\");\n\t}\n\tgetChunks(): string[] {\n\t\treturn this.chunks;\n\t}\n\tclear(): void {\n\t\tthis.chunks = [];\n\t\tthis.totalLength = 0;\n\t}\n\tget length(): number {\n\t\treturn this.totalLength;\n\t}\n}\nexport class StreamingAccelerator {\n\tprivate activeBuffer: ResponseBuffer = new ResponseBuffer();\n\tprivate backBuffer: ResponseBuffer = new ResponseBuffer();\n\tasync *streamChunks(\n\t\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\t\toptions: AcceleratedStreamOptions = {},\n\t): AsyncGenerator<AssistantMessageEvent> {\n\t\tconst { priority = \"balanced\" } = options;\n\t\tif (priority === \"speed\") {\n\t\t\tprocess.env.NODE_OPTIONS = \"--max-old-space-size=8192\";\n\t\t}\n\t\tfor await (const event of generator) {\n\t\t\tyield event;\n\t\t\tif (event.type === \"text_delta\" && event.delta) {\n\t\t\t\tthis.activeBuffer.append(event.delta);\n\t\t\t}\n\t\t}\n\t\tconst temp = this.activeBuffer;\n\t\tthis.activeBuffer = this.backBuffer;\n\t\tthis.backBuffer = temp;\n\t\tthis.backBuffer.clear();\n\t}\n\tgetAccumulatedText(): string {\n\t\treturn this.activeBuffer.getText();\n\t}\n}\nexport class ConnectionPool {\n\tprivate connections = new Map<string, any>();\n\tprivate maxConnections: number;\n\tconstructor(maxConnections: number = 4) {\n\t\tthis.maxConnections = maxConnections;\n\t}\n\tgetConnection(modelId: string): any {\n\t\tif (this.connections.has(modelId)) {\n\t\t\treturn this.connections.get(modelId);\n\t\t}\n\t\tconst connection = this.createConnection(modelId);\n\t\tif (this.connections.size >= this.maxConnections) {\n\t\t\tconst firstKey = this.connections.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tthis.connections.delete(firstKey);\n\t\t\t}\n\t\t}\n\t\tthis.connections.set(modelId, connection);\n\t\treturn connection;\n\t}\n\tprivate createConnection(modelId: string): any {\n\t\treturn { modelId, createdAt: Date.now() };\n\t}\n\tclear(): void {\n\t\tthis.connections.clear();\n\t}\n}\nexport class ResponseCache {\n\tprivate cache = new Map<string, { response: AssistantMessage; timestamp: number }>();\n\tprivate ttl: number;\n\tconstructor(ttlMs: number = 60000) {\n\t\tthis.ttl = ttlMs;\n\t}\n\tprivate generateKey(messages: any[], model: Model<any>): string {\n\t\tconst messageHash = JSON.stringify(messages).slice(0, 200);\n\t\treturn `${model.provider}:${model.id ?? \"unknown\"}:${messageHash}`;\n\t}\n\tget(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\t\tconst key = this.generateKey(messages, model);\n\t\tconst entry = this.cache.get(key);\n\t\tif (entry && Date.now() - entry.timestamp < this.ttl) {\n\t\t\treturn entry.response;\n\t\t}\n\t\tif (entry) {\n\t\t\tthis.cache.delete(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\tset(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\t\tconst key = this.generateKey(messages, model);\n\t\tthis.cache.set(key, { response, timestamp: Date.now() });\n\t\tthis.cleanup();\n\t}\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache) {\n\t\t\tif (now - entry.timestamp > this.ttl) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n}\nexport async function warmupModel(model: Model<any>): Promise<void> {\n\tconsole.log(`Warming up model: ${model.id}`);\n}\nexport function optimizeContext(messages: any[]): any[] {\n\treturn messages.map((msg) => {\n\t\tif (typeof msg.content === \"string\") {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: msg.content.replace(/\\n{3,}/g, \"\\n\\n\").trim(),\n\t\t\t};\n\t\t}\n\t\treturn msg;\n\t});\n}\nexport const globalAccelerator = new StreamingAccelerator();\nexport const globalConnectionPool = new ConnectionPool();\nexport const globalResponseCache = new ResponseCache();\nexport async function* accelerateStream(\n\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\toptions?: AcceleratedStreamOptions,\n): AsyncGenerator<AssistantMessageEvent> {\n\tyield* globalAccelerator.streamChunks(generator, options);\n}\nexport function getCachedResponse(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\treturn globalResponseCache.get(messages, model);\n}\nexport function cacheResponse(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\tglobalResponseCache.set(messages, model, response);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-accelerator.js","sourceRoot":"","sources":["../../src/core/response-accelerator.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage, AssistantMessageEvent, Model } from \"@mariozechner/pi-ai\";\n\ninterface AcceleratedStreamOptions {\n\tprefetch?: boolean;\n\tbufferSize?: number;\n\tpriority?: \"speed\" | \"quality\" | \"balanced\";\n}\nexport class ResponseBuffer {\n\tprivate chunks: string[] = [];\n\tprivate totalLength = 0;\n\tprivate textDecoder = new TextDecoder();\n\tappend(chunk: string | Uint8Array): void {\n\t\tif (typeof chunk === \"string\") {\n\t\t\tthis.chunks.push(chunk);\n\t\t\tthis.totalLength += chunk.length;\n\t\t} else {\n\t\t\tconst text = this.textDecoder.decode(chunk, { stream: true });\n\t\t\tthis.chunks.push(text);\n\t\t\tthis.totalLength += text.length;\n\t\t}\n\t}\n\tgetText(): string {\n\t\tif (this.chunks.length === 0) return \"\";\n\t\tif (this.chunks.length === 1) return this.chunks[0];\n\t\treturn this.chunks.join(\"\");\n\t}\n\tgetChunks(): string[] {\n\t\treturn this.chunks;\n\t}\n\tclear(): void {\n\t\tthis.chunks = [];\n\t\tthis.totalLength = 0;\n\t}\n\tget length(): number {\n\t\treturn this.totalLength;\n\t}\n}\nexport class StreamingAccelerator {\n\tprivate activeBuffer: ResponseBuffer = new ResponseBuffer();\n\tprivate backBuffer: ResponseBuffer = new ResponseBuffer();\n\tasync *streamChunks(\n\t\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\t\toptions: AcceleratedStreamOptions = {},\n\t): AsyncGenerator<AssistantMessageEvent> {\n\t\tconst { priority = \"balanced\" } = options;\n\t\tif (priority === \"speed\") {\n\t\t\tprocess.env.NODE_OPTIONS = \"--max-old-space-size=8192\";\n\t\t}\n\t\tfor await (const event of generator) {\n\t\t\tyield event;\n\t\t\tif (event.type === \"text_delta\" && event.delta) {\n\t\t\t\tthis.activeBuffer.append(event.delta);\n\t\t\t}\n\t\t}\n\t\tconst temp = this.activeBuffer;\n\t\tthis.activeBuffer = this.backBuffer;\n\t\tthis.backBuffer = temp;\n\t\tthis.backBuffer.clear();\n\t}\n\tgetAccumulatedText(): string {\n\t\treturn this.activeBuffer.getText();\n\t}\n}\nexport class ConnectionPool {\n\tprivate connections = new Map<string, any>();\n\tprivate maxConnections: number;\n\tconstructor(maxConnections: number = 4) {\n\t\tthis.maxConnections = maxConnections;\n\t}\n\tgetConnection(modelId: string): any {\n\t\tif (this.connections.has(modelId)) {\n\t\t\treturn this.connections.get(modelId);\n\t\t}\n\t\tconst connection = this.createConnection(modelId);\n\t\tif (this.connections.size >= this.maxConnections) {\n\t\t\tconst firstKey = this.connections.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tthis.connections.delete(firstKey);\n\t\t\t}\n\t\t}\n\t\tthis.connections.set(modelId, connection);\n\t\treturn connection;\n\t}\n\tprivate createConnection(modelId: string): any {\n\t\treturn { modelId, createdAt: Date.now() };\n\t}\n\tclear(): void {\n\t\tthis.connections.clear();\n\t}\n}\nexport class ResponseCache {\n\tprivate cache = new Map<string, { response: AssistantMessage; timestamp: number }>();\n\tprivate ttl: number;\n\tconstructor(ttlMs: number = 60000) {\n\t\tthis.ttl = ttlMs;\n\t}\n\tprivate generateKey(messages: any[], model: Model<any>): string {\n\t\tconst messageHash = JSON.stringify(messages).slice(0, 200);\n\t\treturn `${model.provider}:${model.id ?? \"unknown\"}:${messageHash}`;\n\t}\n\tget(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\t\tconst key = this.generateKey(messages, model);\n\t\tconst entry = this.cache.get(key);\n\t\tif (entry && Date.now() - entry.timestamp < this.ttl) {\n\t\t\treturn entry.response;\n\t\t}\n\t\tif (entry) {\n\t\t\tthis.cache.delete(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\tset(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\t\tconst key = this.generateKey(messages, model);\n\t\tthis.cache.set(key, { response, timestamp: Date.now() });\n\t\tthis.cleanup();\n\t}\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache) {\n\t\t\tif (now - entry.timestamp > this.ttl) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n}\nexport async function warmupModel(model: Model<any>): Promise<void> {\n\tconsole.log(`Warming up model: ${model.id}`);\n}\nexport function optimizeContext(messages: any[]): any[] {\n\treturn messages.map((msg) => {\n\t\tif (typeof msg.content === \"string\") {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: msg.content.replace(/\\n{3,}/g, \"\\n\\n\").trim(),\n\t\t\t};\n\t\t}\n\t\treturn msg;\n\t});\n}\nexport const globalAccelerator = new StreamingAccelerator();\nexport const globalConnectionPool = new ConnectionPool();\nexport const globalResponseCache = new ResponseCache();\nexport async function* accelerateStream(\n\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\toptions?: AcceleratedStreamOptions,\n): AsyncGenerator<AssistantMessageEvent> {\n\tyield* globalAccelerator.streamChunks(generator, options);\n}\nexport function getCachedResponse(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\treturn globalResponseCache.get(messages, model);\n}\nexport function cacheResponse(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\tglobalResponseCache.set(messages, model, response);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"response-accelerator.js","sourceRoot":"","sources":["../../src/core/response-accelerator.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage, AssistantMessageEvent, Model } from \"@boxiaolanya2008/pi-ai\";\n\ninterface AcceleratedStreamOptions {\n\tprefetch?: boolean;\n\tbufferSize?: number;\n\tpriority?: \"speed\" | \"quality\" | \"balanced\";\n}\nexport class ResponseBuffer {\n\tprivate chunks: string[] = [];\n\tprivate totalLength = 0;\n\tprivate textDecoder = new TextDecoder();\n\tappend(chunk: string | Uint8Array): void {\n\t\tif (typeof chunk === \"string\") {\n\t\t\tthis.chunks.push(chunk);\n\t\t\tthis.totalLength += chunk.length;\n\t\t} else {\n\t\t\tconst text = this.textDecoder.decode(chunk, { stream: true });\n\t\t\tthis.chunks.push(text);\n\t\t\tthis.totalLength += text.length;\n\t\t}\n\t}\n\tgetText(): string {\n\t\tif (this.chunks.length === 0) return \"\";\n\t\tif (this.chunks.length === 1) return this.chunks[0];\n\t\treturn this.chunks.join(\"\");\n\t}\n\tgetChunks(): string[] {\n\t\treturn this.chunks;\n\t}\n\tclear(): void {\n\t\tthis.chunks = [];\n\t\tthis.totalLength = 0;\n\t}\n\tget length(): number {\n\t\treturn this.totalLength;\n\t}\n}\nexport class StreamingAccelerator {\n\tprivate activeBuffer: ResponseBuffer = new ResponseBuffer();\n\tprivate backBuffer: ResponseBuffer = new ResponseBuffer();\n\tasync *streamChunks(\n\t\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\t\toptions: AcceleratedStreamOptions = {},\n\t): AsyncGenerator<AssistantMessageEvent> {\n\t\tconst { priority = \"balanced\" } = options;\n\t\tif (priority === \"speed\") {\n\t\t\tprocess.env.NODE_OPTIONS = \"--max-old-space-size=8192\";\n\t\t}\n\t\tfor await (const event of generator) {\n\t\t\tyield event;\n\t\t\tif (event.type === \"text_delta\" && event.delta) {\n\t\t\t\tthis.activeBuffer.append(event.delta);\n\t\t\t}\n\t\t}\n\t\tconst temp = this.activeBuffer;\n\t\tthis.activeBuffer = this.backBuffer;\n\t\tthis.backBuffer = temp;\n\t\tthis.backBuffer.clear();\n\t}\n\tgetAccumulatedText(): string {\n\t\treturn this.activeBuffer.getText();\n\t}\n}\nexport class ConnectionPool {\n\tprivate connections = new Map<string, any>();\n\tprivate maxConnections: number;\n\tconstructor(maxConnections: number = 4) {\n\t\tthis.maxConnections = maxConnections;\n\t}\n\tgetConnection(modelId: string): any {\n\t\tif (this.connections.has(modelId)) {\n\t\t\treturn this.connections.get(modelId);\n\t\t}\n\t\tconst connection = this.createConnection(modelId);\n\t\tif (this.connections.size >= this.maxConnections) {\n\t\t\tconst firstKey = this.connections.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tthis.connections.delete(firstKey);\n\t\t\t}\n\t\t}\n\t\tthis.connections.set(modelId, connection);\n\t\treturn connection;\n\t}\n\tprivate createConnection(modelId: string): any {\n\t\treturn { modelId, createdAt: Date.now() };\n\t}\n\tclear(): void {\n\t\tthis.connections.clear();\n\t}\n}\nexport class ResponseCache {\n\tprivate cache = new Map<string, { response: AssistantMessage; timestamp: number }>();\n\tprivate ttl: number;\n\tconstructor(ttlMs: number = 60000) {\n\t\tthis.ttl = ttlMs;\n\t}\n\tprivate generateKey(messages: any[], model: Model<any>): string {\n\t\tconst messageHash = JSON.stringify(messages).slice(0, 200);\n\t\treturn `${model.provider}:${model.id ?? \"unknown\"}:${messageHash}`;\n\t}\n\tget(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\t\tconst key = this.generateKey(messages, model);\n\t\tconst entry = this.cache.get(key);\n\t\tif (entry && Date.now() - entry.timestamp < this.ttl) {\n\t\t\treturn entry.response;\n\t\t}\n\t\tif (entry) {\n\t\t\tthis.cache.delete(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\tset(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\t\tconst key = this.generateKey(messages, model);\n\t\tthis.cache.set(key, { response, timestamp: Date.now() });\n\t\tthis.cleanup();\n\t}\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache) {\n\t\t\tif (now - entry.timestamp > this.ttl) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n}\nexport async function warmupModel(model: Model<any>): Promise<void> {\n\tconsole.log(`Warming up model: ${model.id}`);\n}\nexport function optimizeContext(messages: any[]): any[] {\n\treturn messages.map((msg) => {\n\t\tif (typeof msg.content === \"string\") {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: msg.content.replace(/\\n{3,}/g, \"\\n\\n\").trim(),\n\t\t\t};\n\t\t}\n\t\treturn msg;\n\t});\n}\nexport const globalAccelerator = new StreamingAccelerator();\nexport const globalConnectionPool = new ConnectionPool();\nexport const globalResponseCache = new ResponseCache();\nexport async function* accelerateStream(\n\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\toptions?: AcceleratedStreamOptions,\n): AsyncGenerator<AssistantMessageEvent> {\n\tyield* globalAccelerator.streamChunks(generator, options);\n}\nexport function getCachedResponse(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\treturn globalResponseCache.get(messages, model);\n}\nexport function cacheResponse(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\tglobalResponseCache.set(messages, model, response);\n}\n"]}
|
package/dist/core/sdk.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type ThinkingLevel } from "@
|
|
2
|
-
import type { Model } from "@
|
|
1
|
+
import { type ThinkingLevel } from "@boxiaolanya2008/pi-agent-core";
|
|
2
|
+
import type { Model } from "@boxiaolanya2008/pi-ai";
|
|
3
3
|
import { AgentSession } from "./agent-session.js";
|
|
4
4
|
import { AuthStorage } from "./auth-storage.js";
|
|
5
5
|
import type { LoadExtensionsResult, ToolDefinition } from "./extensions/index.js";
|
package/dist/core/sdk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,KAAK,EAAW,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAmB,oBAAoB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEnG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EACb,QAAQ,EACR,KAAK,IAAI,EAET,SAAS,EACT,MAAM,kBAAkB,CAAC;AAC1B,MAAM,WAAW,yBAAyB;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,aAAa,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;IAC3E,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AACD,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AACD,YAAY,EACX,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EACb,QAAQ,IAAI,eAAe,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,YAAY,GACZ,CAAC;AAIF,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4InH","sourcesContent":["import { join } from \"node:path\";\nimport { Agent, type AgentMessage, type ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport type { Message, Model } from \"@mariozechner/pi-ai\";\nimport { getAgentDir } from \"../config.js\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AuthStorage } from \"./auth-storage.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ExtensionRunner, LoadExtensionsResult, ToolDefinition } from \"./extensions/index.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport { ModelRegistry } from \"./model-registry.js\";\nimport type { ResourceLoader } from \"./resource-loader.js\";\nimport { DefaultResourceLoader } from \"./resource-loader.js\";\nimport { SessionManager } from \"./session-manager.js\";\nimport { SettingsManager } from \"./settings-manager.js\";\nimport { time } from \"./timings.js\";\nimport {\n\tallTools,\n\tbashTool,\n\tcodingTools,\n\tcreateBashTool,\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\teditTool,\n\tfindTool,\n\tgrepTool,\n\tlsTool,\n\treadOnlyTools,\n\treadTool,\n\ttype Tool,\n\ttype ToolName,\n\twriteTool,\n} from \"./tools/index.js\";\nexport interface CreateAgentSessionOptions {\n\tcwd?: string;\n\tagentDir?: string;\n\tauthStorage?: AuthStorage;\n\tmodelRegistry?: ModelRegistry;\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\ttools?: Tool[];\n\tcustomTools?: ToolDefinition[];\n\tresourceLoader?: ResourceLoader;\n\tsessionManager?: SessionManager;\n\tsettingsManager?: SettingsManager;\n}\nexport interface CreateAgentSessionResult {\n\tsession: AgentSession;\n\textensionsResult: LoadExtensionsResult;\n\tmodelFallbackMessage?: string;\n}\nexport type {\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionFactory,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tToolDefinition,\n} from \"./extensions/index.js\";\nexport type { PromptTemplate } from \"./prompt-templates.js\";\nexport type { Skill } from \"./skills.js\";\nexport type { Tool } from \"./tools/index.js\";\nexport {\n\treadTool,\n\tbashTool,\n\teditTool,\n\twriteTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\tcodingTools,\n\treadOnlyTools,\n\tallTools as allBuiltInTools,\n\tcreateCodingTools,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateBashTool,\n\tcreateEditTool,\n\tcreateWriteTool,\n\tcreateGrepTool,\n\tcreateFindTool,\n\tcreateLsTool,\n};\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst agentDir = options.agentDir ?? getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst authStorage = options.authStorage ?? AuthStorage.create(authPath);\n\tconst modelRegistry = options.modelRegistry ?? new ModelRegistry(authStorage, modelsPath);\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd);\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({ cwd, agentDir, settingsManager });\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst hasExistingSession = existingSession.messages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\t// Get model from registry (user-configured single model)\n\tconst model = options.model ?? modelRegistry.getModel() ?? undefined;\n\tlet modelFallbackMessage: string | undefined;\n\n\tif (!model) {\n\t\tmodelFallbackMessage = \"No model configured. Please run onboarding first.\";\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\tif (!model || !model.reasoning) {\n\t\tthinkingLevel = \"off\";\n\t}\n\tconst defaultActiveToolNames: ToolName[] = [\"read\", \"bash\", \"edit\", \"write\"];\n\tconst initialActiveToolNames: ToolName[] = options.tools\n\t\t? options.tools.map((t) => t.name).filter((n): n is ToolName => n in allTools)\n\t\t: defaultActiveToolNames;\n\tlet agent: Agent;\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\treturn converted;\n\t\t}\n\t\treturn converted.map((msg) => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t};\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tonPayload: async (payload, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\treturn payload;\n\t\t\t}\n\t\t\treturn runner.emitBeforeProviderRequest(payload);\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) return messages;\n\t\t\treturn runner.emitContext(messages);\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getRetrySettings().maxDelayMs,\n\t\tgetApiKey: async (_provider) => {\n\t\t\tconst key = modelRegistry.getApiKey();\n\t\t\tif (!key) {\n\t\t\t\tthrow new Error(\"No API key configured. Please check your configuration.\");\n\t\t\t}\n\t\t\treturn key;\n\t\t},\n\t});\n\tif (hasExistingSession) {\n\t\tagent.replaceMessages(existingSession.messages);\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\tconst session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRegistry,\n\t\tinitialActiveToolNames,\n\t\textensionRunnerRef,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,KAAK,EAAW,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAmB,oBAAoB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEnG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EACb,QAAQ,EACR,KAAK,IAAI,EAET,SAAS,EACT,MAAM,kBAAkB,CAAC;AAC1B,MAAM,WAAW,yBAAyB;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,aAAa,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;IAC3E,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AACD,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AACD,YAAY,EACX,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EACb,QAAQ,IAAI,eAAe,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,YAAY,GACZ,CAAC;AAIF,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4InH","sourcesContent":["import { join } from \"node:path\";\nimport { Agent, type AgentMessage, type ThinkingLevel } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { Message, Model } from \"@boxiaolanya2008/pi-ai\";\nimport { getAgentDir } from \"../config.js\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AuthStorage } from \"./auth-storage.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ExtensionRunner, LoadExtensionsResult, ToolDefinition } from \"./extensions/index.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport { ModelRegistry } from \"./model-registry.js\";\nimport type { ResourceLoader } from \"./resource-loader.js\";\nimport { DefaultResourceLoader } from \"./resource-loader.js\";\nimport { SessionManager } from \"./session-manager.js\";\nimport { SettingsManager } from \"./settings-manager.js\";\nimport { time } from \"./timings.js\";\nimport {\n\tallTools,\n\tbashTool,\n\tcodingTools,\n\tcreateBashTool,\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\teditTool,\n\tfindTool,\n\tgrepTool,\n\tlsTool,\n\treadOnlyTools,\n\treadTool,\n\ttype Tool,\n\ttype ToolName,\n\twriteTool,\n} from \"./tools/index.js\";\nexport interface CreateAgentSessionOptions {\n\tcwd?: string;\n\tagentDir?: string;\n\tauthStorage?: AuthStorage;\n\tmodelRegistry?: ModelRegistry;\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\ttools?: Tool[];\n\tcustomTools?: ToolDefinition[];\n\tresourceLoader?: ResourceLoader;\n\tsessionManager?: SessionManager;\n\tsettingsManager?: SettingsManager;\n}\nexport interface CreateAgentSessionResult {\n\tsession: AgentSession;\n\textensionsResult: LoadExtensionsResult;\n\tmodelFallbackMessage?: string;\n}\nexport type {\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionFactory,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tToolDefinition,\n} from \"./extensions/index.js\";\nexport type { PromptTemplate } from \"./prompt-templates.js\";\nexport type { Skill } from \"./skills.js\";\nexport type { Tool } from \"./tools/index.js\";\nexport {\n\treadTool,\n\tbashTool,\n\teditTool,\n\twriteTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\tcodingTools,\n\treadOnlyTools,\n\tallTools as allBuiltInTools,\n\tcreateCodingTools,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateBashTool,\n\tcreateEditTool,\n\tcreateWriteTool,\n\tcreateGrepTool,\n\tcreateFindTool,\n\tcreateLsTool,\n};\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst agentDir = options.agentDir ?? getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst authStorage = options.authStorage ?? AuthStorage.create(authPath);\n\tconst modelRegistry = options.modelRegistry ?? new ModelRegistry(authStorage, modelsPath);\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd);\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({ cwd, agentDir, settingsManager });\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst hasExistingSession = existingSession.messages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\t// Get model from registry (user-configured single model)\n\tconst model = options.model ?? modelRegistry.getModel() ?? undefined;\n\tlet modelFallbackMessage: string | undefined;\n\n\tif (!model) {\n\t\tmodelFallbackMessage = \"No model configured. Please run onboarding first.\";\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\tif (!model || !model.reasoning) {\n\t\tthinkingLevel = \"off\";\n\t}\n\tconst defaultActiveToolNames: ToolName[] = [\"read\", \"bash\", \"edit\", \"write\"];\n\tconst initialActiveToolNames: ToolName[] = options.tools\n\t\t? options.tools.map((t) => t.name).filter((n): n is ToolName => n in allTools)\n\t\t: defaultActiveToolNames;\n\tlet agent: Agent;\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\treturn converted;\n\t\t}\n\t\treturn converted.map((msg) => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t};\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tonPayload: async (payload, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\treturn payload;\n\t\t\t}\n\t\t\treturn runner.emitBeforeProviderRequest(payload);\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) return messages;\n\t\t\treturn runner.emitContext(messages);\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getRetrySettings().maxDelayMs,\n\t\tgetApiKey: async (_provider) => {\n\t\t\tconst key = modelRegistry.getApiKey();\n\t\t\tif (!key) {\n\t\t\t\tthrow new Error(\"No API key configured. Please check your configuration.\");\n\t\t\t}\n\t\t\treturn key;\n\t\t},\n\t});\n\tif (hasExistingSession) {\n\t\tagent.replaceMessages(existingSession.messages);\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\tconst session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRegistry,\n\t\tinitialActiveToolNames,\n\t\textensionRunnerRef,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t};\n}\n"]}
|
package/dist/core/sdk.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { Agent } from "@
|
|
2
|
+
import { Agent } from "@boxiaolanya2008/pi-agent-core";
|
|
3
3
|
import { getAgentDir } from "../config.js";
|
|
4
4
|
import { AgentSession } from "./agent-session.js";
|
|
5
5
|
import { AuthStorage } from "./auth-storage.js";
|
package/dist/core/sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAyC,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EACb,QAAQ,EAGR,SAAS,GACT,MAAM,kBAAkB,CAAC;AAiC1B,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EACb,QAAQ,IAAI,eAAe,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,YAAY,GACZ,CAAC;AACF,SAAS,kBAAkB,GAAW;IACrC,OAAO,WAAW,EAAE,CAAC;AAAA,CACrB;AACD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAO,GAA8B,EAAE,EAAqC;IACpH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,kBAAkB,EAAE,CAAC;IAC1D,IAAI,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1F,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,cAAc,GAAG,IAAI,qBAAqB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;QAC/E,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,eAAe,GAAG,cAAc,CAAC,mBAAmB,EAAE,CAAC;IAC7D,MAAM,kBAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC;IAE5G,yDAAyD;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC;IACrE,IAAI,oBAAwC,CAAC;IAE7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,oBAAoB,GAAG,mDAAmD,CAAC;IAC5E,CAAC;IAED,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC1C,IAAI,aAAa,KAAK,SAAS,IAAI,kBAAkB,EAAE,CAAC;QACvD,aAAa,GAAG,gBAAgB;YAC/B,CAAC,CAAE,eAAe,CAAC,aAA+B;YAClD,CAAC,CAAC,CAAC,eAAe,CAAC,uBAAuB,EAAE,IAAI,sBAAsB,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACjC,aAAa,GAAG,eAAe,CAAC,uBAAuB,EAAE,IAAI,sBAAsB,CAAC;IACrF,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,aAAa,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,MAAM,sBAAsB,GAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,sBAAsB,GAAe,OAAO,CAAC,KAAK;QACvD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAiB,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC;QAC9E,CAAC,CAAC,sBAAsB,CAAC;IAC1B,IAAI,KAAY,CAAC;IACjB,MAAM,2BAA2B,GAAG,CAAC,QAAwB,EAAa,EAAE,CAAC;QAC5E,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;oBAC1D,IAAI,SAAS,EAAE,CAAC;wBACf,MAAM,eAAe,GAAG,OAAO;6BAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACV,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,CACtF;6BACA,MAAM,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CACb,CAAC,CACA,CAAC,CAAC,IAAI,KAAK,MAAM;4BACjB,CAAC,CAAC,IAAI,KAAK,4BAA4B;4BACvC,CAAC,GAAG,CAAC;4BACL,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;4BACzB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAoC,CAAC,IAAI,KAAK,4BAA4B,CACpF,CACF,CAAC;wBACH,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;oBAC7C,CAAC;gBACF,CAAC;YACF,CAAC;YACD,OAAO,GAAG,CAAC;QAAA,CACX,CAAC,CAAC;IAAA,CACH,CAAC;IACF,MAAM,kBAAkB,GAAkC,EAAE,CAAC;IAC7D,KAAK,GAAG,IAAI,KAAK,CAAC;QACjB,YAAY,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,KAAK;YACL,aAAa;YACb,KAAK,EAAE,EAAE;SACT;QACD,YAAY,EAAE,2BAA2B;QACzC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBACrD,OAAO,OAAO,CAAC;YAChB,CAAC;YACD,OAAO,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAAA,CACjD;QACD,SAAS,EAAE,cAAc,CAAC,YAAY,EAAE;QACxC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,MAAM;gBAAE,OAAO,QAAQ,CAAC;YAC7B,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAAA,CACpC;QACD,YAAY,EAAE,eAAe,CAAC,eAAe,EAAE;QAC/C,YAAY,EAAE,eAAe,CAAC,eAAe,EAAE;QAC/C,SAAS,EAAE,eAAe,CAAC,YAAY,EAAE;QACzC,eAAe,EAAE,eAAe,CAAC,kBAAkB,EAAE;QACrD,eAAe,EAAE,eAAe,CAAC,gBAAgB,EAAE,CAAC,UAAU;QAC9D,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,GAAG,CAAC;QAAA,CACX;KACD,CAAC,CAAC;IACH,IAAI,kBAAkB,EAAE,CAAC;QACxB,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,cAAc,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;SAAM,CAAC;QACP,IAAI,KAAK,EAAE,CAAC;YACX,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,cAAc,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC;QAChC,KAAK;QACL,cAAc;QACd,eAAe;QACf,GAAG;QACH,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc;QACd,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,aAAa;QACb,sBAAsB;QACtB,kBAAkB;KAClB,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,OAAO;QACN,OAAO;QACP,gBAAgB;QAChB,oBAAoB;KACpB,CAAC;AAAA,CACF","sourcesContent":["import { join } from \"node:path\";\nimport { Agent, type AgentMessage, type ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport type { Message, Model } from \"@mariozechner/pi-ai\";\nimport { getAgentDir } from \"../config.js\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AuthStorage } from \"./auth-storage.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ExtensionRunner, LoadExtensionsResult, ToolDefinition } from \"./extensions/index.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport { ModelRegistry } from \"./model-registry.js\";\nimport type { ResourceLoader } from \"./resource-loader.js\";\nimport { DefaultResourceLoader } from \"./resource-loader.js\";\nimport { SessionManager } from \"./session-manager.js\";\nimport { SettingsManager } from \"./settings-manager.js\";\nimport { time } from \"./timings.js\";\nimport {\n\tallTools,\n\tbashTool,\n\tcodingTools,\n\tcreateBashTool,\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\teditTool,\n\tfindTool,\n\tgrepTool,\n\tlsTool,\n\treadOnlyTools,\n\treadTool,\n\ttype Tool,\n\ttype ToolName,\n\twriteTool,\n} from \"./tools/index.js\";\nexport interface CreateAgentSessionOptions {\n\tcwd?: string;\n\tagentDir?: string;\n\tauthStorage?: AuthStorage;\n\tmodelRegistry?: ModelRegistry;\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\ttools?: Tool[];\n\tcustomTools?: ToolDefinition[];\n\tresourceLoader?: ResourceLoader;\n\tsessionManager?: SessionManager;\n\tsettingsManager?: SettingsManager;\n}\nexport interface CreateAgentSessionResult {\n\tsession: AgentSession;\n\textensionsResult: LoadExtensionsResult;\n\tmodelFallbackMessage?: string;\n}\nexport type {\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionFactory,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tToolDefinition,\n} from \"./extensions/index.js\";\nexport type { PromptTemplate } from \"./prompt-templates.js\";\nexport type { Skill } from \"./skills.js\";\nexport type { Tool } from \"./tools/index.js\";\nexport {\n\treadTool,\n\tbashTool,\n\teditTool,\n\twriteTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\tcodingTools,\n\treadOnlyTools,\n\tallTools as allBuiltInTools,\n\tcreateCodingTools,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateBashTool,\n\tcreateEditTool,\n\tcreateWriteTool,\n\tcreateGrepTool,\n\tcreateFindTool,\n\tcreateLsTool,\n};\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst agentDir = options.agentDir ?? getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst authStorage = options.authStorage ?? AuthStorage.create(authPath);\n\tconst modelRegistry = options.modelRegistry ?? new ModelRegistry(authStorage, modelsPath);\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd);\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({ cwd, agentDir, settingsManager });\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst hasExistingSession = existingSession.messages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\t// Get model from registry (user-configured single model)\n\tconst model = options.model ?? modelRegistry.getModel() ?? undefined;\n\tlet modelFallbackMessage: string | undefined;\n\n\tif (!model) {\n\t\tmodelFallbackMessage = \"No model configured. Please run onboarding first.\";\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\tif (!model || !model.reasoning) {\n\t\tthinkingLevel = \"off\";\n\t}\n\tconst defaultActiveToolNames: ToolName[] = [\"read\", \"bash\", \"edit\", \"write\"];\n\tconst initialActiveToolNames: ToolName[] = options.tools\n\t\t? options.tools.map((t) => t.name).filter((n): n is ToolName => n in allTools)\n\t\t: defaultActiveToolNames;\n\tlet agent: Agent;\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\treturn converted;\n\t\t}\n\t\treturn converted.map((msg) => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t};\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tonPayload: async (payload, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\treturn payload;\n\t\t\t}\n\t\t\treturn runner.emitBeforeProviderRequest(payload);\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) return messages;\n\t\t\treturn runner.emitContext(messages);\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getRetrySettings().maxDelayMs,\n\t\tgetApiKey: async (_provider) => {\n\t\t\tconst key = modelRegistry.getApiKey();\n\t\t\tif (!key) {\n\t\t\t\tthrow new Error(\"No API key configured. Please check your configuration.\");\n\t\t\t}\n\t\t\treturn key;\n\t\t},\n\t});\n\tif (hasExistingSession) {\n\t\tagent.replaceMessages(existingSession.messages);\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\tconst session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRegistry,\n\t\tinitialActiveToolNames,\n\t\textensionRunnerRef,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport { Agent, type AgentMessage, type ThinkingLevel } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { Message, Model } from \"@boxiaolanya2008/pi-ai\";\nimport { getAgentDir } from \"../config.js\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AuthStorage } from \"./auth-storage.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ExtensionRunner, LoadExtensionsResult, ToolDefinition } from \"./extensions/index.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport { ModelRegistry } from \"./model-registry.js\";\nimport type { ResourceLoader } from \"./resource-loader.js\";\nimport { DefaultResourceLoader } from \"./resource-loader.js\";\nimport { SessionManager } from \"./session-manager.js\";\nimport { SettingsManager } from \"./settings-manager.js\";\nimport { time } from \"./timings.js\";\nimport {\n\tallTools,\n\tbashTool,\n\tcodingTools,\n\tcreateBashTool,\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\teditTool,\n\tfindTool,\n\tgrepTool,\n\tlsTool,\n\treadOnlyTools,\n\treadTool,\n\ttype Tool,\n\ttype ToolName,\n\twriteTool,\n} from \"./tools/index.js\";\nexport interface CreateAgentSessionOptions {\n\tcwd?: string;\n\tagentDir?: string;\n\tauthStorage?: AuthStorage;\n\tmodelRegistry?: ModelRegistry;\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\ttools?: Tool[];\n\tcustomTools?: ToolDefinition[];\n\tresourceLoader?: ResourceLoader;\n\tsessionManager?: SessionManager;\n\tsettingsManager?: SettingsManager;\n}\nexport interface CreateAgentSessionResult {\n\tsession: AgentSession;\n\textensionsResult: LoadExtensionsResult;\n\tmodelFallbackMessage?: string;\n}\nexport type {\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionFactory,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tToolDefinition,\n} from \"./extensions/index.js\";\nexport type { PromptTemplate } from \"./prompt-templates.js\";\nexport type { Skill } from \"./skills.js\";\nexport type { Tool } from \"./tools/index.js\";\nexport {\n\treadTool,\n\tbashTool,\n\teditTool,\n\twriteTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\tcodingTools,\n\treadOnlyTools,\n\tallTools as allBuiltInTools,\n\tcreateCodingTools,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateBashTool,\n\tcreateEditTool,\n\tcreateWriteTool,\n\tcreateGrepTool,\n\tcreateFindTool,\n\tcreateLsTool,\n};\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst agentDir = options.agentDir ?? getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst authStorage = options.authStorage ?? AuthStorage.create(authPath);\n\tconst modelRegistry = options.modelRegistry ?? new ModelRegistry(authStorage, modelsPath);\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd);\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({ cwd, agentDir, settingsManager });\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst hasExistingSession = existingSession.messages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\t// Get model from registry (user-configured single model)\n\tconst model = options.model ?? modelRegistry.getModel() ?? undefined;\n\tlet modelFallbackMessage: string | undefined;\n\n\tif (!model) {\n\t\tmodelFallbackMessage = \"No model configured. Please run onboarding first.\";\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\tif (!model || !model.reasoning) {\n\t\tthinkingLevel = \"off\";\n\t}\n\tconst defaultActiveToolNames: ToolName[] = [\"read\", \"bash\", \"edit\", \"write\"];\n\tconst initialActiveToolNames: ToolName[] = options.tools\n\t\t? options.tools.map((t) => t.name).filter((n): n is ToolName => n in allTools)\n\t\t: defaultActiveToolNames;\n\tlet agent: Agent;\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\treturn converted;\n\t\t}\n\t\treturn converted.map((msg) => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t};\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tonPayload: async (payload, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\treturn payload;\n\t\t\t}\n\t\t\treturn runner.emitBeforeProviderRequest(payload);\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) return messages;\n\t\t\treturn runner.emitContext(messages);\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getRetrySettings().maxDelayMs,\n\t\tgetApiKey: async (_provider) => {\n\t\t\tconst key = modelRegistry.getApiKey();\n\t\t\tif (!key) {\n\t\t\t\tthrow new Error(\"No API key configured. Please check your configuration.\");\n\t\t\t}\n\t\t\treturn key;\n\t\t},\n\t});\n\tif (hasExistingSession) {\n\t\tagent.replaceMessages(existingSession.messages);\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\tconst session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRegistry,\n\t\tinitialActiveToolNames,\n\t\textensionRunnerRef,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t};\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AgentMessage } from "@
|
|
2
|
-
import type { ImageContent, Message, TextContent } from "@
|
|
1
|
+
import type { AgentMessage } from "@boxiaolanya2008/pi-agent-core";
|
|
2
|
+
import type { ImageContent, Message, TextContent } from "@boxiaolanya2008/pi-ai";
|
|
3
3
|
import { type BashExecutionMessage, type CustomMessage } from "./messages.js";
|
|
4
4
|
export declare const CURRENT_SESSION_VERSION = 3;
|
|
5
5
|
export interface SessionHeader {
|