@poolzin/pool-bot 2026.1.39 → 2026.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/chrome-extension/README.md +3 -3
- package/assets/chrome-extension/background.js +5 -5
- package/assets/chrome-extension/manifest.json +3 -3
- package/assets/chrome-extension/options.html +4 -4
- package/assets/chrome-extension/options.js +1 -1
- package/dist/acp/client.js +3 -3
- package/dist/acp/types.js +1 -1
- package/dist/agents/agent-paths.js +3 -3
- package/dist/agents/auth-profiles/paths.js +3 -3
- package/dist/agents/cli-runner/helpers.js +1 -1
- package/dist/agents/cli-runner.js +2 -2
- package/dist/agents/cloudflare-ai-gateway.js +31 -0
- package/dist/agents/compaction.js +16 -2
- package/dist/agents/context-window-guard.js +13 -10
- package/dist/agents/context.js +4 -4
- package/dist/agents/docs-path.js +1 -1
- package/dist/agents/minimax-vlm.js +1 -1
- package/dist/agents/model-auth.js +12 -1
- package/dist/agents/model-catalog.js +4 -4
- package/dist/agents/model-selection.js +10 -4
- package/dist/agents/models-config.js +3 -3
- package/dist/agents/models-config.providers.js +147 -39
- package/dist/agents/pi-embedded-helpers/openai.js +1 -1
- package/dist/agents/pi-embedded-runner/compact.js +8 -8
- package/dist/agents/pi-embedded-runner/model.js +2 -2
- package/dist/agents/pi-embedded-runner/run/attempt.js +6 -6
- package/dist/agents/pi-embedded-runner/run.js +4 -4
- package/dist/agents/pi-embedded-runner/tool-result-truncation.js +275 -0
- package/dist/agents/pi-embedded-runner/utils.js +1 -1
- package/dist/agents/pi-model-discovery.js +10 -0
- package/dist/agents/pi-tool-definition-adapter.js +50 -9
- package/dist/agents/pi-tools.before-tool-call.js +67 -0
- package/dist/agents/pi-tools.js +10 -5
- package/dist/agents/pi-tools.read.js +2 -2
- package/dist/agents/session-file-repair.js +83 -0
- package/dist/agents/session-transcript-repair.js +68 -0
- package/dist/agents/skills/frontmatter.js +1 -1
- package/dist/agents/skills/workspace.js +2 -2
- package/dist/agents/system-prompt.js +28 -4
- package/dist/agents/together-models.js +127 -0
- package/dist/agents/tool-images.js +1 -1
- package/dist/agents/tool-policy.js +1 -1
- package/dist/agents/tools/browser-tool.js +3 -3
- package/dist/agents/tools/image-tool.js +2 -2
- package/dist/agents/tools/memory-tool.js +93 -5
- package/dist/agents/tools/web-search.js +1 -1
- package/dist/auto-reply/commands-registry.data.js +1 -1
- package/dist/auto-reply/reply/commands-context-report.js +2 -2
- package/dist/auto-reply/reply/commands-session.js +2 -2
- package/dist/auto-reply/reply/get-reply-run.js +14 -4
- package/dist/auto-reply/reply/groups.js +1 -1
- package/dist/auto-reply/reply/inbound-context.js +4 -0
- package/dist/auto-reply/reply/inbound-meta.js +130 -0
- package/dist/auto-reply/reply/untrusted-context.js +15 -0
- package/dist/auto-reply/status.js +1 -1
- package/dist/browser/client-fetch.js +1 -1
- package/dist/browser/config.js +1 -1
- package/dist/browser/extension-relay.js +3 -3
- package/dist/browser/server-context.js +2 -2
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui.js +3 -3
- package/dist/channels/plugins/catalog.js +2 -2
- package/dist/channels/plugins/onboarding/imessage.js +1 -1
- package/dist/channels/plugins/onboarding/signal.js +1 -1
- package/dist/channels/plugins/onboarding/slack.js +4 -4
- package/dist/channels/plugins/onboarding/whatsapp.js +3 -3
- package/dist/channels/plugins/pairing-message.js +1 -1
- package/dist/cli/browser-cli-extension.js +2 -2
- package/dist/cli/docs-cli.js +1 -1
- package/dist/cli/gateway-cli/dev.js +1 -1
- package/dist/cli/memory-cli.js +25 -15
- package/dist/cli/nodes-cli/register.canvas.js +1 -1
- package/dist/cli/plugins-cli.js +1 -1
- package/dist/cli/run-main.js +2 -2
- package/dist/cli/security-cli.js +1 -1
- package/dist/cli/tagline.js +1 -1
- package/dist/cli/update-cli.js +4 -4
- package/dist/cli/webhooks-cli.js +5 -5
- package/dist/commands/agents.commands.add.js +1 -1
- package/dist/commands/auth-choice.apply.api-providers.js +305 -17
- package/dist/commands/auth-choice.apply.js +4 -1
- package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
- package/dist/commands/auth-choice.apply.xai.js +63 -0
- package/dist/commands/auth-choice.preferred-provider.js +7 -1
- package/dist/commands/configure.wizard.js +1 -1
- package/dist/commands/dashboard.js +1 -1
- package/dist/commands/docs.js +1 -1
- package/dist/commands/doctor-gateway-services.js +3 -3
- package/dist/commands/doctor-update.js +3 -3
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/models/list.probe.js +2 -2
- package/dist/commands/models/list.registry.js +4 -4
- package/dist/commands/models/list.status-command.js +2 -2
- package/dist/commands/onboard-auth.config-core.js +366 -28
- package/dist/commands/onboard-auth.credentials.js +71 -9
- package/dist/commands/onboard-auth.js +3 -3
- package/dist/commands/onboard-auth.models.js +26 -24
- package/dist/commands/onboard-non-interactive/local/auth-choice.js +140 -6
- package/dist/commands/status-all/report-lines.js +1 -1
- package/dist/commands/status.command.js +1 -1
- package/dist/commands/uninstall.js +3 -3
- package/dist/compat/legacy-names.js +1 -1
- package/dist/config/io.js +3 -3
- package/dist/config/schema.js +1 -1
- package/dist/config/types.memory.js +1 -0
- package/dist/config/version.js +4 -4
- package/dist/daemon/constants.js +7 -7
- package/dist/daemon/inspect.js +6 -6
- package/dist/daemon/systemd-unit.js +1 -1
- package/dist/gateway/live-image-probe.js +1 -66
- package/dist/gateway/openai-http.js +2 -2
- package/dist/gateway/openresponses-http.js +4 -4
- package/dist/gateway/server-discovery.js +2 -2
- package/dist/gateway/server-http.js +1 -1
- package/dist/gateway/server.impl.js +2 -2
- package/dist/hooks/frontmatter.js +1 -1
- package/dist/hooks/hooks-status.js +1 -1
- package/dist/hooks/install.js +2 -2
- package/dist/hooks/loader.js +1 -1
- package/dist/hooks/workspace.js +3 -3
- package/dist/index.js +2 -2
- package/dist/infra/bonjour.js +3 -3
- package/dist/infra/path-env.js +3 -3
- package/dist/infra/provider-usage.fetch.minimax.js +1 -1
- package/dist/infra/restart.js +1 -1
- package/dist/infra/tailscale.js +1 -1
- package/dist/macos/relay.js +2 -2
- package/dist/media/input-files.js +1 -1
- package/dist/media/mime.js +4 -0
- package/dist/media/png-encode.js +74 -0
- package/dist/media-understanding/providers/image.js +2 -2
- package/dist/memory/backend-config.js +207 -0
- package/dist/memory/embeddings.js +1 -1
- package/dist/memory/manager.js +1 -0
- package/dist/memory/types.js +1 -0
- package/dist/node-host/runner.js +2 -2
- package/dist/pairing/pairing-messages.js +1 -1
- package/dist/plugins/discovery.js +1 -1
- package/dist/plugins/install.js +2 -2
- package/dist/plugins/update.js +1 -1
- package/dist/security/audit.js +2 -2
- package/dist/shared/text/reasoning-tags.js +52 -7
- package/dist/tailscale/detect.js +146 -0
- package/dist/telegram/bot-message-context.js +1 -1
- package/dist/test-helpers/workspace.js +11 -0
- package/dist/test-utils/channel-plugins.js +82 -0
- package/dist/test-utils/ports.js +73 -0
- package/dist/utils/shell-argv.js +61 -0
- package/dist/utils.js +10 -0
- package/dist/web/qr-image.js +1 -61
- package/dist/wizard/onboarding.finalize.js +7 -7
- package/dist/wizard/onboarding.js +3 -3
- package/docs/RELEASE_WORKFOTS_COMPARISON.md +3 -3
- package/docs/_config.yml +2 -2
- package/docs/_layouts/default.html +9 -9
- package/docs/concepts/typebox.md +1 -1
- package/docs/docs.json +1 -1
- package/docs/northflank.mdx +7 -7
- package/docs/railway.mdx +3 -3
- package/docs/render.mdx +5 -5
- package/docs/start/lore.md +2 -2
- package/extensions/bluebubbles/index.ts +2 -2
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/bluebubbles/src/accounts.ts +8 -8
- package/extensions/bluebubbles/src/actions.test.ts +22 -22
- package/extensions/bluebubbles/src/actions.ts +5 -5
- package/extensions/bluebubbles/src/attachments.ts +2 -2
- package/extensions/bluebubbles/src/channel.ts +16 -16
- package/extensions/bluebubbles/src/chat.ts +2 -2
- package/extensions/bluebubbles/src/media-send.ts +2 -2
- package/extensions/bluebubbles/src/monitor.test.ts +46 -46
- package/extensions/bluebubbles/src/monitor.ts +5 -5
- package/extensions/bluebubbles/src/onboarding.ts +7 -7
- package/extensions/bluebubbles/src/reactions.ts +2 -2
- package/extensions/bluebubbles/src/send.ts +2 -2
- package/extensions/copilot-proxy/README.md +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/index.ts +2 -2
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/diagnostics-otel/src/service.ts +3 -3
- package/extensions/discord/index.ts +2 -2
- package/extensions/discord/package.json +1 -1
- package/extensions/google-antigravity-auth/README.md +1 -1
- package/extensions/google-antigravity-auth/index.ts +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/README.md +1 -1
- package/extensions/google-gemini-cli-auth/oauth.ts +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/index.ts +3 -3
- package/extensions/googlechat/package.json +1 -1
- package/extensions/googlechat/src/accounts.ts +8 -8
- package/extensions/googlechat/src/actions.ts +6 -6
- package/extensions/googlechat/src/channel.ts +21 -21
- package/extensions/googlechat/src/monitor.ts +8 -8
- package/extensions/googlechat/src/onboarding.ts +10 -10
- package/extensions/imessage/index.ts +2 -2
- package/extensions/imessage/package.json +1 -1
- package/extensions/line/index.ts +2 -2
- package/extensions/line/package.json +1 -1
- package/extensions/line/src/card-command.ts +2 -2
- package/extensions/line/src/channel.logout.test.ts +4 -4
- package/extensions/line/src/channel.sendPayload.test.ts +8 -8
- package/extensions/line/src/channel.ts +3 -3
- package/extensions/llm-task/README.md +3 -3
- package/extensions/llm-task/index.ts +2 -2
- package/extensions/llm-task/package.json +1 -1
- package/extensions/llm-task/src/llm-task-tool.ts +4 -4
- package/extensions/lobster/README.md +6 -6
- package/extensions/lobster/index.ts +2 -2
- package/extensions/lobster/src/lobster-tool.test.ts +4 -4
- package/extensions/lobster/src/lobster-tool.ts +2 -2
- package/extensions/matrix/index.ts +2 -2
- package/extensions/matrix/package.json +1 -1
- package/extensions/matrix/src/matrix/client/config.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/handler.ts +1 -1
- package/extensions/matrix/src/onboarding.ts +1 -1
- package/extensions/mattermost/index.ts +2 -2
- package/extensions/mattermost/package.json +1 -1
- package/extensions/mattermost/src/mattermost/accounts.ts +8 -8
- package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
- package/extensions/mattermost/src/mattermost/monitor.ts +2 -2
- package/extensions/mattermost/src/onboarding-helpers.ts +3 -3
- package/extensions/mattermost/src/onboarding.ts +2 -2
- package/extensions/memory-core/index.ts +2 -2
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/index.ts +3 -3
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/msteams/index.ts +2 -2
- package/extensions/msteams/package.json +1 -1
- package/extensions/msteams/src/channel.directory.test.ts +2 -2
- package/extensions/msteams/src/channel.ts +2 -2
- package/extensions/msteams/src/graph-upload.ts +4 -4
- package/extensions/msteams/src/monitor-handler.ts +2 -2
- package/extensions/msteams/src/monitor.ts +2 -2
- package/extensions/msteams/src/onboarding.ts +9 -9
- package/extensions/msteams/src/reply-dispatcher.ts +2 -2
- package/extensions/msteams/src/send-context.ts +2 -2
- package/extensions/msteams/src/send.ts +4 -4
- package/extensions/nextcloud-talk/index.ts +2 -2
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nextcloud-talk/src/channel.ts +7 -7
- package/extensions/nextcloud-talk/src/inbound.ts +7 -7
- package/extensions/nextcloud-talk/src/onboarding.ts +1 -1
- package/extensions/nostr/README.md +2 -2
- package/extensions/nostr/index.ts +5 -5
- package/extensions/nostr/package.json +1 -1
- package/extensions/nostr/src/types.ts +4 -4
- package/extensions/open-prose/index.ts +2 -2
- package/extensions/qwen-portal-auth/README.md +1 -1
- package/extensions/signal/index.ts +2 -2
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/index.ts +2 -2
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/index.ts +2 -2
- package/extensions/telegram/package.json +1 -1
- package/extensions/telegram/src/channel.ts +2 -2
- package/extensions/tlon/README.md +2 -2
- package/extensions/tlon/index.ts +2 -2
- package/extensions/tlon/package.json +1 -1
- package/extensions/tlon/src/channel.ts +13 -13
- package/extensions/tlon/src/monitor/index.ts +3 -3
- package/extensions/tlon/src/onboarding.ts +3 -3
- package/extensions/tlon/src/types.ts +3 -3
- package/extensions/twitch/README.md +1 -1
- package/extensions/twitch/index.ts +2 -2
- package/extensions/twitch/package.json +1 -1
- package/extensions/twitch/src/config.ts +3 -3
- package/extensions/twitch/src/monitor.ts +3 -3
- package/extensions/twitch/src/onboarding.ts +9 -9
- package/extensions/twitch/src/outbound.test.ts +2 -2
- package/extensions/twitch/src/plugin.test.ts +2 -2
- package/extensions/twitch/src/plugin.ts +8 -8
- package/extensions/twitch/src/send.test.ts +2 -2
- package/extensions/twitch/src/send.ts +4 -4
- package/extensions/twitch/src/token.test.ts +8 -8
- package/extensions/twitch/src/token.ts +3 -3
- package/extensions/twitch/src/twitch-client.ts +3 -3
- package/extensions/twitch/src/types.ts +3 -3
- package/extensions/twitch/src/utils/markdown.ts +1 -1
- package/extensions/voice-call/README.md +3 -3
- package/extensions/voice-call/package.json +1 -1
- package/extensions/voice-call/src/core-bridge.ts +2 -2
- package/extensions/voice-call/src/response-generator.ts +1 -1
- package/extensions/whatsapp/index.ts +2 -2
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/README.md +1 -1
- package/extensions/zalo/index.ts +2 -2
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalo/src/accounts.ts +8 -8
- package/extensions/zalo/src/actions.ts +4 -4
- package/extensions/zalo/src/channel.directory.test.ts +2 -2
- package/extensions/zalo/src/channel.ts +18 -18
- package/extensions/zalo/src/monitor.ts +9 -9
- package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
- package/extensions/zalo/src/onboarding.ts +24 -24
- package/extensions/zalo/src/send.ts +2 -2
- package/extensions/zalouser/README.md +2 -2
- package/extensions/zalouser/index.ts +2 -2
- package/extensions/zalouser/package.json +1 -1
- package/extensions/zalouser/src/accounts.ts +9 -9
- package/extensions/zalouser/src/channel.ts +24 -24
- package/extensions/zalouser/src/monitor.ts +4 -4
- package/extensions/zalouser/src/onboarding.ts +28 -28
- package/package.json +13 -251
- package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
- package/skills/tmux/scripts/find-sessions.sh +1 -1
- package/CHANGELOG.md +0 -102
- package/README-header.png +0 -0
- package/git-hooks/pre-commit +0 -4
- package/scripts/format-staged.js +0 -148
- package/scripts/postinstall.js +0 -300
- package/scripts/setup-git-hooks.js +0 -96
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { discoverAuthStorage, discoverModels } from "@mariozechner/pi-coding-agent";
|
|
2
|
-
import {
|
|
2
|
+
import { resolvePoolbotAgentDir } from "../../agents/agent-paths.js";
|
|
3
3
|
import { listProfilesForProvider } from "../../agents/auth-profiles.js";
|
|
4
4
|
import { getCustomProviderApiKey, resolveAwsSdkEnvVarName, resolveEnvApiKey, } from "../../agents/model-auth.js";
|
|
5
|
-
import {
|
|
5
|
+
import { ensurePoolbotModelsJson } from "../../agents/models-config.js";
|
|
6
6
|
import { modelKey } from "./shared.js";
|
|
7
7
|
const isLocalBaseUrl = (baseUrl) => {
|
|
8
8
|
try {
|
|
@@ -30,8 +30,8 @@ const hasAuthForProvider = (provider, cfg, authStore) => {
|
|
|
30
30
|
return false;
|
|
31
31
|
};
|
|
32
32
|
export async function loadModelRegistry(cfg) {
|
|
33
|
-
await
|
|
34
|
-
const agentDir =
|
|
33
|
+
await ensurePoolbotModelsJson(cfg);
|
|
34
|
+
const agentDir = resolvePoolbotAgentDir();
|
|
35
35
|
const authStorage = discoverAuthStorage(agentDir);
|
|
36
36
|
const registry = discoverModels(authStorage, agentDir);
|
|
37
37
|
const models = registry.getAll();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { resolvePoolbotAgentDir } from "../../agents/agent-paths.js";
|
|
3
3
|
import { buildAuthHealthSummary, DEFAULT_OAUTH_WARN_MS, formatRemainingShort, } from "../../agents/auth-health.js";
|
|
4
4
|
import { ensureAuthProfileStore, resolveAuthStorePathForDisplay, resolveProfileUnusableUntilForDisplay, } from "../../agents/auth-profiles.js";
|
|
5
5
|
import { resolveEnvApiKey } from "../../agents/model-auth.js";
|
|
@@ -42,7 +42,7 @@ export async function modelsStatusCommand(opts, runtime) {
|
|
|
42
42
|
return acc;
|
|
43
43
|
}, {});
|
|
44
44
|
const allowed = Object.keys(cfg.agents?.defaults?.models ?? {});
|
|
45
|
-
const agentDir =
|
|
45
|
+
const agentDir = resolvePoolbotAgentDir();
|
|
46
46
|
const store = ensureAuthProfileStore();
|
|
47
47
|
const modelsPath = path.join(agentDir, "models.json");
|
|
48
48
|
const providersFromStore = new Set(Object.values(store.profiles)
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { buildCloudflareAiGatewayModelDefinition, resolveCloudflareAiGatewayBaseUrl, } from "../agents/cloudflare-ai-gateway.js";
|
|
2
|
+
import { buildQianfanProvider, buildXiaomiProvider, QIANFAN_DEFAULT_MODEL_ID, XIAOMI_DEFAULT_MODEL_ID, } from "../agents/models-config.providers.js";
|
|
1
3
|
import { buildSyntheticModelDefinition, SYNTHETIC_BASE_URL, SYNTHETIC_DEFAULT_MODEL_REF, SYNTHETIC_MODEL_CATALOG, } from "../agents/synthetic-models.js";
|
|
4
|
+
import { buildTogetherModelDefinition, TOGETHER_BASE_URL, TOGETHER_MODEL_CATALOG, } from "../agents/together-models.js";
|
|
2
5
|
import { buildVeniceModelDefinition, VENICE_BASE_URL, VENICE_DEFAULT_MODEL_REF, VENICE_MODEL_CATALOG, } from "../agents/venice-models.js";
|
|
3
|
-
import { OPENROUTER_DEFAULT_MODEL_REF, VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, ZAI_DEFAULT_MODEL_REF, } from "./onboard-auth.credentials.js";
|
|
4
|
-
import {
|
|
6
|
+
import { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, OPENROUTER_DEFAULT_MODEL_REF, TOGETHER_DEFAULT_MODEL_REF, VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, XIAOMI_DEFAULT_MODEL_REF, ZAI_DEFAULT_MODEL_REF, XAI_DEFAULT_MODEL_REF, } from "./onboard-auth.credentials.js";
|
|
7
|
+
import { buildMoonshotModelDefinition, buildXaiModelDefinition, QIANFAN_BASE_URL, QIANFAN_DEFAULT_MODEL_REF, KIMI_CODING_MODEL_REF, MOONSHOT_BASE_URL, MOONSHOT_CN_BASE_URL, MOONSHOT_DEFAULT_MODEL_ID, MOONSHOT_DEFAULT_MODEL_REF, XAI_BASE_URL, XAI_DEFAULT_MODEL_ID, } from "./onboard-auth.models.js";
|
|
5
8
|
export function applyZaiConfig(cfg) {
|
|
6
9
|
const models = { ...cfg.agents?.defaults?.models };
|
|
7
10
|
models[ZAI_DEFAULT_MODEL_REF] = {
|
|
@@ -62,6 +65,61 @@ export function applyVercelAiGatewayProviderConfig(cfg) {
|
|
|
62
65
|
},
|
|
63
66
|
};
|
|
64
67
|
}
|
|
68
|
+
export function applyCloudflareAiGatewayProviderConfig(cfg, params) {
|
|
69
|
+
const models = { ...cfg.agents?.defaults?.models };
|
|
70
|
+
models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF] = {
|
|
71
|
+
...models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF],
|
|
72
|
+
alias: models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF]?.alias ?? "Cloudflare AI Gateway",
|
|
73
|
+
};
|
|
74
|
+
const providers = { ...cfg.models?.providers };
|
|
75
|
+
const existingProvider = providers["cloudflare-ai-gateway"];
|
|
76
|
+
const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
|
|
77
|
+
const defaultModel = buildCloudflareAiGatewayModelDefinition();
|
|
78
|
+
const hasDefaultModel = existingModels.some((model) => model.id === defaultModel.id);
|
|
79
|
+
const mergedModels = hasDefaultModel ? existingModels : [...existingModels, defaultModel];
|
|
80
|
+
const baseUrl = params?.accountId && params?.gatewayId
|
|
81
|
+
? resolveCloudflareAiGatewayBaseUrl({
|
|
82
|
+
accountId: params.accountId,
|
|
83
|
+
gatewayId: params.gatewayId,
|
|
84
|
+
})
|
|
85
|
+
: existingProvider?.baseUrl;
|
|
86
|
+
if (!baseUrl) {
|
|
87
|
+
return {
|
|
88
|
+
...cfg,
|
|
89
|
+
agents: {
|
|
90
|
+
...cfg.agents,
|
|
91
|
+
defaults: {
|
|
92
|
+
...cfg.agents?.defaults,
|
|
93
|
+
models,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const { apiKey: existingApiKey, ...existingProviderRest } = (existingProvider ?? {});
|
|
99
|
+
const resolvedApiKey = typeof existingApiKey === "string" ? existingApiKey : undefined;
|
|
100
|
+
const normalizedApiKey = resolvedApiKey?.trim();
|
|
101
|
+
providers["cloudflare-ai-gateway"] = {
|
|
102
|
+
...existingProviderRest,
|
|
103
|
+
baseUrl,
|
|
104
|
+
api: "anthropic-messages",
|
|
105
|
+
...(normalizedApiKey ? { apiKey: normalizedApiKey } : {}),
|
|
106
|
+
models: mergedModels.length > 0 ? mergedModels : [defaultModel],
|
|
107
|
+
};
|
|
108
|
+
return {
|
|
109
|
+
...cfg,
|
|
110
|
+
agents: {
|
|
111
|
+
...cfg.agents,
|
|
112
|
+
defaults: {
|
|
113
|
+
...cfg.agents?.defaults,
|
|
114
|
+
models,
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
models: {
|
|
118
|
+
mode: cfg.models?.mode ?? "merge",
|
|
119
|
+
providers,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
65
123
|
export function applyVercelAiGatewayConfig(cfg) {
|
|
66
124
|
const next = applyVercelAiGatewayProviderConfig(cfg);
|
|
67
125
|
const existingModel = next.agents?.defaults?.model;
|
|
@@ -83,6 +141,27 @@ export function applyVercelAiGatewayConfig(cfg) {
|
|
|
83
141
|
},
|
|
84
142
|
};
|
|
85
143
|
}
|
|
144
|
+
export function applyCloudflareAiGatewayConfig(cfg, params) {
|
|
145
|
+
const next = applyCloudflareAiGatewayProviderConfig(cfg, params);
|
|
146
|
+
const existingModel = next.agents?.defaults?.model;
|
|
147
|
+
return {
|
|
148
|
+
...next,
|
|
149
|
+
agents: {
|
|
150
|
+
...next.agents,
|
|
151
|
+
defaults: {
|
|
152
|
+
...next.agents?.defaults,
|
|
153
|
+
model: {
|
|
154
|
+
...(existingModel && "fallbacks" in existingModel
|
|
155
|
+
? {
|
|
156
|
+
fallbacks: existingModel.fallbacks,
|
|
157
|
+
}
|
|
158
|
+
: undefined),
|
|
159
|
+
primary: CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF,
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
}
|
|
86
165
|
export function applyOpenrouterConfig(cfg) {
|
|
87
166
|
const next = applyOpenrouterProviderConfig(cfg);
|
|
88
167
|
const existingModel = next.agents?.defaults?.model;
|
|
@@ -105,10 +184,16 @@ export function applyOpenrouterConfig(cfg) {
|
|
|
105
184
|
};
|
|
106
185
|
}
|
|
107
186
|
export function applyMoonshotProviderConfig(cfg) {
|
|
187
|
+
return applyMoonshotProviderConfigWithBaseUrl(cfg, MOONSHOT_BASE_URL);
|
|
188
|
+
}
|
|
189
|
+
export function applyMoonshotProviderConfigCn(cfg) {
|
|
190
|
+
return applyMoonshotProviderConfigWithBaseUrl(cfg, MOONSHOT_CN_BASE_URL);
|
|
191
|
+
}
|
|
192
|
+
function applyMoonshotProviderConfigWithBaseUrl(cfg, baseUrl) {
|
|
108
193
|
const models = { ...cfg.agents?.defaults?.models };
|
|
109
194
|
models[MOONSHOT_DEFAULT_MODEL_REF] = {
|
|
110
195
|
...models[MOONSHOT_DEFAULT_MODEL_REF],
|
|
111
|
-
alias: models[MOONSHOT_DEFAULT_MODEL_REF]?.alias ?? "Kimi
|
|
196
|
+
alias: models[MOONSHOT_DEFAULT_MODEL_REF]?.alias ?? "Kimi",
|
|
112
197
|
};
|
|
113
198
|
const providers = { ...cfg.models?.providers };
|
|
114
199
|
const existingProvider = providers.moonshot;
|
|
@@ -121,7 +206,7 @@ export function applyMoonshotProviderConfig(cfg) {
|
|
|
121
206
|
const normalizedApiKey = resolvedApiKey?.trim();
|
|
122
207
|
providers.moonshot = {
|
|
123
208
|
...existingProviderRest,
|
|
124
|
-
baseUrl
|
|
209
|
+
baseUrl,
|
|
125
210
|
api: "openai-completions",
|
|
126
211
|
...(normalizedApiKey ? { apiKey: normalizedApiKey } : {}),
|
|
127
212
|
models: mergedModels.length > 0 ? mergedModels : [defaultModel],
|
|
@@ -162,27 +247,32 @@ export function applyMoonshotConfig(cfg) {
|
|
|
162
247
|
},
|
|
163
248
|
};
|
|
164
249
|
}
|
|
250
|
+
export function applyMoonshotConfigCn(cfg) {
|
|
251
|
+
const next = applyMoonshotProviderConfigCn(cfg);
|
|
252
|
+
const existingModel = next.agents?.defaults?.model;
|
|
253
|
+
return {
|
|
254
|
+
...next,
|
|
255
|
+
agents: {
|
|
256
|
+
...next.agents,
|
|
257
|
+
defaults: {
|
|
258
|
+
...next.agents?.defaults,
|
|
259
|
+
model: {
|
|
260
|
+
...(existingModel && "fallbacks" in existingModel
|
|
261
|
+
? {
|
|
262
|
+
fallbacks: existingModel.fallbacks,
|
|
263
|
+
}
|
|
264
|
+
: undefined),
|
|
265
|
+
primary: MOONSHOT_DEFAULT_MODEL_REF,
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
};
|
|
270
|
+
}
|
|
165
271
|
export function applyKimiCodeProviderConfig(cfg) {
|
|
166
272
|
const models = { ...cfg.agents?.defaults?.models };
|
|
167
|
-
models[
|
|
168
|
-
...models[
|
|
169
|
-
alias: models[
|
|
170
|
-
};
|
|
171
|
-
const providers = { ...cfg.models?.providers };
|
|
172
|
-
const existingProvider = providers["kimi-code"];
|
|
173
|
-
const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
|
|
174
|
-
const defaultModel = buildKimiCodeModelDefinition();
|
|
175
|
-
const hasDefaultModel = existingModels.some((model) => model.id === KIMI_CODE_MODEL_ID);
|
|
176
|
-
const mergedModels = hasDefaultModel ? existingModels : [...existingModels, defaultModel];
|
|
177
|
-
const { apiKey: existingApiKey, ...existingProviderRest } = (existingProvider ?? {});
|
|
178
|
-
const resolvedApiKey = typeof existingApiKey === "string" ? existingApiKey : undefined;
|
|
179
|
-
const normalizedApiKey = resolvedApiKey?.trim();
|
|
180
|
-
providers["kimi-code"] = {
|
|
181
|
-
...existingProviderRest,
|
|
182
|
-
baseUrl: KIMI_CODE_BASE_URL,
|
|
183
|
-
api: "openai-completions",
|
|
184
|
-
...(normalizedApiKey ? { apiKey: normalizedApiKey } : {}),
|
|
185
|
-
models: mergedModels.length > 0 ? mergedModels : [defaultModel],
|
|
273
|
+
models[KIMI_CODING_MODEL_REF] = {
|
|
274
|
+
...models[KIMI_CODING_MODEL_REF],
|
|
275
|
+
alias: models[KIMI_CODING_MODEL_REF]?.alias ?? "Kimi K2.5",
|
|
186
276
|
};
|
|
187
277
|
return {
|
|
188
278
|
...cfg,
|
|
@@ -193,10 +283,6 @@ export function applyKimiCodeProviderConfig(cfg) {
|
|
|
193
283
|
models,
|
|
194
284
|
},
|
|
195
285
|
},
|
|
196
|
-
models: {
|
|
197
|
-
mode: cfg.models?.mode ?? "merge",
|
|
198
|
-
providers,
|
|
199
|
-
},
|
|
200
286
|
};
|
|
201
287
|
}
|
|
202
288
|
export function applyKimiCodeConfig(cfg) {
|
|
@@ -214,7 +300,7 @@ export function applyKimiCodeConfig(cfg) {
|
|
|
214
300
|
fallbacks: existingModel.fallbacks,
|
|
215
301
|
}
|
|
216
302
|
: undefined),
|
|
217
|
-
primary:
|
|
303
|
+
primary: KIMI_CODING_MODEL_REF,
|
|
218
304
|
},
|
|
219
305
|
},
|
|
220
306
|
},
|
|
@@ -280,6 +366,69 @@ export function applySyntheticConfig(cfg) {
|
|
|
280
366
|
},
|
|
281
367
|
};
|
|
282
368
|
}
|
|
369
|
+
export function applyXiaomiProviderConfig(cfg) {
|
|
370
|
+
const models = { ...cfg.agents?.defaults?.models };
|
|
371
|
+
models[XIAOMI_DEFAULT_MODEL_REF] = {
|
|
372
|
+
...models[XIAOMI_DEFAULT_MODEL_REF],
|
|
373
|
+
alias: models[XIAOMI_DEFAULT_MODEL_REF]?.alias ?? "Xiaomi",
|
|
374
|
+
};
|
|
375
|
+
const providers = { ...cfg.models?.providers };
|
|
376
|
+
const existingProvider = providers.xiaomi;
|
|
377
|
+
const defaultProvider = buildXiaomiProvider();
|
|
378
|
+
const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
|
|
379
|
+
const defaultModels = defaultProvider.models ?? [];
|
|
380
|
+
const hasDefaultModel = existingModels.some((model) => model.id === XIAOMI_DEFAULT_MODEL_ID);
|
|
381
|
+
const mergedModels = existingModels.length > 0
|
|
382
|
+
? hasDefaultModel
|
|
383
|
+
? existingModels
|
|
384
|
+
: [...existingModels, ...defaultModels]
|
|
385
|
+
: defaultModels;
|
|
386
|
+
const { apiKey: existingApiKey, ...existingProviderRest } = (existingProvider ?? {});
|
|
387
|
+
const resolvedApiKey = typeof existingApiKey === "string" ? existingApiKey : undefined;
|
|
388
|
+
const normalizedApiKey = resolvedApiKey?.trim();
|
|
389
|
+
providers.xiaomi = {
|
|
390
|
+
...existingProviderRest,
|
|
391
|
+
baseUrl: defaultProvider.baseUrl,
|
|
392
|
+
api: defaultProvider.api,
|
|
393
|
+
...(normalizedApiKey ? { apiKey: normalizedApiKey } : {}),
|
|
394
|
+
models: mergedModels.length > 0 ? mergedModels : defaultProvider.models,
|
|
395
|
+
};
|
|
396
|
+
return {
|
|
397
|
+
...cfg,
|
|
398
|
+
agents: {
|
|
399
|
+
...cfg.agents,
|
|
400
|
+
defaults: {
|
|
401
|
+
...cfg.agents?.defaults,
|
|
402
|
+
models,
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
models: {
|
|
406
|
+
mode: cfg.models?.mode ?? "merge",
|
|
407
|
+
providers,
|
|
408
|
+
},
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
export function applyXiaomiConfig(cfg) {
|
|
412
|
+
const next = applyXiaomiProviderConfig(cfg);
|
|
413
|
+
const existingModel = next.agents?.defaults?.model;
|
|
414
|
+
return {
|
|
415
|
+
...next,
|
|
416
|
+
agents: {
|
|
417
|
+
...next.agents,
|
|
418
|
+
defaults: {
|
|
419
|
+
...next.agents?.defaults,
|
|
420
|
+
model: {
|
|
421
|
+
...(existingModel && "fallbacks" in existingModel
|
|
422
|
+
? {
|
|
423
|
+
fallbacks: existingModel.fallbacks,
|
|
424
|
+
}
|
|
425
|
+
: undefined),
|
|
426
|
+
primary: XIAOMI_DEFAULT_MODEL_REF,
|
|
427
|
+
},
|
|
428
|
+
},
|
|
429
|
+
},
|
|
430
|
+
};
|
|
431
|
+
}
|
|
283
432
|
/**
|
|
284
433
|
* Apply Venice provider configuration without changing the default model.
|
|
285
434
|
* Registers Venice models and sets up the provider, but preserves existing model selection.
|
|
@@ -348,6 +497,132 @@ export function applyVeniceConfig(cfg) {
|
|
|
348
497
|
},
|
|
349
498
|
};
|
|
350
499
|
}
|
|
500
|
+
/**
|
|
501
|
+
* Apply Together provider configuration without changing the default model.
|
|
502
|
+
* Registers Together models and sets up the provider, but preserves existing model selection.
|
|
503
|
+
*/
|
|
504
|
+
export function applyTogetherProviderConfig(cfg) {
|
|
505
|
+
const models = { ...cfg.agents?.defaults?.models };
|
|
506
|
+
models[TOGETHER_DEFAULT_MODEL_REF] = {
|
|
507
|
+
...models[TOGETHER_DEFAULT_MODEL_REF],
|
|
508
|
+
alias: models[TOGETHER_DEFAULT_MODEL_REF]?.alias ?? "Together AI",
|
|
509
|
+
};
|
|
510
|
+
const providers = { ...cfg.models?.providers };
|
|
511
|
+
const existingProvider = providers.together;
|
|
512
|
+
const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
|
|
513
|
+
const togetherModels = TOGETHER_MODEL_CATALOG.map(buildTogetherModelDefinition);
|
|
514
|
+
const mergedModels = [
|
|
515
|
+
...existingModels,
|
|
516
|
+
...togetherModels.filter((model) => !existingModels.some((existing) => existing.id === model.id)),
|
|
517
|
+
];
|
|
518
|
+
const { apiKey: existingApiKey, ...existingProviderRest } = (existingProvider ?? {});
|
|
519
|
+
const resolvedApiKey = typeof existingApiKey === "string" ? existingApiKey : undefined;
|
|
520
|
+
const normalizedApiKey = resolvedApiKey?.trim();
|
|
521
|
+
providers.together = {
|
|
522
|
+
...existingProviderRest,
|
|
523
|
+
baseUrl: TOGETHER_BASE_URL,
|
|
524
|
+
api: "openai-completions",
|
|
525
|
+
...(normalizedApiKey ? { apiKey: normalizedApiKey } : {}),
|
|
526
|
+
models: mergedModels.length > 0 ? mergedModels : togetherModels,
|
|
527
|
+
};
|
|
528
|
+
return {
|
|
529
|
+
...cfg,
|
|
530
|
+
agents: {
|
|
531
|
+
...cfg.agents,
|
|
532
|
+
defaults: {
|
|
533
|
+
...cfg.agents?.defaults,
|
|
534
|
+
models,
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
models: {
|
|
538
|
+
mode: cfg.models?.mode ?? "merge",
|
|
539
|
+
providers,
|
|
540
|
+
},
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Apply Together provider configuration AND set Together as the default model.
|
|
545
|
+
* Use this when Together is the primary provider choice during onboarding.
|
|
546
|
+
*/
|
|
547
|
+
export function applyTogetherConfig(cfg) {
|
|
548
|
+
const next = applyTogetherProviderConfig(cfg);
|
|
549
|
+
const existingModel = next.agents?.defaults?.model;
|
|
550
|
+
return {
|
|
551
|
+
...next,
|
|
552
|
+
agents: {
|
|
553
|
+
...next.agents,
|
|
554
|
+
defaults: {
|
|
555
|
+
...next.agents?.defaults,
|
|
556
|
+
model: {
|
|
557
|
+
...(existingModel && "fallbacks" in existingModel
|
|
558
|
+
? {
|
|
559
|
+
fallbacks: existingModel.fallbacks,
|
|
560
|
+
}
|
|
561
|
+
: undefined),
|
|
562
|
+
primary: TOGETHER_DEFAULT_MODEL_REF,
|
|
563
|
+
},
|
|
564
|
+
},
|
|
565
|
+
},
|
|
566
|
+
};
|
|
567
|
+
}
|
|
568
|
+
export function applyXaiProviderConfig(cfg) {
|
|
569
|
+
const models = { ...cfg.agents?.defaults?.models };
|
|
570
|
+
models[XAI_DEFAULT_MODEL_REF] = {
|
|
571
|
+
...models[XAI_DEFAULT_MODEL_REF],
|
|
572
|
+
alias: models[XAI_DEFAULT_MODEL_REF]?.alias ?? "Grok",
|
|
573
|
+
};
|
|
574
|
+
const providers = { ...cfg.models?.providers };
|
|
575
|
+
const existingProvider = providers.xai;
|
|
576
|
+
const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
|
|
577
|
+
const defaultModel = buildXaiModelDefinition();
|
|
578
|
+
const hasDefaultModel = existingModels.some((model) => model.id === XAI_DEFAULT_MODEL_ID);
|
|
579
|
+
const mergedModels = hasDefaultModel ? existingModels : [...existingModels, defaultModel];
|
|
580
|
+
const { apiKey: existingApiKey, ...existingProviderRest } = (existingProvider ?? {});
|
|
581
|
+
const resolvedApiKey = typeof existingApiKey === "string" ? existingApiKey : undefined;
|
|
582
|
+
const normalizedApiKey = resolvedApiKey?.trim();
|
|
583
|
+
providers.xai = {
|
|
584
|
+
...existingProviderRest,
|
|
585
|
+
baseUrl: XAI_BASE_URL,
|
|
586
|
+
api: "openai-completions",
|
|
587
|
+
...(normalizedApiKey ? { apiKey: normalizedApiKey } : {}),
|
|
588
|
+
models: mergedModels.length > 0 ? mergedModels : [defaultModel],
|
|
589
|
+
};
|
|
590
|
+
return {
|
|
591
|
+
...cfg,
|
|
592
|
+
agents: {
|
|
593
|
+
...cfg.agents,
|
|
594
|
+
defaults: {
|
|
595
|
+
...cfg.agents?.defaults,
|
|
596
|
+
models,
|
|
597
|
+
},
|
|
598
|
+
},
|
|
599
|
+
models: {
|
|
600
|
+
mode: cfg.models?.mode ?? "merge",
|
|
601
|
+
providers,
|
|
602
|
+
},
|
|
603
|
+
};
|
|
604
|
+
}
|
|
605
|
+
export function applyXaiConfig(cfg) {
|
|
606
|
+
const next = applyXaiProviderConfig(cfg);
|
|
607
|
+
const existingModel = next.agents?.defaults?.model;
|
|
608
|
+
return {
|
|
609
|
+
...next,
|
|
610
|
+
agents: {
|
|
611
|
+
...next.agents,
|
|
612
|
+
defaults: {
|
|
613
|
+
...next.agents?.defaults,
|
|
614
|
+
model: {
|
|
615
|
+
...(existingModel && "fallbacks" in existingModel
|
|
616
|
+
? {
|
|
617
|
+
fallbacks: existingModel.fallbacks,
|
|
618
|
+
}
|
|
619
|
+
: undefined),
|
|
620
|
+
primary: XAI_DEFAULT_MODEL_REF,
|
|
621
|
+
},
|
|
622
|
+
},
|
|
623
|
+
},
|
|
624
|
+
};
|
|
625
|
+
}
|
|
351
626
|
export function applyAuthProfileConfig(cfg, params) {
|
|
352
627
|
const profiles = {
|
|
353
628
|
...cfg.auth?.profiles,
|
|
@@ -384,3 +659,66 @@ export function applyAuthProfileConfig(cfg, params) {
|
|
|
384
659
|
},
|
|
385
660
|
};
|
|
386
661
|
}
|
|
662
|
+
export function applyQianfanProviderConfig(cfg) {
|
|
663
|
+
const models = { ...cfg.agents?.defaults?.models };
|
|
664
|
+
models[QIANFAN_DEFAULT_MODEL_REF] = {
|
|
665
|
+
...models[QIANFAN_DEFAULT_MODEL_REF],
|
|
666
|
+
alias: models[QIANFAN_DEFAULT_MODEL_REF]?.alias ?? "QIANFAN",
|
|
667
|
+
};
|
|
668
|
+
const providers = { ...cfg.models?.providers };
|
|
669
|
+
const existingProvider = providers.qianfan;
|
|
670
|
+
const defaultProvider = buildQianfanProvider();
|
|
671
|
+
const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
|
|
672
|
+
const defaultModels = defaultProvider.models ?? [];
|
|
673
|
+
const hasDefaultModel = existingModels.some((model) => model.id === QIANFAN_DEFAULT_MODEL_ID);
|
|
674
|
+
const mergedModels = existingModels.length > 0
|
|
675
|
+
? hasDefaultModel
|
|
676
|
+
? existingModels
|
|
677
|
+
: [...existingModels, ...defaultModels]
|
|
678
|
+
: defaultModels;
|
|
679
|
+
const { apiKey: existingApiKey, baseUrl: existingBaseUrl, api: existingApi, ...existingProviderRest } = (existingProvider ?? {});
|
|
680
|
+
const resolvedApiKey = typeof existingApiKey === "string" ? existingApiKey : undefined;
|
|
681
|
+
const normalizedApiKey = resolvedApiKey?.trim();
|
|
682
|
+
providers.qianfan = {
|
|
683
|
+
...existingProviderRest,
|
|
684
|
+
baseUrl: existingBaseUrl ?? QIANFAN_BASE_URL,
|
|
685
|
+
api: existingApi ?? "openai-completions",
|
|
686
|
+
...(normalizedApiKey ? { apiKey: normalizedApiKey } : {}),
|
|
687
|
+
models: mergedModels.length > 0 ? mergedModels : defaultProvider.models,
|
|
688
|
+
};
|
|
689
|
+
return {
|
|
690
|
+
...cfg,
|
|
691
|
+
agents: {
|
|
692
|
+
...cfg.agents,
|
|
693
|
+
defaults: {
|
|
694
|
+
...cfg.agents?.defaults,
|
|
695
|
+
models,
|
|
696
|
+
},
|
|
697
|
+
},
|
|
698
|
+
models: {
|
|
699
|
+
mode: cfg.models?.mode ?? "merge",
|
|
700
|
+
providers,
|
|
701
|
+
},
|
|
702
|
+
};
|
|
703
|
+
}
|
|
704
|
+
export function applyQianfanConfig(cfg) {
|
|
705
|
+
const next = applyQianfanProviderConfig(cfg);
|
|
706
|
+
const existingModel = next.agents?.defaults?.model;
|
|
707
|
+
return {
|
|
708
|
+
...next,
|
|
709
|
+
agents: {
|
|
710
|
+
...next.agents,
|
|
711
|
+
defaults: {
|
|
712
|
+
...next.agents?.defaults,
|
|
713
|
+
model: {
|
|
714
|
+
...(existingModel && "fallbacks" in existingModel
|
|
715
|
+
? {
|
|
716
|
+
fallbacks: existingModel.fallbacks,
|
|
717
|
+
}
|
|
718
|
+
: undefined),
|
|
719
|
+
primary: QIANFAN_DEFAULT_MODEL_REF,
|
|
720
|
+
},
|
|
721
|
+
},
|
|
722
|
+
},
|
|
723
|
+
};
|
|
724
|
+
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolvePoolbotAgentDir } from "../agents/agent-paths.js";
|
|
2
2
|
import { upsertAuthProfile } from "../agents/auth-profiles.js";
|
|
3
|
-
|
|
3
|
+
export { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF } from "../agents/cloudflare-ai-gateway.js";
|
|
4
|
+
export { XAI_DEFAULT_MODEL_REF } from "./onboard-auth.models.js";
|
|
5
|
+
const resolveAuthAgentDir = (agentDir) => agentDir ?? resolvePoolbotAgentDir();
|
|
4
6
|
export async function writeOAuthCredentials(provider, creds, agentDir) {
|
|
5
|
-
|
|
7
|
+
const email = typeof creds.email === "string" && creds.email.trim() ? creds.email.trim() : "default";
|
|
6
8
|
upsertAuthProfile({
|
|
7
|
-
profileId: `${provider}:${
|
|
9
|
+
profileId: `${provider}:${email}`,
|
|
8
10
|
credential: {
|
|
9
11
|
type: "oauth",
|
|
10
12
|
provider,
|
|
@@ -61,13 +63,13 @@ export async function setMoonshotApiKey(key, agentDir) {
|
|
|
61
63
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
62
64
|
});
|
|
63
65
|
}
|
|
64
|
-
export async function
|
|
66
|
+
export async function setKimiCodingApiKey(key, agentDir) {
|
|
65
67
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
66
68
|
upsertAuthProfile({
|
|
67
|
-
profileId: "kimi-
|
|
69
|
+
profileId: "kimi-coding:default",
|
|
68
70
|
credential: {
|
|
69
71
|
type: "api_key",
|
|
70
|
-
provider: "kimi-
|
|
72
|
+
provider: "kimi-coding",
|
|
71
73
|
key,
|
|
72
74
|
},
|
|
73
75
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
@@ -98,10 +100,11 @@ export async function setVeniceApiKey(key, agentDir) {
|
|
|
98
100
|
});
|
|
99
101
|
}
|
|
100
102
|
export const ZAI_DEFAULT_MODEL_REF = "zai/glm-4.7";
|
|
103
|
+
export const XIAOMI_DEFAULT_MODEL_REF = "xiaomi/mimo-v2-flash";
|
|
101
104
|
export const OPENROUTER_DEFAULT_MODEL_REF = "openrouter/auto";
|
|
102
|
-
export const
|
|
105
|
+
export const TOGETHER_DEFAULT_MODEL_REF = "together/moonshotai/Kimi-K2.5";
|
|
106
|
+
export const VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF = "vercel-ai-gateway/anthropic/claude-opus-4.6";
|
|
103
107
|
export async function setZaiApiKey(key, agentDir) {
|
|
104
|
-
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
105
108
|
upsertAuthProfile({
|
|
106
109
|
profileId: "zai:default",
|
|
107
110
|
credential: {
|
|
@@ -112,6 +115,17 @@ export async function setZaiApiKey(key, agentDir) {
|
|
|
112
115
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
113
116
|
});
|
|
114
117
|
}
|
|
118
|
+
export async function setXiaomiApiKey(key, agentDir) {
|
|
119
|
+
upsertAuthProfile({
|
|
120
|
+
profileId: "xiaomi:default",
|
|
121
|
+
credential: {
|
|
122
|
+
type: "api_key",
|
|
123
|
+
provider: "xiaomi",
|
|
124
|
+
key,
|
|
125
|
+
},
|
|
126
|
+
agentDir: resolveAuthAgentDir(agentDir),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
115
129
|
export async function setOpenrouterApiKey(key, agentDir) {
|
|
116
130
|
upsertAuthProfile({
|
|
117
131
|
profileId: "openrouter:default",
|
|
@@ -123,6 +137,21 @@ export async function setOpenrouterApiKey(key, agentDir) {
|
|
|
123
137
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
124
138
|
});
|
|
125
139
|
}
|
|
140
|
+
export async function setCloudflareAiGatewayConfig(accountId, gatewayId, apiKey, agentDir) {
|
|
141
|
+
upsertAuthProfile({
|
|
142
|
+
profileId: "cloudflare-ai-gateway:default",
|
|
143
|
+
credential: {
|
|
144
|
+
type: "api_key",
|
|
145
|
+
provider: "cloudflare-ai-gateway",
|
|
146
|
+
key: apiKey.trim(),
|
|
147
|
+
metadata: {
|
|
148
|
+
accountId: accountId.trim(),
|
|
149
|
+
gatewayId: gatewayId.trim(),
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
agentDir: resolveAuthAgentDir(agentDir),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
126
155
|
export async function setVercelAiGatewayApiKey(key, agentDir) {
|
|
127
156
|
upsertAuthProfile({
|
|
128
157
|
profileId: "vercel-ai-gateway:default",
|
|
@@ -145,3 +174,36 @@ export async function setOpencodeZenApiKey(key, agentDir) {
|
|
|
145
174
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
146
175
|
});
|
|
147
176
|
}
|
|
177
|
+
export async function setTogetherApiKey(key, agentDir) {
|
|
178
|
+
upsertAuthProfile({
|
|
179
|
+
profileId: "together:default",
|
|
180
|
+
credential: {
|
|
181
|
+
type: "api_key",
|
|
182
|
+
provider: "together",
|
|
183
|
+
key,
|
|
184
|
+
},
|
|
185
|
+
agentDir: resolveAuthAgentDir(agentDir),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
export function setQianfanApiKey(key, agentDir) {
|
|
189
|
+
upsertAuthProfile({
|
|
190
|
+
profileId: "qianfan:default",
|
|
191
|
+
credential: {
|
|
192
|
+
type: "api_key",
|
|
193
|
+
provider: "qianfan",
|
|
194
|
+
key,
|
|
195
|
+
},
|
|
196
|
+
agentDir: resolveAuthAgentDir(agentDir),
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
export function setXaiApiKey(key, agentDir) {
|
|
200
|
+
upsertAuthProfile({
|
|
201
|
+
profileId: "xai:default",
|
|
202
|
+
credential: {
|
|
203
|
+
type: "api_key",
|
|
204
|
+
provider: "xai",
|
|
205
|
+
key,
|
|
206
|
+
},
|
|
207
|
+
agentDir: resolveAuthAgentDir(agentDir),
|
|
208
|
+
});
|
|
209
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { SYNTHETIC_DEFAULT_MODEL_ID, SYNTHETIC_DEFAULT_MODEL_REF, } from "../agents/synthetic-models.js";
|
|
2
2
|
export { VENICE_DEFAULT_MODEL_ID, VENICE_DEFAULT_MODEL_REF } from "../agents/venice-models.js";
|
|
3
|
-
export { applyAuthProfileConfig, applyKimiCodeConfig, applyKimiCodeProviderConfig, applyMoonshotConfig, applyMoonshotProviderConfig, applyOpenrouterConfig, applyOpenrouterProviderConfig, applySyntheticConfig, applySyntheticProviderConfig, applyVeniceConfig, applyVeniceProviderConfig, applyVercelAiGatewayConfig, applyVercelAiGatewayProviderConfig, applyZaiConfig, } from "./onboard-auth.config-core.js";
|
|
3
|
+
export { applyAuthProfileConfig, applyCloudflareAiGatewayConfig, applyCloudflareAiGatewayProviderConfig, applyQianfanConfig, applyQianfanProviderConfig, applyKimiCodeConfig, applyKimiCodeProviderConfig, applyMoonshotConfig, applyMoonshotConfigCn, applyMoonshotProviderConfig, applyMoonshotProviderConfigCn, applyOpenrouterConfig, applyOpenrouterProviderConfig, applySyntheticConfig, applySyntheticProviderConfig, applyTogetherConfig, applyTogetherProviderConfig, applyVeniceConfig, applyVeniceProviderConfig, applyVercelAiGatewayConfig, applyVercelAiGatewayProviderConfig, applyXaiConfig, applyXaiProviderConfig, applyXiaomiConfig, applyXiaomiProviderConfig, applyZaiConfig, } from "./onboard-auth.config-core.js";
|
|
4
4
|
export { applyMinimaxApiConfig, applyMinimaxApiProviderConfig, applyMinimaxConfig, applyMinimaxHostedConfig, applyMinimaxHostedProviderConfig, applyMinimaxProviderConfig, } from "./onboard-auth.config-minimax.js";
|
|
5
5
|
export { applyOpencodeZenConfig, applyOpencodeZenProviderConfig, } from "./onboard-auth.config-opencode.js";
|
|
6
|
-
export { OPENROUTER_DEFAULT_MODEL_REF, setAnthropicApiKey, setGeminiApiKey,
|
|
7
|
-
export {
|
|
6
|
+
export { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, OPENROUTER_DEFAULT_MODEL_REF, setAnthropicApiKey, setCloudflareAiGatewayConfig, setQianfanApiKey, setGeminiApiKey, setKimiCodingApiKey, setMinimaxApiKey, setMoonshotApiKey, setOpencodeZenApiKey, setOpenrouterApiKey, setSyntheticApiKey, setTogetherApiKey, setVeniceApiKey, setVercelAiGatewayApiKey, setXiaomiApiKey, setZaiApiKey, setXaiApiKey, writeOAuthCredentials, VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, XIAOMI_DEFAULT_MODEL_REF, ZAI_DEFAULT_MODEL_REF, TOGETHER_DEFAULT_MODEL_REF, XAI_DEFAULT_MODEL_REF, } from "./onboard-auth.credentials.js";
|
|
7
|
+
export { buildMinimaxApiModelDefinition, buildMinimaxModelDefinition, buildMoonshotModelDefinition, DEFAULT_MINIMAX_BASE_URL, MOONSHOT_CN_BASE_URL, QIANFAN_BASE_URL, QIANFAN_DEFAULT_MODEL_ID, QIANFAN_DEFAULT_MODEL_REF, KIMI_CODING_MODEL_ID, KIMI_CODING_MODEL_REF, MINIMAX_API_BASE_URL, MINIMAX_HOSTED_MODEL_ID, MINIMAX_HOSTED_MODEL_REF, MOONSHOT_BASE_URL, MOONSHOT_DEFAULT_MODEL_ID, MOONSHOT_DEFAULT_MODEL_REF, } from "./onboard-auth.models.js";
|