@agent-native/core 0.205.0 → 0.206.0-nightly-20261009011246
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/a2a/client.d.ts +2 -2
- package/dist/agent/engine/anthropic-engine.d.ts +1 -1
- package/dist/agent/engine/builder-engine.d.ts +1 -1
- package/dist/agent/engine/builder-engine.js +23 -8
- package/dist/agent/engine/error-telemetry.d.ts +5 -0
- package/dist/agent/engine/error-telemetry.js +41 -0
- package/dist/agent/engine/registry.d.ts +1 -6
- package/dist/agent/engine/registry.js +2 -31
- package/dist/agent/model-config.d.ts +26 -14
- package/dist/agent/model-config.js +131 -8
- package/dist/agent/model-version.d.ts +19 -0
- package/dist/agent/model-version.js +153 -0
- package/dist/agent/production-agent.d.ts +1 -0
- package/dist/agent/production-agent.js +24 -6
- package/dist/agent/provider-model-selection.js +6 -4
- package/dist/agent/run-manager.js +5 -11
- package/dist/agent/thread-data-builder.js +14 -6
- package/dist/authorization/check-action.js +8 -4
- package/dist/chat-threads/store.js +22 -9
- package/dist/client/analytics.d.ts +1 -0
- package/dist/client/analytics.js +10 -2
- package/dist/client/chat/runtime.js +18 -0
- package/dist/client/chat-model-groups.d.ts +3 -0
- package/dist/client/error-format.js +10 -7
- package/dist/client/onboarding/use-onboarding.d.ts +12 -0
- package/dist/client/onboarding/use-onboarding.js +491 -4
- package/dist/client/session-replay-privacy.d.ts +8 -0
- package/dist/client/session-replay-privacy.js +8 -0
- package/dist/client/session-replay.d.ts +1 -0
- package/dist/client/session-replay.js +18 -9
- package/dist/client/sse-event-processor.js +10 -6
- package/dist/client/use-chat-models.d.ts +5 -0
- package/dist/client/use-chat-models.js +51 -5
- package/dist/client/use-session.d.ts +8 -1
- package/dist/client/use-session.js +20 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/deploy/build.js +353 -3
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/jobs/backfill-run-history-ownership.d.ts +12 -0
- package/dist/jobs/backfill-run-history-ownership.js +87 -0
- package/dist/jobs/background-automation-runner.js +3 -9
- package/dist/jobs/remote-execution.js +3 -9
- package/dist/jobs/run-history-ownership.d.ts +5 -0
- package/dist/jobs/run-history-ownership.js +16 -0
- package/dist/jobs/run-now.js +2 -3
- package/dist/localization/agent-resources-messages.d.ts +3 -0
- package/dist/localization/agent-resources-messages.js +33 -0
- package/dist/mcp/actions/create-org-service-token.js +5 -7
- package/dist/mcp/build-server.d.ts +23 -18
- package/dist/mcp/build-server.js +220 -212
- package/dist/mcp/connect-route.d.ts +11 -2
- package/dist/mcp/connect-route.js +34 -24
- package/dist/mcp/connect-store.d.ts +9 -13
- package/dist/mcp/connect-store.js +11 -24
- package/dist/mcp/credential-membership.js +17 -6
- package/dist/mcp/oauth-route.d.ts +11 -1
- package/dist/mcp/oauth-route.js +28 -6
- package/dist/mcp/oauth-token.d.ts +12 -2
- package/dist/mcp/oauth-token.js +15 -4
- package/dist/mcp/server.js +9 -5
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/posthog-ai.d.ts +1 -0
- package/dist/observability/posthog-ai.js +20 -8
- package/dist/observability/routes.d.ts +6 -6
- package/dist/observability/traces.js +61 -39
- package/dist/org/app-roles.d.ts +8 -1
- package/dist/org/app-roles.js +29 -9
- package/dist/org/context.js +24 -8
- package/dist/org/index.d.ts +2 -2
- package/dist/org/workspace-app-identity.d.ts +1 -0
- package/dist/org/workspace-app-identity.js +25 -0
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +11 -11
- package/dist/provider-api/actions/provider-api.d.ts +3 -3
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/scripts/agent-engines/list-agent-engines.js +1 -0
- package/dist/server/action-routes.js +8 -1
- package/dist/server/agent-chat-plugin.js +1 -0
- package/dist/server/agent-engine-default-model-route.d.ts +1 -1
- package/dist/server/auth.js +33 -17
- package/dist/server/bearer-credential-refusal.d.ts +23 -0
- package/dist/server/bearer-credential-refusal.js +67 -0
- package/dist/server/better-auth-instance.js +13 -6
- package/dist/server/builder-browser.d.ts +2 -0
- package/dist/server/builder-browser.js +16 -3
- package/dist/server/capture-error.d.ts +1 -0
- package/dist/server/capture-error.js +28 -4
- package/dist/server/complete-text.js +16 -3
- package/dist/server/core-routes-plugin.js +2 -0
- package/dist/server/dev-action-bridge.js +7 -1
- package/dist/server/google-oauth.js +6 -3
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/recap-image-route.js +4 -0
- package/dist/server/request-context.d.ts +16 -0
- package/dist/server/request-context.js +17 -0
- package/dist/shared/agent-chat-context.d.ts +1 -0
- package/dist/shared/agent-chat-context.js +26 -0
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/reasoning-effort.js +10 -1
- package/dist/shared/ssr-session-bootstrap.d.ts +7 -0
- package/dist/shared/ssr-session-bootstrap.js +21 -0
- package/dist/sharing/access.js +86 -5
- package/dist/templates/builder-code-starter/server/routes/index.get.ts +2 -0
- package/dist/triggers/routes.js +2 -1
- package/docs/content/automation-connectors.mdx +5 -3
- package/docs/content/automations.mdx +78 -49
- package/docs/content/observability.mdx +16 -5
- package/docs/content/organizations-teams-permissions.mdx +44 -2
- package/docs/content/recurring-jobs.mdx +4 -8
- package/docs/content/template-forms.mdx +6 -0
- package/package.json +5 -4
- package/src/templates/builder-code-starter/server/routes/index.get.ts +2 -0
package/dist/a2a/client.d.ts
CHANGED
|
@@ -50,8 +50,8 @@ export declare function signA2AToken(email: string, orgDomain?: string, orgSecre
|
|
|
50
50
|
preferGlobalSecret?: boolean;
|
|
51
51
|
audience?: string | string[];
|
|
52
52
|
/**
|
|
53
|
-
* Extra JWT claims to merge alongside `sub` / `org_domain`. Used by
|
|
54
|
-
* MCP
|
|
53
|
+
* Extra JWT claims to merge alongside `sub` / `org_domain`. Used by
|
|
54
|
+
* first-party MCP calls to add a `jti` and a `scope: "mcp-connect"`
|
|
55
55
|
* marker. Reserved claims (`sub`, `org_domain`) cannot be overridden —
|
|
56
56
|
* they are spread last so a caller can never spoof identity via this map.
|
|
57
57
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentEngine, EngineCapabilities } from "./types.js";
|
|
2
2
|
export declare const ANTHROPIC_CAPABILITIES: EngineCapabilities;
|
|
3
|
-
export declare const ANTHROPIC_SUPPORTED_MODELS: readonly ["claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5"];
|
|
3
|
+
export declare const ANTHROPIC_SUPPORTED_MODELS: readonly ["claude-haiku-5-5", "claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5-1", "claude-fable-5"];
|
|
4
4
|
export declare const ANTHROPIC_DEFAULT_MODEL: "claude-sonnet-5-5";
|
|
5
5
|
export declare function createAnthropicEngine(config?: Record<string, unknown>): AgentEngine;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type BuilderGatewayLane } from "../../server/credential-provider.js";
|
|
2
2
|
import type { AgentEngine, EngineCapabilities } from "./types.js";
|
|
3
3
|
export declare const BUILDER_CAPABILITIES: EngineCapabilities;
|
|
4
|
-
export declare const BUILDER_SUPPORTED_MODELS: readonly ["auto", "claude-haiku-
|
|
4
|
+
export declare const BUILDER_SUPPORTED_MODELS: readonly ["auto", "claude-haiku-5-5", "claude-sonnet-5-5", "claude-opus-5-5", "gpt-5-4", "gpt-5-5", "gpt-5-4-mini", "gpt-5-1-codex-mini", "gpt-6-1-sol", "gpt-5-6-terra", "gpt-6-luna", "gemini-3-1-pro", "gemini-3-8-flash", "gemini-3-5-flash-lite", "gemini-3-1-flash-lite", "grok-code-fast", "qwen3-coder", "kimi-k2-5", "deepseek-v4-pro", "deepseek-v4-1-flash", "deepseek-v3-1", "z-ai-glm-4-5", "z-ai-glm-5-1", "z-ai-glm-5-3-flash"];
|
|
5
5
|
export declare const BUILDER_MODEL_UNAUTHORIZED_ERROR_CODE = "builder_model_unauthorized";
|
|
6
6
|
/**
|
|
7
7
|
* A truncated stream, not a rejected request: the client continues the partial
|
|
@@ -347,10 +347,15 @@ class BuilderEngine {
|
|
|
347
347
|
}
|
|
348
348
|
const RETRYABLE_GATEWAY_STATUSES = new Set([408, 429, 500, 502, 503, 504, 529]);
|
|
349
349
|
const TRANSIENT_UPSTREAM_PATTERN = /overloaded|rate_limit|rate limit reached|too many requests|\b429\b|\b529\b|\b502\b|\b503\b|\b504\b|resource_exhausted|quota exceeded|socket hang up|connection reset|temporarily unavailable|timeout/i;
|
|
350
|
-
function isTransientGatewayFailure(rawMessage, status) {
|
|
350
|
+
function isTransientGatewayFailure(rawMessage, status, structuredCode) {
|
|
351
351
|
if (status !== undefined && RETRYABLE_GATEWAY_STATUSES.has(status)) {
|
|
352
352
|
return true;
|
|
353
353
|
}
|
|
354
|
+
if (structuredCode &&
|
|
355
|
+
/^[a-z\d_.-]{1,64}$/i.test(structuredCode) &&
|
|
356
|
+
TRANSIENT_UPSTREAM_PATTERN.test(structuredCode)) {
|
|
357
|
+
return true;
|
|
358
|
+
}
|
|
354
359
|
if (isBuilderGatewayInternalErrorMessage(rawMessage))
|
|
355
360
|
return true;
|
|
356
361
|
return TRANSIENT_UPSTREAM_PATTERN.test(rawMessage);
|
|
@@ -699,6 +704,7 @@ async function* parseJsonlStream(reader, model, captureContext = {}) {
|
|
|
699
704
|
yield stop({
|
|
700
705
|
error: errMsg,
|
|
701
706
|
errorCode: errCode,
|
|
707
|
+
providerRetryable: false,
|
|
702
708
|
...(isCreditsLimitErrorCode(errCode)
|
|
703
709
|
? { upgradeUrl: await buildUpgradeUrl() }
|
|
704
710
|
: {}),
|
|
@@ -706,9 +712,8 @@ async function* parseJsonlStream(reader, model, captureContext = {}) {
|
|
|
706
712
|
}
|
|
707
713
|
else if (reason === "error") {
|
|
708
714
|
const explicitErrMsg = event.error || event.message || event.detail;
|
|
709
|
-
const errMsg = explicitErrMsg ??
|
|
710
|
-
`Gateway error (no detail; raw event: ${JSON.stringify(event)})`;
|
|
711
715
|
const gatewayRequestId = typeof event.requestId === "string" ? event.requestId : undefined;
|
|
716
|
+
const errMsg = explicitErrMsg ?? "Gateway error (no detail)";
|
|
712
717
|
const gatewayErrCode = canonicalizeBuilderGatewayErrorCode(event.errorCode ?? event.code, String(errMsg));
|
|
713
718
|
// The gateway already authenticated this request before streaming,
|
|
714
719
|
// so a bare "Unauthorized" here means the account cannot use this
|
|
@@ -736,6 +741,8 @@ async function* parseJsonlStream(reader, model, captureContext = {}) {
|
|
|
736
741
|
(!explicitErrMsg
|
|
737
742
|
? "builder_gateway_error"
|
|
738
743
|
: classifyTerminalErrorCode(String(errMsg))));
|
|
744
|
+
const isInvalidRequest = gatewayErrCode === "invalid_request" ||
|
|
745
|
+
gatewayErrCode === "invalid_request_error";
|
|
739
746
|
console.error(`[builder-engine] stop reason=error model=${model} code=${errCode ?? "(none)"} requestId=${gatewayRequestId ?? "(none)"} error=${errMsg}`);
|
|
740
747
|
if (isCredentialAuthError) {
|
|
741
748
|
await recordAuthFailureForCurrentLane({
|
|
@@ -753,7 +760,7 @@ async function* parseJsonlStream(reader, model, captureContext = {}) {
|
|
|
753
760
|
requestId: gatewayRequestId,
|
|
754
761
|
model,
|
|
755
762
|
gatewayUrl: captureContext.gatewayUrl,
|
|
756
|
-
|
|
763
|
+
errorCode: gatewayErrCode,
|
|
757
764
|
});
|
|
758
765
|
}
|
|
759
766
|
yield stop({
|
|
@@ -765,9 +772,12 @@ async function* parseJsonlStream(reader, model, captureContext = {}) {
|
|
|
765
772
|
? { upgradeUrl: await buildUpgradeUrl() }
|
|
766
773
|
: {}),
|
|
767
774
|
...(isBareRejection ? { statusCode: 403 } : {}),
|
|
768
|
-
...(
|
|
769
|
-
? { providerRetryable:
|
|
770
|
-
:
|
|
775
|
+
...(isInvalidRequest
|
|
776
|
+
? { providerRetryable: false }
|
|
777
|
+
: isBareRejection ||
|
|
778
|
+
isTransientGatewayFailure(String(errMsg), undefined, gatewayErrCode)
|
|
779
|
+
? { providerRetryable: true }
|
|
780
|
+
: {}),
|
|
771
781
|
...(gatewayRequestId ? { requestId: gatewayRequestId } : {}),
|
|
772
782
|
});
|
|
773
783
|
}
|
|
@@ -1059,6 +1069,7 @@ function isBuilderGatewayNetworkError(err) {
|
|
|
1059
1069
|
function captureBuilderGatewayTransportError(err, context) {
|
|
1060
1070
|
captureError(err, {
|
|
1061
1071
|
route: "/_agent-native/agent-chat",
|
|
1072
|
+
errorMessagePolicy: "omit",
|
|
1062
1073
|
tags: {
|
|
1063
1074
|
source: "builder-engine",
|
|
1064
1075
|
phase: context.phase,
|
|
@@ -1088,12 +1099,16 @@ function captureBuilderGatewayTransportError(err, context) {
|
|
|
1088
1099
|
});
|
|
1089
1100
|
}
|
|
1090
1101
|
function captureBuilderGatewayNoDetailError(context) {
|
|
1102
|
+
const providerErrorCode = context.errorCode && /^[a-z\d_.-]{1,64}$/i.test(context.errorCode)
|
|
1103
|
+
? context.errorCode
|
|
1104
|
+
: undefined;
|
|
1091
1105
|
const err = new Error(context.requestId
|
|
1092
1106
|
? `Builder gateway stop reason=error with no detail (requestId=${context.requestId})`
|
|
1093
1107
|
: "Builder gateway stop reason=error with no detail");
|
|
1094
1108
|
err.name = "BuilderGatewayNoDetailError";
|
|
1095
1109
|
captureError(err, {
|
|
1096
1110
|
route: "/_agent-native/agent-chat",
|
|
1111
|
+
errorMessagePolicy: "omit",
|
|
1097
1112
|
tags: {
|
|
1098
1113
|
source: "builder-engine",
|
|
1099
1114
|
phase: "stream",
|
|
@@ -1104,7 +1119,6 @@ function captureBuilderGatewayNoDetailError(context) {
|
|
|
1104
1119
|
extra: {
|
|
1105
1120
|
gatewayOrigin: context.gatewayUrl?.origin,
|
|
1106
1121
|
gatewayPath: context.gatewayUrl?.pathname,
|
|
1107
|
-
rawEvent: context.rawEvent,
|
|
1108
1122
|
},
|
|
1109
1123
|
contexts: {
|
|
1110
1124
|
builderGateway: {
|
|
@@ -1114,6 +1128,7 @@ function captureBuilderGatewayNoDetailError(context) {
|
|
|
1114
1128
|
gatewayPath: context.gatewayUrl?.pathname,
|
|
1115
1129
|
requestId: context.requestId,
|
|
1116
1130
|
errorCode: "builder_gateway_error",
|
|
1131
|
+
...(providerErrorCode ? { providerErrorCode } : {}),
|
|
1117
1132
|
},
|
|
1118
1133
|
},
|
|
1119
1134
|
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { classifyTerminalErrorCode } from "./error-detail.js";
|
|
2
|
+
import { classifyAgentFailure } from "./failure-taxonomy.js";
|
|
3
|
+
export function runErrorTelemetryProperties(code, message) {
|
|
4
|
+
const errorCode = code && /^[a-zA-Z][a-zA-Z0-9_.:-]{0,99}$/.test(code)
|
|
5
|
+
? code
|
|
6
|
+
: (classifyTerminalErrorCode(message ?? undefined) ?? "unknown");
|
|
7
|
+
return {
|
|
8
|
+
error_code: errorCode,
|
|
9
|
+
error_cause: classifyAgentFailure({ errorCode }).code,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function runTelemetryException(error, code) {
|
|
13
|
+
const original = error instanceof Error ? error : undefined;
|
|
14
|
+
const exception = new Error("Internal Server Error");
|
|
15
|
+
// Code can set any name, so only class-shaped names are trusted.
|
|
16
|
+
exception.name =
|
|
17
|
+
original &&
|
|
18
|
+
/^[A-Za-z][A-Za-z0-9_]{0,90}(?:Error|Exception)$/.test(original.name)
|
|
19
|
+
? original.name
|
|
20
|
+
: "Error";
|
|
21
|
+
const frames = original ? stackFrames(original) : [];
|
|
22
|
+
exception.stack = frames.length
|
|
23
|
+
? `${exception.name}: ${exception.message}\n${frames.join("\n")}`
|
|
24
|
+
: undefined;
|
|
25
|
+
Object.assign(exception, { errorCode: code });
|
|
26
|
+
return exception;
|
|
27
|
+
}
|
|
28
|
+
function stackFrames(error) {
|
|
29
|
+
// V8 renders `stack` as String(error) followed by the frames, and any line
|
|
30
|
+
// of a message can look like a frame. Without that exact header, where the
|
|
31
|
+
// message ends is unknown, so no line is kept. Text appended after the frames,
|
|
32
|
+
// such as a cause, carries its own message, so the first non-frame line ends
|
|
33
|
+
// the stack.
|
|
34
|
+
const header = `${String(error)}\n`;
|
|
35
|
+
const stack = error.stack;
|
|
36
|
+
if (!stack?.startsWith(header))
|
|
37
|
+
return [];
|
|
38
|
+
const lines = stack.slice(header.length).split(/\r?\n/);
|
|
39
|
+
const end = lines.findIndex((line) => !/^\s+at\s.*(?:\)|:\d+:\d+)$/.test(line));
|
|
40
|
+
return end === -1 ? lines : lines.slice(0, end);
|
|
41
|
+
}
|
|
@@ -28,11 +28,7 @@ export declare function unregisterAgentEngine(name: string): void;
|
|
|
28
28
|
export declare function getAgentEngineEntry(name: string): AgentEngineEntry | undefined;
|
|
29
29
|
export declare function listAgentEngines(): AgentEngineEntry[];
|
|
30
30
|
export declare function isAgentEnginePackageInstalled(entry: AgentEngineEntry): boolean;
|
|
31
|
-
export
|
|
32
|
-
preserveCustomModels?: boolean;
|
|
33
|
-
acceptsCustomModels?: boolean;
|
|
34
|
-
}
|
|
35
|
-
export declare function normalizeModelForEngine(engine: Pick<AgentEngine, "name" | "defaultModel" | "supportedModels" | "acceptsCustomModels" | "preserveCustomModels">, model: string | null | undefined, options?: NormalizeModelOptions): string;
|
|
31
|
+
export { normalizeModelForEngine, type NormalizeModelOptions, } from "../model-version.js";
|
|
36
32
|
type ModelResolvableEngine = Pick<AgentEngine, "name" | "defaultModel" | "supportedModels" | "acceptsCustomModels" | "preserveCustomModels">;
|
|
37
33
|
export declare function resolveDelegatedRunModel(engine: ModelResolvableEngine, options: {
|
|
38
34
|
explicitModel?: string | null;
|
|
@@ -97,4 +93,3 @@ export declare function resolveEngine(config: ResolveEngineConfig): Promise<Agen
|
|
|
97
93
|
export declare function getStoredModelForEngine(engine: AgentEngine | string, options?: {
|
|
98
94
|
appId?: string;
|
|
99
95
|
}): Promise<string | undefined>;
|
|
100
|
-
export {};
|
|
@@ -10,8 +10,7 @@ import { resolveSecretWithAliasesDetailed, secretKeyNames, } from "../../server/
|
|
|
10
10
|
import { getAgentAppModelDefaultForCurrentRequest } from "../app-model-defaults.js";
|
|
11
11
|
import { CHATGPT_SUBSCRIPTION_ENGINE_NAME } from "../chatgpt-subscription-contract.js";
|
|
12
12
|
import { readDefaultAgentEngineSetting } from "../default-agent-engine.js";
|
|
13
|
-
import {
|
|
14
|
-
import { findLatestSupportedVersionMatch, isNewerVersionedModel, upgradeModelToLatestSupportedVersion, } from "../model-version.js";
|
|
13
|
+
import { normalizeModelForEngine } from "../model-version.js";
|
|
15
14
|
import { createProviderEndpointFetch } from "./ai-sdk-engine.js";
|
|
16
15
|
import { AI_SDK_ANTHROPIC_DEFAULT_BASE_URL, OLLAMA_DEFAULT_BASE_URL, OLLAMA_BASE_URL_ENV_VAR, OPENAI_BASE_URL_ENV_VAR, OPENAI_DEFAULT_BASE_URL, isCustomOpenAiBaseUrl, } from "./openai-compatible-endpoint.js";
|
|
17
16
|
import { isLocalNetworkOllamaEndpoint, validateProviderBaseUrl, } from "./provider-endpoint-validation.js";
|
|
@@ -129,35 +128,7 @@ export function isAgentEnginePackageInstalled(entry) {
|
|
|
129
128
|
.filter((name) => Boolean(name)) ?? [];
|
|
130
129
|
return packageNames.every(canResolvePackage);
|
|
131
130
|
}
|
|
132
|
-
export
|
|
133
|
-
const candidate = typeof model === "string" ? model.trim() : "";
|
|
134
|
-
if (!candidate)
|
|
135
|
-
return engine.defaultModel;
|
|
136
|
-
if (engine.preserveCustomModels || options.preserveCustomModels) {
|
|
137
|
-
return candidate;
|
|
138
|
-
}
|
|
139
|
-
const upgradedModel = upgradeModelToLatestSupportedVersion(candidate, engine.supportedModels);
|
|
140
|
-
if (upgradedModel)
|
|
141
|
-
return upgradedModel;
|
|
142
|
-
if (candidate === "auto" ||
|
|
143
|
-
engine.supportedModels.includes(candidate) ||
|
|
144
|
-
engine.supportedModels.length === 0) {
|
|
145
|
-
return candidate;
|
|
146
|
-
}
|
|
147
|
-
if (engine.acceptsCustomModels || options.acceptsCustomModels) {
|
|
148
|
-
return candidate === BUILDER_CLAUDE_SONNET_MODEL_ID &&
|
|
149
|
-
engine.supportedModels.includes(CLAUDE_SONNET_MODEL_ID)
|
|
150
|
-
? CLAUDE_SONNET_MODEL_ID
|
|
151
|
-
: candidate;
|
|
152
|
-
}
|
|
153
|
-
const versionMatch = findLatestSupportedVersionMatch(candidate, engine.supportedModels);
|
|
154
|
-
if (versionMatch && isNewerVersionedModel(candidate, versionMatch)) {
|
|
155
|
-
return versionMatch;
|
|
156
|
-
}
|
|
157
|
-
if (versionMatch)
|
|
158
|
-
return versionMatch;
|
|
159
|
-
return engine.defaultModel;
|
|
160
|
-
}
|
|
131
|
+
export { normalizeModelForEngine, } from "../model-version.js";
|
|
161
132
|
function resolveModelHintForEngine(engine, hint) {
|
|
162
133
|
const candidate = typeof hint === "string" ? hint.trim() : "";
|
|
163
134
|
if (!candidate || candidate === "auto")
|
|
@@ -16,33 +16,45 @@ export declare function getContextWindowForModel(modelId: string): number;
|
|
|
16
16
|
export declare function getMaxOutputTokensForModel(modelId: string | undefined): number;
|
|
17
17
|
export declare const CLAUDE_SONNET_MODEL_ID = "claude-sonnet-5-5";
|
|
18
18
|
export declare const CLAUDE_SONNET_MODEL_LABEL = "Claude Sonnet 5.5";
|
|
19
|
-
export declare const BUILDER_CLAUDE_SONNET_MODEL_ID = "claude-sonnet-5";
|
|
20
|
-
export declare const BUILDER_CLAUDE_SONNET_MODEL_LABEL = "Claude Sonnet 5";
|
|
19
|
+
export declare const BUILDER_CLAUDE_SONNET_MODEL_ID = "claude-sonnet-5-5";
|
|
20
|
+
export declare const BUILDER_CLAUDE_SONNET_MODEL_LABEL = "Claude Sonnet 5.5";
|
|
21
|
+
export declare const CURRENT_BUILDER_CLAUDE_MODEL_OPTIONS: readonly [{
|
|
22
|
+
readonly value: "claude-haiku-5-5";
|
|
23
|
+
readonly label: "Claude Haiku 5.5";
|
|
24
|
+
}, {
|
|
25
|
+
readonly value: "claude-sonnet-5-5";
|
|
26
|
+
readonly label: "Claude Sonnet 5.5";
|
|
27
|
+
}, {
|
|
28
|
+
readonly value: "claude-opus-5-5";
|
|
29
|
+
readonly label: "Claude Opus 5.5";
|
|
30
|
+
}];
|
|
31
|
+
export declare function getClaudeModelOptionLabel(modelId: string): string;
|
|
32
|
+
export declare const BUILDER_MODEL_ALIASES: Readonly<Record<string, string>>;
|
|
21
33
|
export declare const AGENT_MODEL_CONFIG: {
|
|
22
34
|
readonly builder: {
|
|
23
35
|
readonly defaultModel: "gpt-6-luna";
|
|
24
|
-
readonly supportedModels: readonly ["auto", "claude-haiku-
|
|
36
|
+
readonly supportedModels: readonly ["auto", "claude-haiku-5-5", "claude-sonnet-5-5", "claude-opus-5-5", "gpt-5-4", "gpt-5-5", "gpt-5-4-mini", "gpt-5-1-codex-mini", "gpt-6-1-sol", "gpt-5-6-terra", "gpt-6-luna", "gemini-3-1-pro", "gemini-3-8-flash", "gemini-3-5-flash-lite", "gemini-3-1-flash-lite", "grok-code-fast", "qwen3-coder", "kimi-k2-5", "deepseek-v4-pro", "deepseek-v4-1-flash", "deepseek-v3-1", "z-ai-glm-4-5", "z-ai-glm-5-1", "z-ai-glm-5-3-flash"];
|
|
25
37
|
};
|
|
26
38
|
readonly anthropic: {
|
|
27
39
|
readonly defaultModel: "claude-sonnet-5-5";
|
|
28
|
-
readonly supportedModels: readonly ["claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5"];
|
|
40
|
+
readonly supportedModels: readonly ["claude-haiku-5-5", "claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5-1", "claude-fable-5"];
|
|
29
41
|
};
|
|
30
42
|
readonly aiSdk: {
|
|
31
43
|
readonly anthropic: {
|
|
32
44
|
readonly defaultModel: "claude-sonnet-5-5";
|
|
33
|
-
readonly supportedModels: readonly ["claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5"];
|
|
45
|
+
readonly supportedModels: readonly ["claude-haiku-5-5", "claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5-1", "claude-fable-5"];
|
|
34
46
|
};
|
|
35
47
|
readonly openai: {
|
|
36
48
|
readonly defaultModel: "gpt-6-luna";
|
|
37
|
-
readonly supportedModels: readonly ["gpt-6-luna", "gpt-5.6-terra", "gpt-
|
|
49
|
+
readonly supportedModels: readonly ["gpt-6-luna", "gpt-6.1-sol", "gpt-5.6-terra", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.1-codex-mini"];
|
|
38
50
|
};
|
|
39
51
|
readonly openrouter: {
|
|
40
52
|
readonly defaultModel: string;
|
|
41
|
-
readonly supportedModels: readonly ["openai/gpt-6-luna", "openai/gpt-5.6-terra", "openai/gpt-6.1-sol", "openai/gpt-6-astra", "openai/gpt-6-astra-pro", "anthropic/claude-sonnet-5.5", "anthropic/claude-opus-5.5", "anthropic/claude-opus-4.8", "anthropic/claude-fable-5", "anthropic/claude-fable-5.1", "google/gemini-3.8-flash", "qwen/qwen3.8-max-0902", "meta/muse-spark-1.3", "inception/mercury-2.5", "z-ai/glm-5.2"];
|
|
53
|
+
readonly supportedModels: readonly ["openai/gpt-6-luna", "openai/gpt-5.6-terra", "openai/gpt-6.1-sol", "openai/gpt-6-astra", "openai/gpt-6-astra-pro", "openai/gpt-5.5", "openai/gpt-5.4", "openai/gpt-5.4-mini", "openai/gpt-5.1-codex-mini", "anthropic/claude-haiku-5.5", "anthropic/claude-sonnet-5.5", "anthropic/claude-opus-5.5", "anthropic/claude-opus-4.8", "anthropic/claude-fable-5", "anthropic/claude-fable-5.1", "google/gemini-3.8-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-flash-lite", "google/gemini-3.1-pro-preview", "x-ai/grok-4.7", "x-ai/grok-build-0.1", "qwen/qwen3-coder", "moonshotai/kimi-k2.5", "deepseek/deepseek-v4-pro", "deepseek/deepseek-v4.1-flash", "deepseek/deepseek-chat-v3.1", "z-ai/glm-4.5", "z-ai/glm-5.1", "z-ai/glm-5.3-flash", "qwen/qwen3.8-max-0902", "meta/muse-spark-1.3", "inception/mercury-2.5", "z-ai/glm-5.2"];
|
|
42
54
|
};
|
|
43
55
|
readonly google: {
|
|
44
56
|
readonly defaultModel: "gemini-3.8-flash";
|
|
45
|
-
readonly supportedModels: readonly ["gemini-3.8-flash", "gemini-3.1-pro-preview"];
|
|
57
|
+
readonly supportedModels: readonly ["gemini-3.8-flash", "gemini-3.5-flash-lite", "gemini-3.1-flash-lite", "gemini-3.1-pro-preview"];
|
|
46
58
|
};
|
|
47
59
|
readonly groq: {
|
|
48
60
|
readonly defaultModel: "llama-3.3-70b-versatile";
|
|
@@ -64,28 +76,28 @@ export declare const AGENT_MODEL_CONFIG: {
|
|
|
64
76
|
};
|
|
65
77
|
export declare const BUILDER_MODEL_CONFIG: {
|
|
66
78
|
readonly defaultModel: "gpt-6-luna";
|
|
67
|
-
readonly supportedModels: readonly ["auto", "claude-haiku-
|
|
79
|
+
readonly supportedModels: readonly ["auto", "claude-haiku-5-5", "claude-sonnet-5-5", "claude-opus-5-5", "gpt-5-4", "gpt-5-5", "gpt-5-4-mini", "gpt-5-1-codex-mini", "gpt-6-1-sol", "gpt-5-6-terra", "gpt-6-luna", "gemini-3-1-pro", "gemini-3-8-flash", "gemini-3-5-flash-lite", "gemini-3-1-flash-lite", "grok-code-fast", "qwen3-coder", "kimi-k2-5", "deepseek-v4-pro", "deepseek-v4-1-flash", "deepseek-v3-1", "z-ai-glm-4-5", "z-ai-glm-5-1", "z-ai-glm-5-3-flash"];
|
|
68
80
|
};
|
|
69
81
|
export declare const ANTHROPIC_MODEL_CONFIG: {
|
|
70
82
|
readonly defaultModel: "claude-sonnet-5-5";
|
|
71
|
-
readonly supportedModels: readonly ["claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5"];
|
|
83
|
+
readonly supportedModels: readonly ["claude-haiku-5-5", "claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5-1", "claude-fable-5"];
|
|
72
84
|
};
|
|
73
85
|
export declare const AI_SDK_MODEL_CONFIG: {
|
|
74
86
|
readonly anthropic: {
|
|
75
87
|
readonly defaultModel: "claude-sonnet-5-5";
|
|
76
|
-
readonly supportedModels: readonly ["claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5"];
|
|
88
|
+
readonly supportedModels: readonly ["claude-haiku-5-5", "claude-haiku-4-5-20251001", "claude-sonnet-5-5", "claude-opus-5-5", "claude-opus-4-8", "claude-fable-5-1", "claude-fable-5"];
|
|
77
89
|
};
|
|
78
90
|
readonly openai: {
|
|
79
91
|
readonly defaultModel: "gpt-6-luna";
|
|
80
|
-
readonly supportedModels: readonly ["gpt-6-luna", "gpt-5.6-terra", "gpt-
|
|
92
|
+
readonly supportedModels: readonly ["gpt-6-luna", "gpt-6.1-sol", "gpt-5.6-terra", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.1-codex-mini"];
|
|
81
93
|
};
|
|
82
94
|
readonly openrouter: {
|
|
83
95
|
readonly defaultModel: string;
|
|
84
|
-
readonly supportedModels: readonly ["openai/gpt-6-luna", "openai/gpt-5.6-terra", "openai/gpt-6.1-sol", "openai/gpt-6-astra", "openai/gpt-6-astra-pro", "anthropic/claude-sonnet-5.5", "anthropic/claude-opus-5.5", "anthropic/claude-opus-4.8", "anthropic/claude-fable-5", "anthropic/claude-fable-5.1", "google/gemini-3.8-flash", "qwen/qwen3.8-max-0902", "meta/muse-spark-1.3", "inception/mercury-2.5", "z-ai/glm-5.2"];
|
|
96
|
+
readonly supportedModels: readonly ["openai/gpt-6-luna", "openai/gpt-5.6-terra", "openai/gpt-6.1-sol", "openai/gpt-6-astra", "openai/gpt-6-astra-pro", "openai/gpt-5.5", "openai/gpt-5.4", "openai/gpt-5.4-mini", "openai/gpt-5.1-codex-mini", "anthropic/claude-haiku-5.5", "anthropic/claude-sonnet-5.5", "anthropic/claude-opus-5.5", "anthropic/claude-opus-4.8", "anthropic/claude-fable-5", "anthropic/claude-fable-5.1", "google/gemini-3.8-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-flash-lite", "google/gemini-3.1-pro-preview", "x-ai/grok-4.7", "x-ai/grok-build-0.1", "qwen/qwen3-coder", "moonshotai/kimi-k2.5", "deepseek/deepseek-v4-pro", "deepseek/deepseek-v4.1-flash", "deepseek/deepseek-chat-v3.1", "z-ai/glm-4.5", "z-ai/glm-5.1", "z-ai/glm-5.3-flash", "qwen/qwen3.8-max-0902", "meta/muse-spark-1.3", "inception/mercury-2.5", "z-ai/glm-5.2"];
|
|
85
97
|
};
|
|
86
98
|
readonly google: {
|
|
87
99
|
readonly defaultModel: "gemini-3.8-flash";
|
|
88
|
-
readonly supportedModels: readonly ["gemini-3.8-flash", "gemini-3.1-pro-preview"];
|
|
100
|
+
readonly supportedModels: readonly ["gemini-3.8-flash", "gemini-3.5-flash-lite", "gemini-3.1-flash-lite", "gemini-3.1-pro-preview"];
|
|
89
101
|
};
|
|
90
102
|
readonly groq: {
|
|
91
103
|
readonly defaultModel: "llama-3.3-70b-versatile";
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const MODEL_CONTEXT_WINDOWS = {
|
|
2
2
|
"claude-fable-5": 1_000_000,
|
|
3
|
+
"claude-fable-5-1": 1_000_000,
|
|
4
|
+
"claude-haiku-5-5": 1_000_000,
|
|
3
5
|
"claude-opus-5-5": 1_000_000,
|
|
4
6
|
"claude-opus-4-8": 1_000_000,
|
|
5
7
|
"claude-opus-4-7": 1_000_000,
|
|
@@ -8,6 +10,16 @@ const MODEL_CONTEXT_WINDOWS = {
|
|
|
8
10
|
"claude-sonnet-4-6": 1_000_000,
|
|
9
11
|
"claude-haiku-4-5": 200_000,
|
|
10
12
|
"claude-haiku-4-5-20251001": 200_000,
|
|
13
|
+
"anthropic/claude-fable-5.1": 1_000_000,
|
|
14
|
+
"anthropic/claude-haiku-5.5": 1_000_000,
|
|
15
|
+
"deepseek-v4-pro": 1_048_576,
|
|
16
|
+
"deepseek/deepseek-v4-pro": 1_048_576,
|
|
17
|
+
"deepseek-flash": 1_048_576,
|
|
18
|
+
"deepseek-v4-1-flash": 1_048_576,
|
|
19
|
+
"deepseek/deepseek-v4.1-flash": 1_048_576,
|
|
20
|
+
"grok-code-fast": 200_000,
|
|
21
|
+
"x-ai/grok-4.7": 500_000,
|
|
22
|
+
"x-ai/grok-build-0.1": 256_000,
|
|
11
23
|
"gpt-5-6-sol": 1_050_000,
|
|
12
24
|
"gpt-5-6-terra": 1_050_000,
|
|
13
25
|
"gpt-5-6-luna": 400_000,
|
|
@@ -27,7 +39,14 @@ const MODEL_CONTEXT_WINDOWS = {
|
|
|
27
39
|
"openai/gpt-6.1-sol": 1_050_000,
|
|
28
40
|
"openai/gpt-6-sol": 1_050_000,
|
|
29
41
|
"openai/gpt-6-luna": 1_050_000,
|
|
42
|
+
"openai/gpt-5.5": 1_050_000,
|
|
43
|
+
"openai/gpt-5.4": 1_050_000,
|
|
44
|
+
"openai/gpt-5.4-mini": 400_000,
|
|
45
|
+
"openai/gpt-5.1-codex-mini": 400_000,
|
|
30
46
|
"google/gemini-2.5-flash": 1_048_576,
|
|
47
|
+
"google/gemini-3.5-flash-lite": 1_048_576,
|
|
48
|
+
"google/gemini-3.1-flash-lite": 1_048_576,
|
|
49
|
+
"google/gemini-3.1-pro-preview": 1_048_576,
|
|
31
50
|
"z-ai/glm-5.2": 1_048_576,
|
|
32
51
|
"gpt-6-sol": 1_050_000,
|
|
33
52
|
"gpt-6.1-sol": 1_050_000,
|
|
@@ -35,8 +54,18 @@ const MODEL_CONTEXT_WINDOWS = {
|
|
|
35
54
|
"gpt-5.6-sol": 1_050_000,
|
|
36
55
|
"gpt-5.6-terra": 1_050_000,
|
|
37
56
|
"gpt-5.6-luna": 400_000,
|
|
57
|
+
"gpt-5.5": 1_050_000,
|
|
58
|
+
"gpt-5.4": 1_050_000,
|
|
59
|
+
"gpt-5.4-mini": 400_000,
|
|
60
|
+
"gpt-5.1-codex-mini": 400_000,
|
|
61
|
+
"gpt-5-4-mini": 400_000,
|
|
62
|
+
"gpt-5-1-codex-mini": 400_000,
|
|
38
63
|
"gemini-3.5-flash": 1_048_576,
|
|
64
|
+
"gemini-3.5-flash-lite": 1_048_576,
|
|
65
|
+
"gemini-3.1-flash-lite": 1_048_576,
|
|
39
66
|
"gemini-3.1-pro-preview": 1_048_576,
|
|
67
|
+
"gemini-3-5-flash-lite": 1_048_576,
|
|
68
|
+
"gemini-3-8-flash": 1_048_576,
|
|
40
69
|
"gemini-2.5-flash": 1_048_576,
|
|
41
70
|
"gemini-2.5-pro": 1_048_576,
|
|
42
71
|
};
|
|
@@ -57,6 +86,7 @@ export function getContextWindowForModel(modelId) {
|
|
|
57
86
|
const id = modelId.toLowerCase();
|
|
58
87
|
if (id === "claude-fable-5" ||
|
|
59
88
|
id.includes("claude-fable-5") ||
|
|
89
|
+
id.includes("claude-haiku-5") ||
|
|
60
90
|
id.startsWith("claude-opus-4") ||
|
|
61
91
|
id.startsWith("claude-opus-5") ||
|
|
62
92
|
id.includes("claude-sonnet-5") ||
|
|
@@ -78,6 +108,8 @@ export function getContextWindowForModel(modelId) {
|
|
|
78
108
|
}
|
|
79
109
|
const MODEL_MAX_OUTPUT_TOKENS = {
|
|
80
110
|
"claude-fable-5": 128_000,
|
|
111
|
+
"claude-fable-5-1": 128_000,
|
|
112
|
+
"claude-haiku-5-5": 128_000,
|
|
81
113
|
"claude-opus-5-5": 128_000,
|
|
82
114
|
"claude-opus-4-8": 128_000,
|
|
83
115
|
"claude-opus-4-7": 128_000,
|
|
@@ -86,6 +118,18 @@ const MODEL_MAX_OUTPUT_TOKENS = {
|
|
|
86
118
|
"claude-sonnet-4-6": 128_000,
|
|
87
119
|
"claude-haiku-4-5": 64_000,
|
|
88
120
|
"claude-haiku-4-5-20251001": 64_000,
|
|
121
|
+
"anthropic/claude-fable-5.1": 128_000,
|
|
122
|
+
"anthropic/claude-haiku-5.5": 128_000,
|
|
123
|
+
"deepseek-v4-pro": 393_216,
|
|
124
|
+
"deepseek/deepseek-v4-pro": 393_216,
|
|
125
|
+
"deepseek-flash": 393_216,
|
|
126
|
+
"deepseek-v4-1-flash": 393_216,
|
|
127
|
+
"deepseek/deepseek-v4.1-flash": 393_216,
|
|
128
|
+
"deepseek-v3-1": 32_768,
|
|
129
|
+
"deepseek/deepseek-chat-v3.1": 32_768,
|
|
130
|
+
"grok-code-fast": 10_000,
|
|
131
|
+
"x-ai/grok-4.7": 450_000,
|
|
132
|
+
"x-ai/grok-build-0.1": 230_400,
|
|
89
133
|
"gpt-5-6-sol": 40_000,
|
|
90
134
|
"gpt-5-6-terra": 40_000,
|
|
91
135
|
"gpt-5-6-luna": 40_000,
|
|
@@ -102,12 +146,24 @@ const MODEL_MAX_OUTPUT_TOKENS = {
|
|
|
102
146
|
"openai/gpt-6.1-sol": 128_000,
|
|
103
147
|
"openai/gpt-6-sol": 128_000,
|
|
104
148
|
"openai/gpt-6-luna": 128_000,
|
|
149
|
+
"openai/gpt-5.5": 128_000,
|
|
150
|
+
"openai/gpt-5.4": 128_000,
|
|
151
|
+
"openai/gpt-5.4-mini": 128_000,
|
|
152
|
+
"openai/gpt-5.1-codex-mini": 128_000,
|
|
105
153
|
"gpt-6-sol": 128_000,
|
|
106
154
|
"gpt-6.1-sol": 128_000,
|
|
107
155
|
"gpt-6-luna": 128_000,
|
|
108
156
|
"gpt-5.6-sol": 40_000,
|
|
109
157
|
"gpt-5.6-terra": 40_000,
|
|
110
158
|
"gpt-5.6-luna": 40_000,
|
|
159
|
+
"gpt-5.5": 128_000,
|
|
160
|
+
"gpt-5.4": 128_000,
|
|
161
|
+
"gpt-5.4-mini": 128_000,
|
|
162
|
+
"gpt-5.1-codex-mini": 128_000,
|
|
163
|
+
"gpt-5-5": 128_000,
|
|
164
|
+
"gpt-5-4": 128_000,
|
|
165
|
+
"gpt-5-4-mini": 128_000,
|
|
166
|
+
"gpt-5-1-codex-mini": 128_000,
|
|
111
167
|
};
|
|
112
168
|
const DEFAULT_MAX_OUTPUT_TOKENS_CEILING = 64_000;
|
|
113
169
|
/**
|
|
@@ -144,10 +200,40 @@ export function getMaxOutputTokensForModel(modelId) {
|
|
|
144
200
|
}
|
|
145
201
|
export const CLAUDE_SONNET_MODEL_ID = "claude-sonnet-5-5";
|
|
146
202
|
export const CLAUDE_SONNET_MODEL_LABEL = "Claude Sonnet 5.5";
|
|
147
|
-
|
|
148
|
-
export const
|
|
149
|
-
export const BUILDER_CLAUDE_SONNET_MODEL_LABEL = "Claude Sonnet 5";
|
|
203
|
+
export const BUILDER_CLAUDE_SONNET_MODEL_ID = CLAUDE_SONNET_MODEL_ID;
|
|
204
|
+
export const BUILDER_CLAUDE_SONNET_MODEL_LABEL = CLAUDE_SONNET_MODEL_LABEL;
|
|
150
205
|
const OPENROUTER_CLAUDE_SONNET_MODEL_ID = "anthropic/claude-sonnet-5.5";
|
|
206
|
+
export const CURRENT_BUILDER_CLAUDE_MODEL_OPTIONS = [
|
|
207
|
+
{ value: "claude-haiku-5-5", label: "Claude Haiku 5.5" },
|
|
208
|
+
{ value: CLAUDE_SONNET_MODEL_ID, label: CLAUDE_SONNET_MODEL_LABEL },
|
|
209
|
+
{ value: "claude-opus-5-5", label: "Claude Opus 5.5" },
|
|
210
|
+
];
|
|
211
|
+
export function getClaudeModelOptionLabel(modelId) {
|
|
212
|
+
const currentModel = CURRENT_BUILDER_CLAUDE_MODEL_OPTIONS.find((option) => option.value === modelId);
|
|
213
|
+
if (currentModel)
|
|
214
|
+
return currentModel.label;
|
|
215
|
+
const undatedModelId = modelId.replace(/-\d{8,}$/, "");
|
|
216
|
+
const match = /^claude-(haiku|sonnet|opus|fable)-(\d+)(?:[-.](\d+))?$/i.exec(undatedModelId);
|
|
217
|
+
if (!match)
|
|
218
|
+
return modelId;
|
|
219
|
+
const family = match[1][0].toUpperCase() + match[1].slice(1);
|
|
220
|
+
return `Claude ${family} ${match[2]}${match[3] ? `.${match[3]}` : ""}`;
|
|
221
|
+
}
|
|
222
|
+
export const BUILDER_MODEL_ALIASES = {
|
|
223
|
+
"claude-sonnet-4-6": "claude-sonnet-5-5",
|
|
224
|
+
"claude-sonnet-5": "claude-sonnet-5-5",
|
|
225
|
+
"claude-haiku-4-5": "claude-haiku-5-5",
|
|
226
|
+
"claude-opus-4-7": "claude-opus-5-5",
|
|
227
|
+
"claude-opus-4-8": "claude-opus-5-5",
|
|
228
|
+
"claude-opus-5": "claude-opus-5-5",
|
|
229
|
+
"gpt-5-6-sol": "gpt-6-1-sol",
|
|
230
|
+
"gpt-5-6-luna": "gpt-6-luna",
|
|
231
|
+
"gpt-6-sol": "gpt-6-1-sol",
|
|
232
|
+
"gpt-6.1-sol": "gpt-6-1-sol",
|
|
233
|
+
"gemini-3-5-flash": "gemini-3-8-flash",
|
|
234
|
+
"gemini-3-6-flash": "gemini-3-8-flash",
|
|
235
|
+
"gemini-3-7-flash": "gemini-3-8-flash",
|
|
236
|
+
};
|
|
151
237
|
const ANTHROPIC_DEFAULT_MODEL_ID = CLAUDE_SONNET_MODEL_ID;
|
|
152
238
|
function openRouterModelId(provider, model) {
|
|
153
239
|
return `${provider}/${model}`;
|
|
@@ -160,24 +246,26 @@ export const AGENT_MODEL_CONFIG = {
|
|
|
160
246
|
defaultModel: FRAMEWORK_DEFAULT_BUILDER_MODEL,
|
|
161
247
|
supportedModels: [
|
|
162
248
|
"auto",
|
|
163
|
-
"claude-haiku-
|
|
249
|
+
"claude-haiku-5-5",
|
|
164
250
|
BUILDER_CLAUDE_SONNET_MODEL_ID,
|
|
165
251
|
"claude-opus-5-5",
|
|
166
252
|
"gpt-5-4",
|
|
167
253
|
"gpt-5-5",
|
|
168
254
|
"gpt-5-4-mini",
|
|
169
255
|
"gpt-5-1-codex-mini",
|
|
170
|
-
"gpt-6
|
|
256
|
+
"gpt-6-1-sol",
|
|
171
257
|
"gpt-5-6-terra",
|
|
172
258
|
"gpt-6-luna",
|
|
173
259
|
"gemini-3-1-pro",
|
|
174
260
|
"gemini-3-8-flash",
|
|
175
261
|
"gemini-3-5-flash-lite",
|
|
176
262
|
"gemini-3-1-flash-lite",
|
|
263
|
+
"grok-code-fast",
|
|
177
264
|
"qwen3-coder",
|
|
178
265
|
"kimi-k2-5",
|
|
179
|
-
"deepseek-
|
|
266
|
+
"deepseek-v4-pro",
|
|
180
267
|
"deepseek-v4-1-flash",
|
|
268
|
+
"deepseek-v3-1",
|
|
181
269
|
"z-ai-glm-4-5",
|
|
182
270
|
"z-ai-glm-5-1",
|
|
183
271
|
"z-ai-glm-5-3-flash",
|
|
@@ -186,10 +274,12 @@ export const AGENT_MODEL_CONFIG = {
|
|
|
186
274
|
anthropic: {
|
|
187
275
|
defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,
|
|
188
276
|
supportedModels: [
|
|
277
|
+
"claude-haiku-5-5",
|
|
189
278
|
"claude-haiku-4-5-20251001",
|
|
190
279
|
CLAUDE_SONNET_MODEL_ID,
|
|
191
280
|
"claude-opus-5-5",
|
|
192
281
|
"claude-opus-4-8",
|
|
282
|
+
"claude-fable-5-1",
|
|
193
283
|
"claude-fable-5",
|
|
194
284
|
],
|
|
195
285
|
},
|
|
@@ -197,16 +287,26 @@ export const AGENT_MODEL_CONFIG = {
|
|
|
197
287
|
anthropic: {
|
|
198
288
|
defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,
|
|
199
289
|
supportedModels: [
|
|
290
|
+
"claude-haiku-5-5",
|
|
200
291
|
"claude-haiku-4-5-20251001",
|
|
201
292
|
CLAUDE_SONNET_MODEL_ID,
|
|
202
293
|
"claude-opus-5-5",
|
|
203
294
|
"claude-opus-4-8",
|
|
295
|
+
"claude-fable-5-1",
|
|
204
296
|
"claude-fable-5",
|
|
205
297
|
],
|
|
206
298
|
},
|
|
207
299
|
openai: {
|
|
208
300
|
defaultModel: FRAMEWORK_DEFAULT_OPENAI_MODEL,
|
|
209
|
-
supportedModels: [
|
|
301
|
+
supportedModels: [
|
|
302
|
+
"gpt-6-luna",
|
|
303
|
+
"gpt-6.1-sol",
|
|
304
|
+
"gpt-5.6-terra",
|
|
305
|
+
"gpt-5.5",
|
|
306
|
+
"gpt-5.4",
|
|
307
|
+
"gpt-5.4-mini",
|
|
308
|
+
"gpt-5.1-codex-mini",
|
|
309
|
+
],
|
|
210
310
|
},
|
|
211
311
|
openrouter: {
|
|
212
312
|
defaultModel: FRAMEWORK_DEFAULT_OPENROUTER_MODEL,
|
|
@@ -216,12 +316,30 @@ export const AGENT_MODEL_CONFIG = {
|
|
|
216
316
|
"openai/gpt-6.1-sol",
|
|
217
317
|
"openai/gpt-6-astra",
|
|
218
318
|
"openai/gpt-6-astra-pro",
|
|
319
|
+
"openai/gpt-5.5",
|
|
320
|
+
"openai/gpt-5.4",
|
|
321
|
+
"openai/gpt-5.4-mini",
|
|
322
|
+
"openai/gpt-5.1-codex-mini",
|
|
323
|
+
"anthropic/claude-haiku-5.5",
|
|
219
324
|
OPENROUTER_CLAUDE_SONNET_MODEL_ID,
|
|
220
325
|
"anthropic/claude-opus-5.5",
|
|
221
326
|
"anthropic/claude-opus-4.8",
|
|
222
327
|
"anthropic/claude-fable-5",
|
|
223
328
|
"anthropic/claude-fable-5.1",
|
|
224
329
|
"google/gemini-3.8-flash",
|
|
330
|
+
"google/gemini-3.5-flash-lite",
|
|
331
|
+
"google/gemini-3.1-flash-lite",
|
|
332
|
+
"google/gemini-3.1-pro-preview",
|
|
333
|
+
"x-ai/grok-4.7",
|
|
334
|
+
"x-ai/grok-build-0.1",
|
|
335
|
+
"qwen/qwen3-coder",
|
|
336
|
+
"moonshotai/kimi-k2.5",
|
|
337
|
+
"deepseek/deepseek-v4-pro",
|
|
338
|
+
"deepseek/deepseek-v4.1-flash",
|
|
339
|
+
"deepseek/deepseek-chat-v3.1",
|
|
340
|
+
"z-ai/glm-4.5",
|
|
341
|
+
"z-ai/glm-5.1",
|
|
342
|
+
"z-ai/glm-5.3-flash",
|
|
225
343
|
"qwen/qwen3.8-max-0902",
|
|
226
344
|
"meta/muse-spark-1.3",
|
|
227
345
|
"inception/mercury-2.5",
|
|
@@ -230,7 +348,12 @@ export const AGENT_MODEL_CONFIG = {
|
|
|
230
348
|
},
|
|
231
349
|
google: {
|
|
232
350
|
defaultModel: "gemini-3.8-flash",
|
|
233
|
-
supportedModels: [
|
|
351
|
+
supportedModels: [
|
|
352
|
+
"gemini-3.8-flash",
|
|
353
|
+
"gemini-3.5-flash-lite",
|
|
354
|
+
"gemini-3.1-flash-lite",
|
|
355
|
+
"gemini-3.1-pro-preview",
|
|
356
|
+
],
|
|
234
357
|
},
|
|
235
358
|
groq: {
|
|
236
359
|
defaultModel: "llama-3.3-70b-versatile",
|