@agent-native/core 0.7.11 → 0.7.13
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/README.md +1 -1
- package/dist/action.js +30 -11
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +26 -8
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts +19 -0
- package/dist/agent/engine/builder-engine.d.ts.map +1 -0
- package/dist/agent/engine/builder-engine.js +430 -0
- package/dist/agent/engine/builder-engine.js.map +1 -0
- package/dist/agent/engine/builtin.d.ts.map +1 -1
- package/dist/agent/engine/builtin.js +26 -10
- package/dist/agent/engine/builtin.js.map +1 -1
- package/dist/agent/engine/index.d.ts +1 -1
- package/dist/agent/engine/index.d.ts.map +1 -1
- package/dist/agent/engine/index.js +1 -1
- package/dist/agent/engine/index.js.map +1 -1
- package/dist/agent/engine/provider-env-vars.d.ts +21 -0
- package/dist/agent/engine/provider-env-vars.d.ts.map +1 -0
- package/dist/agent/engine/provider-env-vars.js +50 -0
- package/dist/agent/engine/provider-env-vars.js.map +1 -0
- package/dist/agent/engine/registry.d.ts +37 -0
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +102 -4
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/types.d.ts +30 -0
- package/dist/agent/engine/types.d.ts.map +1 -1
- package/dist/agent/engine/types.js +19 -1
- package/dist/agent/engine/types.js.map +1 -1
- package/dist/agent/production-agent.d.ts +7 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +67 -15
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +11 -1
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts +4 -0
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +1 -0
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +8 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/checkpoints/service.d.ts +1 -0
- package/dist/checkpoints/service.d.ts.map +1 -1
- package/dist/checkpoints/service.js +26 -2
- package/dist/checkpoints/service.js.map +1 -1
- package/dist/cli/create.d.ts +30 -0
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +127 -10
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +19 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/templates-meta.d.ts +2 -0
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +2 -0
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/cli/workspacify.d.ts.map +1 -1
- package/dist/cli/workspacify.js +7 -3
- package/dist/cli/workspacify.js.map +1 -1
- package/dist/client/AgentPanel.js +1 -1
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +93 -37
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/ConnectBuilderCard.d.ts +1 -7
- package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
- package/dist/client/ConnectBuilderCard.js +30 -132
- package/dist/client/ConnectBuilderCard.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +58 -26
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/analytics.d.ts +5 -8
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +53 -11
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/builder-mark.d.ts +9 -0
- package/dist/client/builder-mark.d.ts.map +1 -0
- package/dist/client/builder-mark.js +10 -0
- package/dist/client/builder-mark.js.map +1 -0
- package/dist/client/components/ui/popover.d.ts +8 -0
- package/dist/client/components/ui/popover.d.ts.map +1 -0
- package/dist/client/components/ui/popover.js +11 -0
- package/dist/client/components/ui/popover.js.map +1 -0
- package/dist/client/composer/ComposerPlusMenu.d.ts +2 -0
- package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -0
- package/dist/client/composer/ComposerPlusMenu.js +244 -0
- package/dist/client/composer/ComposerPlusMenu.js.map +1 -0
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +25 -7
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
- package/dist/client/composer/useVoiceDictation.js +4 -2
- package/dist/client/composer/useVoiceDictation.js.map +1 -1
- package/dist/client/error-format.d.ts +2 -0
- package/dist/client/error-format.d.ts.map +1 -0
- package/dist/client/error-format.js +31 -0
- package/dist/client/error-format.js.map +1 -0
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/observability/ObservabilityDashboard.d.ts +5 -0
- package/dist/client/observability/ObservabilityDashboard.d.ts.map +1 -0
- package/dist/client/observability/ObservabilityDashboard.js +169 -0
- package/dist/client/observability/ObservabilityDashboard.js.map +1 -0
- package/dist/client/observability/ThumbsFeedback.d.ts +8 -0
- package/dist/client/observability/ThumbsFeedback.d.ts.map +1 -0
- package/dist/client/observability/ThumbsFeedback.js +64 -0
- package/dist/client/observability/ThumbsFeedback.js.map +1 -0
- package/dist/client/observability/index.d.ts +4 -0
- package/dist/client/observability/index.d.ts.map +1 -0
- package/dist/client/observability/index.js +4 -0
- package/dist/client/observability/index.js.map +1 -0
- package/dist/client/observability/useObservability.d.ts +128 -0
- package/dist/client/observability/useObservability.d.ts.map +1 -0
- package/dist/client/observability/useObservability.js +109 -0
- package/dist/client/observability/useObservability.js.map +1 -0
- package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.js +34 -92
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/org/RequireActiveOrg.d.ts +33 -0
- package/dist/client/org/RequireActiveOrg.d.ts.map +1 -0
- package/dist/client/org/RequireActiveOrg.js +63 -0
- package/dist/client/org/RequireActiveOrg.js.map +1 -0
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +50 -15
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/org/index.d.ts +1 -0
- package/dist/client/org/index.d.ts.map +1 -1
- package/dist/client/org/index.js +1 -0
- package/dist/client/org/index.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +3 -3
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/AutomationsSection.js +1 -1
- package/dist/client/settings/AutomationsSection.js.map +1 -1
- package/dist/client/settings/BrowserSection.js +1 -1
- package/dist/client/settings/BrowserSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +251 -42
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +10 -4
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +26 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +128 -4
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +2 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +6 -2
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/transcription/BuilderTranscriptionCta.d.ts +9 -0
- package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -0
- package/dist/client/transcription/BuilderTranscriptionCta.js +18 -0
- package/dist/client/transcription/BuilderTranscriptionCta.js.map +1 -0
- package/dist/client/transcription/use-live-transcription.d.ts +29 -0
- package/dist/client/transcription/use-live-transcription.d.ts.map +1 -0
- package/dist/client/transcription/use-live-transcription.js +156 -0
- package/dist/client/transcription/use-live-transcription.js.map +1 -0
- package/dist/client/use-builder-enabled.d.ts +17 -0
- package/dist/client/use-builder-enabled.d.ts.map +1 -0
- package/dist/client/use-builder-enabled.js +36 -0
- package/dist/client/use-builder-enabled.js.map +1 -0
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +4 -2
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/client/useProductionAgent.d.ts.map +1 -1
- package/dist/client/useProductionAgent.js +3 -1
- package/dist/client/useProductionAgent.js.map +1 -1
- package/dist/db/migrations.d.ts +9 -0
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +75 -10
- package/dist/db/migrations.js.map +1 -1
- package/dist/file-upload/builder.d.ts.map +1 -1
- package/dist/file-upload/builder.js +11 -4
- package/dist/file-upload/builder.js.map +1 -1
- package/dist/jobs/tools.d.ts.map +1 -1
- package/dist/jobs/tools.js +137 -161
- package/dist/jobs/tools.js.map +1 -1
- package/dist/notifications/actions.d.ts +2 -2
- package/dist/notifications/actions.d.ts.map +1 -1
- package/dist/notifications/actions.js +77 -69
- package/dist/notifications/actions.js.map +1 -1
- package/dist/observability/evals.d.ts +22 -0
- package/dist/observability/evals.d.ts.map +1 -0
- package/dist/observability/evals.js +371 -0
- package/dist/observability/evals.js.map +1 -0
- package/dist/observability/experiments.d.ts +24 -0
- package/dist/observability/experiments.d.ts.map +1 -0
- package/dist/observability/experiments.js +274 -0
- package/dist/observability/experiments.js.map +1 -0
- package/dist/observability/feedback.d.ts +14 -0
- package/dist/observability/feedback.d.ts.map +1 -0
- package/dist/observability/feedback.js +256 -0
- package/dist/observability/feedback.js.map +1 -0
- package/dist/observability/index.d.ts +6 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/plugin.d.ts +2 -0
- package/dist/observability/plugin.d.ts.map +1 -0
- package/dist/observability/plugin.js +12 -0
- package/dist/observability/plugin.js.map +1 -0
- package/dist/observability/routes.d.ts +68 -0
- package/dist/observability/routes.d.ts.map +1 -0
- package/dist/observability/routes.js +301 -0
- package/dist/observability/routes.js.map +1 -0
- package/dist/observability/store.d.ts +77 -0
- package/dist/observability/store.d.ts.map +1 -0
- package/dist/observability/store.js +976 -0
- package/dist/observability/store.js.map +1 -0
- package/dist/observability/traces.d.ts +37 -0
- package/dist/observability/traces.d.ts.map +1 -0
- package/dist/observability/traces.js +182 -0
- package/dist/observability/traces.js.map +1 -0
- package/dist/observability/types.d.ts +159 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +16 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/onboarding/default-steps.d.ts.map +1 -1
- package/dist/onboarding/default-steps.js +68 -24
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/onboarding/types.d.ts +10 -1
- package/dist/onboarding/types.d.ts.map +1 -1
- package/dist/org/context.d.ts +8 -1
- package/dist/org/context.d.ts.map +1 -1
- package/dist/org/context.js +163 -6
- package/dist/org/context.js.map +1 -1
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +49 -30
- package/dist/org/handlers.js.map +1 -1
- package/dist/progress/actions.d.ts +3 -0
- package/dist/progress/actions.d.ts.map +1 -1
- package/dist/progress/actions.js +86 -110
- package/dist/progress/actions.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/progress/routes.js +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js +20 -6
- package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.d.ts +10 -0
- package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -0
- package/dist/scripts/agent-engines/manage-agent-engine.js +47 -0
- package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -0
- package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.js +10 -9
- package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +39 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +743 -452
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +18 -7
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/analytics.d.ts +9 -7
- package/dist/server/analytics.d.ts.map +1 -1
- package/dist/server/analytics.js +12 -11
- package/dist/server/analytics.js.map +1 -1
- package/dist/server/app-name.d.ts +5 -2
- package/dist/server/app-name.d.ts.map +1 -1
- package/dist/server/app-name.js +14 -3
- package/dist/server/app-name.js.map +1 -1
- package/dist/server/app-url.d.ts.map +1 -1
- package/dist/server/app-url.js +17 -5
- package/dist/server/app-url.js.map +1 -1
- package/dist/server/auth.d.ts +2 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +153 -2
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts +2 -0
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +4 -0
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/builder-browser.d.ts +59 -1
- package/dist/server/builder-browser.d.ts.map +1 -1
- package/dist/server/builder-browser.js +127 -11
- package/dist/server/builder-browser.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +278 -13
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +7 -0
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +10 -0
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +29 -4
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +46 -5
- package/dist/server/poll.js.map +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +2 -1
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts.map +1 -1
- package/dist/server/transcribe-voice.js +44 -5
- package/dist/server/transcribe-voice.js.map +1 -1
- package/dist/styles/agent-native.css +11 -2
- package/dist/templates/default/.agents/skills/progress/SKILL.md +14 -12
- package/dist/templates/default/app/root.tsx +7 -0
- package/dist/templates/workspace-root/pnpm-workspace.yaml +6 -0
- package/dist/transcription/builder-transcription.d.ts +27 -0
- package/dist/transcription/builder-transcription.d.ts.map +1 -0
- package/dist/transcription/builder-transcription.js +41 -0
- package/dist/transcription/builder-transcription.js.map +1 -0
- package/dist/triggers/actions.d.ts +3 -0
- package/dist/triggers/actions.d.ts.map +1 -1
- package/dist/triggers/actions.js +189 -213
- package/dist/triggers/actions.js.map +1 -1
- package/docs/content/agent-mentions.md +1 -1
- package/docs/content/automations.md +22 -19
- package/docs/content/cloneable-saas.md +2 -2
- package/docs/content/deployment.md +21 -61
- package/docs/content/getting-started.md +1 -1
- package/docs/content/key-concepts.md +1 -1
- package/docs/content/{enterprise-workspace.md → multi-app-workspace.md} +3 -3
- package/docs/content/multi-tenancy.md +1 -1
- package/docs/content/progress.md +11 -11
- package/docs/content/template-dispatch.md +3 -3
- package/docs/content/workspace-management.md +1 -1
- package/package.json +13 -1
- package/src/templates/default/.agents/skills/progress/SKILL.md +14 -12
- package/src/templates/default/app/root.tsx +7 -0
- package/src/templates/workspace-root/pnpm-workspace.yaml +6 -0
- package/dist/client/settings/LLMSection.d.ts +0 -2
- package/dist/client/settings/LLMSection.d.ts.map +0 -1
- package/dist/client/settings/LLMSection.js +0 -191
- package/dist/client/settings/LLMSection.js.map +0 -1
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuilderEngine — HTTP client for the Builder.io managed LLM gateway.
|
|
3
|
+
*
|
|
4
|
+
* The gateway accepts an Anthropic-shaped request body and streams events as
|
|
5
|
+
* JSONL. This engine translates the framework's EngineStreamOptions into the
|
|
6
|
+
* gateway request, parses the streamed events into EngineEvent items, and
|
|
7
|
+
* maps gateway error responses (402 quota, 403 disabled, 401 auth, 429
|
|
8
|
+
* concurrency) into structured stop events that carry an upgrade URL when
|
|
9
|
+
* the chat UI needs to prompt the user to upgrade.
|
|
10
|
+
*
|
|
11
|
+
* Credentials come from BUILDER_PRIVATE_KEY (set via the Builder CLI-auth
|
|
12
|
+
* onboarding flow). Base URL is overridable via BUILDER_GATEWAY_BASE_URL.
|
|
13
|
+
*/
|
|
14
|
+
import { engineMessagesToAnthropic, engineToolsToAnthropic, } from "./translate-anthropic.js";
|
|
15
|
+
import { getBuilderAuthHeader, getBuilderGatewayBaseUrl, } from "../../server/credential-provider.js";
|
|
16
|
+
import { getSetting } from "../../settings/store.js";
|
|
17
|
+
export const BUILDER_CAPABILITIES = {
|
|
18
|
+
thinking: true,
|
|
19
|
+
// TODO: flip to true once we forward `cache_control` blocks through to
|
|
20
|
+
// the gateway request body. Today the engine builds the Anthropic-shaped
|
|
21
|
+
// body without cache_control markers, and Anthropic caching is opt-in
|
|
22
|
+
// (not automatic), so claiming `promptCaching: true` would overpromise.
|
|
23
|
+
promptCaching: false,
|
|
24
|
+
vision: true,
|
|
25
|
+
computerUse: false,
|
|
26
|
+
parallelToolCalls: true,
|
|
27
|
+
};
|
|
28
|
+
export const BUILDER_SUPPORTED_MODELS = [
|
|
29
|
+
"claude-opus-4-7",
|
|
30
|
+
"claude-sonnet-4-6",
|
|
31
|
+
"claude-haiku-4-5",
|
|
32
|
+
"gpt-5-4",
|
|
33
|
+
"gpt-5-4-mini",
|
|
34
|
+
"gpt-5-1-codex-mini",
|
|
35
|
+
"gemini-3-1-pro",
|
|
36
|
+
"gemini-3-0-flash",
|
|
37
|
+
"grok-code-fast",
|
|
38
|
+
"qwen3-coder",
|
|
39
|
+
"kimi-k2-5",
|
|
40
|
+
"deepseek-v3-1",
|
|
41
|
+
"z-ai-glm-4-5",
|
|
42
|
+
];
|
|
43
|
+
export const BUILDER_DEFAULT_MODEL = "claude-sonnet-4-6";
|
|
44
|
+
/**
|
|
45
|
+
* Bucket an Anthropic `thinking.budgetTokens` value into the gateway's
|
|
46
|
+
* three-level `reasoning_effort` enum (low / medium / high).
|
|
47
|
+
*
|
|
48
|
+
* The thresholds are chosen to align with typical Anthropic extended-thinking
|
|
49
|
+
* budgets we see in the wild:
|
|
50
|
+
* • < 2000 → short one-step reasoning ("low")
|
|
51
|
+
* • 2000–8000 → multi-step thinking ("medium")
|
|
52
|
+
* • ≥ 8000 → deep planning / long chains ("high")
|
|
53
|
+
*
|
|
54
|
+
* 8000 is Anthropic's documented default in our framework (see
|
|
55
|
+
* engine/types.ts:195), so callers that don't explicitly set
|
|
56
|
+
* `budgetTokens` map to "high" via the default. If the gateway later
|
|
57
|
+
* exposes more granular knobs or different thresholds, revisit this map.
|
|
58
|
+
*/
|
|
59
|
+
function mapReasoningEffort(budgetTokens) {
|
|
60
|
+
if (budgetTokens < 2000)
|
|
61
|
+
return "low";
|
|
62
|
+
if (budgetTokens < 8000)
|
|
63
|
+
return "medium";
|
|
64
|
+
return "high";
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Build the URL the chat UI should link to when a user hits a quota error.
|
|
68
|
+
* Deep-links to the connected org's billing page when BUILDER_ORG_NAME is
|
|
69
|
+
* known, else falls back to the generic account billing page.
|
|
70
|
+
*/
|
|
71
|
+
function buildUpgradeUrl() {
|
|
72
|
+
const orgName = process.env.BUILDER_ORG_NAME;
|
|
73
|
+
if (orgName) {
|
|
74
|
+
return `https://builder.io/app/organizations/${encodeURIComponent(orgName)}/billing`;
|
|
75
|
+
}
|
|
76
|
+
return "https://builder.io/account/billing";
|
|
77
|
+
}
|
|
78
|
+
class BuilderEngine {
|
|
79
|
+
name = "builder";
|
|
80
|
+
label = "Builder.io Gateway";
|
|
81
|
+
defaultModel = BUILDER_DEFAULT_MODEL;
|
|
82
|
+
supportedModels = BUILDER_SUPPORTED_MODELS;
|
|
83
|
+
capabilities = BUILDER_CAPABILITIES;
|
|
84
|
+
async *stream(opts) {
|
|
85
|
+
// Honor the SQL disconnect flag even when BUILDER_PRIVATE_KEY is still
|
|
86
|
+
// in process.env (nitro dev env-runner can preserve it across reloads
|
|
87
|
+
// — see core-routes-plugin.ts plugin init).
|
|
88
|
+
try {
|
|
89
|
+
const disconnected = await getSetting("builder-disconnected");
|
|
90
|
+
if (disconnected) {
|
|
91
|
+
yield {
|
|
92
|
+
type: "stop",
|
|
93
|
+
reason: "error",
|
|
94
|
+
error: "Builder is disconnected. Reconnect in Settings → LLM to use the Builder gateway.",
|
|
95
|
+
errorCode: "missing_credentials",
|
|
96
|
+
};
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// DB not reachable — proceed with env-based check below.
|
|
102
|
+
}
|
|
103
|
+
const authHeader = getBuilderAuthHeader();
|
|
104
|
+
if (!authHeader) {
|
|
105
|
+
yield {
|
|
106
|
+
type: "stop",
|
|
107
|
+
reason: "error",
|
|
108
|
+
error: "BUILDER_PRIVATE_KEY is not set",
|
|
109
|
+
errorCode: "missing_credentials",
|
|
110
|
+
};
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const messages = engineMessagesToAnthropic(opts.messages);
|
|
114
|
+
const tools = engineToolsToAnthropic(opts.tools);
|
|
115
|
+
const thinkingBudget = opts.providerOptions?.anthropic?.thinking?.budgetTokens;
|
|
116
|
+
const body = {
|
|
117
|
+
model: opts.model,
|
|
118
|
+
messages,
|
|
119
|
+
...(opts.systemPrompt ? { system: opts.systemPrompt } : {}),
|
|
120
|
+
...(tools.length > 0 ? { tools } : {}),
|
|
121
|
+
...(opts.maxOutputTokens !== undefined
|
|
122
|
+
? { max_tokens: opts.maxOutputTokens }
|
|
123
|
+
: {}),
|
|
124
|
+
...(typeof thinkingBudget === "number"
|
|
125
|
+
? { reasoning_effort: mapReasoningEffort(thinkingBudget) }
|
|
126
|
+
: {}),
|
|
127
|
+
};
|
|
128
|
+
const gatewayBaseUrl = getBuilderGatewayBaseUrl();
|
|
129
|
+
const orgLabel = process.env.BUILDER_ORG_NAME || "unknown-org";
|
|
130
|
+
const tStart = Date.now();
|
|
131
|
+
console.log(`[builder-engine] → POST ${gatewayBaseUrl}/messages model=${opts.model} tools=${tools.length} org=${orgLabel}`);
|
|
132
|
+
let response;
|
|
133
|
+
try {
|
|
134
|
+
response = await fetch(`${gatewayBaseUrl}/messages`, {
|
|
135
|
+
method: "POST",
|
|
136
|
+
headers: {
|
|
137
|
+
"Content-Type": "application/json",
|
|
138
|
+
Authorization: authHeader,
|
|
139
|
+
},
|
|
140
|
+
body: JSON.stringify(body),
|
|
141
|
+
signal: opts.abortSignal,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
yield {
|
|
146
|
+
type: "stop",
|
|
147
|
+
reason: "error",
|
|
148
|
+
error: err instanceof Error ? err.message : String(err),
|
|
149
|
+
};
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
console.log(`[builder-engine] ← ${response.status} ${response.statusText} in ${Date.now() - tStart}ms`);
|
|
153
|
+
if (!response.ok) {
|
|
154
|
+
yield* emitHttpError(response);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const reader = response.body?.getReader();
|
|
158
|
+
if (!reader) {
|
|
159
|
+
yield {
|
|
160
|
+
type: "stop",
|
|
161
|
+
reason: "error",
|
|
162
|
+
error: "Builder gateway response has no body",
|
|
163
|
+
};
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
yield* parseJsonlStream(reader);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async function* emitHttpError(response) {
|
|
170
|
+
const status = response.status;
|
|
171
|
+
// Read the body once as text and then try to parse — calling `.json()`
|
|
172
|
+
// and then `.text()` as a fallback fails because the body stream is
|
|
173
|
+
// already consumed (TypeError: Body has already been read), so we'd
|
|
174
|
+
// silently lose non-JSON error payloads like HTML proxy 502s.
|
|
175
|
+
let errBody = {};
|
|
176
|
+
const rawText = await response.text().catch(() => "");
|
|
177
|
+
if (rawText) {
|
|
178
|
+
try {
|
|
179
|
+
errBody = JSON.parse(rawText);
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
errBody.message = rawText;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const code = errBody.code ?? `http_${status}`;
|
|
186
|
+
const message = errBody.message ?? `Builder gateway returned ${status}`;
|
|
187
|
+
// Belt-and-suspenders: 402 without a structured `credits-limit` code
|
|
188
|
+
// (e.g. bare proxy response) still means quota → show upgrade CTA.
|
|
189
|
+
if (code.startsWith("credits-limit") || status === 402) {
|
|
190
|
+
yield {
|
|
191
|
+
type: "stop",
|
|
192
|
+
reason: "error",
|
|
193
|
+
error: message,
|
|
194
|
+
errorCode: code,
|
|
195
|
+
upgradeUrl: buildUpgradeUrl(),
|
|
196
|
+
};
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (code === "gateway_not_enabled") {
|
|
200
|
+
yield {
|
|
201
|
+
type: "stop",
|
|
202
|
+
reason: "error",
|
|
203
|
+
error: message,
|
|
204
|
+
errorCode: code,
|
|
205
|
+
};
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (status === 401 || code === "unauthorized") {
|
|
209
|
+
yield {
|
|
210
|
+
type: "stop",
|
|
211
|
+
reason: "error",
|
|
212
|
+
error: message ||
|
|
213
|
+
"Builder authentication failed. Reconnect Builder via Settings → LLM.",
|
|
214
|
+
errorCode: "unauthorized",
|
|
215
|
+
};
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (status === 403) {
|
|
219
|
+
yield {
|
|
220
|
+
type: "stop",
|
|
221
|
+
reason: "error",
|
|
222
|
+
error: message,
|
|
223
|
+
errorCode: code,
|
|
224
|
+
};
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (status === 429 || code === "too_many_concurrent_requests") {
|
|
228
|
+
// Include "too many requests" in the message so production-agent's
|
|
229
|
+
// isRetryableError picks it up and retries the turn.
|
|
230
|
+
yield {
|
|
231
|
+
type: "stop",
|
|
232
|
+
reason: "error",
|
|
233
|
+
error: `${message} (too many requests)`,
|
|
234
|
+
errorCode: code,
|
|
235
|
+
};
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
yield {
|
|
239
|
+
type: "stop",
|
|
240
|
+
reason: "error",
|
|
241
|
+
error: message,
|
|
242
|
+
errorCode: code,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
// Yields one non-empty JSONL line at a time. Flushes any trailing content
|
|
246
|
+
// after the stream ends so a final event without a newline terminator
|
|
247
|
+
// isn't silently dropped — some gateway proxies close the connection on
|
|
248
|
+
// a complete line and the client must still process it.
|
|
249
|
+
async function* readJsonlLines(reader) {
|
|
250
|
+
const decoder = new TextDecoder();
|
|
251
|
+
let buffer = "";
|
|
252
|
+
while (true) {
|
|
253
|
+
const { done, value } = await reader.read();
|
|
254
|
+
if (done)
|
|
255
|
+
break;
|
|
256
|
+
buffer += decoder.decode(value, { stream: true });
|
|
257
|
+
let newlineIdx = buffer.indexOf("\n");
|
|
258
|
+
while (newlineIdx !== -1) {
|
|
259
|
+
const line = buffer.slice(0, newlineIdx).trim();
|
|
260
|
+
buffer = buffer.slice(newlineIdx + 1);
|
|
261
|
+
newlineIdx = buffer.indexOf("\n");
|
|
262
|
+
if (line)
|
|
263
|
+
yield line;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const tail = buffer.trim();
|
|
267
|
+
if (tail)
|
|
268
|
+
yield tail;
|
|
269
|
+
}
|
|
270
|
+
async function* parseJsonlStream(reader) {
|
|
271
|
+
const parts = [];
|
|
272
|
+
let pendingText = "";
|
|
273
|
+
let pendingThinking = null;
|
|
274
|
+
const flushPending = () => {
|
|
275
|
+
if (pendingText) {
|
|
276
|
+
parts.push({ type: "text", text: pendingText });
|
|
277
|
+
pendingText = "";
|
|
278
|
+
}
|
|
279
|
+
if (pendingThinking) {
|
|
280
|
+
parts.push({
|
|
281
|
+
type: "thinking",
|
|
282
|
+
text: pendingThinking.text,
|
|
283
|
+
...(pendingThinking.signature !== undefined
|
|
284
|
+
? { signature: pendingThinking.signature }
|
|
285
|
+
: {}),
|
|
286
|
+
});
|
|
287
|
+
pendingThinking = null;
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
try {
|
|
291
|
+
for await (const line of readJsonlLines(reader)) {
|
|
292
|
+
let event;
|
|
293
|
+
try {
|
|
294
|
+
event = JSON.parse(line);
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
yield {
|
|
298
|
+
type: "stop",
|
|
299
|
+
reason: "error",
|
|
300
|
+
error: `Builder gateway emitted invalid JSONL: ${line}`,
|
|
301
|
+
};
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
switch (event.type) {
|
|
305
|
+
case "text-delta": {
|
|
306
|
+
const text = event.text ?? "";
|
|
307
|
+
pendingText += text;
|
|
308
|
+
yield { type: "text-delta", text };
|
|
309
|
+
break;
|
|
310
|
+
}
|
|
311
|
+
case "thinking-delta": {
|
|
312
|
+
const text = event.text ?? "";
|
|
313
|
+
if (!pendingThinking)
|
|
314
|
+
pendingThinking = { text: "" };
|
|
315
|
+
pendingThinking.text += text;
|
|
316
|
+
if (event.signature)
|
|
317
|
+
pendingThinking.signature = event.signature;
|
|
318
|
+
yield {
|
|
319
|
+
type: "thinking-delta",
|
|
320
|
+
text,
|
|
321
|
+
...(event.signature ? { signature: event.signature } : {}),
|
|
322
|
+
};
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
case "tool-call-delta":
|
|
326
|
+
// Engine contract has no equivalent; drop. The authoritative
|
|
327
|
+
// `tool-call` event follows with the fully-parsed input.
|
|
328
|
+
break;
|
|
329
|
+
case "tool-call": {
|
|
330
|
+
flushPending();
|
|
331
|
+
parts.push({
|
|
332
|
+
type: "tool-call",
|
|
333
|
+
id: event.id,
|
|
334
|
+
name: event.name,
|
|
335
|
+
input: event.input,
|
|
336
|
+
});
|
|
337
|
+
yield {
|
|
338
|
+
type: "tool-call",
|
|
339
|
+
id: event.id,
|
|
340
|
+
name: event.name,
|
|
341
|
+
input: event.input,
|
|
342
|
+
};
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
345
|
+
case "usage": {
|
|
346
|
+
const cacheWrite = (event.cacheCreatedTokens ?? 0) + (event.cacheCreated1hTokens ?? 0);
|
|
347
|
+
yield {
|
|
348
|
+
type: "usage",
|
|
349
|
+
inputTokens: event.inputTokens ?? 0,
|
|
350
|
+
outputTokens: event.outputTokens ?? 0,
|
|
351
|
+
...(event.cacheInputTokens !== undefined
|
|
352
|
+
? { cacheReadTokens: event.cacheInputTokens }
|
|
353
|
+
: {}),
|
|
354
|
+
...(cacheWrite > 0 ? { cacheWriteTokens: cacheWrite } : {}),
|
|
355
|
+
};
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
case "stop": {
|
|
359
|
+
flushPending();
|
|
360
|
+
yield { type: "assistant-content", parts };
|
|
361
|
+
const reason = event.reason ?? "end_turn";
|
|
362
|
+
if (reason === "rate_limited") {
|
|
363
|
+
// Include "rate_limit" in the message so production-agent's
|
|
364
|
+
// isRetryableError picks it up and retries.
|
|
365
|
+
yield {
|
|
366
|
+
type: "stop",
|
|
367
|
+
reason: "error",
|
|
368
|
+
error: `rate_limit exceeded: ${event.error ?? "upstream provider rate limited"}`,
|
|
369
|
+
errorCode: "rate_limited",
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
else if (reason === "error") {
|
|
373
|
+
yield {
|
|
374
|
+
type: "stop",
|
|
375
|
+
reason: "error",
|
|
376
|
+
error: event.error ?? "Gateway error",
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
else if (reason === "end_turn" ||
|
|
380
|
+
reason === "tool_use" ||
|
|
381
|
+
reason === "max_tokens" ||
|
|
382
|
+
reason === "stop_sequence") {
|
|
383
|
+
yield { type: "stop", reason };
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
yield {
|
|
387
|
+
type: "stop",
|
|
388
|
+
reason: "error",
|
|
389
|
+
error: `Unknown stop reason: ${reason}`,
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
default:
|
|
395
|
+
// Unknown event type — ignore for forward compat.
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
// Stream ended without a stop event — synthesize one so callers don't hang.
|
|
400
|
+
flushPending();
|
|
401
|
+
yield { type: "assistant-content", parts };
|
|
402
|
+
yield {
|
|
403
|
+
type: "stop",
|
|
404
|
+
reason: "error",
|
|
405
|
+
error: "Builder gateway stream ended without a stop event",
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
catch (err) {
|
|
409
|
+
yield {
|
|
410
|
+
type: "stop",
|
|
411
|
+
reason: "error",
|
|
412
|
+
error: err instanceof Error ? err.message : String(err),
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
finally {
|
|
416
|
+
// Release the reader on every exit path — early returns (invalid JSONL,
|
|
417
|
+
// stop event) and generator abandonment both leave the underlying
|
|
418
|
+
// Response body locked otherwise. cancel() also closes the socket.
|
|
419
|
+
try {
|
|
420
|
+
await reader.cancel();
|
|
421
|
+
}
|
|
422
|
+
catch {
|
|
423
|
+
// Already cancelled or closed
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
export function createBuilderEngine(_config = {}) {
|
|
428
|
+
return new BuilderEngine();
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=builder-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder-engine.js","sourceRoot":"","sources":["../../../src/agent/engine/builder-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAuB;IACtD,QAAQ,EAAE,IAAI;IACd,uEAAuE;IACvE,yEAAyE;IACzE,sEAAsE;IACtE,wEAAwE;IACxE,aAAa,EAAE,KAAK;IACpB,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,KAAK;IAClB,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,iBAAiB;IACjB,mBAAmB;IACnB,kBAAkB;IAClB,SAAS;IACT,cAAc;IACd,oBAAoB;IACpB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,eAAe;IACf,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,SAAS,kBAAkB,CAAC,YAAoB;IAC9C,IAAI,YAAY,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,YAAY,GAAG,IAAI;QAAE,OAAO,QAAQ,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe;IACtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,wCAAwC,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC;IACvF,CAAC;IACD,OAAO,oCAAoC,CAAC;AAC9C,CAAC;AAYD,MAAM,aAAa;IACR,IAAI,GAAG,SAAS,CAAC;IACjB,KAAK,GAAG,oBAAoB,CAAC;IAC7B,YAAY,GAAG,qBAAqB,CAAC;IACrC,eAAe,GAAG,wBAAwB,CAAC;IAC3C,YAAY,GAAG,oBAAoB,CAAC;IAE7C,KAAK,CAAC,CAAC,MAAM,CAAC,IAAyB;QACrC,uEAAuE;QACvE,sEAAsE;QACtE,4CAA4C;QAC5C,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,sBAAsB,CAAC,CAAC;YAC9D,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM;oBACJ,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,OAAO;oBACf,KAAK,EACH,kFAAkF;oBACpF,SAAS,EAAE,qBAAqB;iBACjC,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;QAED,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM;gBACJ,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,gCAAgC;gBACvC,SAAS,EAAE,qBAAqB;aACjC,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,cAAc,GAClB,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC;QAE1D,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ;YACR,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS;gBACpC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,cAAc,KAAK,QAAQ;gBACpC,CAAC,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAAE;gBAC1D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QAEF,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,aAAa,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CACT,2BAA2B,cAAc,mBAAmB,IAAI,CAAC,KAAK,UAAU,KAAK,CAAC,MAAM,QAAQ,QAAQ,EAAE,CAC/G,CAAC;QAEF,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,WAAW,EAAE;gBACnD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU;iBAC1B;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,IAAI,CAAC,WAAW;aACzB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM;gBACJ,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CACT,sBAAsB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAC3F,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,KAAK,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM;gBACJ,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,sCAAsC;aAC9C,CAAC;YACF,OAAO;QACT,CAAC;QAED,KAAK,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACF;AAED,KAAK,SAAS,CAAC,CAAC,aAAa,CAAC,QAAkB;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,uEAAuE;IACvE,oEAAoE;IACpE,oEAAoE;IACpE,8DAA8D;IAC9D,IAAI,OAAO,GAAqB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,MAAM,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,4BAA4B,MAAM,EAAE,CAAC;IAExE,qEAAqE;IACrE,mEAAmE;IACnE,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACvD,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,eAAe,EAAE;SAC9B,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACnC,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC9C,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO;YACf,KAAK,EACH,OAAO;gBACP,sEAAsE;YACxE,SAAS,EAAE,cAAc;SAC1B,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,8BAA8B,EAAE,CAAC;QAC9D,mEAAmE;QACnE,qDAAqD;QACrD,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,GAAG,OAAO,sBAAsB;YACvC,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,sEAAsE;AACtE,wEAAwE;AACxE,wDAAwD;AACxD,KAAK,SAAS,CAAC,CAAC,cAAc,CAC5B,MAA+C;IAE/C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM;QAChB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACtC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,IAAI;gBAAE,MAAM,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,IAAI;QAAE,MAAM,IAAI,CAAC;AACvB,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,gBAAgB,CAC9B,MAA+C;IAE/C,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,eAAe,GAAgD,IAAI,CAAC;IAExE,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAChD,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,GAAG,CAAC,eAAe,CAAC,SAAS,KAAK,SAAS;oBACzC,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,SAAS,EAAE;oBAC1C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YACH,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,IAAI,KAAU,CAAC;YACf,IAAI,CAAC;gBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM;oBACJ,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,0CAA0C,IAAI,EAAE;iBACxD,CAAC;gBACF,OAAO;YACT,CAAC;YAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC9B,WAAW,IAAI,IAAI,CAAC;oBACpB,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;oBACnC,MAAM;gBACR,CAAC;gBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC9B,IAAI,CAAC,eAAe;wBAAE,eAAe,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;oBACrD,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC;oBAC7B,IAAI,KAAK,CAAC,SAAS;wBAAE,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;oBACjE,MAAM;wBACJ,IAAI,EAAE,gBAAgB;wBACtB,IAAI;wBACJ,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC3D,CAAC;oBACF,MAAM;gBACR,CAAC;gBAED,KAAK,iBAAiB;oBACpB,6DAA6D;oBAC7D,yDAAyD;oBACzD,MAAM;gBAER,KAAK,WAAW,CAAC,CAAC,CAAC;oBACjB,YAAY,EAAE,CAAC;oBACf,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,WAAW;wBACjB,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;qBACnB,CAAC,CAAC;oBACH,MAAM;wBACJ,IAAI,EAAE,WAAW;wBACjB,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;qBACnB,CAAC;oBACF,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,MAAM,UAAU,GACd,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC,CAAC;oBACtE,MAAM;wBACJ,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC;wBACnC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;wBACrC,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;4BACtC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,gBAAgB,EAAE;4BAC7C,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5D,CAAC;oBACF,MAAM;gBACR,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,YAAY,EAAE,CAAC;oBACf,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;oBAE3C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC;oBAC1C,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;wBAC9B,4DAA4D;wBAC5D,4CAA4C;wBAC5C,MAAM;4BACJ,IAAI,EAAE,MAAM;4BACZ,MAAM,EAAE,OAAO;4BACf,KAAK,EAAE,wBAAwB,KAAK,CAAC,KAAK,IAAI,gCAAgC,EAAE;4BAChF,SAAS,EAAE,cAAc;yBAC1B,CAAC;oBACJ,CAAC;yBAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;wBAC9B,MAAM;4BACJ,IAAI,EAAE,MAAM;4BACZ,MAAM,EAAE,OAAO;4BACf,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,eAAe;yBACtC,CAAC;oBACJ,CAAC;yBAAM,IACL,MAAM,KAAK,UAAU;wBACrB,MAAM,KAAK,UAAU;wBACrB,MAAM,KAAK,YAAY;wBACvB,MAAM,KAAK,eAAe,EAC1B,CAAC;wBACD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;oBACjC,CAAC;yBAAM,CAAC;wBACN,MAAM;4BACJ,IAAI,EAAE,MAAM;4BACZ,MAAM,EAAE,OAAO;4BACf,KAAK,EAAE,wBAAwB,MAAM,EAAE;yBACxC,CAAC;oBACJ,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED;oBACE,kDAAkD;oBAClD,MAAM;YACV,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;QAC3C,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,mDAAmD;SAC3D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,wEAAwE;QACxE,kEAAkE;QAClE,mEAAmE;QACnE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAmC,EAAE;IAErC,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/builtin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/builtin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2BH;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAqF7C"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { registerAgentEngine } from "./registry.js";
|
|
9
9
|
import { createAnthropicEngine, ANTHROPIC_CAPABILITIES, ANTHROPIC_DEFAULT_MODEL, ANTHROPIC_SUPPORTED_MODELS, } from "./anthropic-engine.js";
|
|
10
10
|
import { createAISDKEngine, PROVIDER_CAPABILITIES, PROVIDER_DEFAULT_MODELS, PROVIDER_SUPPORTED_MODELS, PROVIDER_ENV_VARS, PROVIDER_PACKAGES, } from "./ai-sdk-engine.js";
|
|
11
|
+
import { createBuilderEngine, BUILDER_CAPABILITIES, BUILDER_DEFAULT_MODEL, BUILDER_SUPPORTED_MODELS, } from "./builder-engine.js";
|
|
11
12
|
let _registered = false;
|
|
12
13
|
/**
|
|
13
14
|
* Register all built-in engines. Safe to call multiple times (idempotent).
|
|
@@ -16,10 +17,25 @@ export function registerBuiltinEngines() {
|
|
|
16
17
|
if (_registered)
|
|
17
18
|
return;
|
|
18
19
|
_registered = true;
|
|
19
|
-
// ──
|
|
20
|
+
// ── Builder.io managed gateway ─────────────────────────────────────────────
|
|
21
|
+
// Registered first so detectEngineFromEnv picks it when BUILDER_PRIVATE_KEY
|
|
22
|
+
// is set — Builder is the managed path we want everyone on long-term.
|
|
23
|
+
// Users who prefer BYO keys can opt out via AGENT_ENGINE_PREFER_BYO_KEY=true,
|
|
24
|
+
// which drops Builder to the fallback slot in detectEngineFromEnv.
|
|
25
|
+
registerAgentEngine({
|
|
26
|
+
name: "builder",
|
|
27
|
+
label: "Builder.io Gateway",
|
|
28
|
+
description: "Managed LLM access via Builder.io — Claude, GPT, Gemini, GLM, and more through a single connection. Free during beta.",
|
|
29
|
+
capabilities: BUILDER_CAPABILITIES,
|
|
30
|
+
defaultModel: BUILDER_DEFAULT_MODEL,
|
|
31
|
+
supportedModels: BUILDER_SUPPORTED_MODELS,
|
|
32
|
+
requiredEnvVars: ["BUILDER_PRIVATE_KEY"],
|
|
33
|
+
create: (config) => createBuilderEngine(config),
|
|
34
|
+
});
|
|
35
|
+
// ── Anthropic ──────────────────────────────────────────────────────────────
|
|
20
36
|
registerAgentEngine({
|
|
21
37
|
name: "anthropic",
|
|
22
|
-
label: "Claude
|
|
38
|
+
label: "Claude",
|
|
23
39
|
description: "Anthropic's SDK — best-in-class Claude models with full feature support (thinking, prompt caching, vision, computer use).",
|
|
24
40
|
capabilities: ANTHROPIC_CAPABILITIES,
|
|
25
41
|
defaultModel: ANTHROPIC_DEFAULT_MODEL,
|
|
@@ -39,14 +55,14 @@ export function registerBuiltinEngines() {
|
|
|
39
55
|
"ollama",
|
|
40
56
|
];
|
|
41
57
|
const providerLabels = {
|
|
42
|
-
anthropic: "Claude
|
|
43
|
-
openai: "OpenAI
|
|
44
|
-
openrouter: "OpenRouter
|
|
45
|
-
google: "
|
|
46
|
-
groq: "Groq
|
|
47
|
-
mistral: "Mistral
|
|
48
|
-
cohere: "Cohere
|
|
49
|
-
ollama: "Ollama
|
|
58
|
+
anthropic: "Claude",
|
|
59
|
+
openai: "OpenAI",
|
|
60
|
+
openrouter: "OpenRouter",
|
|
61
|
+
google: "Gemini",
|
|
62
|
+
groq: "Groq",
|
|
63
|
+
mistral: "Mistral",
|
|
64
|
+
cohere: "Cohere",
|
|
65
|
+
ollama: "Ollama",
|
|
50
66
|
};
|
|
51
67
|
const providerDescriptions = {
|
|
52
68
|
anthropic: "Claude models through the Vercel AI SDK. Supports thinking and caching via AI SDK providerOptions.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../src/agent/engine/builtin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../src/agent/engine/builtin.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Public exports for the pluggable agent engine system.
|
|
3
3
|
*/
|
|
4
4
|
export type { AgentEngine, EngineCapabilities, EngineTool, EngineMessage, EngineContentPart, EngineTextPart, EngineImagePart, EngineToolCallPart, EngineToolResultPart, EngineThinkingPart, EngineEvent, EngineStreamOptions, } from "./types.js";
|
|
5
|
-
export { registerAgentEngine, getAgentEngineEntry, listAgentEngines, resolveEngine, type AgentEngineEntry, type ResolveEngineConfig, } from "./registry.js";
|
|
5
|
+
export { registerAgentEngine, getAgentEngineEntry, listAgentEngines, resolveEngine, getStoredModelForEngine, detectEngineFromEnv, isAgentEngineSettingConfigured, isStoredEngineUsable, type AgentEngineEntry, type ResolveEngineConfig, } from "./registry.js";
|
|
6
6
|
export { createAnthropicEngine, ANTHROPIC_DEFAULT_MODEL, ANTHROPIC_SUPPORTED_MODELS, ANTHROPIC_CAPABILITIES, } from "./anthropic-engine.js";
|
|
7
7
|
export { createAISDKEngine, type AISDKProvider } from "./ai-sdk-engine.js";
|
|
8
8
|
export { registerBuiltinEngines } from "./builtin.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Public exports for the pluggable agent engine system.
|
|
3
3
|
*/
|
|
4
|
-
export { registerAgentEngine, getAgentEngineEntry, listAgentEngines, resolveEngine, } from "./registry.js";
|
|
4
|
+
export { registerAgentEngine, getAgentEngineEntry, listAgentEngines, resolveEngine, getStoredModelForEngine, detectEngineFromEnv, isAgentEngineSettingConfigured, isStoredEngineUsable, } from "./registry.js";
|
|
5
5
|
export { createAnthropicEngine, ANTHROPIC_DEFAULT_MODEL, ANTHROPIC_SUPPORTED_MODELS, ANTHROPIC_CAPABILITIES, } from "./anthropic-engine.js";
|
|
6
6
|
export { createAISDKEngine } from "./ai-sdk-engine.js";
|
|
7
7
|
export { registerBuiltinEngines } from "./builtin.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,GAGrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAsB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for every built-in LLM provider's env var name and
|
|
3
|
+
* UI metadata. Imported by both server and client code — keep it free of
|
|
4
|
+
* runtime imports so it stays tree-shakeable into the browser bundle.
|
|
5
|
+
*
|
|
6
|
+
* Add a new provider here when adding it to builtin.ts; all three UI gates
|
|
7
|
+
* (AssistantChat composer, settings env-var list, settings key form) pick
|
|
8
|
+
* it up automatically.
|
|
9
|
+
*/
|
|
10
|
+
export interface ProviderEnvMeta {
|
|
11
|
+
envVar: string;
|
|
12
|
+
/** Shown next to the env var in the settings "framework env keys" list */
|
|
13
|
+
label: string;
|
|
14
|
+
/** Input placeholder hint shown in the LLM picker's key field */
|
|
15
|
+
placeholder: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const PROVIDER_ENV_META: Record<string, ProviderEnvMeta>;
|
|
18
|
+
export declare const PROVIDER_TO_ENV: Record<string, string>;
|
|
19
|
+
export declare const PROVIDER_ENV_VARS: readonly string[];
|
|
20
|
+
export declare const PROVIDER_ENV_PLACEHOLDERS: Record<string, string>;
|
|
21
|
+
//# sourceMappingURL=provider-env-vars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-env-vars.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/provider-env-vars.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAoC7D,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAElD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EACf,CAAC;AAEjC,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG1D,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for every built-in LLM provider's env var name and
|
|
3
|
+
* UI metadata. Imported by both server and client code — keep it free of
|
|
4
|
+
* runtime imports so it stays tree-shakeable into the browser bundle.
|
|
5
|
+
*
|
|
6
|
+
* Add a new provider here when adding it to builtin.ts; all three UI gates
|
|
7
|
+
* (AssistantChat composer, settings env-var list, settings key form) pick
|
|
8
|
+
* it up automatically.
|
|
9
|
+
*/
|
|
10
|
+
export const PROVIDER_ENV_META = {
|
|
11
|
+
anthropic: {
|
|
12
|
+
envVar: "ANTHROPIC_API_KEY",
|
|
13
|
+
label: "Anthropic API Key",
|
|
14
|
+
placeholder: "sk-ant-...",
|
|
15
|
+
},
|
|
16
|
+
openai: {
|
|
17
|
+
envVar: "OPENAI_API_KEY",
|
|
18
|
+
label: "OpenAI API Key",
|
|
19
|
+
placeholder: "sk-...",
|
|
20
|
+
},
|
|
21
|
+
google: {
|
|
22
|
+
envVar: "GOOGLE_GENERATIVE_AI_API_KEY",
|
|
23
|
+
label: "Google Gemini API Key",
|
|
24
|
+
placeholder: "AI...",
|
|
25
|
+
},
|
|
26
|
+
openrouter: {
|
|
27
|
+
envVar: "OPENROUTER_API_KEY",
|
|
28
|
+
label: "OpenRouter API Key",
|
|
29
|
+
placeholder: "sk-or-...",
|
|
30
|
+
},
|
|
31
|
+
groq: {
|
|
32
|
+
envVar: "GROQ_API_KEY",
|
|
33
|
+
label: "Groq API Key",
|
|
34
|
+
placeholder: "gsk_...",
|
|
35
|
+
},
|
|
36
|
+
mistral: {
|
|
37
|
+
envVar: "MISTRAL_API_KEY",
|
|
38
|
+
label: "Mistral API Key",
|
|
39
|
+
placeholder: "...",
|
|
40
|
+
},
|
|
41
|
+
cohere: {
|
|
42
|
+
envVar: "COHERE_API_KEY",
|
|
43
|
+
label: "Cohere API Key",
|
|
44
|
+
placeholder: "...",
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
export const PROVIDER_TO_ENV = Object.fromEntries(Object.entries(PROVIDER_ENV_META).map(([k, v]) => [k, v.envVar]));
|
|
48
|
+
export const PROVIDER_ENV_VARS = Object.values(PROVIDER_TO_ENV);
|
|
49
|
+
export const PROVIDER_ENV_PLACEHOLDERS = Object.fromEntries(Object.values(PROVIDER_ENV_META).map((m) => [m.envVar, m.placeholder]));
|
|
50
|
+
//# sourceMappingURL=provider-env-vars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-env-vars.js","sourceRoot":"","sources":["../../../src/agent/engine/provider-env-vars.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,MAAM,CAAC,MAAM,iBAAiB,GAAoC;IAChE,SAAS,EAAE;QACT,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,YAAY;KAC1B;IACD,MAAM,EAAE;QACN,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,QAAQ;KACtB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,8BAA8B;QACtC,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,OAAO;KACrB;IACD,UAAU,EAAE;QACV,MAAM,EAAE,oBAAoB;QAC5B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,WAAW;KACzB;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,SAAS;KACvB;IACD,OAAO,EAAE;QACP,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,KAAK;KACnB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,KAAK;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA2B,MAAM,CAAC,WAAW,CACvE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CACjE,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAEjC,MAAM,CAAC,MAAM,yBAAyB,GACpC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CACvE,CAAC"}
|