@agent-native/core 0.7.10 → 0.7.12
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/action.js +30 -11
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts +14 -2
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +70 -54
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts +1 -6
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +3 -14
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/builtin.d.ts.map +1 -1
- package/dist/agent/engine/builtin.js +3 -0
- 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 +18 -0
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +54 -4
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.d.ts +35 -10
- package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.js +190 -91
- package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
- package/dist/agent/engine/types.d.ts +10 -1
- package/dist/agent/engine/types.d.ts.map +1 -1
- package/dist/agent/production-agent.d.ts +21 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +72 -21
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/thread-data-builder.js +1 -1
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +4 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/application-state/script-helpers.d.ts +12 -5
- package/dist/application-state/script-helpers.d.ts.map +1 -1
- package/dist/application-state/script-helpers.js +41 -20
- package/dist/application-state/script-helpers.js.map +1 -1
- package/dist/catalog.json +15 -0
- package/dist/checkpoints/index.d.ts +3 -0
- package/dist/checkpoints/index.d.ts.map +1 -0
- package/dist/checkpoints/index.js +3 -0
- package/dist/checkpoints/index.js.map +1 -0
- package/dist/checkpoints/service.d.ts +6 -0
- package/dist/checkpoints/service.d.ts.map +1 -0
- package/dist/checkpoints/service.js +107 -0
- package/dist/checkpoints/service.js.map +1 -0
- package/dist/checkpoints/store.d.ts +27 -0
- package/dist/checkpoints/store.d.ts.map +1 -0
- package/dist/checkpoints/store.js +92 -0
- package/dist/checkpoints/store.js.map +1 -0
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +191 -2
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +63 -3
- 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 +35 -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.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +3 -1
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +15 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +162 -67
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +9 -5
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/ConnectBuilderCard.js +1 -1
- package/dist/client/ConnectBuilderCard.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +89 -4
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +6 -0
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +4 -0
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +12 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +87 -5
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/notifications/NotificationsBell.d.ts +23 -0
- package/dist/client/notifications/NotificationsBell.d.ts.map +1 -0
- package/dist/client/notifications/NotificationsBell.js +165 -0
- package/dist/client/notifications/NotificationsBell.js.map +1 -0
- package/dist/client/notifications/index.d.ts +2 -0
- package/dist/client/notifications/index.d.ts.map +1 -0
- package/dist/client/notifications/index.js +2 -0
- package/dist/client/notifications/index.js.map +1 -0
- package/dist/client/onboarding/OnboardingPanel.js +6 -3
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts +18 -0
- package/dist/client/progress/RunsTray.d.ts.map +1 -0
- package/dist/client/progress/RunsTray.js +70 -0
- package/dist/client/progress/RunsTray.js.map +1 -0
- package/dist/client/progress/index.d.ts +2 -0
- package/dist/client/progress/index.d.ts.map +1 -0
- package/dist/client/progress/index.js +2 -0
- package/dist/client/progress/index.js.map +1 -0
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +19 -4
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/AutomationsSection.d.ts +2 -0
- package/dist/client/settings/AutomationsSection.d.ts.map +1 -0
- package/dist/client/settings/AutomationsSection.js +214 -0
- package/dist/client/settings/AutomationsSection.js.map +1 -0
- package/dist/client/settings/ComingSoonSection.d.ts.map +1 -1
- package/dist/client/settings/ComingSoonSection.js +2 -1
- package/dist/client/settings/ComingSoonSection.js.map +1 -1
- package/dist/client/settings/SecretsSection.d.ts.map +1 -1
- package/dist/client/settings/SecretsSection.js +122 -3
- package/dist/client/settings/SecretsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +252 -14
- 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 +2 -2
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/use-pausing-interval.d.ts +11 -0
- package/dist/client/use-pausing-interval.d.ts.map +1 -0
- package/dist/client/use-pausing-interval.js +49 -0
- package/dist/client/use-pausing-interval.js.map +1 -0
- package/dist/db/client.d.ts +26 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +84 -2
- package/dist/db/client.js.map +1 -1
- package/dist/db/drizzle-config.d.ts +33 -0
- package/dist/db/drizzle-config.d.ts.map +1 -0
- package/dist/db/drizzle-config.js +132 -0
- package/dist/db/drizzle-config.js.map +1 -0
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +11 -6
- package/dist/db/migrations.js.map +1 -1
- package/dist/deploy/build.js +2 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/event-bus/bus.d.ts +20 -0
- package/dist/event-bus/bus.d.ts.map +1 -0
- package/dist/event-bus/bus.js +108 -0
- package/dist/event-bus/bus.js.map +1 -0
- package/dist/event-bus/index.d.ts +4 -0
- package/dist/event-bus/index.d.ts.map +1 -0
- package/dist/event-bus/index.js +3 -0
- package/dist/event-bus/index.js.map +1 -0
- package/dist/event-bus/registry.d.ts +22 -0
- package/dist/event-bus/registry.d.ts.map +1 -0
- package/dist/event-bus/registry.js +63 -0
- package/dist/event-bus/registry.js.map +1 -0
- package/dist/event-bus/types.d.ts +27 -0
- package/dist/event-bus/types.d.ts.map +1 -0
- package/dist/event-bus/types.js +2 -0
- package/dist/event-bus/types.js.map +1 -0
- package/dist/integrations/config-store.d.ts.map +1 -1
- package/dist/integrations/config-store.js +16 -12
- package/dist/integrations/config-store.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts.map +1 -1
- package/dist/integrations/google-docs-poller.js +5 -1
- package/dist/integrations/google-docs-poller.js.map +1 -1
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +7 -3
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/notifications/actions.d.ts +10 -0
- package/dist/notifications/actions.d.ts.map +1 -0
- package/dist/notifications/actions.js +114 -0
- package/dist/notifications/actions.js.map +1 -0
- package/dist/notifications/channels.d.ts +15 -0
- package/dist/notifications/channels.d.ts.map +1 -0
- package/dist/notifications/channels.js +97 -0
- package/dist/notifications/channels.js.map +1 -0
- package/dist/notifications/index.d.ts +4 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +3 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/registry.d.ts +9 -0
- package/dist/notifications/registry.d.ts.map +1 -0
- package/dist/notifications/registry.js +146 -0
- package/dist/notifications/registry.js.map +1 -0
- package/dist/notifications/routes.d.ts +34 -0
- package/dist/notifications/routes.d.ts.map +1 -0
- package/dist/notifications/routes.js +69 -0
- package/dist/notifications/routes.js.map +1 -0
- package/dist/notifications/store.d.ts +25 -0
- package/dist/notifications/store.d.ts.map +1 -0
- package/dist/notifications/store.js +158 -0
- package/dist/notifications/store.js.map +1 -0
- package/dist/notifications/types.d.ts +43 -0
- package/dist/notifications/types.d.ts.map +1 -0
- package/dist/notifications/types.js +2 -0
- package/dist/notifications/types.js.map +1 -0
- package/dist/onboarding/default-steps.d.ts.map +1 -1
- package/dist/onboarding/default-steps.js +63 -20
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +7 -26
- package/dist/org/handlers.js.map +1 -1
- package/dist/progress/actions.d.ts +8 -0
- package/dist/progress/actions.d.ts.map +1 -0
- package/dist/progress/actions.js +158 -0
- package/dist/progress/actions.js.map +1 -0
- package/dist/progress/index.d.ts +3 -0
- package/dist/progress/index.d.ts.map +1 -0
- package/dist/progress/index.js +2 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/progress/registry.d.ts +22 -0
- package/dist/progress/registry.d.ts.map +1 -0
- package/dist/progress/registry.js +98 -0
- package/dist/progress/registry.js.map +1 -0
- package/dist/progress/routes.d.ts +21 -0
- package/dist/progress/routes.d.ts.map +1 -0
- package/dist/progress/routes.js +59 -0
- package/dist/progress/routes.js.map +1 -0
- package/dist/progress/store.d.ts +7 -0
- package/dist/progress/store.d.ts.map +1 -0
- package/dist/progress/store.js +195 -0
- package/dist/progress/store.js.map +1 -0
- package/dist/progress/types.d.ts +49 -0
- package/dist/progress/types.d.ts.map +1 -0
- package/dist/progress/types.js +7 -0
- package/dist/progress/types.js.map +1 -0
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +19 -15
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js +19 -5
- package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.js +8 -7
- package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
- package/dist/secrets/index.d.ts +3 -2
- package/dist/secrets/index.d.ts.map +1 -1
- package/dist/secrets/index.js +3 -2
- package/dist/secrets/index.js.map +1 -1
- package/dist/secrets/routes.d.ts +41 -2
- package/dist/secrets/routes.d.ts.map +1 -1
- package/dist/secrets/routes.js +167 -1
- package/dist/secrets/routes.js.map +1 -1
- package/dist/secrets/schema.d.ts +39 -1
- package/dist/secrets/schema.d.ts.map +1 -1
- package/dist/secrets/schema.js +6 -0
- package/dist/secrets/schema.js.map +1 -1
- package/dist/secrets/storage.d.ts +26 -0
- package/dist/secrets/storage.d.ts.map +1 -1
- package/dist/secrets/storage.js +111 -5
- package/dist/secrets/storage.js.map +1 -1
- package/dist/secrets/substitution.d.ts +39 -0
- package/dist/secrets/substitution.d.ts.map +1 -0
- package/dist/secrets/substitution.js +93 -0
- package/dist/secrets/substitution.js.map +1 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +1684 -1410
- 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 +17 -6
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/analytics.d.ts +8 -5
- package/dist/server/analytics.d.ts.map +1 -1
- package/dist/server/analytics.js +17 -8
- package/dist/server/analytics.js.map +1 -1
- package/dist/server/app-url.d.ts.map +1 -1
- package/dist/server/app-url.js +7 -4
- package/dist/server/app-url.js.map +1 -1
- package/dist/server/auth.d.ts +11 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +74 -21
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +34 -16
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +179 -2
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/email-templates.d.ts +43 -0
- package/dist/server/email-templates.d.ts.map +1 -0
- package/dist/server/email-templates.js +86 -0
- package/dist/server/email-templates.js.map +1 -0
- package/dist/server/framework-request-handler.d.ts +15 -0
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +64 -1
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/onboarding-html.d.ts +11 -0
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +275 -16
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/schema-prompt.d.ts.map +1 -1
- package/dist/server/schema-prompt.js +5 -0
- package/dist/server/schema-prompt.js.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/truncate.d.ts +8 -0
- package/dist/shared/truncate.d.ts.map +1 -0
- package/dist/shared/truncate.js +12 -0
- package/dist/shared/truncate.js.map +1 -0
- package/dist/templates/default/.agents/skills/agent-engines/SKILL.md +60 -4
- package/dist/templates/default/.agents/skills/notifications/SKILL.md +95 -0
- package/dist/templates/default/.agents/skills/progress/SKILL.md +97 -0
- package/dist/templates/default/AGENTS.md +12 -10
- package/dist/templates/default/package.json +10 -10
- package/dist/templates/workspace-core/package.json +5 -5
- package/dist/templates/workspace-root/package.json +1 -1
- package/dist/templates/workspace-root/pnpm-workspace.yaml +6 -0
- package/dist/templates/workspace-root/tsconfig.base.json +1 -2
- package/dist/tools/fetch-tool.d.ts +22 -0
- package/dist/tools/fetch-tool.d.ts.map +1 -0
- package/dist/tools/fetch-tool.js +156 -0
- package/dist/tools/fetch-tool.js.map +1 -0
- package/dist/tracking/index.d.ts +4 -0
- package/dist/tracking/index.d.ts.map +1 -0
- package/dist/tracking/index.js +3 -0
- package/dist/tracking/index.js.map +1 -0
- package/dist/tracking/providers.d.ts +15 -0
- package/dist/tracking/providers.d.ts.map +1 -0
- package/dist/tracking/providers.js +195 -0
- package/dist/tracking/providers.js.map +1 -0
- package/dist/tracking/registry.d.ts +10 -0
- package/dist/tracking/registry.d.ts.map +1 -0
- package/dist/tracking/registry.js +75 -0
- package/dist/tracking/registry.js.map +1 -0
- package/dist/tracking/types.d.ts +13 -0
- package/dist/tracking/types.d.ts.map +1 -0
- package/dist/tracking/types.js +2 -0
- package/dist/tracking/types.js.map +1 -0
- package/dist/triggers/actions.d.ts +10 -0
- package/dist/triggers/actions.d.ts.map +1 -0
- package/dist/triggers/actions.js +277 -0
- package/dist/triggers/actions.js.map +1 -0
- package/dist/triggers/condition-evaluator.d.ts +15 -0
- package/dist/triggers/condition-evaluator.d.ts.map +1 -0
- package/dist/triggers/condition-evaluator.js +107 -0
- package/dist/triggers/condition-evaluator.js.map +1 -0
- package/dist/triggers/dispatcher.d.ts +32 -0
- package/dist/triggers/dispatcher.d.ts.map +1 -0
- package/dist/triggers/dispatcher.js +291 -0
- package/dist/triggers/dispatcher.js.map +1 -0
- package/dist/triggers/index.d.ts +5 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +4 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/types.d.ts +35 -0
- package/dist/triggers/types.d.ts.map +1 -0
- package/dist/triggers/types.js +9 -0
- package/dist/triggers/types.js.map +1 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +66 -16
- package/dist/vite/client.js.map +1 -1
- package/docs/content/automations.md +239 -0
- package/docs/content/multi-tenancy.md +88 -0
- package/docs/content/notifications.md +199 -0
- package/docs/content/progress.md +176 -0
- package/docs/content/tracking.md +168 -0
- package/package.json +59 -35
- package/src/templates/default/.agents/skills/agent-engines/SKILL.md +60 -4
- package/src/templates/default/.agents/skills/notifications/SKILL.md +95 -0
- package/src/templates/default/.agents/skills/progress/SKILL.md +97 -0
- package/src/templates/default/AGENTS.md +12 -10
- package/src/templates/default/package.json +10 -10
- package/src/templates/workspace-core/package.json +5 -5
- package/src/templates/workspace-root/package.json +1 -1
- package/src/templates/workspace-root/pnpm-workspace.yaml +6 -0
- package/src/templates/workspace-root/tsconfig.base.json +1 -2
- package/tsconfig.base.json +1 -1
- 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 -64
- package/dist/client/settings/LLMSection.js.map +0 -1
|
@@ -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"}
|
|
@@ -37,6 +37,24 @@ export declare function registerAgentEngine(entry: AgentEngineEntry): void;
|
|
|
37
37
|
export declare function getAgentEngineEntry(name: string): AgentEngineEntry | undefined;
|
|
38
38
|
/** List all registered engine entries */
|
|
39
39
|
export declare function listAgentEngines(): AgentEngineEntry[];
|
|
40
|
+
/**
|
|
41
|
+
* First registered engine whose requiredEnvVars are all set. Registration
|
|
42
|
+
* order controls priority — Anthropic wins when multiple keys coexist.
|
|
43
|
+
*/
|
|
44
|
+
export declare function detectEngineFromEnv(): AgentEngineEntry | null;
|
|
45
|
+
/**
|
|
46
|
+
* True when an `agent-engine` setting entry names an engine AND carries an
|
|
47
|
+
* API key (top-level or inside `config`). Shared between the onboarding step
|
|
48
|
+
* and the /agent-engine/status endpoint so both agree on "is this configured".
|
|
49
|
+
*/
|
|
50
|
+
export declare function isAgentEngineSettingConfigured(stored: unknown): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* True when the stored `agent-engine` row points at a registered engine
|
|
53
|
+
* AND an API key for it is reachable — either inline (settings + `config`)
|
|
54
|
+
* or via the engine's required env vars. When false, callers should fall
|
|
55
|
+
* through to env-detection so a stale disconnected row can't hijack chat.
|
|
56
|
+
*/
|
|
57
|
+
export declare function isStoredEngineUsable(stored: unknown, entry: AgentEngineEntry): boolean;
|
|
40
58
|
export interface ResolveEngineConfig {
|
|
41
59
|
/** Explicit engine name or instance from createAgentChatPlugin options */
|
|
42
60
|
engineOption?: string | AgentEngine | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,YAAY,EAAE,kBAAkB,CAAC;IACjC,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,6DAA6D;IAC7D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,4CAA4C;IAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC;CACtD;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAajE;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GACX,gBAAgB,GAAG,SAAS,CAE9B;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,IAAI,gBAAgB,EAAE,CAErD;AAED,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,YAAY,CAAC,EACT,MAAM,GACN,WAAW,GACX;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACtD,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,YAAY,EAAE,kBAAkB,CAAC;IACjC,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,6DAA6D;IAC7D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,4CAA4C;IAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC;CACtD;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAajE;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GACX,gBAAgB,GAAG,SAAS,CAE9B;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,IAAI,gBAAgB,EAAE,CAErD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,IAAI,CAQ7D;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAavE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAIT;AAED,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,YAAY,CAAC,EACT,MAAM,GACN,WAAW,GACX;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACtD,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,WAAW,CAAC,CA6EtB"}
|
|
@@ -33,6 +33,51 @@ export function getAgentEngineEntry(name) {
|
|
|
33
33
|
export function listAgentEngines() {
|
|
34
34
|
return Array.from(_registry.values());
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* First registered engine whose requiredEnvVars are all set. Registration
|
|
38
|
+
* order controls priority — Anthropic wins when multiple keys coexist.
|
|
39
|
+
*/
|
|
40
|
+
export function detectEngineFromEnv() {
|
|
41
|
+
for (const entry of _registry.values()) {
|
|
42
|
+
if (entry.requiredEnvVars.length === 0)
|
|
43
|
+
continue;
|
|
44
|
+
if (entry.requiredEnvVars.every((v) => !!process.env[v])) {
|
|
45
|
+
return entry;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* True when an `agent-engine` setting entry names an engine AND carries an
|
|
52
|
+
* API key (top-level or inside `config`). Shared between the onboarding step
|
|
53
|
+
* and the /agent-engine/status endpoint so both agree on "is this configured".
|
|
54
|
+
*/
|
|
55
|
+
export function isAgentEngineSettingConfigured(stored) {
|
|
56
|
+
if (!stored || typeof stored !== "object")
|
|
57
|
+
return false;
|
|
58
|
+
const s = stored;
|
|
59
|
+
if (typeof s.engine !== "string" || !s.engine)
|
|
60
|
+
return false;
|
|
61
|
+
if (typeof s.apiKey === "string" && s.apiKey)
|
|
62
|
+
return true;
|
|
63
|
+
if (s.config && typeof s.config.apiKey === "string" && s.config.apiKey) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* True when the stored `agent-engine` row points at a registered engine
|
|
70
|
+
* AND an API key for it is reachable — either inline (settings + `config`)
|
|
71
|
+
* or via the engine's required env vars. When false, callers should fall
|
|
72
|
+
* through to env-detection so a stale disconnected row can't hijack chat.
|
|
73
|
+
*/
|
|
74
|
+
export function isStoredEngineUsable(stored, entry) {
|
|
75
|
+
if (isAgentEngineSettingConfigured(stored))
|
|
76
|
+
return true;
|
|
77
|
+
if (entry.requiredEnvVars.length === 0)
|
|
78
|
+
return true;
|
|
79
|
+
return entry.requiredEnvVars.every((v) => !!process.env[v]);
|
|
80
|
+
}
|
|
36
81
|
/**
|
|
37
82
|
* Resolve an AgentEngine from options → settings → env → default.
|
|
38
83
|
*
|
|
@@ -67,12 +112,12 @@ export async function resolveEngine(config) {
|
|
|
67
112
|
throw new Error(`[agent-engine] Unknown engine: "${engineOption}". Registered: ${[..._registry.keys()].join(", ")}`);
|
|
68
113
|
return entry.create({ apiKey });
|
|
69
114
|
}
|
|
70
|
-
// 4. Settings store
|
|
115
|
+
// 4. Settings store — only when the stored row's API key is reachable.
|
|
71
116
|
try {
|
|
72
117
|
const stored = await getSetting("agent-engine");
|
|
73
118
|
if (stored && typeof stored.engine === "string") {
|
|
74
119
|
const entry = _registry.get(stored.engine);
|
|
75
|
-
if (entry) {
|
|
120
|
+
if (entry && isStoredEngineUsable(stored, entry)) {
|
|
76
121
|
const storedApiKey = stored.apiKey ?? apiKey;
|
|
77
122
|
return entry.create({
|
|
78
123
|
apiKey: storedApiKey,
|
|
@@ -84,14 +129,19 @@ export async function resolveEngine(config) {
|
|
|
84
129
|
catch {
|
|
85
130
|
// Settings not available — fall through
|
|
86
131
|
}
|
|
87
|
-
// 5. Env var
|
|
132
|
+
// 5. Env var — explicit engine name override
|
|
88
133
|
const envEngine = process.env.AGENT_ENGINE;
|
|
89
134
|
if (envEngine) {
|
|
90
135
|
const entry = _registry.get(envEngine);
|
|
91
136
|
if (entry)
|
|
92
137
|
return entry.create({ apiKey });
|
|
93
138
|
}
|
|
94
|
-
// 6.
|
|
139
|
+
// 6. Auto-detect from any provider env var — so just dropping a key in
|
|
140
|
+
// .env works without also setting AGENT_ENGINE.
|
|
141
|
+
const detected = detectEngineFromEnv();
|
|
142
|
+
if (detected)
|
|
143
|
+
return detected.create({ apiKey });
|
|
144
|
+
// 7. Default: anthropic
|
|
95
145
|
const anthropicEntry = _registry.get("anthropic");
|
|
96
146
|
if (!anthropicEntry) {
|
|
97
147
|
throw new Error("[agent-engine] Default Anthropic engine is not registered. Did builtin.ts fail to load?");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agent/engine/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAuBrD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,+DAA+D;QAC/D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACpC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,IAAI,CACV,0BAA0B,KAAK,CAAC,IAAI,oCAAoC,CACzE,CAAC;QACF,OAAO;IACT,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,mBAAmB,CACjC,IAAY;IAEZ,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC;AAcD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAA2B;IAE3B,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEvD,uCAAuC;IACvC,IACE,YAAY;QACZ,OAAO,YAAY,KAAK,QAAQ;QAChC,QAAQ,IAAI,YAAY,EACxB,CAAC;QACD,OAAO,YAA2B,CAAC;IACrC,CAAC;IAED,oCAAoC;IACpC,IACE,YAAY;QACZ,OAAO,YAAY,KAAK,QAAQ;QAChC,MAAM,IAAI,YAAY,EACtB,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,YAGtC,CAAC;QACF,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,kBAAkB,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5F,CAAC;QACJ,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,KAAK,CACb,mCAAmC,YAAY,kBAAkB,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpG,CAAC;QACJ,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agent/engine/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Translation helpers between AgentEngine normalized types and
|
|
3
|
-
* Vercel AI SDK (ai package) types.
|
|
3
|
+
* Vercel AI SDK (`ai` package, v6+) types.
|
|
4
|
+
*
|
|
5
|
+
* The framework keeps a provider-neutral content/event model (see ./types.ts).
|
|
6
|
+
* These helpers convert in both directions against the v6 `TextStreamPart` and
|
|
7
|
+
* `ModelMessage` shapes.
|
|
4
8
|
*/
|
|
5
|
-
import type { EngineTool, EngineMessage, EngineContentPart } from "./types.js";
|
|
9
|
+
import type { EngineTool, EngineMessage, EngineContentPart, EngineEvent } from "./types.js";
|
|
6
10
|
/**
|
|
7
|
-
* Convert EngineTool[]
|
|
8
|
-
*
|
|
11
|
+
* Convert EngineTool[] into the record shape that AI SDK's `streamText` expects
|
|
12
|
+
* under the `tools` option.
|
|
9
13
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* helper is not available (older AI SDK or tests).
|
|
14
|
+
* Pass the `jsonSchema` helper from the `ai` package when available so the
|
|
15
|
+
* schema is wrapped in the SDK's runtime validator; fall back to the raw JSON
|
|
16
|
+
* Schema object otherwise (mostly for unit tests that don't import `ai`).
|
|
14
17
|
*/
|
|
15
18
|
export declare function engineToolsToAISDK(tools: EngineTool[], jsonSchema?: (schema: Record<string, unknown>) => unknown): Record<string, any>;
|
|
16
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Convert a single EngineMessage into **one or more** AI SDK ModelMessages.
|
|
21
|
+
*
|
|
22
|
+
* v6 puts tool-results in a dedicated `role: "tool"` message rather than
|
|
23
|
+
* embedding them in user content. When an EngineMessage's user content mixes
|
|
24
|
+
* text/images with tool-results, we emit the tool-result parts first as a
|
|
25
|
+
* `{role: "tool"}` message, followed by the remaining text/image parts as a
|
|
26
|
+
* `{role: "user"}` message.
|
|
27
|
+
*/
|
|
28
|
+
export declare function engineMessageToAISDK(msg: EngineMessage): any[];
|
|
17
29
|
export declare function engineMessagesToAISDK(messages: EngineMessage[]): any[];
|
|
18
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Translate a single part from AI SDK's `result.fullStream` into the flat
|
|
32
|
+
* sequence of EngineEvent items the framework works with.
|
|
33
|
+
*
|
|
34
|
+
* v6 emits lifecycle events (`text-start` / `text-delta` / `text-end`,
|
|
35
|
+
* `reasoning-start` / `reasoning-delta` / `reasoning-end`, `tool-input-*`).
|
|
36
|
+
* We absorb the boundary events and forward only the deltas plus the terminal
|
|
37
|
+
* `tool-call`, `finish-step`, and `finish` parts.
|
|
38
|
+
*/
|
|
39
|
+
export declare function aiSdkPartToEngineEvents(part: any): EngineEvent[];
|
|
40
|
+
/**
|
|
41
|
+
* Reconstruct the assistant message content from an AI SDK v6 `StepResult`.
|
|
42
|
+
* `step.content` is the canonical structured form — iterate it.
|
|
43
|
+
*/
|
|
19
44
|
export declare function aiSdkStepToAssistantContent(step: any): EngineContentPart[];
|
|
20
45
|
//# sourceMappingURL=translate-ai-sdk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate-ai-sdk.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/translate-ai-sdk.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"translate-ai-sdk.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/translate-ai-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,WAAW,EACZ,MAAM,YAAY,CAAC;AAMpB;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EAAE,EACnB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,GACxD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAcrB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,GAAG,EAAE,CAiF9D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,GAAG,EAAE,CAEtE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW,EAAE,CA6EhE;AAuCD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,GAAG,GAAG,iBAAiB,EAAE,CAuB1E"}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Translation helpers between AgentEngine normalized types and
|
|
3
|
-
* Vercel AI SDK (ai package) types.
|
|
3
|
+
* Vercel AI SDK (`ai` package, v6+) types.
|
|
4
|
+
*
|
|
5
|
+
* The framework keeps a provider-neutral content/event model (see ./types.ts).
|
|
6
|
+
* These helpers convert in both directions against the v6 `TextStreamPart` and
|
|
7
|
+
* `ModelMessage` shapes.
|
|
4
8
|
*/
|
|
5
9
|
// ---------------------------------------------------------------------------
|
|
6
|
-
// EngineTool → AI SDK
|
|
10
|
+
// EngineTool → AI SDK tool definition
|
|
7
11
|
// ---------------------------------------------------------------------------
|
|
8
12
|
/**
|
|
9
|
-
* Convert EngineTool[]
|
|
10
|
-
*
|
|
13
|
+
* Convert EngineTool[] into the record shape that AI SDK's `streamText` expects
|
|
14
|
+
* under the `tools` option.
|
|
11
15
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* helper is not available (older AI SDK or tests).
|
|
16
|
+
* Pass the `jsonSchema` helper from the `ai` package when available so the
|
|
17
|
+
* schema is wrapped in the SDK's runtime validator; fall back to the raw JSON
|
|
18
|
+
* Schema object otherwise (mostly for unit tests that don't import `ai`).
|
|
16
19
|
*/
|
|
17
20
|
export function engineToolsToAISDK(tools, jsonSchema) {
|
|
18
21
|
const result = {};
|
|
@@ -24,42 +27,63 @@ export function engineToolsToAISDK(tools, jsonSchema) {
|
|
|
24
27
|
};
|
|
25
28
|
result[tool.name] = {
|
|
26
29
|
description: tool.description,
|
|
27
|
-
|
|
30
|
+
inputSchema: jsonSchema ? jsonSchema(rawSchema) : rawSchema,
|
|
28
31
|
};
|
|
29
32
|
}
|
|
30
33
|
return result;
|
|
31
34
|
}
|
|
32
35
|
// ---------------------------------------------------------------------------
|
|
33
|
-
// EngineMessage → AI SDK
|
|
36
|
+
// EngineMessage → AI SDK ModelMessage
|
|
34
37
|
// ---------------------------------------------------------------------------
|
|
38
|
+
/**
|
|
39
|
+
* Convert a single EngineMessage into **one or more** AI SDK ModelMessages.
|
|
40
|
+
*
|
|
41
|
+
* v6 puts tool-results in a dedicated `role: "tool"` message rather than
|
|
42
|
+
* embedding them in user content. When an EngineMessage's user content mixes
|
|
43
|
+
* text/images with tool-results, we emit the tool-result parts first as a
|
|
44
|
+
* `{role: "tool"}` message, followed by the remaining text/image parts as a
|
|
45
|
+
* `{role: "user"}` message.
|
|
46
|
+
*/
|
|
35
47
|
export function engineMessageToAISDK(msg) {
|
|
48
|
+
// EngineMessage is `user | assistant` — both branches return below.
|
|
36
49
|
if (msg.role === "user") {
|
|
37
|
-
const
|
|
50
|
+
const userParts = [];
|
|
51
|
+
const toolResultParts = [];
|
|
38
52
|
for (const part of msg.content) {
|
|
39
53
|
if (part.type === "text") {
|
|
40
|
-
|
|
54
|
+
userParts.push({ type: "text", text: part.text });
|
|
41
55
|
}
|
|
42
56
|
else if (part.type === "image") {
|
|
43
|
-
|
|
57
|
+
userParts.push({
|
|
44
58
|
type: "image",
|
|
45
59
|
image: `data:${part.mediaType};base64,${part.data}`,
|
|
60
|
+
mediaType: part.mediaType,
|
|
46
61
|
});
|
|
47
62
|
}
|
|
48
63
|
else if (part.type === "tool-result") {
|
|
49
|
-
|
|
64
|
+
toolResultParts.push({
|
|
50
65
|
type: "tool-result",
|
|
51
66
|
toolCallId: part.toolCallId,
|
|
52
|
-
|
|
53
|
-
|
|
67
|
+
toolName: part.toolName ?? "",
|
|
68
|
+
output: part.isError
|
|
69
|
+
? { type: "error-text", value: part.content }
|
|
70
|
+
: { type: "text", value: part.content },
|
|
54
71
|
});
|
|
55
72
|
}
|
|
56
73
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
74
|
+
const out = [];
|
|
75
|
+
if (toolResultParts.length > 0) {
|
|
76
|
+
out.push({ role: "tool", content: toolResultParts });
|
|
77
|
+
}
|
|
78
|
+
if (userParts.length > 0) {
|
|
79
|
+
out.push({
|
|
80
|
+
role: "user",
|
|
81
|
+
content: userParts.length === 1 && userParts[0].type === "text"
|
|
82
|
+
? userParts[0].text
|
|
83
|
+
: userParts,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
63
87
|
}
|
|
64
88
|
if (msg.role === "assistant") {
|
|
65
89
|
const content = [];
|
|
@@ -72,103 +96,178 @@ export function engineMessageToAISDK(msg) {
|
|
|
72
96
|
type: "tool-call",
|
|
73
97
|
toolCallId: part.id,
|
|
74
98
|
toolName: part.name,
|
|
75
|
-
|
|
99
|
+
input: part.input,
|
|
76
100
|
});
|
|
77
101
|
}
|
|
78
102
|
else if (part.type === "thinking") {
|
|
79
|
-
|
|
80
|
-
|
|
103
|
+
const reasoning = {
|
|
104
|
+
type: "reasoning",
|
|
105
|
+
text: part.text,
|
|
106
|
+
};
|
|
107
|
+
if (part.signature) {
|
|
108
|
+
// Round-trip the Anthropic extended-thinking signature through
|
|
109
|
+
// providerOptions so the model can continue its chain of thought.
|
|
110
|
+
reasoning.providerOptions = {
|
|
111
|
+
anthropic: { signature: part.signature },
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
content.push(reasoning);
|
|
81
115
|
}
|
|
82
116
|
}
|
|
83
|
-
return
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
117
|
+
return [
|
|
118
|
+
{
|
|
119
|
+
role: "assistant",
|
|
120
|
+
content: content.length === 1 && content[0].type === "text"
|
|
121
|
+
? content[0].text
|
|
122
|
+
: content,
|
|
123
|
+
},
|
|
124
|
+
];
|
|
89
125
|
}
|
|
90
|
-
|
|
91
|
-
return { role: msg.role, content: "" };
|
|
126
|
+
throw new Error(`unknown EngineMessage role: ${msg.role}`);
|
|
92
127
|
}
|
|
93
128
|
export function engineMessagesToAISDK(messages) {
|
|
94
|
-
return messages.
|
|
129
|
+
return messages.flatMap(engineMessageToAISDK);
|
|
95
130
|
}
|
|
96
131
|
// ---------------------------------------------------------------------------
|
|
97
|
-
// AI SDK
|
|
132
|
+
// AI SDK TextStreamPart → EngineEvent
|
|
98
133
|
// ---------------------------------------------------------------------------
|
|
134
|
+
/**
|
|
135
|
+
* Translate a single part from AI SDK's `result.fullStream` into the flat
|
|
136
|
+
* sequence of EngineEvent items the framework works with.
|
|
137
|
+
*
|
|
138
|
+
* v6 emits lifecycle events (`text-start` / `text-delta` / `text-end`,
|
|
139
|
+
* `reasoning-start` / `reasoning-delta` / `reasoning-end`, `tool-input-*`).
|
|
140
|
+
* We absorb the boundary events and forward only the deltas plus the terminal
|
|
141
|
+
* `tool-call`, `finish-step`, and `finish` parts.
|
|
142
|
+
*/
|
|
99
143
|
export function aiSdkPartToEngineEvents(part) {
|
|
100
144
|
const events = [];
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
events.push({ type: "stop", reason: "error", error: errMsg });
|
|
123
|
-
}
|
|
124
|
-
else if (part.type === "finish") {
|
|
125
|
-
// Usage info may arrive on the finish step
|
|
126
|
-
if (part.usage) {
|
|
145
|
+
switch (part?.type) {
|
|
146
|
+
case "text-delta":
|
|
147
|
+
if (part.text)
|
|
148
|
+
events.push({ type: "text-delta", text: part.text });
|
|
149
|
+
break;
|
|
150
|
+
case "text-start":
|
|
151
|
+
case "text-end":
|
|
152
|
+
break;
|
|
153
|
+
case "reasoning-delta":
|
|
154
|
+
if (part.text)
|
|
155
|
+
events.push({ type: "thinking-delta", text: part.text });
|
|
156
|
+
break;
|
|
157
|
+
case "reasoning-start":
|
|
158
|
+
case "reasoning-end":
|
|
159
|
+
break;
|
|
160
|
+
case "tool-input-start":
|
|
161
|
+
case "tool-input-delta":
|
|
162
|
+
case "tool-input-end":
|
|
163
|
+
// Ignored: the terminal `tool-call` part carries the full input.
|
|
164
|
+
break;
|
|
165
|
+
case "tool-call":
|
|
127
166
|
events.push({
|
|
128
|
-
type: "
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
cacheWriteTokens: part.usage.cacheWriteTokens ?? 0,
|
|
167
|
+
type: "tool-call",
|
|
168
|
+
id: part.toolCallId,
|
|
169
|
+
name: part.toolName,
|
|
170
|
+
input: part.input ?? {},
|
|
133
171
|
});
|
|
172
|
+
break;
|
|
173
|
+
case "tool-result":
|
|
174
|
+
case "tool-error":
|
|
175
|
+
// Only fired when the SDK itself executes a tool. Our runAgentLoop
|
|
176
|
+
// dispatches tools on the outside, so these don't appear in our flow.
|
|
177
|
+
break;
|
|
178
|
+
case "error": {
|
|
179
|
+
const errMsg = part.error instanceof Error
|
|
180
|
+
? part.error.message
|
|
181
|
+
: typeof part.error === "string"
|
|
182
|
+
? part.error
|
|
183
|
+
: JSON.stringify(part.error);
|
|
184
|
+
events.push({ type: "stop", reason: "error", error: errMsg });
|
|
185
|
+
break;
|
|
134
186
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
187
|
+
case "finish-step":
|
|
188
|
+
if (part.usage) {
|
|
189
|
+
events.push(usageEventFromLanguageModelUsage(part.usage));
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
case "finish":
|
|
193
|
+
if (part.totalUsage) {
|
|
194
|
+
events.push(usageEventFromLanguageModelUsage(part.totalUsage));
|
|
195
|
+
}
|
|
196
|
+
events.push({
|
|
197
|
+
type: "stop",
|
|
198
|
+
reason: finishReasonToStopReason(part.finishReason),
|
|
199
|
+
});
|
|
200
|
+
break;
|
|
201
|
+
case "start":
|
|
202
|
+
case "start-step":
|
|
203
|
+
case "source":
|
|
204
|
+
case "file":
|
|
205
|
+
case "abort":
|
|
206
|
+
case "raw":
|
|
207
|
+
default:
|
|
208
|
+
break;
|
|
144
209
|
}
|
|
145
210
|
return events;
|
|
146
211
|
}
|
|
212
|
+
function finishReasonToStopReason(reason) {
|
|
213
|
+
switch (reason) {
|
|
214
|
+
case "tool-calls":
|
|
215
|
+
return "tool_use";
|
|
216
|
+
case "length":
|
|
217
|
+
return "max_tokens";
|
|
218
|
+
case "content-filter":
|
|
219
|
+
case "error":
|
|
220
|
+
return "error";
|
|
221
|
+
default:
|
|
222
|
+
// Maps "stop", "other", "unknown", and anything we don't recognise.
|
|
223
|
+
return "end_turn";
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
function usageEventFromLanguageModelUsage(usage) {
|
|
227
|
+
// v6 exposes cache/reasoning tokens via detail objects; older providers
|
|
228
|
+
// put them at the top level (deprecated but still read as a fallback).
|
|
229
|
+
return {
|
|
230
|
+
type: "usage",
|
|
231
|
+
inputTokens: usage.inputTokens ?? 0,
|
|
232
|
+
outputTokens: usage.outputTokens ?? 0,
|
|
233
|
+
totalTokens: usage.totalTokens,
|
|
234
|
+
cacheReadTokens: usage.inputTokenDetails?.cacheReadTokens ?? usage.cachedInputTokens ?? 0,
|
|
235
|
+
cacheWriteTokens: usage.inputTokenDetails?.cacheWriteTokens ?? 0,
|
|
236
|
+
reasoningTokens: usage.outputTokenDetails?.reasoningTokens ?? usage.reasoningTokens,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
147
239
|
// ---------------------------------------------------------------------------
|
|
148
|
-
// AI SDK
|
|
240
|
+
// AI SDK StepResult → EngineContentPart[] (assistant content reconstruction)
|
|
149
241
|
// ---------------------------------------------------------------------------
|
|
242
|
+
/**
|
|
243
|
+
* Reconstruct the assistant message content from an AI SDK v6 `StepResult`.
|
|
244
|
+
* `step.content` is the canonical structured form — iterate it.
|
|
245
|
+
*/
|
|
150
246
|
export function aiSdkStepToAssistantContent(step) {
|
|
151
247
|
const parts = [];
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
248
|
+
for (const part of step?.content ?? []) {
|
|
249
|
+
if (part.type === "text" && part.text) {
|
|
250
|
+
parts.push({ type: "text", text: part.text });
|
|
251
|
+
}
|
|
252
|
+
else if (part.type === "reasoning") {
|
|
253
|
+
const signature = part.providerMetadata?.anthropic?.signature;
|
|
254
|
+
const thinking = {
|
|
255
|
+
type: "thinking",
|
|
256
|
+
text: part.text ?? "",
|
|
257
|
+
};
|
|
258
|
+
if (typeof signature === "string")
|
|
259
|
+
thinking.signature = signature;
|
|
260
|
+
parts.push(thinking);
|
|
261
|
+
}
|
|
262
|
+
else if (part.type === "tool-call") {
|
|
157
263
|
parts.push({
|
|
158
264
|
type: "tool-call",
|
|
159
|
-
id:
|
|
160
|
-
name:
|
|
161
|
-
input:
|
|
265
|
+
id: part.toolCallId,
|
|
266
|
+
name: part.toolName,
|
|
267
|
+
input: part.input,
|
|
162
268
|
});
|
|
163
269
|
}
|
|
164
270
|
}
|
|
165
|
-
if (Array.isArray(step.reasoning)) {
|
|
166
|
-
for (const r of step.reasoning) {
|
|
167
|
-
if (r.type === "text") {
|
|
168
|
-
parts.push({ type: "thinking", text: r.text });
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
271
|
return parts;
|
|
173
272
|
}
|
|
174
273
|
//# sourceMappingURL=translate-ai-sdk.js.map
|