Ai Chat - Caching optim (#20126)

EDIT : 
- solving auto-caching from Anthropic by updating ai-sdk/anthropic +
adding providerOption at stream level
- concerning Bedrock, it needs breakpoint


**1. Breakpoints were only on the system prompt**

The code already placed a cache marker on the system prompt (~10K
tokens). But the conversation history — which can grow to hundreds of
thousands of tokens — had no marker, so Anthropic re-read it at full
price on every turn.

The fix adds a prepareStep hook inside streamText that stamps the last
message with a cache breakpoint before every LLM call. Anthropic then
caches the entire conversation prefix, and subsequent turns read it at
$0.30/M instead of $3/M.

prepareStep is used rather than a one-shot pre-processing step because
an agentic turn makes multiple internal LLM calls as tool results
accumulate — the hook refreshes the breakpoint before each one.

**2. Bedrock was using the wrong field**

The system prompt marker for Bedrock was set as cacheControl: { type:
'ephemeral' } — which is the Anthropic wire format. The Bedrock Converse
API expects cachePoint: { type: 'default' }. The system prompt was
silently not being cached on Bedrock at all.

Both the system prompt and the new prepareStep now go through a shared
getCacheProviderOptions helper that returns the correct field per
provider.

**3. Persisted cached token usage to monitor cache strat. efficiency**
This commit is contained in:
Etienne
2026-04-29 14:42:12 +00:00
committed by GitHub
parent 11628d19a3
commit fd6d5f895d
9 changed files with 195 additions and 151 deletions
+8 -8
View File
@@ -15,14 +15,14 @@
"typeorm": "../../node_modules/typeorm/.bin/typeorm"
},
"dependencies": {
"@ai-sdk/amazon-bedrock": "^3.0.83",
"@ai-sdk/anthropic": "^3.0.46",
"@ai-sdk/google": "^3.0.30",
"@ai-sdk/mistral": "^3.0.20",
"@ai-sdk/openai": "^3.0.30",
"@ai-sdk/openai-compatible": "^2.0.40",
"@ai-sdk/provider-utils": "^4.0.15",
"@ai-sdk/xai": "^3.0.57",
"@ai-sdk/amazon-bedrock": "^4.0.97",
"@ai-sdk/anthropic": "^3.0.72",
"@ai-sdk/google": "^3.0.65",
"@ai-sdk/mistral": "^3.0.31",
"@ai-sdk/openai": "^3.0.54",
"@ai-sdk/openai-compatible": "^2.0.42",
"@ai-sdk/provider-utils": "^4.0.24",
"@ai-sdk/xai": "^3.0.84",
"@aws-sdk/client-lambda": "3.1001.0",
"@aws-sdk/client-s3": "3.1001.0",
"@aws-sdk/client-sesv2": "3.1001.0",
@@ -0,0 +1,27 @@
import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('2.2.0', 1777455269302)
export class AddCacheTokensToAgentChatThreadFastInstanceCommand
implements FastInstanceCommand
{
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."agentChatThread" ADD "totalCacheReadTokens" bigint NOT NULL DEFAULT 0`,
);
await queryRunner.query(
`ALTER TABLE "core"."agentChatThread" ADD "totalCacheCreationTokens" bigint NOT NULL DEFAULT 0`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."agentChatThread" DROP COLUMN "totalCacheCreationTokens"`,
);
await queryRunner.query(
`ALTER TABLE "core"."agentChatThread" DROP COLUMN "totalCacheReadTokens"`,
);
}
}
@@ -18,6 +18,7 @@ import { AddConditionalAvailabilityExpressionToPageLayoutWidgetFastInstanceComma
import { AddIsPreInstalledToApplicationRegistrationFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-1/2-1-instance-command-fast-1776886452831-add-is-pre-installed-to-application-registration';
import { AddProviderExecutedToAgentMessagePartFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-1/2-1-instance-command-fast-1777012800000-add-provider-executed-to-agent-message-part';
import { BackfillPageLayoutWidgetPositionSlowInstanceCommand } from 'src/database/commands/upgrade-version-command/2-1/2-1-instance-command-slow-1795000002000-backfill-page-layout-widget-position';
import { AddCacheTokensToAgentChatThreadFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-2/2-2-instance-command-fast-1777455269302-add-cache-tokens-to-agent-chat-thread';
export const INSTANCE_COMMANDS = [
AddViewFieldGroupIdIndexOnViewFieldFastInstanceCommand,
@@ -38,4 +39,5 @@ export const INSTANCE_COMMANDS = [
AddIsPreInstalledToApplicationRegistrationFastInstanceCommand,
AddProviderExecutedToAgentMessagePartFastInstanceCommand,
BackfillPageLayoutWidgetPositionSlowInstanceCommand,
AddCacheTokensToAgentChatThreadFastInstanceCommand,
];
@@ -60,6 +60,12 @@ export class AgentChatThreadEntity {
@Column({ type: 'bigint', default: 0 })
totalOutputCredits: number;
@Column({ type: 'bigint', default: 0 })
totalCacheReadTokens: number;
@Column({ type: 'bigint', default: 0 })
totalCacheCreationTokens: number;
@Column({ type: 'varchar', nullable: true })
activeStreamId: string | null;
@@ -188,6 +188,7 @@ export class StreamAgentChatJob {
outputTokens: 0,
inputCredits: 0,
outputCredits: 0,
cacheReadTokens: 0,
};
let lastStepConversationSize = 0;
let totalCacheCreationTokens = 0;
@@ -279,6 +280,7 @@ export class StreamAgentChatJob {
workspaceId: data.workspaceId,
streamUsage,
lastStepConversationSize,
totalCacheCreationTokens,
modelConfig,
userMessagePromise,
});
@@ -359,6 +361,7 @@ export class StreamAgentChatJob {
outputTokens: number;
inputCredits: number;
outputCredits: number;
cacheReadTokens: number;
}) => void;
onUpdateConversationSize: (size: number) => void;
onUpdateCacheCreationTokens: (tokens: number) => void;
@@ -395,6 +398,7 @@ export class StreamAgentChatJob {
outputTokens: part.totalUsage?.outputTokens ?? 0,
inputCredits,
outputCredits,
cacheReadTokens: breakdown.tokenCounts.cachedInputTokens,
});
return {
@@ -422,6 +426,7 @@ export class StreamAgentChatJob {
workspaceId,
streamUsage,
lastStepConversationSize,
totalCacheCreationTokens,
modelConfig,
userMessagePromise,
}: {
@@ -433,8 +438,10 @@ export class StreamAgentChatJob {
outputTokens: number;
inputCredits: number;
outputCredits: number;
cacheReadTokens: number;
};
lastStepConversationSize: number;
totalCacheCreationTokens: number;
modelConfig: AiModelConfig;
userMessagePromise: Promise<{ turnId: string | null }>;
}): Promise<void> {
@@ -459,6 +466,10 @@ export class StreamAgentChatJob {
`"totalInputCredits" + ${streamUsage.inputCredits}`,
totalOutputCredits: () =>
`"totalOutputCredits" + ${streamUsage.outputCredits}`,
totalCacheReadTokens: () =>
`"totalCacheReadTokens" + ${streamUsage.cacheReadTokens}`,
totalCacheCreationTokens: () =>
`"totalCacheCreationTokens" + ${totalCacheCreationTokens}`,
contextWindowTokens: modelConfig.contextWindowTokens,
conversationSize: lastStepConversationSize,
});
@@ -48,9 +48,10 @@ import {
type ExtractedFile,
} from 'src/engine/metadata-modules/ai/ai-chat/utils/extract-code-interpreter-files.util';
import {
AI_SDK_ANTHROPIC,
AI_SDK_BEDROCK,
} from 'src/engine/metadata-modules/ai/ai-models/constants/ai-sdk-package.const';
injectCacheBreakpoint,
getCacheProviderOptions,
getCallLevelCacheProviderOptions,
} from 'src/engine/metadata-modules/ai/ai-chat/utils/inject-cache-breakpoint.util';
import { AI_TELEMETRY_CONFIG } from 'src/engine/metadata-modules/ai/ai-models/constants/ai-telemetry.const';
import { AiModelRegistryService } from 'src/engine/metadata-modules/ai/ai-models/services/ai-model-registry.service';
import { type AiModelConfig } from 'src/engine/metadata-modules/ai/ai-models/types/ai-model-config.type';
@@ -237,12 +238,7 @@ export class ChatExecutionService {
const systemMessage: SystemModelMessage = {
role: 'system',
content: systemPrompt,
providerOptions:
registeredModel.sdkPackage === AI_SDK_ANTHROPIC
? { anthropic: { cacheControl: { type: 'ephemeral' } } }
: registeredModel.sdkPackage === AI_SDK_BEDROCK
? { bedrock: { cacheControl: { type: 'ephemeral' } } }
: undefined,
providerOptions: getCacheProviderOptions(registeredModel.sdkPackage),
};
const rawModelMessages = await convertToModelMessages(processedMessages);
@@ -333,6 +329,12 @@ export class ChatExecutionService {
abortSignal,
stopWhen: stepCountIs(AGENT_CONFIG.MAX_STEPS),
experimental_telemetry: AI_TELEMETRY_CONFIG,
providerOptions: getCallLevelCacheProviderOptions(
registeredModel.sdkPackage,
),
prepareStep: ({ messages }) => ({
messages: injectCacheBreakpoint(messages, registeredModel.sdkPackage),
}),
onAbort: async ({ steps }) => {
await billUsageFromSteps(steps);
},
@@ -0,0 +1,52 @@
import { type ModelMessage } from 'ai';
import { type ProviderOptions } from '@ai-sdk/provider-utils';
import {
AI_SDK_ANTHROPIC,
AI_SDK_BEDROCK,
} from 'src/engine/metadata-modules/ai/ai-models/constants/ai-sdk-package.const';
export const getCallLevelCacheProviderOptions = (
sdkPackage: string,
): ProviderOptions | undefined => {
if (sdkPackage === AI_SDK_ANTHROPIC) {
return { anthropic: { cacheControl: { type: 'ephemeral' } } };
}
return undefined;
};
export const getCacheProviderOptions = (
sdkPackage: string,
): ProviderOptions | undefined => {
if (sdkPackage === AI_SDK_BEDROCK) {
return { bedrock: { cachePoint: { type: 'default' } } };
}
return undefined;
};
export const injectCacheBreakpoint = (
messages: ModelMessage[],
sdkPackage: string,
): ModelMessage[] => {
if (messages.length === 0) return messages;
const cacheOptions = getCacheProviderOptions(sdkPackage);
if (!cacheOptions) return messages;
const lastIdx = messages.length - 1;
return messages.map((message, index) => {
if (index !== lastIdx) return message;
return {
...message,
providerOptions: {
...(message.providerOptions ?? {}),
...cacheOptions,
},
};
});
};
@@ -45,10 +45,10 @@ export class AiModelConfigService {
model: RegisteredAiModel,
options: NativeModelToolOptions,
): ToolSet {
const tools: ToolSet = {};
const tools: Record<string, unknown> = {};
if (!options.webSearchEnabled) {
return tools;
return tools as ToolSet;
}
switch (model.sdkPackage) {
@@ -76,7 +76,7 @@ export class AiModelConfigService {
}
}
return tools;
return tools as ToolSet;
}
private getXaiProviderOptions(agent: FlatAgentWithRoleId): ProviderOptions {
+75 -131
View File
@@ -24,43 +24,31 @@ __metadata:
languageName: node
linkType: hard
"@ai-sdk/amazon-bedrock@npm:^3.0.83":
version: 3.0.83
resolution: "@ai-sdk/amazon-bedrock@npm:3.0.83"
"@ai-sdk/amazon-bedrock@npm:^4.0.97":
version: 4.0.97
resolution: "@ai-sdk/amazon-bedrock@npm:4.0.97"
dependencies:
"@ai-sdk/anthropic": "npm:2.0.66"
"@ai-sdk/provider": "npm:2.0.1"
"@ai-sdk/provider-utils": "npm:3.0.21"
"@ai-sdk/anthropic": "npm:3.0.72"
"@ai-sdk/provider": "npm:3.0.9"
"@ai-sdk/provider-utils": "npm:4.0.24"
"@smithy/eventstream-codec": "npm:^4.0.1"
"@smithy/util-utf8": "npm:^4.0.0"
aws4fetch: "npm:^1.0.20"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/66072ecf1bc3183f6028fe8bf5f99a8d03986bdffc5836b8508193de58df701058bdc98b3724e9dc47ed0a924edc150712b0c8a6595c0f3a52ba4d30b9029b63
checksum: 10c0/f084b27c7b004925295be58f7b13e9a0c9d6c4d1df4c7317f90fe946deb3e695dff73564d84a0556ea638aa4ba7ba577b2a781626fc5f343d2d632033a5dd749
languageName: node
linkType: hard
"@ai-sdk/anthropic@npm:2.0.66":
version: 2.0.66
resolution: "@ai-sdk/anthropic@npm:2.0.66"
"@ai-sdk/anthropic@npm:3.0.72, @ai-sdk/anthropic@npm:^3.0.72":
version: 3.0.72
resolution: "@ai-sdk/anthropic@npm:3.0.72"
dependencies:
"@ai-sdk/provider": "npm:2.0.1"
"@ai-sdk/provider-utils": "npm:3.0.21"
"@ai-sdk/provider": "npm:3.0.9"
"@ai-sdk/provider-utils": "npm:4.0.24"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/9137e26280efe245986b3a0ea469bb075e46d3e45050faa608b13f289575dd044e5271c56abaad0f9532f543fbe5681d25141674bd5d47fcd5520c5173cd23fe
languageName: node
linkType: hard
"@ai-sdk/anthropic@npm:^3.0.46":
version: 3.0.47
resolution: "@ai-sdk/anthropic@npm:3.0.47"
dependencies:
"@ai-sdk/provider": "npm:3.0.8"
"@ai-sdk/provider-utils": "npm:4.0.15"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/5ef89958b11c06ea107980e645a01b1b1b81392fde5dcdab1d4752c52bed52adfb570567fa02543333c1b2ae38c11bcdad05f6b201ecd3a6a0072525f4de935e
checksum: 10c0/3646f75dd0ae0accd747963c9c1a6e0901df6971931e0947f9cc5f31f7a680ba1ca65ef28c3dd10e586569d64b8f155d8eae3af9aa9e21eff114c59fb23f95c1
languageName: node
linkType: hard
@@ -77,80 +65,55 @@ __metadata:
languageName: node
linkType: hard
"@ai-sdk/google@npm:^3.0.30":
version: 3.0.64
resolution: "@ai-sdk/google@npm:3.0.64"
"@ai-sdk/google@npm:^3.0.65":
version: 3.0.65
resolution: "@ai-sdk/google@npm:3.0.65"
dependencies:
"@ai-sdk/provider": "npm:3.0.8"
"@ai-sdk/provider-utils": "npm:4.0.23"
"@ai-sdk/provider": "npm:3.0.9"
"@ai-sdk/provider-utils": "npm:4.0.24"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/d85f1142021dc984fd174a6d0fdbed39e07235348db1cf423edbe3adddda2033e59939b797b7bd540bb2f40a6b6704e27f924cf18698ab17712aa961504eeec6
checksum: 10c0/c6944fd07e3e6acf7d6bf43d6fa2fdc1f8d20b564d8d9b95370cb63847245c9b80cedc11c0641a12a7b8d2eabe1b00c91e633fba224715724edf230ba57af0a9
languageName: node
linkType: hard
"@ai-sdk/mistral@npm:^3.0.20":
version: 3.0.25
resolution: "@ai-sdk/mistral@npm:3.0.25"
"@ai-sdk/mistral@npm:^3.0.31":
version: 3.0.31
resolution: "@ai-sdk/mistral@npm:3.0.31"
dependencies:
"@ai-sdk/provider": "npm:3.0.8"
"@ai-sdk/provider-utils": "npm:4.0.20"
"@ai-sdk/provider": "npm:3.0.9"
"@ai-sdk/provider-utils": "npm:4.0.24"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/4ea732fc807e9e8f143ecbc3168e103dbb0c43f611ab9d9fdfe532510059c18aa8b44a61c7eafda4d9a91977e7d83fa94022c4aa39be21ad035b186f8471384f
checksum: 10c0/e46a024c12f96b05c69f4990f62338651bc06e0a22cb8ff42d73eb478d46f925ed3baeff6418201c3f79671c0e926b5f304bca787c8028e498505338afef3319
languageName: node
linkType: hard
"@ai-sdk/openai-compatible@npm:2.0.37":
version: 2.0.37
resolution: "@ai-sdk/openai-compatible@npm:2.0.37"
"@ai-sdk/openai-compatible@npm:2.0.42, @ai-sdk/openai-compatible@npm:^2.0.42":
version: 2.0.42
resolution: "@ai-sdk/openai-compatible@npm:2.0.42"
dependencies:
"@ai-sdk/provider": "npm:3.0.8"
"@ai-sdk/provider-utils": "npm:4.0.21"
"@ai-sdk/provider": "npm:3.0.9"
"@ai-sdk/provider-utils": "npm:4.0.24"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/ffa4157cf15726896141b503e4ec613f2ee541b4bdeb34b64c357caf924b8404e9c2e4fe561a21800cf2e7670f58d4b6cc161e361b1fb057ca27e1383de9dee2
checksum: 10c0/bdc512c52eb426c2bfe0724713b7f1ee949f59cccff6dc8c4a0bc216b7b38f541ba2c50505562751b33363ec9f178ec63adf6f0c9592a772678bcf2097f07a6c
languageName: node
linkType: hard
"@ai-sdk/openai-compatible@npm:^2.0.40":
version: 2.0.41
resolution: "@ai-sdk/openai-compatible@npm:2.0.41"
"@ai-sdk/openai@npm:^3.0.54":
version: 3.0.54
resolution: "@ai-sdk/openai@npm:3.0.54"
dependencies:
"@ai-sdk/provider": "npm:3.0.8"
"@ai-sdk/provider-utils": "npm:4.0.23"
"@ai-sdk/provider": "npm:3.0.9"
"@ai-sdk/provider-utils": "npm:4.0.24"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/3f91ad098edfedff46d9fa14b015fa46e235cc460cfdf45f1fb3f5114baa625684436770993aa7b969dbbf5f835a640e062c75cbf3ae72bd746ce6a37f2636f2
checksum: 10c0/bff3d42749f04effbdfddaf860fe80da7a017706e80018926418996e80b6f34f94841d8327d0dafdbb21b3474e8e4022b37e9dfc61a498a8b7a26fffbaf2cd04
languageName: node
linkType: hard
"@ai-sdk/openai@npm:^3.0.30":
version: 3.0.34
resolution: "@ai-sdk/openai@npm:3.0.34"
dependencies:
"@ai-sdk/provider": "npm:3.0.8"
"@ai-sdk/provider-utils": "npm:4.0.15"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/c490681ac4552b53ba51efcbfd0cf2f867ad215b85e3bb2818a3133fdf89ebb27f9d336115887bf9747e0bffe27d8563589920771e839aa46b49abf8a3c85d5b
languageName: node
linkType: hard
"@ai-sdk/provider-utils@npm:3.0.21":
version: 3.0.21
resolution: "@ai-sdk/provider-utils@npm:3.0.21"
dependencies:
"@ai-sdk/provider": "npm:2.0.1"
"@standard-schema/spec": "npm:^1.0.0"
eventsource-parser: "npm:^3.0.6"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/272645109b4990c1367d46fd8982ee3436f88f4f5ec96d78f98c928052dcee6e9a7df326558d908d73901a5c0a84b3374c31722bb78579c2efd3417afb2100fb
languageName: node
linkType: hard
"@ai-sdk/provider-utils@npm:4.0.15, @ai-sdk/provider-utils@npm:^4.0.15":
"@ai-sdk/provider-utils@npm:4.0.15":
version: 4.0.15
resolution: "@ai-sdk/provider-utils@npm:4.0.15"
dependencies:
@@ -163,51 +126,16 @@ __metadata:
languageName: node
linkType: hard
"@ai-sdk/provider-utils@npm:4.0.20":
version: 4.0.20
resolution: "@ai-sdk/provider-utils@npm:4.0.20"
"@ai-sdk/provider-utils@npm:4.0.24, @ai-sdk/provider-utils@npm:^4.0.24":
version: 4.0.24
resolution: "@ai-sdk/provider-utils@npm:4.0.24"
dependencies:
"@ai-sdk/provider": "npm:3.0.8"
"@ai-sdk/provider": "npm:3.0.9"
"@standard-schema/spec": "npm:^1.1.0"
eventsource-parser: "npm:^3.0.6"
eventsource-parser: "npm:^3.0.8"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/749d9f91b2b098f716246bbb92a801d0f8a952fed4481e48b7d36a1c026cfe96b9d956f34b95270bc4628048ad57edd7b19026c167e8ded288e741aa289d4cdd
languageName: node
linkType: hard
"@ai-sdk/provider-utils@npm:4.0.21":
version: 4.0.21
resolution: "@ai-sdk/provider-utils@npm:4.0.21"
dependencies:
"@ai-sdk/provider": "npm:3.0.8"
"@standard-schema/spec": "npm:^1.1.0"
eventsource-parser: "npm:^3.0.6"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/70d19cfefad32865f098d0e6e53342408363929d30151eeb072f90c2d7661b24e4a9bd9ac39d75352aeeee8dffeb931c49b85cafcd953c67336c895497c71cfa
languageName: node
linkType: hard
"@ai-sdk/provider-utils@npm:4.0.23":
version: 4.0.23
resolution: "@ai-sdk/provider-utils@npm:4.0.23"
dependencies:
"@ai-sdk/provider": "npm:3.0.8"
"@standard-schema/spec": "npm:^1.1.0"
eventsource-parser: "npm:^3.0.6"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/06e0aaf95eef47617d87709f78e321c87d26663bae16e68e9776a4bced8d78823d4c1514ac5e5e7dcb74f24a2e37152bc6b6eb1e31c9f0f77e54a020993c276a
languageName: node
linkType: hard
"@ai-sdk/provider@npm:2.0.1":
version: 2.0.1
resolution: "@ai-sdk/provider@npm:2.0.1"
dependencies:
json-schema: "npm:^0.4.0"
checksum: 10c0/3ec560c5b03401a1e3b8c73875f4258cb815668367157a3caa4d30f580ff5adffbba54ee52f875161c986c5225a88cb3829f050437e0a2d7e5820b72cf08238b
checksum: 10c0/43473a865313118bcafbe8d4b5ab37e5c10036da8ba975af9808f2d1b8dfac5747a5ec8da06788fc135eeb045ef51f3e068293f4cefe53ce8eb98db514e68915
languageName: node
linkType: hard
@@ -220,16 +148,25 @@ __metadata:
languageName: node
linkType: hard
"@ai-sdk/xai@npm:^3.0.57":
version: 3.0.74
resolution: "@ai-sdk/xai@npm:3.0.74"
"@ai-sdk/provider@npm:3.0.9":
version: 3.0.9
resolution: "@ai-sdk/provider@npm:3.0.9"
dependencies:
"@ai-sdk/openai-compatible": "npm:2.0.37"
"@ai-sdk/provider": "npm:3.0.8"
"@ai-sdk/provider-utils": "npm:4.0.21"
json-schema: "npm:^0.4.0"
checksum: 10c0/507b30f2b15392ed4718efe2e618ee571fdea4eabbc09f38da8e2d6f839137d0d521b77ca279f55c349fe12f2a069abb4f320ebf87249c881b634f32997ae65c
languageName: node
linkType: hard
"@ai-sdk/xai@npm:^3.0.84":
version: 3.0.84
resolution: "@ai-sdk/xai@npm:3.0.84"
dependencies:
"@ai-sdk/openai-compatible": "npm:2.0.42"
"@ai-sdk/provider": "npm:3.0.9"
"@ai-sdk/provider-utils": "npm:4.0.24"
peerDependencies:
zod: ^3.25.76 || ^4.1.8
checksum: 10c0/0d8b0e92d180162d7efcf02e9a74a489495a98c94191b8d160428871663282466fc31b6424040489c8e5a5e191dbfb2f0af88867ae3ba81d1ff39be6ce16cdae
checksum: 10c0/2e14ba184a67b3c21c4f1cb1c8a016ff06ed99f30ddf2e630e9338b36b784f2df09775eb9ba8432820c593c7e4d43850594f2d55e09abe64d2ec748717b4bbd2
languageName: node
linkType: hard
@@ -38095,6 +38032,13 @@ __metadata:
languageName: node
linkType: hard
"eventsource-parser@npm:^3.0.8":
version: 3.0.8
resolution: "eventsource-parser@npm:3.0.8"
checksum: 10c0/3a73eee85311f33b12fa558381a477c1bdcf8c024a429a9d48f87b043e328c26d24ed280fd7ca92e2fdd4c8c37f749b758420c1533778aaca2beabf895024efa
languageName: node
linkType: hard
"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3":
version: 1.0.3
resolution: "evp_bytestokey@npm:1.0.3"
@@ -60630,14 +60574,14 @@ __metadata:
version: 0.0.0-use.local
resolution: "twenty-server@workspace:packages/twenty-server"
dependencies:
"@ai-sdk/amazon-bedrock": "npm:^3.0.83"
"@ai-sdk/anthropic": "npm:^3.0.46"
"@ai-sdk/google": "npm:^3.0.30"
"@ai-sdk/mistral": "npm:^3.0.20"
"@ai-sdk/openai": "npm:^3.0.30"
"@ai-sdk/openai-compatible": "npm:^2.0.40"
"@ai-sdk/provider-utils": "npm:^4.0.15"
"@ai-sdk/xai": "npm:^3.0.57"
"@ai-sdk/amazon-bedrock": "npm:^4.0.97"
"@ai-sdk/anthropic": "npm:^3.0.72"
"@ai-sdk/google": "npm:^3.0.65"
"@ai-sdk/mistral": "npm:^3.0.31"
"@ai-sdk/openai": "npm:^3.0.54"
"@ai-sdk/openai-compatible": "npm:^2.0.42"
"@ai-sdk/provider-utils": "npm:^4.0.24"
"@ai-sdk/xai": "npm:^3.0.84"
"@aws-sdk/client-lambda": "npm:3.1001.0"
"@aws-sdk/client-s3": "npm:3.1001.0"
"@aws-sdk/client-sesv2": "npm:3.1001.0"