@standardagents/cerebras 0.43.1 → 0.44.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/dist/index.js +33 -44
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -4,9 +4,10 @@ import {
|
|
|
4
4
|
} from "./chunk-NSNGOKA3.js";
|
|
5
5
|
|
|
6
6
|
// src/CerebrasProvider.ts
|
|
7
|
-
import { ProviderError } from "@standardagents/spec";
|
|
7
|
+
import { ProviderError, resolveRequestReasoningLevels } from "@standardagents/spec";
|
|
8
8
|
|
|
9
9
|
// src/chat-completions-transformers.ts
|
|
10
|
+
import { mapReasoningLevel } from "@standardagents/spec";
|
|
10
11
|
function transformChatContentPart(part) {
|
|
11
12
|
if (part.type === "text") {
|
|
12
13
|
return { type: "text", text: part.text };
|
|
@@ -75,21 +76,22 @@ function transformChatAssistantMessage(msg) {
|
|
|
75
76
|
return message;
|
|
76
77
|
}
|
|
77
78
|
function transformChatToolMessage(msg) {
|
|
79
|
+
const content = Array.isArray(msg.content) ? msg.content.filter((part) => part.type === "text").map((part) => part.text).join("\n") : msg.content;
|
|
78
80
|
let output;
|
|
79
|
-
if (typeof
|
|
80
|
-
output =
|
|
81
|
-
} else if ("type" in
|
|
82
|
-
if (
|
|
83
|
-
output =
|
|
84
|
-
} else if (
|
|
85
|
-
output = `Error: ${
|
|
81
|
+
if (typeof content === "string") {
|
|
82
|
+
output = content;
|
|
83
|
+
} else if ("type" in content) {
|
|
84
|
+
if (content.type === "text") {
|
|
85
|
+
output = content.text;
|
|
86
|
+
} else if (content.type === "error") {
|
|
87
|
+
output = `Error: ${content.error}`;
|
|
86
88
|
} else {
|
|
87
|
-
output = JSON.stringify(
|
|
89
|
+
output = JSON.stringify(content);
|
|
88
90
|
}
|
|
89
91
|
} else {
|
|
90
|
-
output = JSON.stringify(
|
|
92
|
+
output = JSON.stringify(content);
|
|
91
93
|
}
|
|
92
|
-
const imageAttachments = msg.
|
|
94
|
+
const imageAttachments = Array.isArray(msg.content) ? msg.content.filter((part) => part.type === "image" && Boolean(part.data) || part.type === "image_url") : [];
|
|
93
95
|
const toolMessage = {
|
|
94
96
|
role: "tool",
|
|
95
97
|
tool_call_id: msg.toolCallId,
|
|
@@ -108,15 +110,7 @@ function transformChatToolMessage(msg) {
|
|
|
108
110
|
text: `Here ${verb} ${descriptor} from ${toolName}:`
|
|
109
111
|
});
|
|
110
112
|
for (const attachment of imageAttachments) {
|
|
111
|
-
|
|
112
|
-
const imageData = attachmentData.startsWith("data:") ? attachmentData : `data:${attachment.mediaType || "image/png"};base64,${attachmentData}`;
|
|
113
|
-
imageContent.push({
|
|
114
|
-
type: "image_url",
|
|
115
|
-
image_url: {
|
|
116
|
-
url: imageData,
|
|
117
|
-
detail: "auto"
|
|
118
|
-
}
|
|
119
|
-
});
|
|
113
|
+
imageContent.push(transformChatContentPart(attachment));
|
|
120
114
|
}
|
|
121
115
|
return {
|
|
122
116
|
toolMessage,
|
|
@@ -466,20 +460,7 @@ async function* parseChatSSEStream(response, state) {
|
|
|
466
460
|
reader.releaseLock();
|
|
467
461
|
}
|
|
468
462
|
}
|
|
469
|
-
function
|
|
470
|
-
if (model.startsWith("gpt-oss-")) {
|
|
471
|
-
if (level >= 100) return "high";
|
|
472
|
-
if (level >= 66) return "medium";
|
|
473
|
-
if (level >= 33) return "low";
|
|
474
|
-
if (level > 0) return "low";
|
|
475
|
-
return void 0;
|
|
476
|
-
}
|
|
477
|
-
if (model.startsWith("zai-glm-4.7")) {
|
|
478
|
-
return level === 0 ? "none" : void 0;
|
|
479
|
-
}
|
|
480
|
-
return void 0;
|
|
481
|
-
}
|
|
482
|
-
function buildChatParams(request) {
|
|
463
|
+
function buildChatParams(request, reasoningLevels = request.model.startsWith("gpt-oss-") ? { 0: "low", 33: "low", 66: "medium", 100: "high" } : request.model.startsWith("zai-glm-4.7") ? { 0: "none", 100: null } : {}) {
|
|
483
464
|
const params = {
|
|
484
465
|
model: request.model,
|
|
485
466
|
messages: transformChatMessages(request.messages)
|
|
@@ -506,12 +487,6 @@ function buildChatParams(request) {
|
|
|
506
487
|
if (request.stopSequences && request.stopSequences.length > 0) {
|
|
507
488
|
params.stop = request.stopSequences;
|
|
508
489
|
}
|
|
509
|
-
if (request.reasoning?.level !== void 0) {
|
|
510
|
-
const effort = mapCerebrasReasoningEffort(request.model, request.reasoning.level);
|
|
511
|
-
if (effort) {
|
|
512
|
-
params.reasoning_effort = effort;
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
490
|
if (request.responseFormat?.type === "json") {
|
|
516
491
|
if (request.responseFormat.schema) {
|
|
517
492
|
params.response_format = {
|
|
@@ -530,6 +505,18 @@ function buildChatParams(request) {
|
|
|
530
505
|
const { _metadata, ...safeOptions } = request.providerOptions;
|
|
531
506
|
Object.assign(params, safeOptions);
|
|
532
507
|
}
|
|
508
|
+
if (request.reasoning?.level !== void 0) {
|
|
509
|
+
delete params.effort;
|
|
510
|
+
delete params.reasoningEffort;
|
|
511
|
+
delete params.reasoning_effort;
|
|
512
|
+
const nestedReasoning = params.reasoning;
|
|
513
|
+
if (nestedReasoning && typeof nestedReasoning === "object" && "effort" in nestedReasoning) {
|
|
514
|
+
const { effort: effort2, ...otherReasoning } = nestedReasoning;
|
|
515
|
+
params.reasoning = otherReasoning;
|
|
516
|
+
}
|
|
517
|
+
const effort = mapReasoningLevel(request.reasoning.level, request.reasoning.levels ?? reasoningLevels);
|
|
518
|
+
if (effort === "none" || effort === "low" || effort === "medium" || effort === "high") params.reasoning_effort = effort;
|
|
519
|
+
}
|
|
533
520
|
return params;
|
|
534
521
|
}
|
|
535
522
|
function createChatErrorChunk(error, code) {
|
|
@@ -672,7 +659,7 @@ var STATIC_MODELS = [
|
|
|
672
659
|
supportsJsonMode: true,
|
|
673
660
|
maxContextTokens: 128e3,
|
|
674
661
|
maxOutputTokens: 64e3,
|
|
675
|
-
reasoningLevels: { 0:
|
|
662
|
+
reasoningLevels: { 0: "low", 33: "low", 66: "medium", 100: "high" }
|
|
676
663
|
}
|
|
677
664
|
},
|
|
678
665
|
{
|
|
@@ -749,6 +736,8 @@ var CerebrasProvider = class _CerebrasProvider {
|
|
|
749
736
|
};
|
|
750
737
|
}
|
|
751
738
|
async getModelCapabilities(modelId) {
|
|
739
|
+
const staticModel = STATIC_MODELS.find((model) => model.id === modelId);
|
|
740
|
+
if (staticModel?.capabilities) return { ...staticModel.capabilities };
|
|
752
741
|
try {
|
|
753
742
|
const models = await this.fetchModelsWithCache();
|
|
754
743
|
const model = models.find((candidate) => candidate.id === modelId);
|
|
@@ -794,7 +783,7 @@ var CerebrasProvider = class _CerebrasProvider {
|
|
|
794
783
|
"Content-Type": "application/json",
|
|
795
784
|
"Authorization": `Bearer ${apiKey}`
|
|
796
785
|
},
|
|
797
|
-
body: JSON.stringify(buildChatParams(request)),
|
|
786
|
+
body: JSON.stringify(buildChatParams(request, await resolveRequestReasoningLevels(request, (model) => this.getModelCapabilities(model)))),
|
|
798
787
|
signal: request.signal
|
|
799
788
|
});
|
|
800
789
|
if (!response.ok) {
|
|
@@ -826,7 +815,7 @@ var CerebrasProvider = class _CerebrasProvider {
|
|
|
826
815
|
"Authorization": `Bearer ${apiKey}`
|
|
827
816
|
},
|
|
828
817
|
body: JSON.stringify({
|
|
829
|
-
...buildChatParams(request),
|
|
818
|
+
...buildChatParams(request, await resolveRequestReasoningLevels(request, (model) => this.getModelCapabilities(model))),
|
|
830
819
|
stream: true,
|
|
831
820
|
stream_options: { include_usage: true }
|
|
832
821
|
}),
|
|
@@ -905,7 +894,7 @@ var CerebrasProvider = class _CerebrasProvider {
|
|
|
905
894
|
return new ProviderError(message, "unknown", status);
|
|
906
895
|
}
|
|
907
896
|
async inspectRequest(request) {
|
|
908
|
-
const params = buildChatParams(request);
|
|
897
|
+
const params = buildChatParams(request, await resolveRequestReasoningLevels(request, (model) => this.getModelCapabilities(model)));
|
|
909
898
|
return {
|
|
910
899
|
body: truncateChatBase64(params),
|
|
911
900
|
messagesPath: "messages",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/CerebrasProvider.ts","../src/chat-completions-transformers.ts","../src/icons.ts","../src/providerOptions.ts","../src/index.ts"],"sourcesContent":["import type {\n LLMProviderInterface as Provider,\n ProviderFactoryConfig,\n ProviderRequest,\n ProviderResponse,\n ProviderStreamChunk,\n ModelCapabilities,\n ProviderModelInfo,\n InspectedRequest,\n} from '@standardagents/spec';\nimport { ProviderError } from '@standardagents/spec';\nimport {\n buildChatParams,\n transformChatResponse,\n createChatStreamState,\n parseChatSSEStream,\n createChatErrorChunk,\n truncateChatBase64,\n} from './chat-completions-transformers';\nimport { getCerebrasIconDataUri, getCerebrasModelIconDataUri } from './icons';\n\nexport { ProviderError };\n\ninterface CerebrasPublicModelInfo {\n id: string;\n name?: string;\n description?: string;\n input_modalities?: string[];\n output_modalities?: string[];\n context_length?: number;\n max_output_length?: number;\n pricing?: {\n prompt?: string;\n completion?: string;\n };\n supported_sampling_parameters?: string[];\n supported_features?: string[];\n openrouter?: {\n slug?: string;\n };\n}\n\nconst STATIC_MODELS: Array<CerebrasPublicModelInfo & {\n capabilities?: ModelCapabilities;\n}> = [\n {\n id: 'llama3.1-8b',\n name: 'Llama 3.1 8B',\n description: 'Fast general-purpose Cerebras model.',\n input_modalities: ['text'],\n output_modalities: ['text'],\n context_length: 32768,\n max_output_length: 8192,\n supported_features: ['tools', 'json_mode', 'structured_outputs'],\n },\n {\n id: 'qwen-3-235b-a22b-instruct-2507',\n name: 'Qwen 3 235B Instruct',\n description: 'Large instruct model with tool use and structured outputs.',\n input_modalities: ['text'],\n output_modalities: ['text'],\n context_length: 131072,\n max_output_length: 40960,\n supported_features: ['tools', 'json_mode', 'structured_outputs'],\n },\n {\n id: 'gpt-oss-120b',\n name: 'GPT OSS 120B',\n description: 'Large reasoning-focused Cerebras model.',\n input_modalities: ['text'],\n output_modalities: ['text'],\n context_length: 128000,\n max_output_length: 64000,\n supported_features: ['tools', 'json_mode', 'structured_outputs'],\n capabilities: {\n supportsImages: false,\n supportsToolCalls: true,\n supportsStreaming: true,\n supportsJsonMode: true,\n maxContextTokens: 128000,\n maxOutputTokens: 64000,\n reasoningLevels: { 0: null, 33: 'low', 66: 'medium', 100: 'high' },\n },\n },\n {\n id: 'zai-glm-4.7',\n name: 'Z.ai GLM 4.7',\n description: 'Preview Cerebras reasoning model with optional preserved thinking.',\n input_modalities: ['text'],\n output_modalities: ['text'],\n context_length: 128000,\n max_output_length: 64000,\n supported_features: ['tools', 'json_mode', 'structured_outputs'],\n capabilities: {\n supportsImages: false,\n supportsToolCalls: true,\n supportsStreaming: true,\n supportsJsonMode: true,\n maxContextTokens: 128000,\n maxOutputTokens: 64000,\n reasoningLevels: { 0: 'none', 100: null },\n },\n },\n];\n\nexport class CerebrasProvider implements Provider {\n readonly name = 'cerebras';\n readonly specificationVersion = '1' as const;\n\n private config: ProviderFactoryConfig;\n\n private static modelsCache: CerebrasPublicModelInfo[] | null = null;\n private static modelsCacheTime = 0;\n private static readonly CACHE_TTL = 5 * 60 * 1000;\n\n constructor(config: ProviderFactoryConfig) {\n this.config = config;\n }\n\n supportsModel(_modelId: string): boolean {\n return true;\n }\n\n getIcon(modelId?: string): string {\n return getCerebrasModelIconDataUri(modelId) || getCerebrasIconDataUri();\n }\n\n private async fetchModelsWithCache(): Promise<CerebrasPublicModelInfo[]> {\n const now = Date.now();\n\n if (\n CerebrasProvider.modelsCache &&\n now - CerebrasProvider.modelsCacheTime < CerebrasProvider.CACHE_TTL\n ) {\n return CerebrasProvider.modelsCache;\n }\n\n const response = await fetch('https://api.cerebras.ai/public/v1/models?format=openrouter');\n if (!response.ok) {\n throw new Error(`Cerebras public models API error: ${response.status}`);\n }\n\n const data = await response.json() as { data?: CerebrasPublicModelInfo[] };\n const merged = new Map<string, CerebrasPublicModelInfo>();\n\n for (const model of STATIC_MODELS) {\n merged.set(model.id, model);\n }\n\n for (const model of data.data || []) {\n merged.set(model.id, { ...merged.get(model.id), ...model });\n }\n\n CerebrasProvider.modelsCache = Array.from(merged.values());\n CerebrasProvider.modelsCacheTime = now;\n\n return CerebrasProvider.modelsCache;\n }\n\n private mapModelCapabilities(model: CerebrasPublicModelInfo): ModelCapabilities {\n const staticModel = STATIC_MODELS.find((candidate) => candidate.id === model.id);\n if (staticModel?.capabilities) {\n return { ...staticModel.capabilities };\n }\n\n const features = new Set(model.supported_features || []);\n const inputModalities = new Set(model.input_modalities || []);\n\n return {\n supportsImages: inputModalities.has('image'),\n supportsToolCalls: features.has('tools'),\n supportsStreaming: true,\n supportsJsonMode: features.has('json_mode') || features.has('structured_outputs'),\n maxContextTokens: model.context_length,\n maxOutputTokens: model.max_output_length,\n };\n }\n\n async getModelCapabilities(modelId: string): Promise<ModelCapabilities | null> {\n try {\n const models = await this.fetchModelsWithCache();\n const model = models.find((candidate) => candidate.id === modelId);\n if (!model) return null;\n return this.mapModelCapabilities(model);\n } catch (error) {\n console.error(`Failed to fetch capabilities for Cerebras model ${modelId}:`, error);\n return null;\n }\n }\n\n private mapToProviderModelInfo(model: CerebrasPublicModelInfo): ProviderModelInfo {\n return {\n id: model.id,\n name: model.name || model.id,\n description: model.description,\n contextLength: model.context_length,\n iconId: this.getIcon(model.id),\n slug: model.openrouter?.slug || model.id,\n };\n }\n\n async getModels(filter?: string): Promise<ProviderModelInfo[]> {\n try {\n let models = (await this.fetchModelsWithCache())\n .map((model) => this.mapToProviderModelInfo(model))\n .sort((a, b) => a.name.localeCompare(b.name));\n\n if (filter) {\n const lowerFilter = filter.toLowerCase();\n models = models.filter(\n (model) =>\n model.id.toLowerCase().includes(lowerFilter) ||\n model.name.toLowerCase().includes(lowerFilter) ||\n (model.description && model.description.toLowerCase().includes(lowerFilter))\n );\n }\n\n return models;\n } catch (error) {\n console.error('Failed to fetch models from Cerebras:', error);\n return STATIC_MODELS.map((model) => this.mapToProviderModelInfo(model));\n }\n }\n\n async generate(request: ProviderRequest): Promise<ProviderResponse> {\n const apiKey = this.config.apiKey;\n const baseUrl = this.config.baseUrl || 'https://api.cerebras.ai/v1';\n\n try {\n const response = await fetch(`${baseUrl}/chat/completions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`,\n },\n body: JSON.stringify(buildChatParams(request)),\n signal: request.signal,\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorMessage = `Cerebras API error: ${response.status}`;\n try {\n const errorJson = JSON.parse(errorText) as {\n error?: { message?: string };\n message?: string;\n };\n errorMessage = errorJson.error?.message || errorJson.message || errorMessage;\n } catch {\n errorMessage = errorText || errorMessage;\n }\n\n throw this.toHttpProviderError(errorMessage, response.status, response.headers);\n }\n\n const data = await response.json();\n return transformChatResponse(data);\n } catch (error) {\n throw this.toProviderError(error);\n }\n }\n\n async stream(request: ProviderRequest): Promise<AsyncIterable<ProviderStreamChunk>> {\n const self = this;\n const apiKey = this.config.apiKey;\n const baseUrl = this.config.baseUrl || 'https://api.cerebras.ai/v1';\n\n try {\n const response = await fetch(`${baseUrl}/chat/completions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`,\n },\n body: JSON.stringify({\n ...buildChatParams(request),\n stream: true,\n stream_options: { include_usage: true },\n }),\n signal: request.signal,\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorMessage = `Cerebras API error: ${response.status}`;\n try {\n const errorJson = JSON.parse(errorText) as {\n error?: { message?: string };\n message?: string;\n };\n errorMessage = errorJson.error?.message || errorJson.message || errorMessage;\n } catch {\n errorMessage = errorText || errorMessage;\n }\n\n throw this.toHttpProviderError(errorMessage, response.status, response.headers);\n }\n\n return {\n async *[Symbol.asyncIterator]() {\n const state = createChatStreamState(request.model);\n\n try {\n for await (const chunk of parseChatSSEStream(response, state)) {\n yield chunk;\n }\n } catch (error) {\n const providerError = self.toProviderError(error);\n yield createChatErrorChunk(providerError.message, providerError.code);\n }\n },\n };\n } catch (error) {\n throw this.toProviderError(error);\n }\n }\n\n private toProviderError(error: unknown): ProviderError {\n if (error instanceof ProviderError) {\n return error;\n }\n\n if (error instanceof Error) {\n const anyError = error as Error & {\n status?: number;\n statusCode?: number;\n headers?: Record<string, string>;\n code?: string;\n };\n\n const status = anyError.status || anyError.statusCode;\n const retryAfter = anyError.headers?.['retry-after']\n ? parseInt(anyError.headers['retry-after'], 10)\n : undefined;\n\n if (status === 429) {\n return new ProviderError(error.message, 'rate_limit', status, retryAfter);\n }\n if (status === 401 || status === 403) {\n return new ProviderError(error.message, 'auth_error', status);\n }\n if (status === 400) {\n return new ProviderError(error.message, 'invalid_request', status);\n }\n if (status && status >= 500) {\n return new ProviderError(error.message, 'server_error', status);\n }\n if (error.name === 'AbortError' || anyError.code === 'ETIMEDOUT') {\n return new ProviderError(error.message, 'timeout');\n }\n\n return new ProviderError(error.message, 'unknown', status);\n }\n\n return new ProviderError(String(error), 'unknown');\n }\n\n private toHttpProviderError(\n message: string,\n status: number,\n headers?: Headers\n ): ProviderError {\n const retryAfterHeader = headers?.get('retry-after');\n const retryAfter = retryAfterHeader ? parseInt(retryAfterHeader, 10) : undefined;\n\n if (status === 429) {\n return new ProviderError(message, 'rate_limit', status, retryAfter);\n }\n if (status === 401 || status === 403) {\n return new ProviderError(message, 'auth_error', status);\n }\n if (status === 400) {\n return new ProviderError(message, 'invalid_request', status);\n }\n if (status >= 500) {\n return new ProviderError(message, 'server_error', status);\n }\n\n return new ProviderError(message, 'unknown', status);\n }\n\n async inspectRequest(request: ProviderRequest): Promise<InspectedRequest> {\n const params = buildChatParams(request);\n\n return {\n body: truncateChatBase64(params as Record<string, unknown>),\n messagesPath: 'messages',\n metadata: {\n endpoint: 'POST /v1/chat/completions',\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n };\n }\n}\n","import type {\n ProviderRequest,\n ProviderResponse,\n ProviderMessage,\n ProviderTool,\n ProviderToolCallPart,\n ProviderFinishReason,\n ProviderUsage,\n ProviderStreamChunk,\n ContentPart,\n ProviderReasoningDetail,\n} from '@standardagents/spec';\nimport { calculateCerebrasUsageCost } from './pricing';\n\nexport type CerebrasChatContentPart =\n | { type: 'text'; text: string }\n | { type: 'image_url'; image_url: { url: string; detail?: 'auto' | 'low' | 'high' } };\n\nexport type CerebrasChatMessage =\n | { role: 'system'; content: string }\n | { role: 'user'; content: string | CerebrasChatContentPart[] }\n | {\n role: 'assistant';\n content?: string | null;\n tool_calls?: CerebrasChatToolCall[];\n reasoning?: string | null;\n }\n | { role: 'tool'; tool_call_id: string; content: string };\n\nexport interface CerebrasChatToolCall {\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n}\n\nexport interface CerebrasChatTool {\n type: 'function';\n function: {\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n strict?: boolean;\n };\n}\n\nexport type CerebrasChatToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\nexport interface CerebrasChatCompletionRequest {\n model: string;\n messages: CerebrasChatMessage[];\n tools?: CerebrasChatTool[];\n tool_choice?: CerebrasChatToolChoice;\n parallel_tool_calls?: boolean;\n max_completion_tokens?: number;\n temperature?: number;\n top_p?: number;\n stop?: string[];\n stream?: boolean;\n stream_options?: { include_usage?: boolean };\n reasoning_effort?: 'none' | 'low' | 'medium' | 'high';\n clear_thinking?: boolean;\n logprobs?: boolean;\n top_logprobs?: number;\n seed?: number;\n user?: string;\n service_tier?: 'priority' | 'default' | 'auto' | 'flex';\n response_format?:\n | { type: 'json_object' }\n | { type: 'json_schema'; json_schema: { name: string; schema: Record<string, unknown>; strict?: boolean } };\n [key: string]: unknown;\n}\n\nexport interface CerebrasChatCompletionUsage {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n prompt_tokens_details?: {\n cached_tokens?: number;\n };\n completion_tokens_details?: {\n reasoning_tokens?: number;\n accepted_prediction_tokens?: number;\n rejected_prediction_tokens?: number;\n };\n}\n\nexport interface CerebrasChatCompletionResponse {\n id: string;\n model?: string;\n service_tier_used?: string;\n system_fingerprint?: string;\n time_info?: Record<string, unknown>;\n choices: Array<{\n index: number;\n message: {\n role: 'assistant';\n content: string | null;\n reasoning?: string | null;\n tool_calls?: CerebrasChatToolCall[];\n };\n finish_reason: string;\n }>;\n usage?: CerebrasChatCompletionUsage;\n}\n\nexport interface CerebrasChatStreamChunk {\n id?: string;\n model?: string;\n choices?: Array<{\n index: number;\n delta: {\n role?: string;\n content?: string | null;\n reasoning?: string | null;\n tool_calls?: Array<{\n index: number;\n id?: string;\n type?: 'function';\n function?: {\n name?: string;\n arguments?: string;\n };\n }>;\n };\n finish_reason?: string | null;\n }>;\n usage?: CerebrasChatCompletionUsage;\n}\n\nexport function transformChatContentPart(part: ContentPart): CerebrasChatContentPart {\n if (part.type === 'text') {\n return { type: 'text', text: part.text };\n }\n\n if (part.type === 'image') {\n const data = part.data || '';\n const imageUrl = data.startsWith('data:')\n ? data\n : `data:${part.mediaType || 'image/png'};base64,${data}`;\n\n return {\n type: 'image_url',\n image_url: {\n url: imageUrl,\n detail: part.detail || 'auto',\n },\n };\n }\n\n if (part.type === 'image_url') {\n return {\n type: 'image_url',\n image_url: {\n url: part.image_url?.url || '',\n detail: part.image_url?.detail || 'auto',\n },\n };\n }\n\n return {\n type: 'text',\n text: `[File: ${part.filename || 'file'}]`,\n };\n}\n\nexport function transformChatMessageContent(\n content: string | ContentPart[]\n): string | CerebrasChatContentPart[] {\n if (typeof content === 'string') {\n return content;\n }\n return content.map(transformChatContentPart);\n}\n\nexport function transformChatSystemMessage(\n msg: ProviderMessage & { role: 'system' }\n): CerebrasChatMessage {\n return {\n role: 'system',\n content: msg.content,\n };\n}\n\nexport function transformChatUserMessage(\n msg: ProviderMessage & { role: 'user' }\n): CerebrasChatMessage {\n return {\n role: 'user',\n content: transformChatMessageContent(msg.content),\n };\n}\n\nexport function transformChatAssistantMessage(\n msg: ProviderMessage & { role: 'assistant' }\n): CerebrasChatMessage {\n const message: CerebrasChatMessage & { role: 'assistant' } = {\n role: 'assistant',\n content: msg.content || null,\n };\n\n if (msg.toolCalls && msg.toolCalls.length > 0) {\n message.tool_calls = msg.toolCalls.map((tc) => ({\n id: tc.id,\n type: 'function',\n function: {\n name: tc.name,\n arguments: typeof tc.arguments === 'string'\n ? tc.arguments\n : JSON.stringify(tc.arguments),\n },\n }));\n }\n\n if (msg.reasoning) {\n message.reasoning = msg.reasoning;\n }\n\n return message;\n}\n\nexport type CerebrasChatToolMessageResult = {\n toolMessage: CerebrasChatMessage & { role: 'tool' };\n syntheticUserMessage?: CerebrasChatMessage & { role: 'user' };\n};\n\nexport function transformChatToolMessage(\n msg: ProviderMessage & { role: 'tool' }\n): CerebrasChatToolMessageResult {\n let output: string;\n\n if (typeof msg.content === 'string') {\n output = msg.content;\n } else if ('type' in msg.content) {\n if (msg.content.type === 'text') {\n output = msg.content.text;\n } else if (msg.content.type === 'error') {\n output = `Error: ${msg.content.error}`;\n } else {\n output = JSON.stringify(msg.content);\n }\n } else {\n output = JSON.stringify(msg.content);\n }\n\n const imageAttachments = msg.attachments?.filter(a => a.type === 'image' && a.data) || [];\n const toolMessage: CerebrasChatMessage & { role: 'tool' } = {\n role: 'tool',\n tool_call_id: msg.toolCallId,\n content: output || (imageAttachments.length > 0 ? 'Success' : ''),\n };\n\n if (imageAttachments.length === 0) {\n return { toolMessage };\n }\n\n const imageContent: CerebrasChatContentPart[] = [];\n const toolName = msg.toolName || 'the tool';\n const isSingle = imageAttachments.length === 1;\n const descriptor = isSingle ? 'the file' : `${imageAttachments.length} files`;\n const verb = isSingle ? 'is' : 'are';\n\n imageContent.push({\n type: 'text',\n text: `Here ${verb} ${descriptor} from ${toolName}:`,\n });\n\n for (const attachment of imageAttachments) {\n const attachmentData = attachment.data || '';\n const imageData = attachmentData.startsWith('data:')\n ? attachmentData\n : `data:${attachment.mediaType || 'image/png'};base64,${attachmentData}`;\n\n imageContent.push({\n type: 'image_url',\n image_url: {\n url: imageData,\n detail: 'auto',\n },\n });\n }\n\n return {\n toolMessage,\n syntheticUserMessage: {\n role: 'user',\n content: imageContent,\n },\n };\n}\n\nexport function transformChatMessages(messages: ProviderMessage[]): CerebrasChatMessage[] {\n const result: CerebrasChatMessage[] = [];\n\n for (const msg of messages) {\n switch (msg.role) {\n case 'system':\n result.push(transformChatSystemMessage(msg));\n break;\n case 'user':\n result.push(transformChatUserMessage(msg));\n break;\n case 'assistant':\n result.push(transformChatAssistantMessage(msg));\n break;\n case 'tool': {\n const { toolMessage, syntheticUserMessage } = transformChatToolMessage(msg);\n result.push(toolMessage);\n if (syntheticUserMessage) {\n result.push(syntheticUserMessage);\n }\n break;\n }\n }\n }\n\n return result;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\n/**\n * JSON Schema validation / annotation keywords Cerebras's strict function-calling\n * parser rejects — e.g. `Invalid fields for schema with types ['string']:\n * {'minLength'}`. Zod → JSON Schema emits these freely, so we strip them before\n * sending. Semantic keywords the model actually relies on — type, enum, const,\n * description, properties, items, anyOf, $ref — are kept.\n */\nconst STRICT_UNSUPPORTED_KEYWORDS = new Set<string>([\n // strings\n 'minLength', 'maxLength', 'pattern', 'format',\n // numbers / integers\n 'minimum', 'maximum', 'exclusiveMinimum', 'exclusiveMaximum', 'multipleOf',\n // arrays\n 'minItems', 'maxItems', 'uniqueItems', 'minContains', 'maxContains',\n // objects\n 'minProperties', 'maxProperties', 'patternProperties', 'propertyNames',\n 'dependentRequired', 'dependentSchemas', 'unevaluatedProperties',\n // annotations strict parsers reject\n 'default', 'examples', '$schema', '$comment', 'contentEncoding', 'contentMediaType',\n]);\n\n/**\n * Make a JSON Schema valid for STRICT function calling, recursively.\n *\n * Cerebras's strict tool path (like OpenAI's) requires every object property to\n * appear in `required` and `additionalProperties: false`. When a schema with\n * OPTIONAL properties is sent with `strict: true`, Cerebras silently disables\n * native tool parsing and the model emits the call as plain text into `content`\n * instead — so the call never reaches `tool_calls`. Listing every property as\n * required satisfies the strict parser; Standard Agents still validates the\n * actual call against the original Zod schema afterward, so genuinely-optional\n * arguments stay optional in practice.\n *\n * It also drops keywords the strict parser rejects (see\n * STRICT_UNSUPPORTED_KEYWORDS), which zod → JSON Schema emits by default.\n */\nfunction normalizeStrictJsonSchema(schema: unknown): unknown {\n if (Array.isArray(schema)) {\n return schema.map((item) => normalizeStrictJsonSchema(item));\n }\n if (!isRecord(schema)) {\n return schema;\n }\n\n const normalized: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(schema)) {\n // Strip keywords Cerebras's strict schema parser rejects (e.g. minLength).\n if (STRICT_UNSUPPORTED_KEYWORDS.has(key)) continue;\n\n if (key === 'properties' && isRecord(value)) {\n // Keys here are PROPERTY NAMES (data), not schema keywords — normalize each\n // property's subschema, but never treat a property name as a keyword to strip.\n const props: Record<string, unknown> = {};\n for (const [propName, propSchema] of Object.entries(value)) {\n props[propName] = normalizeStrictJsonSchema(propSchema);\n }\n normalized[key] = props;\n } else if (key === 'enum' || key === 'const') {\n // Allowed values are DATA, not subschemas — copy verbatim so an object-typed\n // member isn't mistaken for a nested schema and rewritten.\n normalized[key] = value;\n } else {\n normalized[key] = normalizeStrictJsonSchema(value);\n }\n }\n\n const properties = isRecord(normalized.properties) ? normalized.properties : undefined;\n const type = normalized.type;\n const isObjectSchema =\n type === 'object' || (Array.isArray(type) && type.includes('object')) || !!properties;\n\n if (isObjectSchema) {\n if (normalized.type === undefined) {\n normalized.type = 'object';\n }\n normalized.properties = properties || {};\n normalized.required = Object.keys(normalized.properties as Record<string, unknown>);\n normalized.additionalProperties = false;\n }\n\n return normalized;\n}\n\nfunction normalizeStrictToolParameters(\n parameters?: Record<string, unknown> | null\n): Record<string, unknown> {\n const base = isRecord(parameters) ? { ...parameters } : {};\n if (base.type === undefined) base.type = 'object';\n if (base.properties === undefined) base.properties = {};\n return normalizeStrictJsonSchema(base) as Record<string, unknown>;\n}\n\nexport function transformChatTool(tool: ProviderTool): CerebrasChatTool {\n const inputParams = tool.function.parameters as Record<string, unknown> | null | undefined;\n\n return {\n type: 'function',\n function: {\n name: tool.function.name,\n description: tool.function.description || undefined,\n parameters: normalizeStrictToolParameters(inputParams),\n strict: true,\n },\n };\n}\n\nexport function transformChatTools(tools: ProviderTool[]): CerebrasChatTool[] {\n return tools.map(transformChatTool);\n}\n\nexport function transformChatToolChoice(\n choice: ProviderRequest['toolChoice']\n): CerebrasChatToolChoice | undefined {\n if (choice === 'auto') return 'auto';\n if (choice === 'none') return 'none';\n if (choice === 'required') return 'required';\n if (typeof choice === 'object' && 'name' in choice) {\n return { type: 'function', function: { name: choice.name } };\n }\n return undefined;\n}\n\nexport function mapChatFinishReason(finishReason: string | null | undefined): ProviderFinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'tool_calls':\n return 'tool_calls';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content_filter';\n case 'error':\n return 'error';\n default:\n return 'stop';\n }\n}\n\nexport function extractChatToolCalls(\n toolCalls: CerebrasChatToolCall[] | undefined\n): ProviderToolCallPart[] | undefined {\n if (!toolCalls || toolCalls.length === 0) {\n return undefined;\n }\n\n return toolCalls.map((tc) => {\n let parsedArgs: Record<string, unknown> = {};\n try {\n parsedArgs = tc.function.arguments ? JSON.parse(tc.function.arguments) : {};\n } catch {\n parsedArgs = {};\n }\n\n return {\n id: tc.id,\n name: tc.function.name,\n arguments: parsedArgs,\n };\n });\n}\n\nexport function transformChatUsage(\n usage: CerebrasChatCompletionUsage | null | undefined,\n modelId?: string | null\n): ProviderUsage {\n if (!usage) {\n return {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n }\n\n const mapped: ProviderUsage = {\n promptTokens: usage.prompt_tokens || 0,\n completionTokens: usage.completion_tokens || 0,\n totalTokens: usage.total_tokens || 0,\n reasoningTokens: usage.completion_tokens_details?.reasoning_tokens,\n cachedTokens: usage.prompt_tokens_details?.cached_tokens,\n };\n\n const cost = calculateCerebrasUsageCost(modelId, mapped);\n if (cost !== undefined) {\n mapped.cost = cost;\n }\n\n return mapped;\n}\n\nexport function transformChatResponse(response: CerebrasChatCompletionResponse): ProviderResponse {\n const choice = response.choices?.[0];\n const message = choice?.message;\n const reasoning = message?.reasoning || null;\n\n return {\n content: message?.content || null,\n reasoning,\n reasoningDetails: reasoning ? [{ type: 'text', text: reasoning }] : undefined,\n toolCalls: extractChatToolCalls(message?.tool_calls),\n finishReason: mapChatFinishReason(choice?.finish_reason),\n usage: transformChatUsage(response.usage, response.model),\n metadata: {\n model: response.model,\n provider: 'cerebras',\n requestId: response.id,\n serviceTierUsed: response.service_tier_used,\n systemFingerprint: response.system_fingerprint,\n timeInfo: response.time_info,\n },\n };\n}\n\nexport interface CerebrasChatStreamState {\n model?: string;\n content: string;\n toolCalls: Map<number, { id: string; name: string; arguments: string }>;\n reasoningContent: string;\n hasContent: boolean;\n hasReasoning: boolean;\n finishReason: string | null;\n}\n\nexport function createChatStreamState(model?: string): CerebrasChatStreamState {\n return {\n model,\n content: '',\n toolCalls: new Map(),\n reasoningContent: '',\n hasContent: false,\n hasReasoning: false,\n finishReason: null,\n };\n}\n\nexport function processChatStreamChunk(\n chunk: CerebrasChatStreamChunk,\n state: CerebrasChatStreamState\n): ProviderStreamChunk[] {\n const chunks: ProviderStreamChunk[] = [];\n const choice = chunk.choices?.[0];\n const delta = choice?.delta;\n\n if (!delta && !choice?.finish_reason && !chunk.usage) {\n return chunks;\n }\n\n if (delta?.content) {\n state.hasContent = true;\n state.content += delta.content;\n chunks.push({ type: 'content-delta', delta: delta.content });\n }\n\n if (delta?.reasoning) {\n state.hasReasoning = true;\n state.reasoningContent += delta.reasoning;\n chunks.push({ type: 'reasoning-delta', delta: delta.reasoning });\n }\n\n if (delta?.tool_calls) {\n for (const tc of delta.tool_calls) {\n const existing = state.toolCalls.get(tc.index);\n\n if (tc.id && tc.function?.name) {\n state.toolCalls.set(tc.index, {\n id: tc.id,\n name: tc.function.name,\n arguments: tc.function.arguments || '',\n });\n chunks.push({\n type: 'tool-call-start',\n id: tc.id,\n name: tc.function.name,\n });\n } else if (existing && tc.function?.arguments) {\n existing.arguments += tc.function.arguments;\n chunks.push({\n type: 'tool-call-delta',\n id: existing.id,\n argumentsDelta: tc.function.arguments,\n });\n }\n }\n }\n\n if (choice?.finish_reason) {\n state.finishReason = choice.finish_reason;\n\n if (state.hasContent) {\n chunks.push({ type: 'content-done' });\n }\n\n if (state.hasReasoning) {\n chunks.push({ type: 'reasoning-done' });\n }\n\n for (const tc of state.toolCalls.values()) {\n let parsedArgs: Record<string, unknown> = {};\n try {\n parsedArgs = tc.arguments ? JSON.parse(tc.arguments) : {};\n } catch {\n parsedArgs = {};\n }\n\n chunks.push({\n type: 'tool-call-done',\n id: tc.id,\n arguments: parsedArgs,\n });\n }\n }\n\n if (chunk.usage) {\n const reasoningDetails: ProviderReasoningDetail[] | undefined = state.reasoningContent\n ? [{ type: 'text', text: state.reasoningContent }]\n : undefined;\n\n chunks.push({\n type: 'finish',\n finishReason: mapChatFinishReason(state.finishReason),\n usage: transformChatUsage(chunk.usage, chunk.model || state.model),\n reasoningDetails,\n });\n }\n\n return chunks;\n}\n\nexport function parseChatStreamEvent(jsonStr: string): CerebrasChatStreamChunk | null {\n try {\n return JSON.parse(jsonStr) as CerebrasChatStreamChunk;\n } catch {\n return null;\n }\n}\n\nexport async function* parseChatSSEStream(\n response: Response,\n state: CerebrasChatStreamState\n): AsyncIterable<ProviderStreamChunk> {\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error('No response body');\n }\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(':')) continue;\n if (!trimmed.startsWith('data: ')) continue;\n\n const data = trimmed.slice(6);\n if (data === '[DONE]') continue;\n\n const chunk = parseChatStreamEvent(data);\n if (!chunk) continue;\n\n for (const providerChunk of processChatStreamChunk(chunk, state)) {\n yield providerChunk;\n }\n }\n }\n\n if (buffer.trim()) {\n const trimmed = buffer.trim();\n if (trimmed.startsWith('data: ')) {\n const data = trimmed.slice(6);\n if (data !== '[DONE]') {\n const chunk = parseChatStreamEvent(data);\n if (chunk) {\n for (const providerChunk of processChatStreamChunk(chunk, state)) {\n yield providerChunk;\n }\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nfunction mapCerebrasReasoningEffort(\n model: string,\n level: number\n): 'none' | 'low' | 'medium' | 'high' | undefined {\n if (model.startsWith('gpt-oss-')) {\n if (level >= 100) return 'high';\n if (level >= 66) return 'medium';\n if (level >= 33) return 'low';\n if (level > 0) return 'low';\n return undefined;\n }\n\n if (model.startsWith('zai-glm-4.7')) {\n return level === 0 ? 'none' : undefined;\n }\n\n return undefined;\n}\n\nexport function buildChatParams(request: ProviderRequest): CerebrasChatCompletionRequest {\n const params: CerebrasChatCompletionRequest = {\n model: request.model,\n messages: transformChatMessages(request.messages),\n };\n\n if (request.tools && request.tools.length > 0) {\n params.tools = transformChatTools(request.tools);\n\n const toolChoice = transformChatToolChoice(request.toolChoice);\n if (toolChoice !== undefined) {\n params.tool_choice = toolChoice;\n }\n\n if (request.parallelToolCalls !== undefined) {\n params.parallel_tool_calls = request.parallelToolCalls;\n }\n }\n\n if (request.maxOutputTokens !== undefined) {\n params.max_completion_tokens = request.maxOutputTokens;\n }\n\n if (request.temperature !== undefined) {\n params.temperature = request.temperature;\n }\n\n if (request.topP !== undefined) {\n params.top_p = request.topP;\n }\n\n if (request.stopSequences && request.stopSequences.length > 0) {\n params.stop = request.stopSequences;\n }\n\n if (request.reasoning?.level !== undefined) {\n const effort = mapCerebrasReasoningEffort(request.model, request.reasoning.level);\n if (effort) {\n params.reasoning_effort = effort;\n }\n }\n\n if (request.responseFormat?.type === 'json') {\n if (request.responseFormat.schema) {\n params.response_format = {\n type: 'json_schema',\n json_schema: {\n name: 'response',\n schema: request.responseFormat.schema,\n strict: true,\n },\n };\n } else {\n params.response_format = { type: 'json_object' };\n }\n }\n\n if (request.providerOptions) {\n const { _metadata, ...safeOptions } = request.providerOptions as Record<string, unknown> & {\n _metadata?: unknown;\n };\n Object.assign(params, safeOptions);\n }\n\n return params;\n}\n\nexport function createChatErrorChunk(error: string, code?: string): ProviderStreamChunk {\n return { type: 'error', error, code };\n}\n\nfunction isBase64Like(str: string): boolean {\n if (str.startsWith('data:')) return true;\n if (str.length > 200) {\n const base64Pattern = /^[A-Za-z0-9+/]+=*$/;\n return base64Pattern.test(str.substring(0, 200));\n }\n return false;\n}\n\nfunction truncateBase64String(str: string, maxLength: number = 50): string {\n if (str.length <= maxLength) return str;\n const preview = str.substring(0, maxLength);\n return `${preview}...[truncated, ${str.length.toLocaleString()} chars]`;\n}\n\nexport function truncateChatBase64<T>(obj: T, maxLength: number = 50): T {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (typeof obj === 'string') {\n return (isBase64Like(obj) ? truncateBase64String(obj, maxLength) : obj) as T;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => truncateChatBase64(item, maxLength)) as T;\n }\n\n if (typeof obj === 'object') {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n result[key] = truncateChatBase64(value, maxLength);\n }\n return result as T;\n }\n\n return obj;\n}\n","import META_ICON_FILE from './vendor-icons/meta.svg';\nimport OPENAI_ICON_FILE from './vendor-icons/openai.svg';\nimport QWEN_ICON_FILE from './vendor-icons/qwen.svg';\nimport ZAI_ORG_ICON_FILE from './vendor-icons/zai-org.svg';\n\nconst CEREBRAS_ICON = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 64 64\" fill=\"none\">\n <defs>\n <linearGradient id=\"cerebras-gradient\" x1=\"12\" y1=\"10\" x2=\"52\" y2=\"54\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#F97316\" />\n <stop offset=\"1\" stop-color=\"#EA580C\" />\n </linearGradient>\n </defs>\n <rect width=\"64\" height=\"64\" rx=\"16\" fill=\"#111827\" />\n <path\n d=\"M43.5 20.5C40.8 17.8 36.7 16 32 16C23.2 16 16 23.2 16 32C16 40.8 23.2 48 32 48C36.7 48 40.8 46.2 43.5 43.5\"\n stroke=\"url(#cerebras-gradient)\"\n stroke-width=\"6\"\n stroke-linecap=\"round\"\n />\n <path\n d=\"M46.5 24.5L33.5 37.5L27.5 31.5\"\n stroke=\"url(#cerebras-gradient)\"\n stroke-width=\"5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n</svg>\n`;\n\nconst META_ICON = META_ICON_FILE;\nconst ALIBABA_ICON = QWEN_ICON_FILE;\nconst ZAI_ICON = ZAI_ORG_ICON_FILE;\nconst OPENAI_ICON = OPENAI_ICON_FILE;\n\nconst MODEL_ICON_PREFIXES: Array<{ prefix: string; icon: string }> = [\n { prefix: 'llama', icon: META_ICON },\n { prefix: 'gpt', icon: OPENAI_ICON },\n { prefix: 'zai', icon: ZAI_ICON },\n { prefix: 'qwen', icon: ALIBABA_ICON },\n];\n\nexport function svgToDataUri(svg: string): string {\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`;\n}\n\nfunction normalizeIcon(icon: string): string {\n if (icon.startsWith('data:') || icon.endsWith('.svg') || icon.includes('.svg?')) {\n return icon;\n }\n return svgToDataUri(icon);\n}\n\nexport function getCerebrasIconDataUri(): string {\n return svgToDataUri(CEREBRAS_ICON);\n}\n\nexport function getCerebrasModelIconDataUri(modelId?: string): string | undefined {\n if (!modelId) return undefined;\n const normalizedModelId = modelId.trim().toLowerCase();\n const icon = MODEL_ICON_PREFIXES.find(({ prefix }) => normalizedModelId.startsWith(prefix))?.icon;\n return icon ? normalizeIcon(icon) : undefined;\n}\n","import { z } from 'zod';\n\n/**\n * Cerebras provider options schema.\n *\n * The provider uses Cerebras' Chat Completions API directly. The schema\n * covers the common documented parameters and remains passthrough for\n * forward compatibility with new API fields.\n */\nexport const cerebrasProviderOptions = z.object({\n /**\n * Clear reasoning from prior turns.\n * Supported on `zai-glm-4.7`.\n */\n clear_thinking: z.boolean().optional(),\n\n /** Return token log probabilities. */\n logprobs: z.boolean().optional(),\n\n /** Number of top logprobs to return when `logprobs` is enabled. */\n top_logprobs: z.number().int().min(0).max(20).optional(),\n\n /** Sampling seed for best-effort determinism. */\n seed: z.number().int().optional(),\n\n /** End-user identifier for abuse monitoring. */\n user: z.string().optional(),\n\n /**\n * Request prioritization.\n * `priority` and some other tiers may require dedicated/private access.\n */\n service_tier: z.enum(['priority', 'default', 'auto', 'flex']).optional(),\n\n /**\n * Override the model's reasoning behavior directly.\n * The provider also maps Standard Agents `reasoning.level` automatically.\n */\n reasoning_effort: z.enum(['none', 'low', 'medium', 'high']).optional(),\n}).passthrough();\n\nexport type CerebrasProviderOptions = z.infer<typeof cerebrasProviderOptions>;\n","import type { ProviderFactoryConfig, ProviderFactoryWithOptions } from '@standardagents/spec';\nimport { CerebrasProvider } from './CerebrasProvider';\nimport { cerebrasProviderOptions } from './providerOptions';\n\n/**\n * Cerebras provider factory for Standard Agents.\n *\n * Uses Cerebras' OpenAI-compatible Chat Completions API with typed\n * providerOptions for Cerebras-specific request parameters.\n */\nexport const cerebras: ProviderFactoryWithOptions<typeof cerebrasProviderOptions> =\n Object.assign(\n (config: ProviderFactoryConfig) => new CerebrasProvider(config),\n { providerOptions: cerebrasProviderOptions }\n );\n\nexport { cerebrasProviderOptions, type CerebrasProviderOptions } from './providerOptions';\nexport { CerebrasProvider } from './CerebrasProvider';\nexport {\n calculateCerebrasUsageCost,\n getCerebrasModelPricing,\n type CerebrasModelPricing,\n} from './pricing';\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/CerebrasProvider.ts","../src/chat-completions-transformers.ts","../src/icons.ts","../src/providerOptions.ts","../src/index.ts"],"sourcesContent":["import type {\n LLMProviderInterface as Provider,\n ProviderFactoryConfig,\n ProviderRequest,\n ProviderResponse,\n ProviderStreamChunk,\n ModelCapabilities,\n ProviderModelInfo,\n InspectedRequest,\n} from '@standardagents/spec';\nimport { ProviderError, resolveRequestReasoningLevels } from '@standardagents/spec';\nimport {\n buildChatParams,\n transformChatResponse,\n createChatStreamState,\n parseChatSSEStream,\n createChatErrorChunk,\n truncateChatBase64,\n} from './chat-completions-transformers';\nimport { getCerebrasIconDataUri, getCerebrasModelIconDataUri } from './icons';\n\nexport { ProviderError };\n\ninterface CerebrasPublicModelInfo {\n id: string;\n name?: string;\n description?: string;\n input_modalities?: string[];\n output_modalities?: string[];\n context_length?: number;\n max_output_length?: number;\n pricing?: {\n prompt?: string;\n completion?: string;\n };\n supported_sampling_parameters?: string[];\n supported_features?: string[];\n openrouter?: {\n slug?: string;\n };\n}\n\nconst STATIC_MODELS: Array<CerebrasPublicModelInfo & {\n capabilities?: ModelCapabilities;\n}> = [\n {\n id: 'llama3.1-8b',\n name: 'Llama 3.1 8B',\n description: 'Fast general-purpose Cerebras model.',\n input_modalities: ['text'],\n output_modalities: ['text'],\n context_length: 32768,\n max_output_length: 8192,\n supported_features: ['tools', 'json_mode', 'structured_outputs'],\n },\n {\n id: 'qwen-3-235b-a22b-instruct-2507',\n name: 'Qwen 3 235B Instruct',\n description: 'Large instruct model with tool use and structured outputs.',\n input_modalities: ['text'],\n output_modalities: ['text'],\n context_length: 131072,\n max_output_length: 40960,\n supported_features: ['tools', 'json_mode', 'structured_outputs'],\n },\n {\n id: 'gpt-oss-120b',\n name: 'GPT OSS 120B',\n description: 'Large reasoning-focused Cerebras model.',\n input_modalities: ['text'],\n output_modalities: ['text'],\n context_length: 128000,\n max_output_length: 64000,\n supported_features: ['tools', 'json_mode', 'structured_outputs'],\n capabilities: {\n supportsImages: false,\n supportsToolCalls: true,\n supportsStreaming: true,\n supportsJsonMode: true,\n maxContextTokens: 128000,\n maxOutputTokens: 64000,\n reasoningLevels: { 0: 'low', 33: 'low', 66: 'medium', 100: 'high' },\n },\n },\n {\n id: 'zai-glm-4.7',\n name: 'Z.ai GLM 4.7',\n description: 'Preview Cerebras reasoning model with optional preserved thinking.',\n input_modalities: ['text'],\n output_modalities: ['text'],\n context_length: 128000,\n max_output_length: 64000,\n supported_features: ['tools', 'json_mode', 'structured_outputs'],\n capabilities: {\n supportsImages: false,\n supportsToolCalls: true,\n supportsStreaming: true,\n supportsJsonMode: true,\n maxContextTokens: 128000,\n maxOutputTokens: 64000,\n reasoningLevels: { 0: 'none', 100: null },\n },\n },\n];\n\nexport class CerebrasProvider implements Provider {\n readonly name = 'cerebras';\n readonly specificationVersion = '1' as const;\n\n private config: ProviderFactoryConfig;\n\n private static modelsCache: CerebrasPublicModelInfo[] | null = null;\n private static modelsCacheTime = 0;\n private static readonly CACHE_TTL = 5 * 60 * 1000;\n\n constructor(config: ProviderFactoryConfig) {\n this.config = config;\n }\n\n supportsModel(_modelId: string): boolean {\n return true;\n }\n\n getIcon(modelId?: string): string {\n return getCerebrasModelIconDataUri(modelId) || getCerebrasIconDataUri();\n }\n\n private async fetchModelsWithCache(): Promise<CerebrasPublicModelInfo[]> {\n const now = Date.now();\n\n if (\n CerebrasProvider.modelsCache &&\n now - CerebrasProvider.modelsCacheTime < CerebrasProvider.CACHE_TTL\n ) {\n return CerebrasProvider.modelsCache;\n }\n\n const response = await fetch('https://api.cerebras.ai/public/v1/models?format=openrouter');\n if (!response.ok) {\n throw new Error(`Cerebras public models API error: ${response.status}`);\n }\n\n const data = await response.json() as { data?: CerebrasPublicModelInfo[] };\n const merged = new Map<string, CerebrasPublicModelInfo>();\n\n for (const model of STATIC_MODELS) {\n merged.set(model.id, model);\n }\n\n for (const model of data.data || []) {\n merged.set(model.id, { ...merged.get(model.id), ...model });\n }\n\n CerebrasProvider.modelsCache = Array.from(merged.values());\n CerebrasProvider.modelsCacheTime = now;\n\n return CerebrasProvider.modelsCache;\n }\n\n private mapModelCapabilities(model: CerebrasPublicModelInfo): ModelCapabilities {\n const staticModel = STATIC_MODELS.find((candidate) => candidate.id === model.id);\n if (staticModel?.capabilities) {\n return { ...staticModel.capabilities };\n }\n\n const features = new Set(model.supported_features || []);\n const inputModalities = new Set(model.input_modalities || []);\n\n return {\n supportsImages: inputModalities.has('image'),\n supportsToolCalls: features.has('tools'),\n supportsStreaming: true,\n supportsJsonMode: features.has('json_mode') || features.has('structured_outputs'),\n maxContextTokens: model.context_length,\n maxOutputTokens: model.max_output_length,\n };\n }\n\n async getModelCapabilities(modelId: string): Promise<ModelCapabilities | null> {\n const staticModel = STATIC_MODELS.find(model => model.id === modelId);\n if (staticModel?.capabilities) return { ...staticModel.capabilities };\n try {\n const models = await this.fetchModelsWithCache();\n const model = models.find((candidate) => candidate.id === modelId);\n if (!model) return null;\n return this.mapModelCapabilities(model);\n } catch (error) {\n console.error(`Failed to fetch capabilities for Cerebras model ${modelId}:`, error);\n return null;\n }\n }\n\n private mapToProviderModelInfo(model: CerebrasPublicModelInfo): ProviderModelInfo {\n return {\n id: model.id,\n name: model.name || model.id,\n description: model.description,\n contextLength: model.context_length,\n iconId: this.getIcon(model.id),\n slug: model.openrouter?.slug || model.id,\n };\n }\n\n async getModels(filter?: string): Promise<ProviderModelInfo[]> {\n try {\n let models = (await this.fetchModelsWithCache())\n .map((model) => this.mapToProviderModelInfo(model))\n .sort((a, b) => a.name.localeCompare(b.name));\n\n if (filter) {\n const lowerFilter = filter.toLowerCase();\n models = models.filter(\n (model) =>\n model.id.toLowerCase().includes(lowerFilter) ||\n model.name.toLowerCase().includes(lowerFilter) ||\n (model.description && model.description.toLowerCase().includes(lowerFilter))\n );\n }\n\n return models;\n } catch (error) {\n console.error('Failed to fetch models from Cerebras:', error);\n return STATIC_MODELS.map((model) => this.mapToProviderModelInfo(model));\n }\n }\n\n async generate(request: ProviderRequest): Promise<ProviderResponse> {\n const apiKey = this.config.apiKey;\n const baseUrl = this.config.baseUrl || 'https://api.cerebras.ai/v1';\n\n try {\n const response = await fetch(`${baseUrl}/chat/completions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`,\n },\n body: JSON.stringify(buildChatParams(request, await resolveRequestReasoningLevels(request, model => this.getModelCapabilities(model)))),\n signal: request.signal,\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorMessage = `Cerebras API error: ${response.status}`;\n try {\n const errorJson = JSON.parse(errorText) as {\n error?: { message?: string };\n message?: string;\n };\n errorMessage = errorJson.error?.message || errorJson.message || errorMessage;\n } catch {\n errorMessage = errorText || errorMessage;\n }\n\n throw this.toHttpProviderError(errorMessage, response.status, response.headers);\n }\n\n const data = await response.json();\n return transformChatResponse(data);\n } catch (error) {\n throw this.toProviderError(error);\n }\n }\n\n async stream(request: ProviderRequest): Promise<AsyncIterable<ProviderStreamChunk>> {\n const self = this;\n const apiKey = this.config.apiKey;\n const baseUrl = this.config.baseUrl || 'https://api.cerebras.ai/v1';\n\n try {\n const response = await fetch(`${baseUrl}/chat/completions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`,\n },\n body: JSON.stringify({\n ...buildChatParams(request, await resolveRequestReasoningLevels(request, model => this.getModelCapabilities(model))),\n stream: true,\n stream_options: { include_usage: true },\n }),\n signal: request.signal,\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorMessage = `Cerebras API error: ${response.status}`;\n try {\n const errorJson = JSON.parse(errorText) as {\n error?: { message?: string };\n message?: string;\n };\n errorMessage = errorJson.error?.message || errorJson.message || errorMessage;\n } catch {\n errorMessage = errorText || errorMessage;\n }\n\n throw this.toHttpProviderError(errorMessage, response.status, response.headers);\n }\n\n return {\n async *[Symbol.asyncIterator]() {\n const state = createChatStreamState(request.model);\n\n try {\n for await (const chunk of parseChatSSEStream(response, state)) {\n yield chunk;\n }\n } catch (error) {\n const providerError = self.toProviderError(error);\n yield createChatErrorChunk(providerError.message, providerError.code);\n }\n },\n };\n } catch (error) {\n throw this.toProviderError(error);\n }\n }\n\n private toProviderError(error: unknown): ProviderError {\n if (error instanceof ProviderError) {\n return error;\n }\n\n if (error instanceof Error) {\n const anyError = error as Error & {\n status?: number;\n statusCode?: number;\n headers?: Record<string, string>;\n code?: string;\n };\n\n const status = anyError.status || anyError.statusCode;\n const retryAfter = anyError.headers?.['retry-after']\n ? parseInt(anyError.headers['retry-after'], 10)\n : undefined;\n\n if (status === 429) {\n return new ProviderError(error.message, 'rate_limit', status, retryAfter);\n }\n if (status === 401 || status === 403) {\n return new ProviderError(error.message, 'auth_error', status);\n }\n if (status === 400) {\n return new ProviderError(error.message, 'invalid_request', status);\n }\n if (status && status >= 500) {\n return new ProviderError(error.message, 'server_error', status);\n }\n if (error.name === 'AbortError' || anyError.code === 'ETIMEDOUT') {\n return new ProviderError(error.message, 'timeout');\n }\n\n return new ProviderError(error.message, 'unknown', status);\n }\n\n return new ProviderError(String(error), 'unknown');\n }\n\n private toHttpProviderError(\n message: string,\n status: number,\n headers?: Headers\n ): ProviderError {\n const retryAfterHeader = headers?.get('retry-after');\n const retryAfter = retryAfterHeader ? parseInt(retryAfterHeader, 10) : undefined;\n\n if (status === 429) {\n return new ProviderError(message, 'rate_limit', status, retryAfter);\n }\n if (status === 401 || status === 403) {\n return new ProviderError(message, 'auth_error', status);\n }\n if (status === 400) {\n return new ProviderError(message, 'invalid_request', status);\n }\n if (status >= 500) {\n return new ProviderError(message, 'server_error', status);\n }\n\n return new ProviderError(message, 'unknown', status);\n }\n\n async inspectRequest(request: ProviderRequest): Promise<InspectedRequest> {\n const params = buildChatParams(request, await resolveRequestReasoningLevels(request, model => this.getModelCapabilities(model)));\n\n return {\n body: truncateChatBase64(params as Record<string, unknown>),\n messagesPath: 'messages',\n metadata: {\n endpoint: 'POST /v1/chat/completions',\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n };\n }\n}\n","import { mapReasoningLevel } from '@standardagents/spec';\nimport type {\n ProviderRequest,\n ProviderResponse,\n ProviderMessage,\n ProviderTool,\n ProviderToolCallPart,\n ProviderFinishReason,\n ProviderUsage,\n ProviderStreamChunk,\n ContentPart,\n ProviderReasoningDetail,\n} from '@standardagents/spec';\nimport { calculateCerebrasUsageCost } from './pricing';\n\nexport type CerebrasChatContentPart =\n | { type: 'text'; text: string }\n | { type: 'image_url'; image_url: { url: string; detail?: 'auto' | 'low' | 'high' } };\n\nexport type CerebrasChatMessage =\n | { role: 'system'; content: string }\n | { role: 'user'; content: string | CerebrasChatContentPart[] }\n | {\n role: 'assistant';\n content?: string | null;\n tool_calls?: CerebrasChatToolCall[];\n reasoning?: string | null;\n }\n | { role: 'tool'; tool_call_id: string; content: string };\n\nexport interface CerebrasChatToolCall {\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n}\n\nexport interface CerebrasChatTool {\n type: 'function';\n function: {\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n strict?: boolean;\n };\n}\n\nexport type CerebrasChatToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\nexport interface CerebrasChatCompletionRequest {\n model: string;\n messages: CerebrasChatMessage[];\n tools?: CerebrasChatTool[];\n tool_choice?: CerebrasChatToolChoice;\n parallel_tool_calls?: boolean;\n max_completion_tokens?: number;\n temperature?: number;\n top_p?: number;\n stop?: string[];\n stream?: boolean;\n stream_options?: { include_usage?: boolean };\n reasoning_effort?: 'none' | 'low' | 'medium' | 'high';\n clear_thinking?: boolean;\n logprobs?: boolean;\n top_logprobs?: number;\n seed?: number;\n user?: string;\n service_tier?: 'priority' | 'default' | 'auto' | 'flex';\n response_format?:\n | { type: 'json_object' }\n | { type: 'json_schema'; json_schema: { name: string; schema: Record<string, unknown>; strict?: boolean } };\n [key: string]: unknown;\n}\n\nexport interface CerebrasChatCompletionUsage {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n prompt_tokens_details?: {\n cached_tokens?: number;\n };\n completion_tokens_details?: {\n reasoning_tokens?: number;\n accepted_prediction_tokens?: number;\n rejected_prediction_tokens?: number;\n };\n}\n\nexport interface CerebrasChatCompletionResponse {\n id: string;\n model?: string;\n service_tier_used?: string;\n system_fingerprint?: string;\n time_info?: Record<string, unknown>;\n choices: Array<{\n index: number;\n message: {\n role: 'assistant';\n content: string | null;\n reasoning?: string | null;\n tool_calls?: CerebrasChatToolCall[];\n };\n finish_reason: string;\n }>;\n usage?: CerebrasChatCompletionUsage;\n}\n\nexport interface CerebrasChatStreamChunk {\n id?: string;\n model?: string;\n choices?: Array<{\n index: number;\n delta: {\n role?: string;\n content?: string | null;\n reasoning?: string | null;\n tool_calls?: Array<{\n index: number;\n id?: string;\n type?: 'function';\n function?: {\n name?: string;\n arguments?: string;\n };\n }>;\n };\n finish_reason?: string | null;\n }>;\n usage?: CerebrasChatCompletionUsage;\n}\n\nexport function transformChatContentPart(part: ContentPart): CerebrasChatContentPart {\n if (part.type === 'text') {\n return { type: 'text', text: part.text };\n }\n\n if (part.type === 'image') {\n const data = part.data || '';\n const imageUrl = data.startsWith('data:')\n ? data\n : `data:${part.mediaType || 'image/png'};base64,${data}`;\n\n return {\n type: 'image_url',\n image_url: {\n url: imageUrl,\n detail: part.detail || 'auto',\n },\n };\n }\n\n if (part.type === 'image_url') {\n return {\n type: 'image_url',\n image_url: {\n url: part.image_url?.url || '',\n detail: part.image_url?.detail || 'auto',\n },\n };\n }\n\n return {\n type: 'text',\n text: `[File: ${part.filename || 'file'}]`,\n };\n}\n\nexport function transformChatMessageContent(\n content: string | ContentPart[]\n): string | CerebrasChatContentPart[] {\n if (typeof content === 'string') {\n return content;\n }\n return content.map(transformChatContentPart);\n}\n\nexport function transformChatSystemMessage(\n msg: ProviderMessage & { role: 'system' }\n): CerebrasChatMessage {\n return {\n role: 'system',\n content: msg.content,\n };\n}\n\nexport function transformChatUserMessage(\n msg: ProviderMessage & { role: 'user' }\n): CerebrasChatMessage {\n return {\n role: 'user',\n content: transformChatMessageContent(msg.content),\n };\n}\n\nexport function transformChatAssistantMessage(\n msg: ProviderMessage & { role: 'assistant' }\n): CerebrasChatMessage {\n const message: CerebrasChatMessage & { role: 'assistant' } = {\n role: 'assistant',\n content: msg.content || null,\n };\n\n if (msg.toolCalls && msg.toolCalls.length > 0) {\n message.tool_calls = msg.toolCalls.map((tc) => ({\n id: tc.id,\n type: 'function',\n function: {\n name: tc.name,\n arguments: typeof tc.arguments === 'string'\n ? tc.arguments\n : JSON.stringify(tc.arguments),\n },\n }));\n }\n\n if (msg.reasoning) {\n message.reasoning = msg.reasoning;\n }\n\n return message;\n}\n\nexport type CerebrasChatToolMessageResult = {\n toolMessage: CerebrasChatMessage & { role: 'tool' };\n syntheticUserMessage?: CerebrasChatMessage & { role: 'user' };\n};\n\nexport function transformChatToolMessage(\n msg: ProviderMessage & { role: 'tool' }\n): CerebrasChatToolMessageResult {\n const content = Array.isArray(msg.content)\n ? msg.content.filter(part => part.type === 'text').map(part => part.text).join('\\n')\n : msg.content;\n let output: string;\n\n if (typeof content === 'string') {\n output = content;\n } else if ('type' in content) {\n if (content.type === 'text') {\n output = content.text;\n } else if (content.type === 'error') {\n output = `Error: ${content.error}`;\n } else {\n output = JSON.stringify(content);\n }\n } else {\n output = JSON.stringify(content);\n }\n\n const imageAttachments = (Array.isArray(msg.content) ? msg.content.filter(part => (part.type === 'image' && Boolean(part.data)) || part.type === 'image_url') : []);\n const toolMessage: CerebrasChatMessage & { role: 'tool' } = {\n role: 'tool',\n tool_call_id: msg.toolCallId,\n content: output || (imageAttachments.length > 0 ? 'Success' : ''),\n };\n\n if (imageAttachments.length === 0) {\n return { toolMessage };\n }\n\n const imageContent: CerebrasChatContentPart[] = [];\n const toolName = msg.toolName || 'the tool';\n const isSingle = imageAttachments.length === 1;\n const descriptor = isSingle ? 'the file' : `${imageAttachments.length} files`;\n const verb = isSingle ? 'is' : 'are';\n\n imageContent.push({\n type: 'text',\n text: `Here ${verb} ${descriptor} from ${toolName}:`,\n });\n\n for (const attachment of imageAttachments) {\n imageContent.push(transformChatContentPart(attachment));\n }\n\n return {\n toolMessage,\n syntheticUserMessage: {\n role: 'user',\n content: imageContent,\n },\n };\n}\n\nexport function transformChatMessages(messages: ProviderMessage[]): CerebrasChatMessage[] {\n const result: CerebrasChatMessage[] = [];\n\n for (const msg of messages) {\n switch (msg.role) {\n case 'system':\n result.push(transformChatSystemMessage(msg));\n break;\n case 'user':\n result.push(transformChatUserMessage(msg));\n break;\n case 'assistant':\n result.push(transformChatAssistantMessage(msg));\n break;\n case 'tool': {\n const { toolMessage, syntheticUserMessage } = transformChatToolMessage(msg);\n result.push(toolMessage);\n if (syntheticUserMessage) {\n result.push(syntheticUserMessage);\n }\n break;\n }\n }\n }\n\n return result;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\n/**\n * JSON Schema validation / annotation keywords Cerebras's strict function-calling\n * parser rejects — e.g. `Invalid fields for schema with types ['string']:\n * {'minLength'}`. Zod → JSON Schema emits these freely, so we strip them before\n * sending. Semantic keywords the model actually relies on — type, enum, const,\n * description, properties, items, anyOf, $ref — are kept.\n */\nconst STRICT_UNSUPPORTED_KEYWORDS = new Set<string>([\n // strings\n 'minLength', 'maxLength', 'pattern', 'format',\n // numbers / integers\n 'minimum', 'maximum', 'exclusiveMinimum', 'exclusiveMaximum', 'multipleOf',\n // arrays\n 'minItems', 'maxItems', 'uniqueItems', 'minContains', 'maxContains',\n // objects\n 'minProperties', 'maxProperties', 'patternProperties', 'propertyNames',\n 'dependentRequired', 'dependentSchemas', 'unevaluatedProperties',\n // annotations strict parsers reject\n 'default', 'examples', '$schema', '$comment', 'contentEncoding', 'contentMediaType',\n]);\n\n/**\n * Make a JSON Schema valid for STRICT function calling, recursively.\n *\n * Cerebras's strict tool path (like OpenAI's) requires every object property to\n * appear in `required` and `additionalProperties: false`. When a schema with\n * OPTIONAL properties is sent with `strict: true`, Cerebras silently disables\n * native tool parsing and the model emits the call as plain text into `content`\n * instead — so the call never reaches `tool_calls`. Listing every property as\n * required satisfies the strict parser; Standard Agents still validates the\n * actual call against the original Zod schema afterward, so genuinely-optional\n * arguments stay optional in practice.\n *\n * It also drops keywords the strict parser rejects (see\n * STRICT_UNSUPPORTED_KEYWORDS), which zod → JSON Schema emits by default.\n */\nfunction normalizeStrictJsonSchema(schema: unknown): unknown {\n if (Array.isArray(schema)) {\n return schema.map((item) => normalizeStrictJsonSchema(item));\n }\n if (!isRecord(schema)) {\n return schema;\n }\n\n const normalized: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(schema)) {\n // Strip keywords Cerebras's strict schema parser rejects (e.g. minLength).\n if (STRICT_UNSUPPORTED_KEYWORDS.has(key)) continue;\n\n if (key === 'properties' && isRecord(value)) {\n // Keys here are PROPERTY NAMES (data), not schema keywords — normalize each\n // property's subschema, but never treat a property name as a keyword to strip.\n const props: Record<string, unknown> = {};\n for (const [propName, propSchema] of Object.entries(value)) {\n props[propName] = normalizeStrictJsonSchema(propSchema);\n }\n normalized[key] = props;\n } else if (key === 'enum' || key === 'const') {\n // Allowed values are DATA, not subschemas — copy verbatim so an object-typed\n // member isn't mistaken for a nested schema and rewritten.\n normalized[key] = value;\n } else {\n normalized[key] = normalizeStrictJsonSchema(value);\n }\n }\n\n const properties = isRecord(normalized.properties) ? normalized.properties : undefined;\n const type = normalized.type;\n const isObjectSchema =\n type === 'object' || (Array.isArray(type) && type.includes('object')) || !!properties;\n\n if (isObjectSchema) {\n if (normalized.type === undefined) {\n normalized.type = 'object';\n }\n normalized.properties = properties || {};\n normalized.required = Object.keys(normalized.properties as Record<string, unknown>);\n normalized.additionalProperties = false;\n }\n\n return normalized;\n}\n\nfunction normalizeStrictToolParameters(\n parameters?: Record<string, unknown> | null\n): Record<string, unknown> {\n const base = isRecord(parameters) ? { ...parameters } : {};\n if (base.type === undefined) base.type = 'object';\n if (base.properties === undefined) base.properties = {};\n return normalizeStrictJsonSchema(base) as Record<string, unknown>;\n}\n\nexport function transformChatTool(tool: ProviderTool): CerebrasChatTool {\n const inputParams = tool.function.parameters as Record<string, unknown> | null | undefined;\n\n return {\n type: 'function',\n function: {\n name: tool.function.name,\n description: tool.function.description || undefined,\n parameters: normalizeStrictToolParameters(inputParams),\n strict: true,\n },\n };\n}\n\nexport function transformChatTools(tools: ProviderTool[]): CerebrasChatTool[] {\n return tools.map(transformChatTool);\n}\n\nexport function transformChatToolChoice(\n choice: ProviderRequest['toolChoice']\n): CerebrasChatToolChoice | undefined {\n if (choice === 'auto') return 'auto';\n if (choice === 'none') return 'none';\n if (choice === 'required') return 'required';\n if (typeof choice === 'object' && 'name' in choice) {\n return { type: 'function', function: { name: choice.name } };\n }\n return undefined;\n}\n\nexport function mapChatFinishReason(finishReason: string | null | undefined): ProviderFinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'tool_calls':\n return 'tool_calls';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content_filter';\n case 'error':\n return 'error';\n default:\n return 'stop';\n }\n}\n\nexport function extractChatToolCalls(\n toolCalls: CerebrasChatToolCall[] | undefined\n): ProviderToolCallPart[] | undefined {\n if (!toolCalls || toolCalls.length === 0) {\n return undefined;\n }\n\n return toolCalls.map((tc) => {\n let parsedArgs: Record<string, unknown> = {};\n try {\n parsedArgs = tc.function.arguments ? JSON.parse(tc.function.arguments) : {};\n } catch {\n parsedArgs = {};\n }\n\n return {\n id: tc.id,\n name: tc.function.name,\n arguments: parsedArgs,\n };\n });\n}\n\nexport function transformChatUsage(\n usage: CerebrasChatCompletionUsage | null | undefined,\n modelId?: string | null\n): ProviderUsage {\n if (!usage) {\n return {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n }\n\n const mapped: ProviderUsage = {\n promptTokens: usage.prompt_tokens || 0,\n completionTokens: usage.completion_tokens || 0,\n totalTokens: usage.total_tokens || 0,\n reasoningTokens: usage.completion_tokens_details?.reasoning_tokens,\n cachedTokens: usage.prompt_tokens_details?.cached_tokens,\n };\n\n const cost = calculateCerebrasUsageCost(modelId, mapped);\n if (cost !== undefined) {\n mapped.cost = cost;\n }\n\n return mapped;\n}\n\nexport function transformChatResponse(response: CerebrasChatCompletionResponse): ProviderResponse {\n const choice = response.choices?.[0];\n const message = choice?.message;\n const reasoning = message?.reasoning || null;\n\n return {\n content: message?.content || null,\n reasoning,\n reasoningDetails: reasoning ? [{ type: 'text', text: reasoning }] : undefined,\n toolCalls: extractChatToolCalls(message?.tool_calls),\n finishReason: mapChatFinishReason(choice?.finish_reason),\n usage: transformChatUsage(response.usage, response.model),\n metadata: {\n model: response.model,\n provider: 'cerebras',\n requestId: response.id,\n serviceTierUsed: response.service_tier_used,\n systemFingerprint: response.system_fingerprint,\n timeInfo: response.time_info,\n },\n };\n}\n\nexport interface CerebrasChatStreamState {\n model?: string;\n content: string;\n toolCalls: Map<number, { id: string; name: string; arguments: string }>;\n reasoningContent: string;\n hasContent: boolean;\n hasReasoning: boolean;\n finishReason: string | null;\n}\n\nexport function createChatStreamState(model?: string): CerebrasChatStreamState {\n return {\n model,\n content: '',\n toolCalls: new Map(),\n reasoningContent: '',\n hasContent: false,\n hasReasoning: false,\n finishReason: null,\n };\n}\n\nexport function processChatStreamChunk(\n chunk: CerebrasChatStreamChunk,\n state: CerebrasChatStreamState\n): ProviderStreamChunk[] {\n const chunks: ProviderStreamChunk[] = [];\n const choice = chunk.choices?.[0];\n const delta = choice?.delta;\n\n if (!delta && !choice?.finish_reason && !chunk.usage) {\n return chunks;\n }\n\n if (delta?.content) {\n state.hasContent = true;\n state.content += delta.content;\n chunks.push({ type: 'content-delta', delta: delta.content });\n }\n\n if (delta?.reasoning) {\n state.hasReasoning = true;\n state.reasoningContent += delta.reasoning;\n chunks.push({ type: 'reasoning-delta', delta: delta.reasoning });\n }\n\n if (delta?.tool_calls) {\n for (const tc of delta.tool_calls) {\n const existing = state.toolCalls.get(tc.index);\n\n if (tc.id && tc.function?.name) {\n state.toolCalls.set(tc.index, {\n id: tc.id,\n name: tc.function.name,\n arguments: tc.function.arguments || '',\n });\n chunks.push({\n type: 'tool-call-start',\n id: tc.id,\n name: tc.function.name,\n });\n } else if (existing && tc.function?.arguments) {\n existing.arguments += tc.function.arguments;\n chunks.push({\n type: 'tool-call-delta',\n id: existing.id,\n argumentsDelta: tc.function.arguments,\n });\n }\n }\n }\n\n if (choice?.finish_reason) {\n state.finishReason = choice.finish_reason;\n\n if (state.hasContent) {\n chunks.push({ type: 'content-done' });\n }\n\n if (state.hasReasoning) {\n chunks.push({ type: 'reasoning-done' });\n }\n\n for (const tc of state.toolCalls.values()) {\n let parsedArgs: Record<string, unknown> = {};\n try {\n parsedArgs = tc.arguments ? JSON.parse(tc.arguments) : {};\n } catch {\n parsedArgs = {};\n }\n\n chunks.push({\n type: 'tool-call-done',\n id: tc.id,\n arguments: parsedArgs,\n });\n }\n }\n\n if (chunk.usage) {\n const reasoningDetails: ProviderReasoningDetail[] | undefined = state.reasoningContent\n ? [{ type: 'text', text: state.reasoningContent }]\n : undefined;\n\n chunks.push({\n type: 'finish',\n finishReason: mapChatFinishReason(state.finishReason),\n usage: transformChatUsage(chunk.usage, chunk.model || state.model),\n reasoningDetails,\n });\n }\n\n return chunks;\n}\n\nexport function parseChatStreamEvent(jsonStr: string): CerebrasChatStreamChunk | null {\n try {\n return JSON.parse(jsonStr) as CerebrasChatStreamChunk;\n } catch {\n return null;\n }\n}\n\nexport async function* parseChatSSEStream(\n response: Response,\n state: CerebrasChatStreamState\n): AsyncIterable<ProviderStreamChunk> {\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error('No response body');\n }\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(':')) continue;\n if (!trimmed.startsWith('data: ')) continue;\n\n const data = trimmed.slice(6);\n if (data === '[DONE]') continue;\n\n const chunk = parseChatStreamEvent(data);\n if (!chunk) continue;\n\n for (const providerChunk of processChatStreamChunk(chunk, state)) {\n yield providerChunk;\n }\n }\n }\n\n if (buffer.trim()) {\n const trimmed = buffer.trim();\n if (trimmed.startsWith('data: ')) {\n const data = trimmed.slice(6);\n if (data !== '[DONE]') {\n const chunk = parseChatStreamEvent(data);\n if (chunk) {\n for (const providerChunk of processChatStreamChunk(chunk, state)) {\n yield providerChunk;\n }\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function buildChatParams(request: ProviderRequest, reasoningLevels: Record<number, string | null> = request.model.startsWith('gpt-oss-') ? { 0: 'low', 33: 'low', 66: 'medium', 100: 'high' } : request.model.startsWith('zai-glm-4.7') ? { 0: 'none', 100: null } : {}): CerebrasChatCompletionRequest {\n const params: CerebrasChatCompletionRequest = {\n model: request.model,\n messages: transformChatMessages(request.messages),\n };\n\n if (request.tools && request.tools.length > 0) {\n params.tools = transformChatTools(request.tools);\n\n const toolChoice = transformChatToolChoice(request.toolChoice);\n if (toolChoice !== undefined) {\n params.tool_choice = toolChoice;\n }\n\n if (request.parallelToolCalls !== undefined) {\n params.parallel_tool_calls = request.parallelToolCalls;\n }\n }\n\n if (request.maxOutputTokens !== undefined) {\n params.max_completion_tokens = request.maxOutputTokens;\n }\n\n if (request.temperature !== undefined) {\n params.temperature = request.temperature;\n }\n\n if (request.topP !== undefined) {\n params.top_p = request.topP;\n }\n\n if (request.stopSequences && request.stopSequences.length > 0) {\n params.stop = request.stopSequences;\n }\n\n if (request.responseFormat?.type === 'json') {\n if (request.responseFormat.schema) {\n params.response_format = {\n type: 'json_schema',\n json_schema: {\n name: 'response',\n schema: request.responseFormat.schema,\n strict: true,\n },\n };\n } else {\n params.response_format = { type: 'json_object' };\n }\n }\n\n if (request.providerOptions) {\n const { _metadata, ...safeOptions } = request.providerOptions as Record<string, unknown> & {\n _metadata?: unknown;\n };\n Object.assign(params, safeOptions);\n }\n\n if (request.reasoning?.level !== undefined) {\n delete params.effort;\n delete params.reasoningEffort;\n delete params.reasoning_effort;\n const nestedReasoning = params.reasoning;\n if (nestedReasoning && typeof nestedReasoning === 'object' && 'effort' in nestedReasoning) {\n const { effort, ...otherReasoning } = nestedReasoning;\n params.reasoning = otherReasoning;\n }\n const effort = mapReasoningLevel(request.reasoning.level, request.reasoning.levels ?? reasoningLevels);\n if (effort === 'none' || effort === 'low' || effort === 'medium' || effort === 'high') params.reasoning_effort = effort;\n }\n\n return params;\n}\n\nexport function createChatErrorChunk(error: string, code?: string): ProviderStreamChunk {\n return { type: 'error', error, code };\n}\n\nfunction isBase64Like(str: string): boolean {\n if (str.startsWith('data:')) return true;\n if (str.length > 200) {\n const base64Pattern = /^[A-Za-z0-9+/]+=*$/;\n return base64Pattern.test(str.substring(0, 200));\n }\n return false;\n}\n\nfunction truncateBase64String(str: string, maxLength: number = 50): string {\n if (str.length <= maxLength) return str;\n const preview = str.substring(0, maxLength);\n return `${preview}...[truncated, ${str.length.toLocaleString()} chars]`;\n}\n\nexport function truncateChatBase64<T>(obj: T, maxLength: number = 50): T {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (typeof obj === 'string') {\n return (isBase64Like(obj) ? truncateBase64String(obj, maxLength) : obj) as T;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => truncateChatBase64(item, maxLength)) as T;\n }\n\n if (typeof obj === 'object') {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n result[key] = truncateChatBase64(value, maxLength);\n }\n return result as T;\n }\n\n return obj;\n}\n","import META_ICON_FILE from './vendor-icons/meta.svg';\nimport OPENAI_ICON_FILE from './vendor-icons/openai.svg';\nimport QWEN_ICON_FILE from './vendor-icons/qwen.svg';\nimport ZAI_ORG_ICON_FILE from './vendor-icons/zai-org.svg';\n\nconst CEREBRAS_ICON = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 64 64\" fill=\"none\">\n <defs>\n <linearGradient id=\"cerebras-gradient\" x1=\"12\" y1=\"10\" x2=\"52\" y2=\"54\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#F97316\" />\n <stop offset=\"1\" stop-color=\"#EA580C\" />\n </linearGradient>\n </defs>\n <rect width=\"64\" height=\"64\" rx=\"16\" fill=\"#111827\" />\n <path\n d=\"M43.5 20.5C40.8 17.8 36.7 16 32 16C23.2 16 16 23.2 16 32C16 40.8 23.2 48 32 48C36.7 48 40.8 46.2 43.5 43.5\"\n stroke=\"url(#cerebras-gradient)\"\n stroke-width=\"6\"\n stroke-linecap=\"round\"\n />\n <path\n d=\"M46.5 24.5L33.5 37.5L27.5 31.5\"\n stroke=\"url(#cerebras-gradient)\"\n stroke-width=\"5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n</svg>\n`;\n\nconst META_ICON = META_ICON_FILE;\nconst ALIBABA_ICON = QWEN_ICON_FILE;\nconst ZAI_ICON = ZAI_ORG_ICON_FILE;\nconst OPENAI_ICON = OPENAI_ICON_FILE;\n\nconst MODEL_ICON_PREFIXES: Array<{ prefix: string; icon: string }> = [\n { prefix: 'llama', icon: META_ICON },\n { prefix: 'gpt', icon: OPENAI_ICON },\n { prefix: 'zai', icon: ZAI_ICON },\n { prefix: 'qwen', icon: ALIBABA_ICON },\n];\n\nexport function svgToDataUri(svg: string): string {\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`;\n}\n\nfunction normalizeIcon(icon: string): string {\n if (icon.startsWith('data:') || icon.endsWith('.svg') || icon.includes('.svg?')) {\n return icon;\n }\n return svgToDataUri(icon);\n}\n\nexport function getCerebrasIconDataUri(): string {\n return svgToDataUri(CEREBRAS_ICON);\n}\n\nexport function getCerebrasModelIconDataUri(modelId?: string): string | undefined {\n if (!modelId) return undefined;\n const normalizedModelId = modelId.trim().toLowerCase();\n const icon = MODEL_ICON_PREFIXES.find(({ prefix }) => normalizedModelId.startsWith(prefix))?.icon;\n return icon ? normalizeIcon(icon) : undefined;\n}\n","import { z } from 'zod';\n\n/**\n * Cerebras provider options schema.\n *\n * The provider uses Cerebras' Chat Completions API directly. The schema\n * covers the common documented parameters and remains passthrough for\n * forward compatibility with new API fields.\n */\nexport const cerebrasProviderOptions = z.object({\n /**\n * Clear reasoning from prior turns.\n * Supported on `zai-glm-4.7`.\n */\n clear_thinking: z.boolean().optional(),\n\n /** Return token log probabilities. */\n logprobs: z.boolean().optional(),\n\n /** Number of top logprobs to return when `logprobs` is enabled. */\n top_logprobs: z.number().int().min(0).max(20).optional(),\n\n /** Sampling seed for best-effort determinism. */\n seed: z.number().int().optional(),\n\n /** End-user identifier for abuse monitoring. */\n user: z.string().optional(),\n\n /**\n * Request prioritization.\n * `priority` and some other tiers may require dedicated/private access.\n */\n service_tier: z.enum(['priority', 'default', 'auto', 'flex']).optional(),\n\n /**\n * Override the model's reasoning behavior directly.\n * The provider also maps Standard Agents `reasoning.level` automatically.\n */\n reasoning_effort: z.enum(['none', 'low', 'medium', 'high']).optional(),\n}).passthrough();\n\nexport type CerebrasProviderOptions = z.infer<typeof cerebrasProviderOptions>;\n","import type { ProviderFactoryConfig, ProviderFactoryWithOptions } from '@standardagents/spec';\nimport { CerebrasProvider } from './CerebrasProvider';\nimport { cerebrasProviderOptions } from './providerOptions';\n\n/**\n * Cerebras provider factory for Standard Agents.\n *\n * Uses Cerebras' OpenAI-compatible Chat Completions API with typed\n * providerOptions for Cerebras-specific request parameters.\n */\nexport const cerebras: ProviderFactoryWithOptions<typeof cerebrasProviderOptions> =\n Object.assign(\n (config: ProviderFactoryConfig) => new CerebrasProvider(config),\n { providerOptions: cerebrasProviderOptions }\n );\n\nexport { cerebrasProviderOptions, type CerebrasProviderOptions } from './providerOptions';\nexport { CerebrasProvider } from './CerebrasProvider';\nexport {\n calculateCerebrasUsageCost,\n getCerebrasModelPricing,\n type CerebrasModelPricing,\n} from './pricing';\n"],"mappings":"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","names":["effort"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@standardagents/cerebras",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.44.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -32,14 +32,14 @@
|
|
|
32
32
|
"test:run": "cd ../.. && vitest run --dir packages/cerebras"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@standardagents/provider-pricing": "0.
|
|
35
|
+
"@standardagents/provider-pricing": "0.44.0",
|
|
36
36
|
"zod": "4.3.5"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"@standardagents/spec": "^0.
|
|
39
|
+
"@standardagents/spec": "^0.44.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@standardagents/spec": "0.
|
|
42
|
+
"@standardagents/spec": "0.44.0",
|
|
43
43
|
"tsup": "^8.3.5",
|
|
44
44
|
"typescript": "^5.9.0"
|
|
45
45
|
},
|