@yourgpt/llm-sdk 2.5.1-beta.1 → 2.5.1-beta.3
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/README.md +1 -19
- package/dist/adapters/index.d.mts +4 -4
- package/dist/adapters/index.d.ts +4 -4
- package/dist/adapters/index.js +15 -139
- package/dist/adapters/index.mjs +15 -139
- package/dist/{base-Cxq3ni0t.d.ts → base-C58Dsr9p.d.ts} +1 -5
- package/dist/{base-BYQKp9TW.d.mts → base-tNgbBaSo.d.mts} +1 -5
- package/dist/fallback/index.d.mts +4 -4
- package/dist/fallback/index.d.ts +4 -4
- package/dist/index.d.mts +8 -60
- package/dist/index.d.ts +8 -60
- package/dist/index.js +0 -59
- package/dist/index.mjs +0 -59
- package/dist/providers/anthropic/index.d.mts +3 -3
- package/dist/providers/anthropic/index.d.ts +3 -3
- package/dist/providers/anthropic/index.js +10 -91
- package/dist/providers/anthropic/index.mjs +10 -91
- package/dist/providers/azure/index.d.mts +3 -3
- package/dist/providers/azure/index.d.ts +3 -3
- package/dist/providers/azure/index.js +1 -0
- package/dist/providers/azure/index.mjs +1 -0
- package/dist/providers/fireworks/index.d.mts +67 -2
- package/dist/providers/fireworks/index.d.ts +67 -2
- package/dist/providers/fireworks/index.js +721 -1
- package/dist/providers/fireworks/index.mjs +719 -1
- package/dist/providers/google/index.d.mts +3 -3
- package/dist/providers/google/index.d.ts +3 -3
- package/dist/providers/google/index.js +4 -51
- package/dist/providers/google/index.mjs +4 -51
- package/dist/providers/ollama/index.d.mts +4 -4
- package/dist/providers/ollama/index.d.ts +4 -4
- package/dist/providers/ollama/index.js +1 -0
- package/dist/providers/ollama/index.mjs +1 -0
- package/dist/providers/openai/index.d.mts +3 -3
- package/dist/providers/openai/index.d.ts +3 -3
- package/dist/providers/openai/index.js +4 -51
- package/dist/providers/openai/index.mjs +4 -51
- package/dist/providers/openrouter/index.d.mts +3 -3
- package/dist/providers/openrouter/index.d.ts +3 -3
- package/dist/providers/openrouter/index.js +4 -51
- package/dist/providers/openrouter/index.mjs +4 -51
- package/dist/providers/togetherai/index.d.mts +3 -3
- package/dist/providers/togetherai/index.d.ts +3 -3
- package/dist/providers/togetherai/index.js +4 -51
- package/dist/providers/togetherai/index.mjs +4 -51
- package/dist/providers/xai/index.d.mts +3 -3
- package/dist/providers/xai/index.d.ts +3 -3
- package/dist/providers/xai/index.js +4 -51
- package/dist/providers/xai/index.mjs +4 -51
- package/dist/{types-mwMhCwOq.d.mts → types-B6dhnguR.d.mts} +1 -1
- package/dist/{types-TMilS-Dz.d.ts → types-BQ31QIsA.d.ts} +2 -2
- package/dist/{types-BvkiJ1dd.d.mts → types-BSSiJW2o.d.mts} +2 -2
- package/dist/{types-D774b0dg.d.mts → types-BkQCSiIt.d.mts} +2 -57
- package/dist/{types-D774b0dg.d.ts → types-BkQCSiIt.d.ts} +2 -57
- package/dist/{types-ChORafYS.d.ts → types-CCxPmkmK.d.ts} +1 -1
- package/dist/yourgpt/index.d.mts +1 -1
- package/dist/yourgpt/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { G as GoogleProviderConfig, A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.mjs';
|
|
2
|
+
import { G as GoogleProviderConfig, A as AIProvider } from '../../types-BSSiJW2o.mjs';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-tNgbBaSo.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Google Provider - OpenAI-Compatible
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { G as GoogleProviderConfig, A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.js';
|
|
2
|
+
import { G as GoogleProviderConfig, A as AIProvider } from '../../types-BQ31QIsA.js';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-C58Dsr9p.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Google Provider - OpenAI-Compatible
|
|
@@ -114,6 +114,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
114
114
|
function toOpenAIResponseFormat(rf) {
|
|
115
115
|
if (!rf) return void 0;
|
|
116
116
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
117
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
117
118
|
return {
|
|
118
119
|
type: "json_schema",
|
|
119
120
|
json_schema: {
|
|
@@ -132,33 +133,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
132
133
|
strict: rf.json_schema.strict ?? true
|
|
133
134
|
};
|
|
134
135
|
}
|
|
135
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
136
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
137
|
-
return mcpServers.map((mcp) => ({
|
|
138
|
-
type: "mcp",
|
|
139
|
-
server_label: mcp.label,
|
|
140
|
-
server_url: mcp.url,
|
|
141
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
142
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
143
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
function isStringEffort(effort) {
|
|
147
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
148
|
-
}
|
|
149
|
-
function toOpenAIReasoning(effort) {
|
|
150
|
-
if (!effort) return void 0;
|
|
151
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
152
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
153
|
-
const budget = effort.budgetTokens;
|
|
154
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
155
|
-
return { effort: mapped, summary: "auto" };
|
|
156
|
-
}
|
|
157
|
-
if (isStringEffort(effort)) {
|
|
158
|
-
return { effort, summary: "auto" };
|
|
159
|
-
}
|
|
160
|
-
return void 0;
|
|
161
|
-
}
|
|
162
136
|
function formatTools(actions) {
|
|
163
137
|
return actions.map((action) => ({
|
|
164
138
|
type: "function",
|
|
@@ -566,6 +540,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
566
540
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
567
541
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
568
542
|
if (baseUrl.includes("azure")) return "azure";
|
|
543
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
569
544
|
return "openai";
|
|
570
545
|
}
|
|
571
546
|
async getClient() {
|
|
@@ -579,14 +554,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
579
554
|
return this.client;
|
|
580
555
|
}
|
|
581
556
|
shouldUseResponsesApi(request) {
|
|
582
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
583
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
584
|
-
throw new Error(
|
|
585
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
586
|
-
);
|
|
587
|
-
}
|
|
588
|
-
return true;
|
|
589
|
-
}
|
|
590
557
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
591
558
|
}
|
|
592
559
|
buildResponsesInput(request) {
|
|
@@ -647,7 +614,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
647
614
|
strict: true,
|
|
648
615
|
defer_loading: tool.deferLoading === true
|
|
649
616
|
}));
|
|
650
|
-
return
|
|
617
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
651
618
|
}
|
|
652
619
|
parseResponsesResult(response) {
|
|
653
620
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -679,30 +646,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
679
646
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
680
647
|
request.config?.responseFormat
|
|
681
648
|
);
|
|
682
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
683
|
-
const modelId = request.config?.model || this.model;
|
|
684
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
685
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
686
|
-
console.warn(
|
|
687
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
688
|
-
);
|
|
689
|
-
}
|
|
690
|
-
const functionTools = this.buildResponsesTools(
|
|
691
|
-
request.toolDefinitions ?? []
|
|
692
|
-
);
|
|
693
|
-
const tools = [...functionTools, ...mcpTools];
|
|
694
649
|
const payload = {
|
|
695
650
|
model: request.config?.model || this.model,
|
|
696
651
|
instructions: request.systemPrompt,
|
|
697
652
|
input: this.buildResponsesInput(request),
|
|
698
|
-
tools:
|
|
653
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
699
654
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
700
655
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
701
656
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
702
657
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
703
658
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
704
|
-
...reasoning ? { reasoning } : {},
|
|
705
|
-
store: false,
|
|
706
659
|
stream: false
|
|
707
660
|
};
|
|
708
661
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -112,6 +112,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
112
112
|
function toOpenAIResponseFormat(rf) {
|
|
113
113
|
if (!rf) return void 0;
|
|
114
114
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
115
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
115
116
|
return {
|
|
116
117
|
type: "json_schema",
|
|
117
118
|
json_schema: {
|
|
@@ -130,33 +131,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
130
131
|
strict: rf.json_schema.strict ?? true
|
|
131
132
|
};
|
|
132
133
|
}
|
|
133
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
134
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
135
|
-
return mcpServers.map((mcp) => ({
|
|
136
|
-
type: "mcp",
|
|
137
|
-
server_label: mcp.label,
|
|
138
|
-
server_url: mcp.url,
|
|
139
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
140
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
141
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
142
|
-
}));
|
|
143
|
-
}
|
|
144
|
-
function isStringEffort(effort) {
|
|
145
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
146
|
-
}
|
|
147
|
-
function toOpenAIReasoning(effort) {
|
|
148
|
-
if (!effort) return void 0;
|
|
149
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
150
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
151
|
-
const budget = effort.budgetTokens;
|
|
152
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
153
|
-
return { effort: mapped, summary: "auto" };
|
|
154
|
-
}
|
|
155
|
-
if (isStringEffort(effort)) {
|
|
156
|
-
return { effort, summary: "auto" };
|
|
157
|
-
}
|
|
158
|
-
return void 0;
|
|
159
|
-
}
|
|
160
134
|
function formatTools(actions) {
|
|
161
135
|
return actions.map((action) => ({
|
|
162
136
|
type: "function",
|
|
@@ -564,6 +538,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
564
538
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
565
539
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
566
540
|
if (baseUrl.includes("azure")) return "azure";
|
|
541
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
567
542
|
return "openai";
|
|
568
543
|
}
|
|
569
544
|
async getClient() {
|
|
@@ -577,14 +552,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
577
552
|
return this.client;
|
|
578
553
|
}
|
|
579
554
|
shouldUseResponsesApi(request) {
|
|
580
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
581
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
582
|
-
throw new Error(
|
|
583
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
584
|
-
);
|
|
585
|
-
}
|
|
586
|
-
return true;
|
|
587
|
-
}
|
|
588
555
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
589
556
|
}
|
|
590
557
|
buildResponsesInput(request) {
|
|
@@ -645,7 +612,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
645
612
|
strict: true,
|
|
646
613
|
defer_loading: tool.deferLoading === true
|
|
647
614
|
}));
|
|
648
|
-
return
|
|
615
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
649
616
|
}
|
|
650
617
|
parseResponsesResult(response) {
|
|
651
618
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -677,30 +644,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
677
644
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
678
645
|
request.config?.responseFormat
|
|
679
646
|
);
|
|
680
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
681
|
-
const modelId = request.config?.model || this.model;
|
|
682
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
683
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
684
|
-
console.warn(
|
|
685
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
686
|
-
);
|
|
687
|
-
}
|
|
688
|
-
const functionTools = this.buildResponsesTools(
|
|
689
|
-
request.toolDefinitions ?? []
|
|
690
|
-
);
|
|
691
|
-
const tools = [...functionTools, ...mcpTools];
|
|
692
647
|
const payload = {
|
|
693
648
|
model: request.config?.model || this.model,
|
|
694
649
|
instructions: request.systemPrompt,
|
|
695
650
|
input: this.buildResponsesInput(request),
|
|
696
|
-
tools:
|
|
651
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
697
652
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
698
653
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
699
654
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
700
655
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
701
656
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
702
|
-
...reasoning ? { reasoning } : {},
|
|
703
|
-
store: false,
|
|
704
657
|
stream: false
|
|
705
658
|
};
|
|
706
659
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { c as OllamaProviderConfig, A as AIProvider } from '../../types-
|
|
2
|
-
export { d as OllamaModelOptions } from '../../types-
|
|
3
|
-
import '../../types-
|
|
1
|
+
import { c as OllamaProviderConfig, A as AIProvider } from '../../types-BSSiJW2o.mjs';
|
|
2
|
+
export { d as OllamaModelOptions } from '../../types-BSSiJW2o.mjs';
|
|
3
|
+
import '../../types-BkQCSiIt.mjs';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import '../../base-
|
|
5
|
+
import '../../base-tNgbBaSo.mjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Ollama Provider
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { c as OllamaProviderConfig, A as AIProvider } from '../../types-
|
|
2
|
-
export { d as OllamaModelOptions } from '../../types-
|
|
3
|
-
import '../../types-
|
|
1
|
+
import { c as OllamaProviderConfig, A as AIProvider } from '../../types-BQ31QIsA.js';
|
|
2
|
+
export { d as OllamaModelOptions } from '../../types-BQ31QIsA.js';
|
|
3
|
+
import '../../types-BkQCSiIt.js';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import '../../base-
|
|
5
|
+
import '../../base-C58Dsr9p.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Ollama Provider
|
|
@@ -81,6 +81,7 @@ function parameterToJsonSchema(param) {
|
|
|
81
81
|
function toOllamaFormat(rf) {
|
|
82
82
|
if (!rf) return void 0;
|
|
83
83
|
if (rf.type === "json_object") return "json";
|
|
84
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
84
85
|
return rf.json_schema.schema;
|
|
85
86
|
}
|
|
86
87
|
function formatTools(actions) {
|
|
@@ -79,6 +79,7 @@ function parameterToJsonSchema(param) {
|
|
|
79
79
|
function toOllamaFormat(rf) {
|
|
80
80
|
if (!rf) return void 0;
|
|
81
81
|
if (rf.type === "json_object") return "json";
|
|
82
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
82
83
|
return rf.json_schema.schema;
|
|
83
84
|
}
|
|
84
85
|
function formatTools(actions) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { O as OpenAIProviderConfig, A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.mjs';
|
|
2
|
+
import { O as OpenAIProviderConfig, A as AIProvider } from '../../types-BSSiJW2o.mjs';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-tNgbBaSo.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* OpenAI Provider - Modern Pattern
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { O as OpenAIProviderConfig, A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.js';
|
|
2
|
+
import { O as OpenAIProviderConfig, A as AIProvider } from '../../types-BQ31QIsA.js';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-C58Dsr9p.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* OpenAI Provider - Modern Pattern
|
|
@@ -114,6 +114,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
114
114
|
function toOpenAIResponseFormat(rf) {
|
|
115
115
|
if (!rf) return void 0;
|
|
116
116
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
117
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
117
118
|
return {
|
|
118
119
|
type: "json_schema",
|
|
119
120
|
json_schema: {
|
|
@@ -132,33 +133,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
132
133
|
strict: rf.json_schema.strict ?? true
|
|
133
134
|
};
|
|
134
135
|
}
|
|
135
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
136
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
137
|
-
return mcpServers.map((mcp) => ({
|
|
138
|
-
type: "mcp",
|
|
139
|
-
server_label: mcp.label,
|
|
140
|
-
server_url: mcp.url,
|
|
141
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
142
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
143
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
function isStringEffort(effort) {
|
|
147
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
148
|
-
}
|
|
149
|
-
function toOpenAIReasoning(effort) {
|
|
150
|
-
if (!effort) return void 0;
|
|
151
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
152
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
153
|
-
const budget = effort.budgetTokens;
|
|
154
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
155
|
-
return { effort: mapped, summary: "auto" };
|
|
156
|
-
}
|
|
157
|
-
if (isStringEffort(effort)) {
|
|
158
|
-
return { effort, summary: "auto" };
|
|
159
|
-
}
|
|
160
|
-
return void 0;
|
|
161
|
-
}
|
|
162
136
|
function formatTools(actions) {
|
|
163
137
|
return actions.map((action) => ({
|
|
164
138
|
type: "function",
|
|
@@ -553,6 +527,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
553
527
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
554
528
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
555
529
|
if (baseUrl.includes("azure")) return "azure";
|
|
530
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
556
531
|
return "openai";
|
|
557
532
|
}
|
|
558
533
|
async getClient() {
|
|
@@ -566,14 +541,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
566
541
|
return this.client;
|
|
567
542
|
}
|
|
568
543
|
shouldUseResponsesApi(request) {
|
|
569
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
570
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
571
|
-
throw new Error(
|
|
572
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
573
|
-
);
|
|
574
|
-
}
|
|
575
|
-
return true;
|
|
576
|
-
}
|
|
577
544
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
578
545
|
}
|
|
579
546
|
buildResponsesInput(request) {
|
|
@@ -634,7 +601,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
634
601
|
strict: true,
|
|
635
602
|
defer_loading: tool.deferLoading === true
|
|
636
603
|
}));
|
|
637
|
-
return
|
|
604
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
638
605
|
}
|
|
639
606
|
parseResponsesResult(response) {
|
|
640
607
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -666,30 +633,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
666
633
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
667
634
|
request.config?.responseFormat
|
|
668
635
|
);
|
|
669
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
670
|
-
const modelId = request.config?.model || this.model;
|
|
671
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
672
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
673
|
-
console.warn(
|
|
674
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
675
|
-
);
|
|
676
|
-
}
|
|
677
|
-
const functionTools = this.buildResponsesTools(
|
|
678
|
-
request.toolDefinitions ?? []
|
|
679
|
-
);
|
|
680
|
-
const tools = [...functionTools, ...mcpTools];
|
|
681
636
|
const payload = {
|
|
682
637
|
model: request.config?.model || this.model,
|
|
683
638
|
instructions: request.systemPrompt,
|
|
684
639
|
input: this.buildResponsesInput(request),
|
|
685
|
-
tools:
|
|
640
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
686
641
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
687
642
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
688
643
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
689
644
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
690
645
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
691
|
-
...reasoning ? { reasoning } : {},
|
|
692
|
-
store: false,
|
|
693
646
|
stream: false
|
|
694
647
|
};
|
|
695
648
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -112,6 +112,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
112
112
|
function toOpenAIResponseFormat(rf) {
|
|
113
113
|
if (!rf) return void 0;
|
|
114
114
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
115
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
115
116
|
return {
|
|
116
117
|
type: "json_schema",
|
|
117
118
|
json_schema: {
|
|
@@ -130,33 +131,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
130
131
|
strict: rf.json_schema.strict ?? true
|
|
131
132
|
};
|
|
132
133
|
}
|
|
133
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
134
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
135
|
-
return mcpServers.map((mcp) => ({
|
|
136
|
-
type: "mcp",
|
|
137
|
-
server_label: mcp.label,
|
|
138
|
-
server_url: mcp.url,
|
|
139
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
140
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
141
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
142
|
-
}));
|
|
143
|
-
}
|
|
144
|
-
function isStringEffort(effort) {
|
|
145
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
146
|
-
}
|
|
147
|
-
function toOpenAIReasoning(effort) {
|
|
148
|
-
if (!effort) return void 0;
|
|
149
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
150
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
151
|
-
const budget = effort.budgetTokens;
|
|
152
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
153
|
-
return { effort: mapped, summary: "auto" };
|
|
154
|
-
}
|
|
155
|
-
if (isStringEffort(effort)) {
|
|
156
|
-
return { effort, summary: "auto" };
|
|
157
|
-
}
|
|
158
|
-
return void 0;
|
|
159
|
-
}
|
|
160
134
|
function formatTools(actions) {
|
|
161
135
|
return actions.map((action) => ({
|
|
162
136
|
type: "function",
|
|
@@ -551,6 +525,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
551
525
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
552
526
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
553
527
|
if (baseUrl.includes("azure")) return "azure";
|
|
528
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
554
529
|
return "openai";
|
|
555
530
|
}
|
|
556
531
|
async getClient() {
|
|
@@ -564,14 +539,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
564
539
|
return this.client;
|
|
565
540
|
}
|
|
566
541
|
shouldUseResponsesApi(request) {
|
|
567
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
568
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
569
|
-
throw new Error(
|
|
570
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
571
|
-
);
|
|
572
|
-
}
|
|
573
|
-
return true;
|
|
574
|
-
}
|
|
575
542
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
576
543
|
}
|
|
577
544
|
buildResponsesInput(request) {
|
|
@@ -632,7 +599,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
632
599
|
strict: true,
|
|
633
600
|
defer_loading: tool.deferLoading === true
|
|
634
601
|
}));
|
|
635
|
-
return
|
|
602
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
636
603
|
}
|
|
637
604
|
parseResponsesResult(response) {
|
|
638
605
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -664,30 +631,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
664
631
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
665
632
|
request.config?.responseFormat
|
|
666
633
|
);
|
|
667
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
668
|
-
const modelId = request.config?.model || this.model;
|
|
669
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
670
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
671
|
-
console.warn(
|
|
672
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
673
|
-
);
|
|
674
|
-
}
|
|
675
|
-
const functionTools = this.buildResponsesTools(
|
|
676
|
-
request.toolDefinitions ?? []
|
|
677
|
-
);
|
|
678
|
-
const tools = [...functionTools, ...mcpTools];
|
|
679
634
|
const payload = {
|
|
680
635
|
model: request.config?.model || this.model,
|
|
681
636
|
instructions: request.systemPrompt,
|
|
682
637
|
input: this.buildResponsesInput(request),
|
|
683
|
-
tools:
|
|
638
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
684
639
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
685
640
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
686
641
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
687
642
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
688
643
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
689
|
-
...reasoning ? { reasoning } : {},
|
|
690
|
-
store: false,
|
|
691
644
|
stream: false
|
|
692
645
|
};
|
|
693
646
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.mjs';
|
|
2
|
+
import { A as AIProvider } from '../../types-BSSiJW2o.mjs';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-tNgbBaSo.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* OpenRouter Provider - Modern Pattern
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.js';
|
|
2
|
+
import { A as AIProvider } from '../../types-BQ31QIsA.js';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-C58Dsr9p.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* OpenRouter Provider - Modern Pattern
|
|
@@ -114,6 +114,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
114
114
|
function toOpenAIResponseFormat(rf) {
|
|
115
115
|
if (!rf) return void 0;
|
|
116
116
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
117
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
117
118
|
return {
|
|
118
119
|
type: "json_schema",
|
|
119
120
|
json_schema: {
|
|
@@ -132,33 +133,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
132
133
|
strict: rf.json_schema.strict ?? true
|
|
133
134
|
};
|
|
134
135
|
}
|
|
135
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
136
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
137
|
-
return mcpServers.map((mcp) => ({
|
|
138
|
-
type: "mcp",
|
|
139
|
-
server_label: mcp.label,
|
|
140
|
-
server_url: mcp.url,
|
|
141
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
142
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
143
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
function isStringEffort(effort) {
|
|
147
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
148
|
-
}
|
|
149
|
-
function toOpenAIReasoning(effort) {
|
|
150
|
-
if (!effort) return void 0;
|
|
151
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
152
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
153
|
-
const budget = effort.budgetTokens;
|
|
154
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
155
|
-
return { effort: mapped, summary: "auto" };
|
|
156
|
-
}
|
|
157
|
-
if (isStringEffort(effort)) {
|
|
158
|
-
return { effort, summary: "auto" };
|
|
159
|
-
}
|
|
160
|
-
return void 0;
|
|
161
|
-
}
|
|
162
136
|
function formatTools(actions) {
|
|
163
137
|
return actions.map((action) => ({
|
|
164
138
|
type: "function",
|
|
@@ -539,6 +513,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
539
513
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
540
514
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
541
515
|
if (baseUrl.includes("azure")) return "azure";
|
|
516
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
542
517
|
return "openai";
|
|
543
518
|
}
|
|
544
519
|
async getClient() {
|
|
@@ -552,14 +527,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
552
527
|
return this.client;
|
|
553
528
|
}
|
|
554
529
|
shouldUseResponsesApi(request) {
|
|
555
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
556
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
557
|
-
throw new Error(
|
|
558
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
559
|
-
);
|
|
560
|
-
}
|
|
561
|
-
return true;
|
|
562
|
-
}
|
|
563
530
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
564
531
|
}
|
|
565
532
|
buildResponsesInput(request) {
|
|
@@ -620,7 +587,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
620
587
|
strict: true,
|
|
621
588
|
defer_loading: tool.deferLoading === true
|
|
622
589
|
}));
|
|
623
|
-
return
|
|
590
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
624
591
|
}
|
|
625
592
|
parseResponsesResult(response) {
|
|
626
593
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -652,30 +619,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
652
619
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
653
620
|
request.config?.responseFormat
|
|
654
621
|
);
|
|
655
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
656
|
-
const modelId = request.config?.model || this.model;
|
|
657
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
658
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
659
|
-
console.warn(
|
|
660
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
661
|
-
);
|
|
662
|
-
}
|
|
663
|
-
const functionTools = this.buildResponsesTools(
|
|
664
|
-
request.toolDefinitions ?? []
|
|
665
|
-
);
|
|
666
|
-
const tools = [...functionTools, ...mcpTools];
|
|
667
622
|
const payload = {
|
|
668
623
|
model: request.config?.model || this.model,
|
|
669
624
|
instructions: request.systemPrompt,
|
|
670
625
|
input: this.buildResponsesInput(request),
|
|
671
|
-
tools:
|
|
626
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
672
627
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
673
628
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
674
629
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
675
630
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
676
631
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
677
|
-
...reasoning ? { reasoning } : {},
|
|
678
|
-
store: false,
|
|
679
632
|
stream: false
|
|
680
633
|
};
|
|
681
634
|
logProviderPayload("openai", "request payload", payload, request.debug);
|